From fbcbc36338573c3b709f258a6efbbbed067382c2 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Thu, 22 Jan 2026 14:55:00 +0000 Subject: [PATCH] Dateien nach "src/main/java/de/nexuslobby/api" hochladen --- src/main/java/de/nexuslobby/api/Module.java | 7 ++ .../java/de/nexuslobby/api/ModuleManager.java | 66 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/main/java/de/nexuslobby/api/Module.java create mode 100644 src/main/java/de/nexuslobby/api/ModuleManager.java diff --git a/src/main/java/de/nexuslobby/api/Module.java b/src/main/java/de/nexuslobby/api/Module.java new file mode 100644 index 0000000..03a0100 --- /dev/null +++ b/src/main/java/de/nexuslobby/api/Module.java @@ -0,0 +1,7 @@ +package de.nexuslobby.api; + +public interface Module { + String getName(); + void onEnable(); + void onDisable(); +} diff --git a/src/main/java/de/nexuslobby/api/ModuleManager.java b/src/main/java/de/nexuslobby/api/ModuleManager.java new file mode 100644 index 0000000..665750a --- /dev/null +++ b/src/main/java/de/nexuslobby/api/ModuleManager.java @@ -0,0 +1,66 @@ +package de.nexuslobby.api; + +import de.nexuslobby.NexusLobby; +import java.util.ArrayList; +import java.util.List; + +public class ModuleManager { + + private final NexusLobby plugin; + private final List modules = new ArrayList<>(); + + public ModuleManager(NexusLobby plugin) { + this.plugin = plugin; + } + + /** + * Registriert ein neues Modul im System. + */ + public void registerModule(Module module) { + modules.add(module); + } + + /** + * Aktiviert alle registrierten Module. + */ + public void enableAll() { + for (Module module : modules) { + plugin.getLogger().info("[NexusLobby] Enabling module: " + module.getName()); + module.onEnable(); + } + } + + /** + * Deaktiviert alle registrierten Module. + */ + public void disableAll() { + for (Module module : modules) { + module.onDisable(); + } + } + + /** + * Sucht ein registriertes Modul anhand seiner Klasse. + * Ermöglicht den Zugriff auf Modul-Methoden von Commands aus. + * + * @param clazz Die Klasse des Moduls (z.B. ScoreboardModule.class) + * @param Der Typ des Moduls + * @return Das Modul-Objekt oder null, falls nicht gefunden. + */ + @SuppressWarnings("unchecked") + public T getModule(Class clazz) { + for (Module module : modules) { + if (clazz.isInstance(module)) { + return (T) module; + } + } + return null; + } + + /** + * Gibt eine Liste aller registrierten Module zurück. + */ + public List getModules() { + return modules; + } +} \ No newline at end of file