diff options
author | ElgarL <ElgarL@palmergames.com> | 2011-11-02 22:33:29 +0000 |
---|---|---|
committer | ElgarL <ElgarL@palmergames.com> | 2011-11-02 22:33:29 +0000 |
commit | e873ebd67d3d1379b8a0a8cf18d7b2db9d9320f3 (patch) | |
tree | 54d40ef381b6717218a7762f869b53cba353030c /EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java | |
parent | 57f9bc06b0169326a5065640eeb977d7f32c1c86 (diff) | |
download | Essentials-e873ebd67d3d1379b8a0a8cf18d7b2db9d9320f3.tar Essentials-e873ebd67d3d1379b8a0a8cf18d7b2db9d9320f3.tar.gz Essentials-e873ebd67d3d1379b8a0a8cf18d7b2db9d9320f3.tar.lz Essentials-e873ebd67d3d1379b8a0a8cf18d7b2db9d9320f3.tar.xz Essentials-e873ebd67d3d1379b8a0a8cf18d7b2db9d9320f3.zip |
GM will now check to see if it's data files have been changed at each
scheduled save.
If the files have been altered (on disc) it will reload, so long as
the in-memory data hasn't changed.
If the files on Disc have changed AND there have been changes to it's
in-memory data it will show a warning.
You then MUST issue a '/mansave force' to overwrite the disc files,
or a '/manload' to overwrite the memory data.
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java')
-rw-r--r-- | EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index ff77a76a4..8964c1cd1 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -90,7 +90,11 @@ public class GroupManager extends JavaPlugin { disableScheduler(); // Shutdown before we save, so it doesn't interfere. if (worldsHolder != null) { - worldsHolder.saveChanges(); + try { + worldsHolder.saveChanges(false); + } catch (IllegalStateException ex) { + GroupManager.logger.log(Level.WARNING, ex.getMessage()); + } } WorldEvents = null; @@ -177,7 +181,12 @@ public class GroupManager extends JavaPlugin { @Override public void run() { - worldsHolder.saveChanges(); + try { + worldsHolder.saveChanges(false); + GroupManager.logger.log(Level.INFO, " Data files refreshed."); + } catch (IllegalStateException ex) { + GroupManager.logger.log(Level.WARNING, ex.getMessage()); + } } }; scheduler = new ScheduledThreadPoolExecutor(1); @@ -1504,9 +1513,20 @@ public class GroupManager extends JavaPlugin { return true; case mansave: - worldsHolder.saveChanges(); - sender.sendMessage(ChatColor.YELLOW + " The changes were saved."); + + boolean forced = false; + + if ((args.length == 1) && (args[0].equalsIgnoreCase("force"))) + forced = true; + + try { + worldsHolder.saveChanges(forced); + sender.sendMessage(ChatColor.YELLOW + " The changes were saved."); + } catch (IllegalStateException ex) { + sender.sendMessage(ChatColor.RED + ex.getMessage()); + } return true; + case manload: // THIS CASE DONT NEED SENDER if (args.length > 0) { |