diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java index 262261f..92d7ebc 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java @@ -1,9 +1,7 @@ package cn.hamster3.mc.plugin.core.bukkit; import cn.hamster3.mc.plugin.core.bukkit.api.CoreBukkitAPI; -import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand; -import cn.hamster3.mc.plugin.core.bukkit.command.debug.BlockInfoCommand; -import cn.hamster3.mc.plugin.core.bukkit.command.debug.YamlCommand; +import cn.hamster3.mc.plugin.core.bukkit.command.core.ParentCoreCommand; import cn.hamster3.mc.plugin.core.bukkit.command.lore.ParentLoreCommand; import cn.hamster3.mc.plugin.core.bukkit.hook.PointAPI; import cn.hamster3.mc.plugin.core.bukkit.hook.VaultAPI; @@ -13,15 +11,11 @@ import cn.hamster3.mc.plugin.core.bukkit.page.listener.PageListener; import cn.hamster3.mc.plugin.core.common.constant.CoreConstantObjects; import net.kyori.adventure.platform.bukkit.BukkitAudiences; import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; import org.bukkit.plugin.java.JavaPlugin; -import java.util.List; import java.util.logging.Logger; public class HamsterCorePlugin extends JavaPlugin { - public static final ParentCommand COMMAND_EXECUTOR = new ParentCommand("core"); private static HamsterCorePlugin instance; private BukkitAudiences audienceProvider; @@ -42,12 +36,6 @@ public class HamsterCorePlugin extends JavaPlugin { logger.info("仓鼠核心正在初始化..."); CoreBukkitAPI.init(); logger.info("CoreBukkitAPI 已初始化."); - COMMAND_EXECUTOR.addChildCommand(BlockInfoCommand.INSTANCE); - logger.info("已添加指令: " + BlockInfoCommand.INSTANCE.getName() + " ."); - COMMAND_EXECUTOR.addChildCommand(YamlCommand.INSTANCE); - logger.info("已添加指令: " + YamlCommand.INSTANCE.getName() + " ."); - COMMAND_EXECUTOR.addChildCommand(ParentLoreCommand.INSTANCE); - logger.info("已添加指令: " + ParentLoreCommand.INSTANCE.getName() + " ."); long time = System.currentTimeMillis() - start; logger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms."); } @@ -69,6 +57,9 @@ public class HamsterCorePlugin extends JavaPlugin { logger.info("已注册 CallbackListener."); Bukkit.getPluginManager().registerEvents(DebugListener.INSTANCE, this); logger.info("已注册 DebugListener."); + //noinspection SpellCheckingInspection + ParentCoreCommand.INSTANCE.hook(getCommand("hamstercore")); + ParentLoreCommand.INSTANCE.hook(getCommand("lore")); long time = System.currentTimeMillis() - start; logger.info("仓鼠核心启动完成,总计耗时 " + time + " ms."); } @@ -86,16 +77,6 @@ public class HamsterCorePlugin extends JavaPlugin { logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms."); } - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - return COMMAND_EXECUTOR.onCommand(sender, command, label, args); - } - - @Override - public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { - return COMMAND_EXECUTOR.onTabComplete(sender, command, alias, args); - } - public BukkitAudiences getAudienceProvider() { return audienceProvider; } diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java index e833154..34c5368 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java @@ -3,6 +3,8 @@ package cn.hamster3.mc.plugin.core.bukkit.command; import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.command.PluginCommand; +import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -11,6 +13,8 @@ import java.util.stream.Collectors; @SuppressWarnings("unused") public class ParentCommand extends ChildCommand { + @NotNull + private final Plugin plugin; @NotNull private final String name; @Nullable @@ -18,13 +22,15 @@ public class ParentCommand extends ChildCommand { @NotNull private final List childCommands; - public ParentCommand(@NotNull String name) { + public ParentCommand(@NotNull Plugin plugin, @NotNull String name) { + this.plugin = plugin; this.name = name; parent = null; childCommands = new ArrayList<>(); } - public ParentCommand(@NotNull String name, @Nullable ParentCommand parent) { + public ParentCommand(@NotNull Plugin plugin, @NotNull String name, @Nullable ParentCommand parent) { + this.plugin = plugin; this.name = name; this.parent = parent; childCommands = new ArrayList<>(); @@ -73,8 +79,10 @@ public class ParentCommand extends ChildCommand { public void addChildCommand(@NotNull ChildCommand command) { childCommands.add(command); + plugin.getLogger().info("已为 " + getUsage() + " 添加子命令: " + command.getName() + " ."); } + @NotNull public Map getCommandHelp(CommandSender sender) { HashMap map = new HashMap<>(); for (ChildCommand child : childCommands) { @@ -91,6 +99,12 @@ public class ParentCommand extends ChildCommand { return map; } + public void hook(@NotNull PluginCommand command) { + command.setExecutor(this); + command.setTabCompleter(this); + plugin.getLogger().info("已注册指令 " + getUsage() + "."); + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 0) { diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/BlockInfoCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/BlockInfoCommand.java similarity index 97% rename from hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/BlockInfoCommand.java rename to hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/BlockInfoCommand.java index 8f01ef5..caef422 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/BlockInfoCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/BlockInfoCommand.java @@ -1,4 +1,4 @@ -package cn.hamster3.mc.plugin.core.bukkit.command.debug; +package cn.hamster3.mc.plugin.core.bukkit.command.core; import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage; diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/GCCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/GCCommand.java new file mode 100644 index 0000000..a1ad0af --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/GCCommand.java @@ -0,0 +1,48 @@ +package cn.hamster3.mc.plugin.core.bukkit.command.core; + +import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +public class GCCommand extends ChildCommand { + public static final GCCommand INSTANCE = new GCCommand(); + + private GCCommand() { + } + + @Override + public @NotNull String getName() { + return "gc"; + } + + @Override + public @NotNull String getUsage() { + return "gc"; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return true; + } + + @Override + public @NotNull String getDescription() { + return "通知JVM进行一次垃圾回收"; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + System.gc(); + sender.sendMessage("§a已发送 GC 信号."); + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + return Collections.emptyList(); + } +} diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ParentCoreCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ParentCoreCommand.java new file mode 100644 index 0000000..e301ddd --- /dev/null +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/ParentCoreCommand.java @@ -0,0 +1,15 @@ +package cn.hamster3.mc.plugin.core.bukkit.command.core; + +import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin; +import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand; + +public class ParentCoreCommand extends ParentCommand { + public static final ParentCoreCommand INSTANCE = new ParentCoreCommand(); + + private ParentCoreCommand() { + super(HamsterCorePlugin.getInstance(), "core"); + addChildCommand(YamlCommand.INSTANCE); + addChildCommand(GCCommand.INSTANCE); + addChildCommand(BlockInfoCommand.INSTANCE); + } +} diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/YamlCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/YamlCommand.java similarity index 98% rename from hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/YamlCommand.java rename to hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/YamlCommand.java index 084dd7f..1b4173c 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/debug/YamlCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/YamlCommand.java @@ -1,4 +1,4 @@ -package cn.hamster3.mc.plugin.core.bukkit.command.debug; +package cn.hamster3.mc.plugin.core.bukkit.command.core; import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin; import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java index 55de637..be7ec58 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/lore/ParentLoreCommand.java @@ -5,14 +5,12 @@ import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand; import cn.hamster3.mc.plugin.core.common.util.CommonUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public final class ParentLoreCommand extends ParentCommand { - public static final ParentLoreCommand INSTANCE = new ParentLoreCommand("lore", HamsterCorePlugin.COMMAND_EXECUTOR); + public static final ParentLoreCommand INSTANCE = new ParentLoreCommand(); - private ParentLoreCommand(@NotNull String name, @Nullable ParentCommand parent) { - super(name, parent); + public ParentLoreCommand() { + super(HamsterCorePlugin.getInstance(), "lore"); addChildCommand(LoreAddCommand.INSTANCE); addChildCommand(LoreRemoveCommand.INSTANCE); addChildCommand(LoreSetCommand.INSTANCE); diff --git a/hamster-core-bukkit/src/main/resources/plugin.yml b/hamster-core-bukkit/src/main/resources/plugin.yml index e006814..9d13242 100644 --- a/hamster-core-bukkit/src/main/resources/plugin.yml +++ b/hamster-core-bukkit/src/main/resources/plugin.yml @@ -16,6 +16,10 @@ commands: description: 仓鼠核心调试指令 permission: hamster.core.admin permission-message: §c你没有这个权限! + lore: + description: 仓鼠核心的 lore 修改指令 + permission: hamster.lore.admin + permission-message: §c你没有这个权限! permissions: hamster.core.admin: