From 44d50b1c59ca10fe46cb4193e12ba9a65cfdfc8e Mon Sep 17 00:00:00 2001 From: Tim Vis'ee Date: Fri, 11 Mar 2016 11:41:41 +0100 Subject: [PATCH] Created it's own listener for the Permissions Manager --- .../authme/listener/AuthMeServerListener.java | 6 -- .../authme/permission/PermissionsManager.java | 28 +++++- .../PermissionsManagerBukkitListener.java | 85 +++++++++++++++++++ 3 files changed, 112 insertions(+), 7 deletions(-) create mode 100644 src/main/java/fr/xephi/authme/permission/PermissionsManagerBukkitListener.java diff --git a/src/main/java/fr/xephi/authme/listener/AuthMeServerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMeServerListener.java index 54cce57a..2ad0e8c4 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMeServerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMeServerListener.java @@ -55,9 +55,6 @@ public class AuthMeServerListener implements Listener { return; } - // Call the onPluginDisable method in the permissions manager - this.plugin.getPermissionsManager().onPluginDisable(event); - String pluginName = pluginInstance.getName(); if (pluginName.equalsIgnoreCase("Essentials")) { plugin.ess = null; @@ -89,9 +86,6 @@ public class AuthMeServerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onPluginEnable(PluginEnableEvent event) { - // Call the onPluginEnable method in the permissions manager - this.plugin.getPermissionsManager().onPluginEnable(event); - String pluginName = event.getPlugin().getName(); if (pluginName.equalsIgnoreCase("Essentials") || pluginName.equalsIgnoreCase("EssentialsSpawn")) { plugin.checkEssentials(); diff --git a/src/main/java/fr/xephi/authme/permission/PermissionsManager.java b/src/main/java/fr/xephi/authme/permission/PermissionsManager.java index d4074ebb..5805b8d6 100644 --- a/src/main/java/fr/xephi/authme/permission/PermissionsManager.java +++ b/src/main/java/fr/xephi/authme/permission/PermissionsManager.java @@ -57,6 +57,10 @@ public class PermissionsManager implements PermissionsService { * Logger instance. */ private Logger log; + /** + * The permissions manager Bukkit listener instance. + */ + private PermissionsManagerBukkitListener bukkitListener; /** * Type of permissions system that is currently used. * Null if no permissions system is hooked and/or used. @@ -82,6 +86,21 @@ public class PermissionsManager implements PermissionsService { this.server = server; this.plugin = plugin; this.log = log; + + // Create and register the Bukkit listener on the server if it's valid + if(this.server != null) { + // Create the Bukkit listener + this.bukkitListener = new PermissionsManagerBukkitListener(this); + + // Get the plugin manager instance + PluginManager pluginManager = this.server.getPluginManager(); + + // Register the Bukkit listener + pluginManager.registerEvents(this.bukkitListener, this.plugin); + + // Show a status message. + //this.log.info("Started permission plugins state listener!"); + } } /** @@ -263,7 +282,14 @@ public class PermissionsManager implements PermissionsService { } } - + /** + * Get the permissions manager Bukkit listener instance. + * + * @return Listener instance. + */ + public PermissionsManagerBukkitListener getListener() { + return this.bukkitListener; + } /** * Check if the command sender has permission for the given permissions node. If no permissions system is used or diff --git a/src/main/java/fr/xephi/authme/permission/PermissionsManagerBukkitListener.java b/src/main/java/fr/xephi/authme/permission/PermissionsManagerBukkitListener.java new file mode 100644 index 00000000..d87f1b3c --- /dev/null +++ b/src/main/java/fr/xephi/authme/permission/PermissionsManagerBukkitListener.java @@ -0,0 +1,85 @@ +package fr.xephi.authme.permission; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginDisableEvent; +import org.bukkit.event.server.PluginEnableEvent; + +public class PermissionsManagerBukkitListener implements Listener { + + /** + * The permissions manager instance. + */ + private PermissionsManager permissionsManager; + + /** + * Whether the listener is enabled or not. + */ + private boolean enabled = true; + + /** + * Constructor.\ + * + * @param permissionsManager Permissions manager instance. + */ + public PermissionsManagerBukkitListener(PermissionsManager permissionsManager) { + this.permissionsManager = permissionsManager; + } + + /** + * Check whether the listener is enabled. + * + * @return True if the listener is enabled. + */ + public boolean isEnabled() { + return this.enabled; + } + + /** + * Set whether the listener is enabled. + * Disabling the listener will stop the event handling until it's enabled again. + * + * @param enabled True if enabled, false if disabled. + */ + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + /** + * Called when a plugin is enabled. + * + * @param event Event reference. + */ + @EventHandler + public void onPluginEnable(PluginEnableEvent event) { + // Make sure the listener is enabled + if(!isEnabled()) + return; + + // Make sure the permissions manager is set + if(this.permissionsManager == null) + return; + + // Call the onPluginEnable method in the permissions manager + permissionsManager.onPluginEnable(event); + } + + /** + * Called when a plugin is disabled. + * + * @param event Event reference. + */ + @EventHandler + public void onPluginDisable(PluginDisableEvent event) { + // Make sure the listener is enabled + if(!isEnabled()) + return; + + // Make sure the permissions manager is set + if(this.permissionsManager == null) + return; + + // Call the onPluginDisable method in the permissions manager + permissionsManager.onPluginDisable(event); + } +}