From 377c81f26f077b9856aafa0e99e045f3de07f79e Mon Sep 17 00:00:00 2001 From: Helvetica Volubi Date: Mon, 6 Jul 2026 20:23:43 +0800 Subject: [PATCH] fix bot command register --- .../modules/FakePlayerCompatConfig.java | 2 +- .../modules/function/FakeplayerConfig.java | 2 +- .../leaves/command/bot/BotCommand.java | 22 ++++++++++++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java index f17426a..6ea322e 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java @@ -70,7 +70,7 @@ public class FakePlayerCompatConfig implements IConfigModule { @Override public void onLoaded(CommentedFileConfig configInstance, @Nullable Set exs) { - if (commandPlayer) { + if (commandPlayer && command == null) { command = new BotCommand("player"); command.register(); } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java index 2422b12..251a1c4 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java @@ -95,7 +95,7 @@ public class FakeplayerConfig implements IConfigModule { @Override public void onLoaded(CommentedFileConfig configInstance, @Nullable Set exs) { - if (enable) { + if (enable && command == null) { command = new BotCommand("bot"); command.register(); } diff --git a/lophine-server/src/main/java/org/leavesmc/leaves/command/bot/BotCommand.java b/lophine-server/src/main/java/org/leavesmc/leaves/command/bot/BotCommand.java index b6df5cd..1be422f 100644 --- a/lophine-server/src/main/java/org/leavesmc/leaves/command/bot/BotCommand.java +++ b/lophine-server/src/main/java/org/leavesmc/leaves/command/bot/BotCommand.java @@ -27,10 +27,11 @@ import org.leavesmc.leaves.command.bot.subcommands.*; import static org.leavesmc.leaves.command.CommandUtils.registerPermissions; public class BotCommand extends RootNode { - private static final String PERM_BASE = "bukkit.command.bot"; + private static final String PERM_BASE_BOT = "bukkit.command.bot"; + private static final String PERM_BASE_PLAYER = "bukkit.command.player"; public BotCommand(String key) { - super(key, PERM_BASE); + super(key, getPermBase(key)); this.children( ListCommand::new, ConfigCommand::new, @@ -44,15 +45,26 @@ public class BotCommand extends RootNode { @Override protected ArgumentBuilder compile() { - registerPermissions(PERM_BASE, this.children); + registerPermissions(getPermBase(this.getName()), this.children); return super.compile(); } public static boolean hasPermission(@NotNull CommandSender sender) { - return sender.hasPermission(PERM_BASE); + return sender.hasPermission(PERM_BASE_BOT) || sender.hasPermission(PERM_BASE_PLAYER); } public static boolean hasPermission(@NotNull CommandSender sender, String subcommand) { - return sender.hasPermission(PERM_BASE) || sender.hasPermission(PERM_BASE + "." + subcommand); + return sender.hasPermission(PERM_BASE_BOT) || sender.hasPermission(PERM_BASE_BOT + "." + subcommand) + || sender.hasPermission(PERM_BASE_PLAYER) || sender.hasPermission(PERM_BASE_PLAYER + "." + subcommand); + } + + public static String getPermBase(String key) { + if (key.equals("bot")) { + return PERM_BASE_BOT; + } + if (key.equals("player")) { + return PERM_BASE_PLAYER; + } + throw new IllegalArgumentException("Invalid key: " + key); } }