diff --git a/plugin/src/main/java/com/alttd/essentia/EssentiaPlugin.java b/plugin/src/main/java/com/alttd/essentia/EssentiaPlugin.java index 1bb37f3..55ba46a 100644 --- a/plugin/src/main/java/com/alttd/essentia/EssentiaPlugin.java +++ b/plugin/src/main/java/com/alttd/essentia/EssentiaPlugin.java @@ -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> 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()); diff --git a/plugin/src/main/java/com/alttd/essentia/feature/cuff/CuffFeature.java b/plugin/src/main/java/com/alttd/essentia/feature/cuff/CuffFeature.java index 915d650..6c43c2a 100644 --- a/plugin/src/main/java/com/alttd/essentia/feature/cuff/CuffFeature.java +++ b/plugin/src/main/java/com/alttd/essentia/feature/cuff/CuffFeature.java @@ -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; } diff --git a/plugin/src/main/java/com/alttd/essentia/feature/flight/FlightFeature.java b/plugin/src/main/java/com/alttd/essentia/feature/flight/FlightFeature.java index 2ad380a..886d3d4 100644 --- a/plugin/src/main/java/com/alttd/essentia/feature/flight/FlightFeature.java +++ b/plugin/src/main/java/com/alttd/essentia/feature/flight/FlightFeature.java @@ -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; } diff --git a/plugin/src/main/java/com/alttd/essentia/feature/godmode/GodModeFeature.java b/plugin/src/main/java/com/alttd/essentia/feature/godmode/GodModeFeature.java index 6dc91c2..97c9b82 100644 --- a/plugin/src/main/java/com/alttd/essentia/feature/godmode/GodModeFeature.java +++ b/plugin/src/main/java/com/alttd/essentia/feature/godmode/GodModeFeature.java @@ -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; }