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:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user