diff --git a/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/module/ModuleManager.java b/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/module/ModuleManager.java new file mode 100644 index 0000000..34620e7 --- /dev/null +++ b/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/module/ModuleManager.java @@ -0,0 +1,59 @@ +package net.viper.status.module; + +import net.md_5.bungee.api.plugin.Plugin; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Verwaltet alle geladenen Module. + * Verwendet LinkedHashMap um die Registrierungsreihenfolge zu erhalten, + * damit Abhängigkeiten (z.B. VanishModule → ChatModule) korrekt aufgelöst werden. + */ +public class ModuleManager { + + private final Map modules = new LinkedHashMap<>(); + + public void registerModule(Module module) { + modules.put(module.getName().toLowerCase(), module); + } + + public void enableAll(Plugin plugin) { + for (Module module : modules.values()) { + try { + module.onEnable(plugin); + } catch (Exception e) { + plugin.getLogger().severe("Fehler beim Aktivieren von Modul " + module.getName() + ": " + e.getMessage()); + e.printStackTrace(); + } + } + } + + public void disableAll(Plugin plugin) { + for (Module module : modules.values()) { + try { + module.onDisable(plugin); + } catch (Exception e) { + plugin.getLogger().warning("Fehler beim Deaktivieren von Modul " + module.getName()); + } + } + modules.clear(); + } + + /** + * Ermöglicht anderen Komponenten (wie dem WebServer) Zugriff auf spezifische Module. + */ + public Module getModule(String name) { + return modules.get(name.toLowerCase()); + } + + @SuppressWarnings("unchecked") + public T getModule(Class clazz) { + for (Module m : modules.values()) { + if (clazz.isInstance(m)) { + return (T) m; + } + } + return null; + } +}