From 0e188de320fa2f33d2a523ddcb216732aadde58a Mon Sep 17 00:00:00 2001 From: NotAlexNoyle Date: Sun, 17 May 2026 22:38:30 -0400 Subject: [PATCH] Improved world management --- .../buildbattle/arena/ArenaRegistry.java | 6 +++--- .../handlers/misc/MyWorldsManager.java | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/plugily/projects/buildbattle/arena/ArenaRegistry.java b/src/main/java/plugily/projects/buildbattle/arena/ArenaRegistry.java index fa2c2658..9be8f72a 100644 --- a/src/main/java/plugily/projects/buildbattle/arena/ArenaRegistry.java +++ b/src/main/java/plugily/projects/buildbattle/arena/ArenaRegistry.java @@ -87,7 +87,7 @@ public class ArenaRegistry extends PluginArenaRegistry { boolean isGuessArena = arena instanceof GuessArena; String arenaPath = id + "."; - if (!plugin.getMyWorldsManager().validateArenaWorld( + if (!plugin.getMyWorldsManager().requireConfiguredArenaWorld( plugin.getMyWorldsManager().getWorldName(section.getString(arenaPath + "lobbylocation")), "Lobby location", (BaseArena) arena)) { @@ -96,7 +96,7 @@ public class ArenaRegistry extends PluginArenaRegistry { } - if (!plugin.getMyWorldsManager().validateArenaWorld( + if (!plugin.getMyWorldsManager().requireConfiguredArenaWorld( plugin.getMyWorldsManager().getWorldName(section.getString(arenaPath + "startlocation")), "Start location", (BaseArena) arena)) { @@ -105,7 +105,7 @@ public class ArenaRegistry extends PluginArenaRegistry { } - if (!plugin.getMyWorldsManager().validateArenaWorld( + if (!plugin.getMyWorldsManager().requireConfiguredArenaWorld( plugin.getMyWorldsManager().getWorldName(section.getString(arenaPath + "endlocation")), "End location", (BaseArena) arena)) { diff --git a/src/main/java/plugily/projects/buildbattle/handlers/misc/MyWorldsManager.java b/src/main/java/plugily/projects/buildbattle/handlers/misc/MyWorldsManager.java index ae7b61f9..610f03e7 100644 --- a/src/main/java/plugily/projects/buildbattle/handlers/misc/MyWorldsManager.java +++ b/src/main/java/plugily/projects/buildbattle/handlers/misc/MyWorldsManager.java @@ -114,6 +114,27 @@ public class MyWorldsManager { } + /** + * Stricter variant of {@link #validateArenaWorld} for required arena locations. + * Blank/missing world names are rejected so players are never stranded inside + * the arena world after a match ends. + */ + public boolean requireConfiguredArenaWorld(@Nullable String worldName, String label, @Nullable BaseArena arena) { + + if (worldName == null || worldName.isBlank()) { + + plugin.getDebugger() + .sendConsoleMsg(new MessageBuilder("VALIDATOR_INVALID_ARENA_CONFIGURATION").asKey().value(label + + " is not configured. Set it to a dedicated MyWorlds lobby/game world via the setup GUI.") + .arena(arena).build()); + return false; + + } + + return validateArenaWorld(worldName, label, arena); + + } + public boolean isProtectedWorld(@Nullable World world) { return world != null && isProtectedWorld(world.getName());