From 75d112f8516d62a825af2fc113a3abd905b4c001 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Thu, 7 May 2026 19:39:25 +0000 Subject: [PATCH] Soft-delete copy _trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/module/ModuleManager.java --- .../viper/status/module/ModuleManager.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 _trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/module/ModuleManager.java 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; + } +}