From d7fb7c2a61777f85ed441a099f0490af6e95a482 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Sun, 26 Oct 2025 18:14:52 +0100 Subject: [PATCH] Hotfix static initialisation of GameModeConfig --- .../src/de/steamwar/sql/GameModeConfig.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/CommonCore/SQL/src/de/steamwar/sql/GameModeConfig.java b/CommonCore/SQL/src/de/steamwar/sql/GameModeConfig.java index 2c12a202..09e23d17 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/GameModeConfig.java +++ b/CommonCore/SQL/src/de/steamwar/sql/GameModeConfig.java @@ -40,9 +40,9 @@ public final class GameModeConfig { public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy HH:mm"); private static final Random random = new Random(); - private static final Map> byFileName = new HashMap<>(); - private static final Map> byGameName = new HashMap<>(); - private static final Map> bySchematicType = new HashMap<>(); + private static final Map> byFileName; + private static final Map> byGameName; + private static final Map> bySchematicType; public static GameModeConfig getByFileName(File file) { return (GameModeConfig) byFileName.get(file.getName()); @@ -56,16 +56,20 @@ public final class GameModeConfig { return (GameModeConfig) bySchematicType.get(schematicType); } - static { - SchematicType.values(); - } - - private static final GameModeConfig DEFAULTS = SQLWrapper.impl.loadGameModeConfig(null); + private static final GameModeConfig DEFAULTS; public static GameModeConfig getDefaults() { return (GameModeConfig) DEFAULTS; } + static { + byFileName = new HashMap<>(); + byGameName = new HashMap<>(); + bySchematicType = new HashMap<>(); + SchematicType.values(); + DEFAULTS = SQLWrapper.impl.loadGameModeConfig(null); + } + public final boolean loaded; public final File configFile; @@ -208,15 +212,13 @@ public final class GameModeConfig { Arena = new ArenaConfig(loader.with("Arena"), Schematic.Size, EnterStages); - if (cacheInstance) { - if (configFile != null) { - byFileName.put(configFile.getName(), (GameModeConfig) this); - } + if (cacheInstance && file != null) { + byFileName.put(configFile.getName(), (GameModeConfig) this); byGameName.put(GameName, (GameModeConfig) this); } if (Schematic.Type != null) { - if (cacheInstance) { + if (cacheInstance && file != null) { bySchematicType.put(Schematic.Type, (GameModeConfig) this); if (Schematic.Type.checkType() != null) { bySchematicType.put(Schematic.Type.checkType(), (GameModeConfig) this); @@ -239,7 +241,7 @@ public final class GameModeConfig { try { Schematic_TypeField.set(Schematic, current); - if (cacheInstance) { + if (cacheInstance && file != null) { bySchematicType.put(Schematic.Type, (GameModeConfig) this); if (Schematic.Type.checkType() != null) { bySchematicType.put(Schematic.Type.checkType(), (GameModeConfig) this);