diff --git a/src/main/java/net/pingex/dcf/commands/CommandHandler.java b/src/main/java/net/pingex/dcf/commands/CommandHandler.java index 6d2d0c4..93a8bb4 100644 --- a/src/main/java/net/pingex/dcf/commands/CommandHandler.java +++ b/src/main/java/net/pingex/dcf/commands/CommandHandler.java @@ -80,5 +80,24 @@ public class CommandHandler public static void unregisterPlugin(PluginWrapper pluginWrapper) { LOGGER.debug("Removing commands for plugin {}.", pluginWrapper.getId()); + + // Raw commands + if(IWithCommands.class.isAssignableFrom(pluginWrapper.getInstance().getClass())) + { + LOGGER.debug("Plugin has commands (raw commands)."); + ((IWithCommands) pluginWrapper.getInstance()).getCommands().forEach(CommandRegistry::unregisterCommand); + } + + // Annotated commands + if(IWithAnnotatedCommands.class.isAssignableFrom(pluginWrapper.getInstance().getClass())) + { + LOGGER.debug("Plugin has commands (annotated commands)."); + ((IWithAnnotatedCommands) pluginWrapper.getInstance()).getAnnotatedObjects().forEach(e -> + { + for(Method i : e.getClass().getMethods()) + if(i.isAnnotationPresent(AnnotatedCommand.class)) + CommandRegistry.unregisterCommandByName(i.getAnnotation(AnnotatedCommand.class).name()); + }); + } } } diff --git a/src/main/java/net/pingex/dcf/commands/CommandRegistry.java b/src/main/java/net/pingex/dcf/commands/CommandRegistry.java index 6a908ce..a54f19e 100644 --- a/src/main/java/net/pingex/dcf/commands/CommandRegistry.java +++ b/src/main/java/net/pingex/dcf/commands/CommandRegistry.java @@ -2,7 +2,6 @@ package net.pingex.dcf.commands; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import java.util.*; /**