From cc521dc2843ead939ca6219cbb6582f2512ef9bc Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Tue, 6 Oct 2026 11:35:16 +0200 Subject: [PATCH] fix: reuse already loaded world and handle Folia unsupported world creation --- .../dev/loki/loparkour/world/core/World.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/loki/loparkour/world/core/World.java b/src/main/java/dev/loki/loparkour/world/core/World.java index 68be882..b6632f0 100644 --- a/src/main/java/dev/loki/loparkour/world/core/World.java +++ b/src/main/java/dev/loki/loparkour/world/core/World.java @@ -54,6 +54,11 @@ public class World { if (Config.CONFIG.getBoolean("world.delete-on-reload")) { deleteWorld(); + } else if (world != null) { + // Already loaded (e.g. pre-created by a worlds plugin, required on Folia) — do not recreate. + LoParkour.log("Using already loaded world " + name); + setup(); + return; } createWorld(); @@ -71,6 +76,10 @@ public class World { .environment(org.bukkit.World.Environment.NORMAL); world = Bukkit.createWorld(creator); + } catch (UnsupportedOperationException ex) { + LoParkour.getPlugin().getLogger().severe( + "World creation is not supported on this server (Folia). Pre-create the world '" + name + + "' with a worlds plugin and restart."); } catch (IllegalArgumentException | IllegalStateException ex) { LoParkour.getPlugin().getLogger().severe( "Error while trying to create the parkour world — check world.name — " + ex.getMessage()); @@ -130,7 +139,13 @@ public class World { return; } - Bukkit.unloadWorld(name, false); + try { + Bukkit.unloadWorld(name, false); + } catch (UnsupportedOperationException ex) { + LoParkour.getPlugin().getLogger().severe( + "Cannot unload/delete world on this server (Folia) — set world.delete-on-reload to false."); + return; + } try (Stream files = Files.walk(folder.toPath())) { files.sorted(Comparator.reverseOrder())