diff --git a/commons/src/main/java/net/swofty/commons/config/ConfigProvider.java b/commons/src/main/java/net/swofty/commons/config/ConfigProvider.java index fca54b42f..b98e4925e 100644 --- a/commons/src/main/java/net/swofty/commons/config/ConfigProvider.java +++ b/commons/src/main/java/net/swofty/commons/config/ConfigProvider.java @@ -13,31 +13,34 @@ public class ConfigProvider { - @Getter - @Setter - @Accessors(fluent = true) - private static Settings settings; - - static { - try { - Logger.info("Loading config..."); - YamlConfigurationLoader loader = YamlConfigurationLoader.builder() - .path(Path.of("./configuration/config.yml")) - .nodeStyle(NodeStyle.BLOCK) - .build(); - - CommentedConfigurationNode node = loader.load(); - Settings existingSettings = node.get(Settings.class); - if (existingSettings == null) { - existingSettings = new Settings(); - } - Settings config = existingSettings; - node.set(Settings.class, config); - loader.save(node); - - settings(config); - } catch (IOException e) { - throw new RuntimeException("Failed to load configuration", e); - } - } -} \ No newline at end of file + @Getter + @Setter + @Accessors(fluent = true) + private static Settings settings; + + static { + try { + Logger.info("Loading config..."); + + YamlConfigurationLoader loader = YamlConfigurationLoader.builder() + .path(Path.of("./configuration/config.yml")) + .nodeStyle(NodeStyle.BLOCK) + .build(); + + CommentedConfigurationNode root = loader.load(); + CommentedConfigurationNode defaults = loader.createNode(); + defaults.set(Settings.class, new Settings()); + root.mergeFrom(defaults); + + Settings loaded = root.get(Settings.class); + if (loaded == null) { + loaded = new Settings(); + } + + loader.save(root); + settings(loaded); + } catch (IOException e) { + throw new RuntimeException("Failed to load configuration", e); + } + } +}