From 4c9689af6f715bb00c0084790247f8a0db42ce81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatrice=20Dellac=C3=A0?= Date: Sat, 12 Nov 2022 05:31:14 +0100 Subject: [PATCH] Reinit limbo world at startup In case server crashed, was stopped before all regions were cleared, and various other cases including folder size. --- .../limbomanager/objects/WorldGenerator.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/wtf/beatrice/limbomanager/objects/WorldGenerator.java b/src/main/java/wtf/beatrice/limbomanager/objects/WorldGenerator.java index 50f6580..aa1fafe 100644 --- a/src/main/java/wtf/beatrice/limbomanager/objects/WorldGenerator.java +++ b/src/main/java/wtf/beatrice/limbomanager/objects/WorldGenerator.java @@ -1,21 +1,47 @@ package wtf.beatrice.limbomanager.objects; +import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.WorldCreator; import org.bukkit.WorldType; import wtf.beatrice.limbomanager.Cache; +import wtf.beatrice.limbomanager.LimboManager; + +import java.io.File; public class WorldGenerator { public void generateWorld() { + // unload world + LimboManager.getInstance().getLogger().info("Force unloading world..."); + Bukkit.getServer().unloadWorld(Cache.worldName, false); + + // delete world files + LimboManager.getInstance().getLogger().info("Resetting world..."); + String worldFolderPath = Bukkit.getServer().getWorldContainer().getAbsolutePath() + File.separator + Cache.worldName; + File worldFolder = new File(worldFolderPath); + deleteDirectory(worldFolder); + // create world + LimboManager.getInstance().getLogger().info("Creating world from scratch..."); WorldCreator worldCreator = new WorldCreator(Cache.worldName); worldCreator.environment(World.Environment.THE_END); worldCreator.generateStructures(false); worldCreator.type(WorldType.FLAT); worldCreator.generator("VoidGen"); Cache.limboWorld = worldCreator.createWorld(); + LimboManager.getInstance().getLogger().info("World ready!"); + } + + boolean deleteDirectory(File directoryToBeDeleted) { + File[] allContents = directoryToBeDeleted.listFiles(); + if (allContents != null) { + for (File file : allContents) { + deleteDirectory(file); + } + } + return directoryToBeDeleted.delete(); } }