diff options
author | KHobbits <rob@khobbits.co.uk> | 2012-04-18 00:39:14 +0100 |
---|---|---|
committer | KHobbits <rob@khobbits.co.uk> | 2012-04-18 00:39:14 +0100 |
commit | 9871fc03e73868600ce20d0ab5962c8b85aa7f84 (patch) | |
tree | d663c61a0dc09f3a0d8659558b64fdb1b2972e5e | |
parent | 7c74c952ca84804c99b2661afc6216d765a44614 (diff) | |
parent | 1df54c7984298275a39fa6acf13e6d2b4fcbd8e1 (diff) | |
download | Essentials-9871fc03e73868600ce20d0ab5962c8b85aa7f84.tar Essentials-9871fc03e73868600ce20d0ab5962c8b85aa7f84.tar.gz Essentials-9871fc03e73868600ce20d0ab5962c8b85aa7f84.tar.lz Essentials-9871fc03e73868600ce20d0ab5962c8b85aa7f84.tar.xz Essentials-9871fc03e73868600ce20d0ab5962c8b85aa7f84.zip |
Merge remote branch 'remotes/origin/groupmanager'
4 files changed, 75 insertions, 40 deletions
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/globalgroups.yml b/EssentialsGroupManager/src/globalgroups.yml index e8f51f2b1..04b670ae7 100644 --- a/EssentialsGroupManager/src/globalgroups.yml +++ b/EssentialsGroupManager/src/globalgroups.yml @@ -235,13 +235,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
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<CommandSender, String> selectedWorlds = new HashMap<CommandSender, String>(); 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<String, ArrayList<User>>(); + selectedWorlds = new HashMap<CommandSender, String>(); 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<String, String>(); + mirrorsUser = new HashMap<String, String>(); + // 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() { |