From e2c763592c3a9b43af0d11c44b32e9629a67ad8e Mon Sep 17 00:00:00 2001 From: kuroppoi <68156848+kuroppoi@users.noreply.github.com> Date: Tue, 31 Oct 2023 02:42:23 +0100 Subject: [PATCH] Add game config override support --- .../gameserver/GameConfiguration.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gameserver/src/main/java/brainwine/gameserver/GameConfiguration.java b/gameserver/src/main/java/brainwine/gameserver/GameConfiguration.java index a7df314..b3b8492 100644 --- a/gameserver/src/main/java/brainwine/gameserver/GameConfiguration.java +++ b/gameserver/src/main/java/brainwine/gameserver/GameConfiguration.java @@ -2,6 +2,8 @@ package brainwine.gameserver; import static brainwine.shared.LogMarkers.SERVER_MARKER; +import java.io.File; +import java.io.FileInputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -50,6 +52,7 @@ public class GameConfiguration { options.setMaxAliasesForCollections(Short.MAX_VALUE); yaml = new Yaml(options); loadConfigFiles(); + loadConfigOverrides(); logger.info(SERVER_MARKER, "Configuring ..."); configure(); logger.info(SERVER_MARKER, "Caching versioned configurations ..."); @@ -203,6 +206,25 @@ public class GameConfiguration { } } + private static void loadConfigOverrides() { + try { + File configOverridesFile = new File("config_overrides.yml"); + + if(!configOverridesFile.exists()) { + logger.info(SERVER_MARKER, "No config overrides found. To override game config properties, put them in a file called 'config_overrides.yml'"); + return; + } + + try(FileInputStream inputStream = new FileInputStream(configOverridesFile)) { + Map configOverrides = yaml.load(inputStream); + merge(baseConfig, configOverrides); + logger.warn(SERVER_MARKER, "Configuration overrides have been loaded, proceed with caution."); + } + } catch(Exception e) { + logger.error(SERVER_MARKER, "Could not load configuration overrides", e); + } + } + private static void merge(Map dst, Map src) { src.forEach((k, v) -> { if(dst.containsKey(k)) {