diff --git a/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java b/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java index 49988ca0f..e22ebff27 100644 --- a/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java +++ b/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java @@ -265,6 +265,17 @@ public class CommandIris implements DecreeExecutor { return; } sender().sendMessage(C.GREEN + "Removing world: " + world.getName()); + + if (!IrisToolbelt.evacuate(world)) { + sender().sendMessage(C.RED + "Failed to evacuate world: " + world.getName()); + return; + } + + if (!Bukkit.unloadWorld(world, false)) { + sender().sendMessage(C.RED + "Failed to unload world: " + world.getName()); + return; + } + try { if (IrisToolbelt.removeWorld(world)) { sender().sendMessage(C.GREEN + "Successfully removed " + world.getName() + " from bukkit.yml"); @@ -277,27 +288,32 @@ public class CommandIris implements DecreeExecutor { } IrisToolbelt.evacuate(world, "Deleting world"); deletingWorld = true; - Bukkit.unloadWorld(world, false); - int retries = 12; - if (delete) { + if (!delete) { + deletingWorld = false; + return; + } + VolmitSender sender = sender(); + J.a(() -> { + int retries = 12; + if (deleteDirectory(world.getWorldFolder())) { - sender().sendMessage(C.GREEN + "Successfully removed world folder"); + sender.sendMessage(C.GREEN + "Successfully removed world folder"); } else { while(true){ if (deleteDirectory(world.getWorldFolder())){ - sender().sendMessage(C.GREEN + "Successfully removed world folder"); + sender.sendMessage(C.GREEN + "Successfully removed world folder"); break; } retries--; if (retries == 0){ - sender().sendMessage(C.RED + "Failed to remove world folder"); + sender.sendMessage(C.RED + "Failed to remove world folder"); break; } J.sleep(3000); } } - } - deletingWorld = false; + deletingWorld = false; + }); } public static boolean deleteDirectory(File dir) {