Skip to content

Commit

Permalink
async save more data when using save mech
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Jan 22, 2024
1 parent b0dc6d4 commit 5c0a9a0
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 8 deletions.
Expand Up @@ -549,7 +549,7 @@ public void saveSaves(boolean lockUntilDone) {
Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save to " + scoreboardsConfigFile, ex);
}
PlayerFlagHandler.saveAllNow(lockUntilDone);
worldFlags.saveAll();
worldFlags.saveAll(lockUntilDone);
RunLaterCommand.saveToFile(!lockUntilDone);
}

Expand Down
Expand Up @@ -1913,7 +1913,7 @@ else if (nameLow.startsWith(matchInput) && (newMatch.isOnline() == matchPlayer.i
// Immediately saves the Denizen saves files.
// -->
tagProcessor.registerMechanism("save", false, (object, mechanism) -> {
DenizenCore.saveAll();
DenizenCore.saveAll(false);
Denizen.getInstance().saveSaves(false);
});

Expand Down
Expand Up @@ -259,7 +259,7 @@ public void version(CommandContext args, CommandSender sender) throws CommandExc
desc = "Saves the current Denizen save data to file as needed.", modifiers = {"save"},
min = 1, max = 3, permission = "denizen.basic")
public void save(CommandContext args, CommandSender sender) throws CommandException {
DenizenCore.saveAll();
DenizenCore.saveAll(false);
Denizen.getInstance().saveSaves(false);
Messaging.send(sender, "Denizen save data saved to file from memory.");
}
Expand Down
@@ -1,6 +1,7 @@
package com.denizenscript.denizen.utilities.flags;

import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizencore.DenizenCore;
import com.denizenscript.denizencore.utilities.CoreConfiguration;
import com.denizenscript.denizencore.utilities.debugging.Debug;
import com.denizenscript.denizencore.flags.AbstractFlagTracker;
Expand Down Expand Up @@ -274,8 +275,20 @@ public static void saveAllNow(boolean lockUntilDone) {
Debug.echoError(ex);
}
}
flags.savingNow.set(true);
flags.tracker.modified = false;
saveFlags(entry.getKey(), flags.tracker.toString());
final UUID id = entry.getKey();
final String data = flags.tracker.toString();
Runnable doSave = () -> {
saveFlags(id, data);
flags.savingNow.set(false);
};
if (lockUntilDone) {
doSave.run();
}
else {
DenizenCore.runAsync(doSave);
}
}
}
}
Expand Down
Expand Up @@ -27,17 +27,17 @@ public void init() {
}
}

public void saveAll() {
public void saveAll(boolean lockUntilDone) {
for (Map.Entry<String, SavableMapFlagTracker> flagTracker : worldFlagTrackers.entrySet()) {
if (flagTracker.getValue().modified) {
flagTracker.getValue().saveToFile(flagPathFor(flagTracker.getKey()));
flagTracker.getValue().saveToFile(flagPathFor(flagTracker.getKey()), lockUntilDone);
flagTracker.getValue().modified = false;
}
}
}

public void shutdown() {
saveAll();
saveAll(true);
worldFlagTrackers.clear();
}

Expand All @@ -62,7 +62,7 @@ public void onWorldUnload(WorldUnloadEvent event) {
SavableMapFlagTracker flags = worldFlagTrackers.remove(event.getWorld().getName());
if (flags != null && flags.modified) {
flags.modified = false;
flags.saveToFile(flagPathFor(event.getWorld().getName()));
flags.saveToFile(flagPathFor(event.getWorld().getName()), true);
}
}
}

0 comments on commit 5c0a9a0

Please sign in to comment.