Dateien nach "src/main/java/de/nexuslobby/api" hochladen
This commit is contained in:
7
src/main/java/de/nexuslobby/api/Module.java
Normal file
7
src/main/java/de/nexuslobby/api/Module.java
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package de.nexuslobby.api;
|
||||||
|
|
||||||
|
public interface Module {
|
||||||
|
String getName();
|
||||||
|
void onEnable();
|
||||||
|
void onDisable();
|
||||||
|
}
|
||||||
66
src/main/java/de/nexuslobby/api/ModuleManager.java
Normal file
66
src/main/java/de/nexuslobby/api/ModuleManager.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user