diff --git a/loader-common/src/main/java/org/cyclops/cyclopscore/config/ModConfigLocation.java b/loader-common/src/main/java/org/cyclops/cyclopscore/config/ModConfigLocation.java index 0f544a21f46..826177af780 100644 --- a/loader-common/src/main/java/org/cyclops/cyclopscore/config/ModConfigLocation.java +++ b/loader-common/src/main/java/org/cyclops/cyclopscore/config/ModConfigLocation.java @@ -4,6 +4,7 @@ * Copied from NeoForge's ModConfig.Type to be aligned with it. * @author rubensworks */ +// TODO: in next major, rename COMMON to LOCAL and SERVER to SYNCED to match NeoForge's ModConfig.Type public enum ModConfigLocation { /** * Common mod config for configuration that needs to be loaded on both environments. diff --git a/loader-fabric/src/main/java/org/cyclops/cyclopscore/modcompat/forgeconfig/ConfigHandlerFabricHandler.java b/loader-fabric/src/main/java/org/cyclops/cyclopscore/modcompat/forgeconfig/ConfigHandlerFabricHandler.java index a2f934edb5e..b0ef8ac4b1e 100644 --- a/loader-fabric/src/main/java/org/cyclops/cyclopscore/modcompat/forgeconfig/ConfigHandlerFabricHandler.java +++ b/loader-fabric/src/main/java/org/cyclops/cyclopscore/modcompat/forgeconfig/ConfigHandlerFabricHandler.java @@ -27,12 +27,12 @@ public ConfigHandlerFabricHandler(ConfigHandlerFabric configHandler) { public void onLoad(ModConfig configEvent) { this.configHandler.getMod().log(Level.TRACE, "Load config"); - syncProcessedConfigs(false); + syncProcessedConfigs(configEvent, false); } public void onReload(ModConfig configEvent) { this.configHandler.getMod().log(Level.TRACE, "Reload config"); - syncProcessedConfigs(true); + syncProcessedConfigs(configEvent, true); } /** @@ -62,7 +62,7 @@ public void initialize(Collection configInitializers) { configBuilders.put(modConfigLocationToType(configProperty.getConfigLocation()), configBuilderProperty); } this.configHandler.getCategories().add(configProperty.getCategory()); - this.onConfigPropertyInit(configProperty, configBuilder); + this.onConfigPropertyInit(configProperty, configBuilderProperty); if (configProperty.isCommandable()) { this.configHandler.getCommandableProperties().put(configProperty.getName(), configProperty); } @@ -102,13 +102,18 @@ protected void onConfigPropertyInit(ConfigurablePropertyData configProper /** * Sync the config values that were already loaded. * This will update the values in-game and in the config file. + * @param config The mod config that is being loaded. * @param reload If we are reloading, otherwise this is an initial load. */ @SuppressWarnings("unchecked") - public void syncProcessedConfigs(boolean reload) { + public void syncProcessedConfigs(ModConfig config, boolean reload) { for(ExtendedConfigCommon eConfig : this.configHandler.getConfigurables()) { // Re-save additional properties for(ConfigurablePropertyData configProperty : eConfig.configProperties.values()) { + // Only properties of the loaded config have values, others would throw. + if (modConfigLocationToType(configProperty.getConfigLocation()) != config.getType()) { + continue; + } configProperty.saveToField(); eConfig.onConfigPropertyReload(configProperty, reload); } diff --git a/loader-forge/src/main/java/org/cyclops/cyclopscore/config/ConfigHandlerForge.java b/loader-forge/src/main/java/org/cyclops/cyclopscore/config/ConfigHandlerForge.java index da0502dca4b..56738e197a4 100644 --- a/loader-forge/src/main/java/org/cyclops/cyclopscore/config/ConfigHandlerForge.java +++ b/loader-forge/src/main/java/org/cyclops/cyclopscore/config/ConfigHandlerForge.java @@ -111,7 +111,7 @@ public void initialize(Collection configInitializers) { configBuilders.put(modConfigLocationToType(configProperty.getConfigLocation()), configBuilderProperty); } getCategories().add(configProperty.getCategory()); - this.onConfigPropertyInit(configProperty, configBuilder); + this.onConfigPropertyInit(configProperty, configBuilderProperty); if (configProperty.isCommandable()) { getCommandableProperties().put(configProperty.getName(), configProperty); } @@ -159,6 +159,10 @@ public void syncProcessedConfigs(ModConfig config, boolean reload) { for(ExtendedConfigCommon eConfig : this.getConfigurables()) { // Re-save additional properties for(ConfigurablePropertyData configProperty : eConfig.configProperties.values()) { + // Only properties of the loaded config have values, others would throw. + if (modConfigLocationToType(configProperty.getConfigLocation()) != config.getType()) { + continue; + } configProperty.saveToField(); eConfig.onConfigPropertyReload(configProperty, reload); } diff --git a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/config/ConfigHandlerNeoForge.java b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/config/ConfigHandlerNeoForge.java index 20e22c462e4..92c5b6504f2 100644 --- a/loader-neoforge/src/main/java/org/cyclops/cyclopscore/config/ConfigHandlerNeoForge.java +++ b/loader-neoforge/src/main/java/org/cyclops/cyclopscore/config/ConfigHandlerNeoForge.java @@ -112,7 +112,7 @@ public void initialize(Collection configInitializers) { configBuilders.put(modConfigLocationToType(configProperty.getConfigLocation()), configBuilderProperty); } getCategories().add(configProperty.getCategory()); - this.onConfigPropertyInit(configProperty, configBuilder); + this.onConfigPropertyInit(configProperty, configBuilderProperty); if (configProperty.isCommandable()) { getCommandableProperties().put(configProperty.getName(), configProperty); } @@ -160,6 +160,10 @@ public void syncProcessedConfigs(ModConfig config, boolean reload) { for(ExtendedConfigCommon eConfig : this.getConfigurables()) { // Re-save additional properties for(ConfigurablePropertyData configProperty : eConfig.configProperties.values()) { + // Only properties of the loaded config have values, others would throw. + if (modConfigLocationToType(configProperty.getConfigLocation()) != config.getType()) { + continue; + } configProperty.saveToField(); eConfig.onConfigPropertyReload(configProperty, reload); }