From 3361ba2fabd2c0d86d78b936ab7b5907bf7a0003 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 24 Aug 2023 07:41:08 -0500 Subject: [PATCH] Fix config presets rewriting the config file before it loads --- .../com/seibel/distanthorizons/core/config/Config.java | 10 +++++++++- .../presets/AbstractPresetConfigEventHandler.java | 7 +++++++ .../core/config/file/ConfigFileHandling.java | 7 +++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java index 2bbff4aa4..ff23e1864 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java @@ -31,7 +31,6 @@ import com.seibel.distanthorizons.core.config.eventHandlers.UnsafeValuesConfigLi import com.seibel.distanthorizons.core.config.eventHandlers.WorldCurvatureConfigEventHandler; import com.seibel.distanthorizons.core.config.eventHandlers.presets.ThreadPresetConfigEventHandler; import com.seibel.distanthorizons.core.config.eventHandlers.presets.RenderQualityPresetConfigEventHandler; -import com.seibel.distanthorizons.core.config.listeners.ConfigChangeListener; import com.seibel.distanthorizons.core.config.types.*; import com.seibel.distanthorizons.core.config.types.enums.EConfigEntryAppearance; import com.seibel.distanthorizons.core.config.types.enums.EConfigEntryPerformance; @@ -61,6 +60,15 @@ public class Config public static ConfigCategory client = new ConfigCategory.Builder().set(Client.class).build(); + /** + * False if the config hasn't been loaded in from file yet. + * While in this state the config shouldn't be modified since it may cause file corruption.

+ * + * True if the config has been loaded and is ready to use. + */ + public static boolean loaded = false; + + public static class Client { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java index 343af2b65..1aae2f6d8 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java @@ -1,5 +1,6 @@ package com.seibel.distanthorizons.core.config.eventHandlers.presets; +import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.config.ConfigEntryWithPresetOptions; import com.seibel.distanthorizons.core.config.listeners.IConfigListener; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; @@ -62,6 +63,12 @@ public abstract class AbstractPresetConfigEventHandler