Use reflection to load feature event listeners
This commit is contained in:
parent
fa289a8737
commit
99dcb318ad
|
|
@ -104,12 +104,21 @@ public class EssentiaPlugin extends JavaPlugin implements EssentiaAPI {
|
||||||
|
|
||||||
void loadEventListeners() {
|
void loadEventListeners() {
|
||||||
final PluginManager pluginManager = getServer().getPluginManager();
|
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());
|
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 -> {
|
subTypes.forEach(clazz -> {
|
||||||
try {
|
try {
|
||||||
Listener listener = (Listener) clazz.getDeclaredConstructor().newInstance();
|
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);
|
pluginManager.registerEvents(listener, this);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
EssentiaPlugin.instance().getLogger().severe("Failed to register event listener " + clazz.getSimpleName());
|
EssentiaPlugin.instance().getLogger().severe("Failed to register event listener " + clazz.getSimpleName());
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package com.alttd.essentia.feature.cuff;
|
||||||
|
|
||||||
import com.alttd.essentia.EssentiaPlugin;
|
import com.alttd.essentia.EssentiaPlugin;
|
||||||
import com.alttd.essentia.feature.EssentiaFeature;
|
import com.alttd.essentia.feature.EssentiaFeature;
|
||||||
import org.bukkit.plugin.PluginManager;
|
|
||||||
|
|
||||||
public class CuffFeature implements EssentiaFeature {
|
public class CuffFeature implements EssentiaFeature {
|
||||||
|
|
||||||
|
|
@ -21,9 +20,6 @@ public class CuffFeature implements EssentiaFeature {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
final PluginManager pluginManager = plugin.getServer().getPluginManager();
|
|
||||||
pluginManager.registerEvents(new CuffListener(), plugin);
|
|
||||||
|
|
||||||
this.enabled = true;
|
this.enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package com.alttd.essentia.feature.flight;
|
||||||
|
|
||||||
import com.alttd.essentia.EssentiaPlugin;
|
import com.alttd.essentia.EssentiaPlugin;
|
||||||
import com.alttd.essentia.feature.EssentiaFeature;
|
import com.alttd.essentia.feature.EssentiaFeature;
|
||||||
import org.bukkit.plugin.PluginManager;
|
|
||||||
|
|
||||||
public class FlightFeature implements EssentiaFeature {
|
public class FlightFeature implements EssentiaFeature {
|
||||||
|
|
||||||
|
|
@ -21,9 +20,6 @@ public class FlightFeature implements EssentiaFeature {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
final PluginManager pluginManager = plugin.getServer().getPluginManager();
|
|
||||||
pluginManager.registerEvents(new FlightListener(), plugin);
|
|
||||||
|
|
||||||
this.enabled = true;
|
this.enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import com.alttd.essentia.api.user.User;
|
||||||
import com.alttd.essentia.api.user.UserManager;
|
import com.alttd.essentia.api.user.UserManager;
|
||||||
import com.alttd.essentia.feature.EssentiaFeature;
|
import com.alttd.essentia.feature.EssentiaFeature;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.PluginManager;
|
|
||||||
|
|
||||||
public class GodModeFeature implements EssentiaFeature {
|
public class GodModeFeature implements EssentiaFeature {
|
||||||
|
|
||||||
|
|
@ -25,9 +24,6 @@ public class GodModeFeature implements EssentiaFeature {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
final PluginManager pluginManager = plugin.getServer().getPluginManager();
|
|
||||||
pluginManager.registerEvents(new GodModeListener(this), plugin);
|
|
||||||
|
|
||||||
this.enabled = true;
|
this.enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user