diff --git a/bungee/src/main/java/co/aikar/commands/BungeeCommandManager.java b/bungee/src/main/java/co/aikar/commands/BungeeCommandManager.java index 4b449691..709dc367 100644 --- a/bungee/src/main/java/co/aikar/commands/BungeeCommandManager.java +++ b/bungee/src/main/java/co/aikar/commands/BungeeCommandManager.java @@ -26,15 +26,13 @@ package co.aikar.commands; import co.aikar.commands.apachecommonslang.ApacheCommonsExceptionUtil; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; -import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.Plugin; import java.lang.reflect.Method; import java.lang.reflect.Parameter; -import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; +import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; @@ -99,6 +97,28 @@ public class BungeeCommandManager extends CommandManager entry : command.registeredCommands.entrySet()) { + String commandName = entry.getKey().toLowerCase(); + BungeeRootCommand bungeeCommand = (BungeeRootCommand) entry.getValue(); + if (bungeeCommand.isRegistered) { + unregisterCommand(bungeeCommand); + } + bungeeCommand.isRegistered = false; + registeredCommands.remove(commandName); + } + } + + public void unregisterCommand(BungeeRootCommand command) { + this.plugin.getProxy().getPluginManager().unregisterCommand(command); + } + + public void unregisterCommands() { + for (Map.Entry entry : registeredCommands.entrySet()) { + unregisterCommand(entry.getValue()); + } + } + @Override public boolean hasRegisteredCommands() { return !registeredCommands.isEmpty(); diff --git a/bungee/src/main/java/co/aikar/commands/BungeeRootCommand.java b/bungee/src/main/java/co/aikar/commands/BungeeRootCommand.java index 6dccfbed..e6b48e51 100644 --- a/bungee/src/main/java/co/aikar/commands/BungeeRootCommand.java +++ b/bungee/src/main/java/co/aikar/commands/BungeeRootCommand.java @@ -29,7 +29,10 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.TabExecutor; -import java.util.*; +import java.util.List; +import java.util.ArrayList; +import java.util.Set; +import java.util.HashSet; public class BungeeRootCommand extends Command implements RootCommand, TabExecutor { @@ -85,4 +88,9 @@ public class BungeeRootCommand extends Command implements RootCommand, TabExecut this.children.forEach(child -> completions.addAll(child.tabComplete(sender, alias, args))); return new ArrayList<>(completions); } + + @Override + public BaseCommand getDefCommand() { + return defCommand; + } }