diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/FakeplayerModule.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/FakeplayerModule.java index 8bc0abb..2c88c39 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/FakeplayerModule.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/FakeplayerModule.java @@ -4,11 +4,12 @@ import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.Singleton; import io.github.hello09x.fakeplayer.api.spi.NMSBridge; +import io.github.hello09x.fakeplayer.core.config.FakeplayerConfig; import io.github.hello09x.fakeplayer.core.manager.FakeplayerList; import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager; -import io.github.hello09x.fakeplayer.core.manager.invsee.DefaultInvseeManagerImpl; import io.github.hello09x.fakeplayer.core.manager.invsee.InvseeManager; import io.github.hello09x.fakeplayer.core.manager.invsee.OpenInvInvseeManagerImpl; +import io.github.hello09x.fakeplayer.core.manager.invsee.SimpleInvseeManagerImpl; import io.github.hello09x.fakeplayer.core.util.ClassUtils; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; @@ -27,14 +28,18 @@ public class FakeplayerModule extends AbstractModule { @Provides @Singleton - public InvseeManager invseeManager(FakeplayerManager fakeplayerManager, FakeplayerList fakeplayerList) { - if (Bukkit.getPluginManager().isPluginEnabled("OpenInv") && ClassUtils.isClassExists("com.lishid.openinv.IOpenInv")) { - log.info("Using OpenInv as invsee implementation"); - return new OpenInvInvseeManagerImpl(fakeplayerManager, fakeplayerList); - } - - log.info("Using default invsee implementation"); - return new DefaultInvseeManagerImpl(fakeplayerManager, fakeplayerList); + public InvseeManager invseeManager(FakeplayerConfig config, FakeplayerManager fakeplayerManager, FakeplayerList fakeplayerList) { + return switch (config.getInvseeImplement()) { + case SIMPLE -> new SimpleInvseeManagerImpl(fakeplayerManager, fakeplayerList); + case AUTO -> { + if (Bukkit.getPluginManager().isPluginEnabled("OpenInv") && ClassUtils.isClassExists("com.lishid.openinv.IOpenInv")) { + log.info("Using OpenInv as invsee implement"); + yield new OpenInvInvseeManagerImpl(fakeplayerManager, fakeplayerList); + } + log.info("Using simple invsee implement"); + yield new SimpleInvseeManagerImpl(fakeplayerManager, fakeplayerList); + } + }; } @Provides diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/FakeplayerConfig.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/FakeplayerConfig.java index 4d0f772..6fa9abf 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/FakeplayerConfig.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/FakeplayerConfig.java @@ -4,6 +4,7 @@ package io.github.hello09x.fakeplayer.core.config; import com.google.common.annotations.Beta; import com.google.inject.Inject; import com.google.inject.Singleton; +import io.github.hello09x.devtools.core.config.ConfigUtils; import io.github.hello09x.devtools.core.config.PluginConfig; import io.github.hello09x.fakeplayer.core.Main; import lombok.Getter; @@ -139,6 +140,11 @@ public class FakeplayerConfig extends PluginConfig { */ private PreventKicking preventKicking; + /** + * invsee 实现方式 + */ + private InvseeImplement invseeImplement; + /** * 真实皮肤 */ @@ -164,7 +170,6 @@ public class FakeplayerConfig extends PluginConfig { this.selfCommands = file.getStringList("self-commands"); this.preSpawnCommands = file.getStringList("pre-spawn-commands"); this.postSpawnCommands = file.getStringList("post-spawn-commands"); - deprecated: this.afterSpawnCommands = file.getStringList("after-spawn-commands"); this.postQuitCommands = file.getStringList("post-quit-commands"); this.afterQuitCommands = file.getStringList("after-quit-commands"); @@ -184,6 +189,7 @@ public class FakeplayerConfig extends PluginConfig { .collect(Collectors.toSet()); this.defaultOnlineSkin = file.getBoolean("default-online-skin", false); + this.invseeImplement = ConfigUtils.getEnum(file, "invsee-implement", InvseeImplement.class, InvseeImplement.AUTO); this.debug = file.getBoolean("debug", false); if (this.isFileConfigurationOutOfDate()) { @@ -245,7 +251,7 @@ public class FakeplayerConfig extends PluginConfig { return PreventKicking.ON_SPAWNING; } - return PreventKicking.valueOf(file.getString("prevent-kicking", PreventKicking.NEVER.toString())); + return ConfigUtils.getEnum(file, "prevent-kicking", PreventKicking.class, PreventKicking.ON_SPAWNING); } } diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/InvseeImplement.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/InvseeImplement.java new file mode 100644 index 0000000..53aa0d9 --- /dev/null +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/config/InvseeImplement.java @@ -0,0 +1,13 @@ +package io.github.hello09x.fakeplayer.core.config; + +/** + * @author tanyaofei + * @since 2024/8/12 + **/ +public enum InvseeImplement { + + AUTO, + + SIMPLE + +} diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/invsee/DefaultInvseeManagerImpl.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/invsee/SimpleInvseeManagerImpl.java similarity index 82% rename from fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/invsee/DefaultInvseeManagerImpl.java rename to fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/invsee/SimpleInvseeManagerImpl.java index e50825e..190b46d 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/invsee/DefaultInvseeManagerImpl.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/invsee/SimpleInvseeManagerImpl.java @@ -16,10 +16,10 @@ import org.jetbrains.annotations.Nullable; * @since 2024/8/12 **/ @Singleton -public class DefaultInvseeManagerImpl extends AbstractInvseeManager { +public class SimpleInvseeManagerImpl extends AbstractInvseeManager { @Inject - public DefaultInvseeManagerImpl(FakeplayerManager manager, FakeplayerList fakeplayerList) { + public SimpleInvseeManagerImpl(FakeplayerManager manager, FakeplayerList fakeplayerList) { super(manager, fakeplayerList); } diff --git a/fakeplayer-core/src/main/resources/config.yml b/fakeplayer-core/src/main/resources/config.yml index b897fd2..7c8b2ee 100644 --- a/fakeplayer-core/src/main/resources/config.yml +++ b/fakeplayer-core/src/main/resources/config.yml @@ -4,7 +4,7 @@ # 不要直接修改 config.tmpl.yml 文件,将这份文件复制并重命名为 config.yml 来作为配置文件 # 【Important】【非常重要】 # ========================================================================================================= -version: 16 +version: 17 # 多国语言配置 # 可选项: en, zh, zh_cn, zh_tw, zh_hk @@ -124,6 +124,17 @@ kick-on-dead: true kale-tps: 0 +# Invsee implement: +# Options: +# AUTO: Auto choose a implement depends on server plugins. Supports: OpenInv +# SIMPLE: A simple implement, with it, you can NOT visit or modify equipments +# Invsee 实现: +# 可选项: +# AUTO: 自动,自动根据服务器安装的插件来选择, 当前支持的插件: OpenInv +# SIMPLE: 一个简单的内嵌实现, 使用这个不能看到或者编辑假人的装备栏 +invsee-implement: AUTO + + # Pre-Spawn-Commands # Server will execute the following commands BEFORE trying to spawn a fake player. # This is helpful for adding fake player into whitelist diff --git a/pom.xml b/pom.xml index d4aa8cd..e7ed476 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ UTF-8 0.3.9-b.4 - 0.1.3-SNAPSHOT + 0.1.4-SNAPSHOT