diff --git a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java index 5a2c0de..670344c 100644 --- a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java +++ b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java @@ -43,6 +43,7 @@ } public static void saveWorld(@Nullable Player player, String saveID, SaveSlot saveSlot) { + plugin.getLogger().info("Try Save world slot: " + saveSlot.getSlot()); try { if (isSavingWorld) { if (player != null) { @@ -87,7 +88,6 @@ File saveworld = new File(saveID + "/world"); File saveconfigs = new File(saveID + "/Challenges"); File saveFolder; - AtomicBoolean done = new AtomicBoolean(false); if (plugin.getServerType() != ServerType.ADVENTURE) { saveFolder = new File(plugin.getChallengeSavePath().toFile(), saveID + "/"); } else { @@ -126,35 +126,35 @@ }); copyFuture.thenAccept(result -> { - if (result) { - done.set(true); - if (player != null) { - ChatUtil.sendNormalMessage(player, "Welt wurde erfolgreich auf Slot " + saveSlot.getSlot() + " gespeichert!"); - } + plugin.getServer().getScheduler().runTask(plugin, () -> { + plugin.getLogger().info("Save result: " + result); + if (result) { + if (player != null) { + ChatUtil.sendNormalMessage(player, "Welt wurde erfolgreich auf Slot " + saveSlot.getSlot() + " gespeichert!"); + } - if (isServerRestartRequested) { - restartServerInternal(restartSeed); - } else if (restart) { - Config.setValue("World_Reset", true); - Bukkit.shutdown(); + if (isServerRestartRequested) { + restartServerInternal(restartSeed); + } else if (restart) { + Config.setValue("World_Reset", true); + Bukkit.shutdown(); + } + } else { + if (player != null) { + ChatUtil.sendErrorMessage(Bukkit.getPlayer(saveID), "Map konnte nicht richtig gespeichert werden, bitte versuche es noch einmal"); + } } - } else { - done.set(false); - if (player != null) { - ChatUtil.sendErrorMessage(Bukkit.getPlayer(saveID), "Map konnte nicht richtig gespeichert werden, bitte versuche es noch einmal"); + isSavingWorld = false; + try { + FileUtils.deleteDirectory(dir); + } catch (IOException ex) { + plugin.getLogger().log(Level.SEVERE, "Could not delete tempFolder ", ex); } - } - try { - FileUtils.deleteDirectory(dir); - } catch (IOException ex) { - plugin.getLogger().log(Level.SEVERE, "Could not delete tempFolder ", ex); - } + }); }); } catch (IOException ex) { plugin.getLogger().log(Level.SEVERE, "Could not save world ", ex); } - isSavingWorld = false; - done.get(); } public static void restartServer(@Nullable String seed) {