From c8607a711bedd93ec141dd0c1ddbbc5f604352c4 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 16 Apr 2012 23:54:33 +0100 Subject: Re-initialize the WorldsHolder on a reload, as un-registering and re-registering a new holder means all plugins have to check for the new service on every quiery. --- EssentialsGroupManager/src/Changelog.txt | 3 +- .../org/anjocaido/groupmanager/GroupManager.java | 96 ++++++++++++++-------- .../dataholder/worlds/WorldsHolder.java | 11 ++- 3 files changed, 72 insertions(+), 38 deletions(-) (limited to 'EssentialsGroupManager') diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index f900d5aa9..fcdc1ed9d 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -179,4 +179,5 @@ v 2.0: - Unregister the worldsHolder as a service on a reload/shutdown instead of the whole plugin. - Update all code formatting to use tabs for indentation. - Stop using our own deprecated methods as we tell others to do. - - Finally remove all deprecated methods. \ No newline at end of file + - Finally remove all deprecated methods. + - Re-initialize the WorldsHolder on a reload, as un-registering and re-registering a new holder means all plugins have to check for the new service on every quiery. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index df46b70d0..3da9666c3 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -56,25 +56,7 @@ public class GroupManager extends JavaPlugin { private Map selectedWorlds = new HashMap(); private WorldsHolder worldsHolder; private boolean validateOnlinePlayer = true; - - private String lastError = ""; - - /** - * @return the validateOnlinePlayer - */ - public boolean isValidateOnlinePlayer() { - - return validateOnlinePlayer; - } - - /** - * @param validateOnlinePlayer the validateOnlinePlayer to set - */ - public void setValidateOnlinePlayer(boolean validateOnlinePlayer) { - - this.validateOnlinePlayer = validateOnlinePlayer; - } - + private static boolean isLoaded = false; protected GMConfiguration config; @@ -89,13 +71,28 @@ public class GroupManager extends JavaPlugin { private OverloadedWorldHolder dataHolder = null; private AnjoPermissionsHandler permissionHandler = null; + private String lastError = ""; + @Override public void onDisable() { + + onDisable(false); + } + + @Override + public void onEnable() { + + onEnable(false); + } + + public void onDisable(boolean restarting) { setLoaded(false); - // Unregister this service. - this.getServer().getServicesManager().unregister(this.worldsHolder); + if (!restarting) { + // Unregister this service if we are shutting down. + this.getServer().getServicesManager().unregister(this.worldsHolder); + } disableScheduler(); // Shutdown before we save, so it doesn't interfere. if (worldsHolder != null) { @@ -118,18 +115,26 @@ public class GroupManager extends JavaPlugin { // EXAMPLE: Custom code, here we just output some info so we can check that all is well PluginDescriptionFile pdfFile = this.getDescription(); System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is disabled!"); - GroupManager.logger.removeHandler(ch); + + if (!restarting) + GroupManager.logger.removeHandler(ch); } - - @Override - public void onEnable() { + + public void onEnable(boolean restarting) { try { + /* + * reset local variables. + */ + overloadedUsers = new HashMap>(); + selectedWorlds = new HashMap(); lastError = ""; - - GroupManager.logger.setUseParentHandlers(false); - ch = new GMLoggerHandler(); - GroupManager.logger.addHandler(ch); + + if (!restarting) { + GroupManager.logger.setUseParentHandlers(false); + ch = new GMLoggerHandler(); + GroupManager.logger.addHandler(ch); + } logger.setLevel(Level.ALL); // Create the backup folder, if it doesn't exist. @@ -138,7 +143,11 @@ public class GroupManager extends JavaPlugin { prepareConfig(); // Load the global groups globalGroups = new GlobalGroups(this); - worldsHolder = new WorldsHolder(this); + + if (!restarting) + worldsHolder = new WorldsHolder(this); + else + worldsHolder.resetWorldsHolder(); PluginDescriptionFile pdfFile = this.getDescription(); if (worldsHolder == null) { @@ -169,7 +178,9 @@ public class GroupManager extends JavaPlugin { System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!"); // Register as a service - this.getServer().getServicesManager().register(WorldsHolder.class, this.worldsHolder, this, ServicePriority.Lowest); + if (!restarting) + this.getServer().getServicesManager().register(WorldsHolder.class, this.worldsHolder, this, ServicePriority.Lowest); + } catch (Exception ex) { /* @@ -222,6 +233,22 @@ public class GroupManager extends JavaPlugin { } } + + /** + * @return the validateOnlinePlayer + */ + public boolean isValidateOnlinePlayer() { + + return validateOnlinePlayer; + } + + /** + * @param validateOnlinePlayer the validateOnlinePlayer to set + */ + public void setValidateOnlinePlayer(boolean validateOnlinePlayer) { + + this.validateOnlinePlayer = validateOnlinePlayer; + } public static boolean isLoaded() { @@ -1633,11 +1660,10 @@ public class GroupManager extends JavaPlugin { */ /* - * Reset the last error as we are attempting a fresh load. + * Attempting a fresh load. */ - lastError = ""; - onDisable(); - onEnable(); + onDisable(true); + onEnable(true); sender.sendMessage("All settings and worlds were reloaded!"); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java index 37d0a8430..a9ab4befa 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java @@ -57,12 +57,19 @@ public class WorldsHolder { public WorldsHolder(GroupManager plugin) { this.plugin = plugin; + resetWorldsHolder(); + } + + public void resetWorldsHolder() { + + mirrorsGroup = new HashMap(); + mirrorsUser = new HashMap(); + // Setup folders and check files exist for the primary world verifyFirstRun(); initialLoad(); - if (serverDefaultWorldName == null) { + if (serverDefaultWorldName == null) throw new IllegalStateException("There is no default group! OMG!"); - } } private void initialLoad() { -- cgit v1.2.3 From 59f6ca0239227ec53be794666ab62cf11bb40a2e Mon Sep 17 00:00:00 2001 From: ElgarL Date: Tue, 17 Apr 2012 18:57:11 +0100 Subject: Fix a couple of perms in GlobalGroups --- EssentialsGroupManager/src/globalgroups.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'EssentialsGroupManager') diff --git a/EssentialsGroupManager/src/globalgroups.yml b/EssentialsGroupManager/src/globalgroups.yml index fa8808e00..a08f9600e 100644 --- a/EssentialsGroupManager/src/globalgroups.yml +++ b/EssentialsGroupManager/src/globalgroups.yml @@ -212,13 +212,14 @@ groups: g:towny_default: permissions: - towny.chat.general + - towny.chat.local g:towny_builder: permissions: - towny.town.* - towny.nation.* - - towny.chat.tc - - towny.chat.nc + - towny.chat.town + - towny.chat.nation - towny.wild.build.6 - towny.wild.destroy.6 - towny.wild.destroy.14 -- cgit v1.2.3