From e873ebd67d3d1379b8a0a8cf18d7b2db9d9320f3 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Wed, 2 Nov 2011 22:33:29 +0000 Subject: 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. --- .../org/anjocaido/groupmanager/GroupManager.java | 28 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java') 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) { -- cgit v1.2.3