Use reflection to load feature event listeners

This commit is contained in:
Len 2025-06-29 17:03:11 +02:00
parent fa289a8737
commit 99dcb318ad
4 changed files with 10 additions and 13 deletions

View File

@ -104,12 +104,21 @@ public class EssentiaPlugin extends JavaPlugin implements EssentiaAPI {
void loadEventListeners() {
final PluginManager pluginManager = getServer().getPluginManager();
Reflections reflections = new Reflections("com.alttd.essentia.listeners");
Reflections reflections = new Reflections("com.alttd.essentia.listeners"); // These are plugin required listeners eg player data loading on login.
Set<Class<?>> subTypes = reflections.get(Scanners.SubTypes.of(Listener.class).asClass());
reflections = new Reflections("com.alttd.essentia.feature"); // These are them listeners for the features.
subTypes.addAll(reflections.get(Scanners.SubTypes.of(Listener.class).asClass()));
subTypes.forEach(clazz -> {
try {
Listener listener = (Listener) clazz.getDeclaredConstructor().newInstance();
final Depends depends = clazz.getAnnotation(Depends.class);
if (depends != null) {
if (!features.isEnabled(depends.value())) {
return;
}
}
pluginManager.registerEvents(listener, this);
} catch (Exception e) {
EssentiaPlugin.instance().getLogger().severe("Failed to register event listener " + clazz.getSimpleName());

View File

@ -2,7 +2,6 @@ package com.alttd.essentia.feature.cuff;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.feature.EssentiaFeature;
import org.bukkit.plugin.PluginManager;
public class CuffFeature implements EssentiaFeature {
@ -21,9 +20,6 @@ public class CuffFeature implements EssentiaFeature {
@Override
public void register() {
final PluginManager pluginManager = plugin.getServer().getPluginManager();
pluginManager.registerEvents(new CuffListener(), plugin);
this.enabled = true;
}

View File

@ -2,7 +2,6 @@ package com.alttd.essentia.feature.flight;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.feature.EssentiaFeature;
import org.bukkit.plugin.PluginManager;
public class FlightFeature implements EssentiaFeature {
@ -21,9 +20,6 @@ public class FlightFeature implements EssentiaFeature {
@Override
public void register() {
final PluginManager pluginManager = plugin.getServer().getPluginManager();
pluginManager.registerEvents(new FlightListener(), plugin);
this.enabled = true;
}

View File

@ -6,7 +6,6 @@ import com.alttd.essentia.api.user.User;
import com.alttd.essentia.api.user.UserManager;
import com.alttd.essentia.feature.EssentiaFeature;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
public class GodModeFeature implements EssentiaFeature {
@ -25,9 +24,6 @@ public class GodModeFeature implements EssentiaFeature {
@Override
public void register() {
final PluginManager pluginManager = plugin.getServer().getPluginManager();
pluginManager.registerEvents(new GodModeListener(this), plugin);
this.enabled = true;
}