diff --git a/src/main/java/de/studiocode/invui/InvUI.java b/src/main/java/de/studiocode/invui/InvUI.java index c01496a..8b64b45 100644 --- a/src/main/java/de/studiocode/invui/InvUI.java +++ b/src/main/java/de/studiocode/invui/InvUI.java @@ -17,21 +17,27 @@ public class InvUI implements Listener { private static InvUI instance; private final List disableHandlers = new ArrayList<>(); - private final Plugin plugin; - - public InvUI() { - plugin = ReflectionUtils.getFieldValue(PLUGIN_CLASS_LOADER_PLUGIN_FIELD, getClass().getClassLoader()); - Bukkit.getPluginManager().registerEvents(this, plugin); - } + private Plugin plugin; public static InvUI getInstance() { return instance == null ? instance = new InvUI() : instance; } public Plugin getPlugin() { + if (plugin == null) { + System.out.println("[InvUI] Retrieving plugin from PluginClassLoader... This may cause issues!"); + setPlugin(ReflectionUtils.getFieldValue(PLUGIN_CLASS_LOADER_PLUGIN_FIELD, getClass().getClassLoader())); + } return plugin; } + public void setPlugin(Plugin plugin) { + if (this.plugin != null) + throw new IllegalStateException("The plugin is already set!"); + this.plugin = plugin; + Bukkit.getPluginManager().registerEvents(this, plugin); + } + public void addDisableHandler(Runnable runnable) { disableHandlers.add(runnable); }