1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-10-01 00:26:48 +02:00

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.
This commit is contained in:
ElgarL
2011-11-02 22:33:29 +00:00
parent 57f9bc06b0
commit e873ebd67d
5 changed files with 397 additions and 83 deletions

View File

@@ -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) {