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