From 1fbdfb19c92e3f3f841bb738563ff7955508b97a Mon Sep 17 00:00:00 2001 From: simpleauthority Date: Tue, 5 Sep 2017 12:53:32 -0700 Subject: [PATCH] Bungee: Implement getDefCommand & command unregistration (#71) * Implement getDefCommand * Implement command unregistration for Bungee * Remove accidental star imports --- .../aikar/commands/BungeeCommandManager.java | 26 ++++++++++++++++--- .../co/aikar/commands/BungeeRootCommand.java | 10 ++++++- 2 files changed, 32 insertions(+), 4 deletions(-) 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; + } }