From d396ea3a319fea64866a9020c5b0d9fd7265aa46 Mon Sep 17 00:00:00 2001 From: Pepich Date: Mon, 12 Mar 2018 02:44:51 +0100 Subject: [PATCH] Turned saving into scheduled task --- .../modules/datamanager/DataManager.java | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/com/redstoner/modules/datamanager/DataManager.java b/src/com/redstoner/modules/datamanager/DataManager.java index e4b8773..2b0dded 100644 --- a/src/com/redstoner/modules/datamanager/DataManager.java +++ b/src/com/redstoner/modules/datamanager/DataManager.java @@ -36,7 +36,7 @@ import com.redstoner.modules.Module; @Commands(CommandHolderType.Stream) @AutoRegisterListener -@Version(major = 4, minor = 1, revision = 5, compatible = 4) +@Version(major = 4, minor = 1, revision = 6, compatible = 4) public final class DataManager implements CoreModule, Listener { protected final File dataFolder = new File(Main.plugin.getDataFolder(), "data"); @@ -45,8 +45,10 @@ public final class DataManager implements CoreModule, Listener protected ArrayList module_index; int old_hash = 0; protected HashMap> states = new HashMap<>(); - private DataManager previous_instance = null; + private static DataManager previous_instance = null; protected ArrayList subcommands; + protected List scheduled_saves = new ArrayList<>(); + int task_id; @Override public void postEnable() @@ -75,6 +77,24 @@ public final class DataManager implements CoreModule, Listener fixJson(); updateIndex(); CommandManager.registerCommand(getClass().getResourceAsStream("DataManager.cmd"), this, Main.plugin); + + // Schedule save every ten seconds + task_id = Bukkit.getScheduler().runTaskTimerAsynchronously(Main.plugin, new Runnable() + { + @Override + public void run() + { + for (String id : scheduled_saves) + { + scheduled_saves.remove(id); + Object raw = data.get(id); + if (raw == null || ((JSONObject) raw).size() == 0) + return; + JSONObject json = (JSONObject) raw; + JsonManager.save(json, new File(dataFolder, id + ".json")); + } + } + }, 0, 10000).getTaskId(); } @Override @@ -86,6 +106,7 @@ public final class DataManager implements CoreModule, Listener saveAndUnload(p); } JsonManager.save(config_data, new File(dataFolder, "configs.json")); + Bukkit.getScheduler().cancelTask(task_id); } @Command(hook = "import_file") @@ -535,12 +556,9 @@ public final class DataManager implements CoreModule, Listener {} } - protected synchronized void save_(String id) + protected void save_(String id) { - Object raw = data.get(id); - if (raw == null || ((JSONObject) raw).size() == 0) - return; - JsonManager.save((JSONObject) raw, new File(dataFolder, id + ".json")); + scheduled_saves.add(id); } protected void saveAndUnload(CommandSender sender)