summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
diff options
context:
space:
mode:
authorElgarL <ElgarL@palmergames.com>2011-11-02 22:33:29 +0000
committerElgarL <ElgarL@palmergames.com>2011-11-02 22:33:29 +0000
commite873ebd67d3d1379b8a0a8cf18d7b2db9d9320f3 (patch)
tree54d40ef381b6717218a7762f869b53cba353030c /EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
parent57f9bc06b0169326a5065640eeb977d7f32c1c86 (diff)
downloadEssentials-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.java28
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) {