Dateien nach "src/main/java/de/nexuslobby/api" hochladen

This commit is contained in:
2026-01-22 14:55:00 +00:00
parent 09558932be
commit fbcbc36338
2 changed files with 73 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
package de.nexuslobby.api;
public interface Module {
String getName();
void onEnable();
void onDisable();
}

View File

@@ -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<Module> 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 <T> Der Typ des Moduls
* @return Das Modul-Objekt oder null, falls nicht gefunden.
*/
@SuppressWarnings("unchecked")
public <T extends Module> T getModule(Class<T> clazz) {
for (Module module : modules) {
if (clazz.isInstance(module)) {
return (T) module;
}
}
return null;
}
/**
* Gibt eine Liste aller registrierten Module zurück.
*/
public List<Module> getModules() {
return modules;
}
}