From 0bbea064a88a804faf1e827c1d196cffc32298b6 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Wed, 28 Oct 2026 06:03:15 -0400 Subject: [PATCH] Abort boot when MB_STATIC_BUILDINGS is missing or unknown A missing setting threw a NullPointerException, and an unknown one fell back to DB without a word. Both now abort with a message, as MB_STATIC_RUNEGATES does. Co-Authored-By: Claude Opus 5.5 --- src/engine/mbEnums.java | 6 +++++- src/engine/server/world/WorldServer.java | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/engine/mbEnums.java b/src/engine/mbEnums.java index ae9bc323..aeca0aa7 100644 --- a/src/engine/mbEnums.java +++ b/src/engine/mbEnums.java @@ -3120,6 +3120,7 @@ public class mbEnums { // MB_STATIC_BUILDINGS (World Boot Plan 2.4). DB: static buildings from obj_building, before the migration. // PARITY: DB load plus the JSON buildings compared and the migration mapping written. JSON: after the migration. + // Required; null when missing or unknown, and boot aborts. public enum StaticBuildingMode { DB, PARITY, @@ -3127,11 +3128,14 @@ public class mbEnums { public static StaticBuildingMode fromConfig(String configValue) { + if (configValue == null) + return null; + for (StaticBuildingMode mode : values()) if (mode.name().equalsIgnoreCase(configValue.trim())) return mode; - return DB; + return null; } } diff --git a/src/engine/server/world/WorldServer.java b/src/engine/server/world/WorldServer.java index 5228f344..366d07c6 100644 --- a/src/engine/server/world/WorldServer.java +++ b/src/engine/server/world/WorldServer.java @@ -557,6 +557,12 @@ public class WorldServer { long start = System.currentTimeMillis(); staticBuildingMode = StaticBuildingLoader.getMode(); + + if (staticBuildingMode == null) { + Logger.error("ABORT! MB_STATIC_BUILDINGS is '" + ConfigManager.MB_STATIC_BUILDINGS.getValue() + "'; set it to DB, PARITY or JSON."); + exitServer(1); + } + staticZoneRows = DbManager.StaticWorldQueries.COUNT_STATIC_ZONE_ROWS(); Logger.info("Static buildings: MB_STATIC_BUILDINGS " + staticBuildingMode + ", " + staticZoneRows + " static zone rows in obj_zone");