From 69541a20b8f5de778582e92c867dca267839ff64 Mon Sep 17 00:00:00 2001 From: Taah Date: Sat, 5 Mar 2022 17:17:14 -0800 Subject: [PATCH 1/3] - Add command and listener support --- .../java/dev/plex/module/ModuleManager.java | 7 ++++ src/main/java/dev/plex/module/PlexModule.java | 39 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/src/main/java/dev/plex/module/ModuleManager.java b/src/main/java/dev/plex/module/ModuleManager.java index 5b21cec..6da2fea 100644 --- a/src/main/java/dev/plex/module/ModuleManager.java +++ b/src/main/java/dev/plex/module/ModuleManager.java @@ -89,11 +89,18 @@ public class ModuleManager { public void disableModules() { this.modules.forEach(module -> { PlexLog.log("Disabling module " + module.getPlexModuleFile().getName() + " with version " + module.getPlexModuleFile().getVersion()); + module.getCommands().stream().toList().forEach(plexCommand -> { + module.unregisterCommand(plexCommand); + Plex.get().getServer().getCommandMap().getKnownCommands().remove(plexCommand.getName()); + plexCommand.getAliases().forEach(alias -> Plex.get().getServer().getCommandMap().getKnownCommands().remove(alias)); + }); + module.getListeners().forEach(module::unregisterListener); module.disable(); }); } public void unloadModules() { + this.disableModules(); this.modules.forEach(module -> { try { ((URLClassLoader)module.getClass().getClassLoader()).close(); diff --git a/src/main/java/dev/plex/module/PlexModule.java b/src/main/java/dev/plex/module/PlexModule.java index 12f2730..4edff06 100644 --- a/src/main/java/dev/plex/module/PlexModule.java +++ b/src/main/java/dev/plex/module/PlexModule.java @@ -1,18 +1,31 @@ package dev.plex.module; +import com.google.common.collect.Lists; import dev.plex.Plex; +import dev.plex.command.PlexCommand; +import dev.plex.listener.PlexListener; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.bukkit.event.HandlerList; import java.io.File; +import java.util.List; +import java.util.Locale; +import java.util.stream.Collectors; @Getter @Setter(AccessLevel.MODULE) public abstract class PlexModule { + @Getter(AccessLevel.MODULE) + private final List commands = Lists.newArrayList(); + + @Getter(AccessLevel.MODULE) + private final List listeners = Lists.newArrayList(); + private Plex plex; private PlexModuleFile plexModuleFile; private File dataFolder; @@ -23,4 +36,30 @@ public abstract class PlexModule public void enable() {} public void disable() {} + + public void registerListener(PlexListener listener) + { + listeners.add(listener); + } + + public void unregisterListener(PlexListener listener) + { + listeners.remove(listener); + HandlerList.unregisterAll(listener); + } + + public void registerCommand(PlexCommand command) + { + commands.add(command); + } + + public void unregisterCommand(PlexCommand command) + { + commands.remove(command); + } + + public PlexCommand getCommand(String name) + { + return commands.stream().filter(plexCommand -> plexCommand.getName().equalsIgnoreCase(name) || plexCommand.getAliases().stream().map(String::toLowerCase).toList().contains(name.toLowerCase(Locale.ROOT))).findFirst().orElse(null); + } } From 46d8debd1894a49dfddc0ccaeb282d06f64aae10 Mon Sep 17 00:00:00 2001 From: Taah Date: Sat, 5 Mar 2022 17:20:51 -0800 Subject: [PATCH 2/3] - don't reload indefinite bans --- src/main/java/dev/plex/Plex.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/plex/Plex.java b/src/main/java/dev/plex/Plex.java index 078772b..0a50900 100644 --- a/src/main/java/dev/plex/Plex.java +++ b/src/main/java/dev/plex/Plex.java @@ -90,7 +90,7 @@ public class Plex extends JavaPlugin { public void onEnable() { config.load(); messages.load(); - indefBans.load(); + indefBans.load(false); moduleManager.enableModules(); From 0aa9669f5f77c6073684488d8c2421a2625b3e67 Mon Sep 17 00:00:00 2001 From: Taah Date: Sat, 5 Mar 2022 17:22:30 -0800 Subject: [PATCH 3/3] lol i disabled modules on reload --- src/main/java/dev/plex/command/impl/PlexCMD.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/dev/plex/command/impl/PlexCMD.java b/src/main/java/dev/plex/command/impl/PlexCMD.java index e89010f..2951b7d 100644 --- a/src/main/java/dev/plex/command/impl/PlexCMD.java +++ b/src/main/java/dev/plex/command/impl/PlexCMD.java @@ -63,7 +63,6 @@ public class PlexCMD extends PlexCommand { plugin.getModuleManager().loadAllModules(); plugin.getModuleManager().loadModules(); plugin.getModuleManager().enableModules(); - plugin.getModuleManager().disableModules(); } } else { return usage();