diff --git a/core/src/main/java/com/seibel/lod/core/config/Config.java b/core/src/main/java/com/seibel/lod/core/config/Config.java
index 56de6360c..88981d2ed 100644
--- a/core/src/main/java/com/seibel/lod/core/config/Config.java
+++ b/core/src/main/java/com/seibel/lod/core/config/Config.java
@@ -36,10 +36,15 @@ import java.util.*;
/**
- * This handles any configuration the user has access to.
+ * This handles any configuration the user has access to.
+ *
+ * Note:
+ * Only add simpler listeners here (IE listeners that only depend on 1 config entry).
+ * For listeners that depend on 2 or more config entries, add them before the config menu is opened.
+ * Otherwise, you will have issues where only some of the config entries will exist when your listener is created.
*
* @author coolGi
- * @version 2023-6-7
+ * @version 2023-6-12
*/
public class Config
@@ -68,14 +73,12 @@ public class Config
public static class Client
{
- // TODO modify debugging.rendererMode
public static ConfigEntry quickEnableRendering = new ConfigEntry.Builder()
.set(true)
.comment(""
+ "If true, Distant Horizons will render LODs beyond the vanilla render distance."
+ "")
- .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) // TODO set when the game boots
- //.addListener(null) // TODO add listener
+ .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI)
.build();
public static ConfigLinkedEntry quickLodChunkRenderDistance = new ConfigLinkedEntry(Advanced.Graphics.Quality.lodChunkRenderDistance);
@@ -1077,10 +1080,11 @@ public class Config
{
public static ConfigUIComment resetConfirmationNote = new ConfigUIComment();
+ // TODO implement
public static ConfigEntry resetAllSettings = new ConfigEntry.Builder()
.set(false)
.setAppearance(EConfigEntryAppearance.ONLY_IN_GUI)
- //.addListener(null) // TODO add listener
+ //.addListener(null)
.build();
}
diff --git a/core/src/main/java/com/seibel/lod/core/config/eventHandlers/QuickRenderToggleConfigEventHandler.java b/core/src/main/java/com/seibel/lod/core/config/eventHandlers/QuickRenderToggleConfigEventHandler.java
new file mode 100644
index 000000000..73a671dfd
--- /dev/null
+++ b/core/src/main/java/com/seibel/lod/core/config/eventHandlers/QuickRenderToggleConfigEventHandler.java
@@ -0,0 +1,32 @@
+package com.seibel.lod.core.config.eventHandlers;
+
+import com.seibel.lod.api.enums.rendering.ERendererMode;
+import com.seibel.lod.core.config.Config;
+import com.seibel.lod.core.config.listeners.ConfigChangeListener;
+
+public class QuickRenderToggleConfigEventHandler
+{
+ public static QuickRenderToggleConfigEventHandler INSTANCE = new QuickRenderToggleConfigEventHandler();
+
+ private final ConfigChangeListener quickRenderChangeListener;
+ private final ConfigChangeListener rendererModeChangeListener;
+
+
+
+ /** private since we only ever need one handler at a time */
+ private QuickRenderToggleConfigEventHandler()
+ {
+ this.quickRenderChangeListener = new ConfigChangeListener<>(Config.Client.quickEnableRendering, (val) -> { Config.Client.Advanced.Debugging.rendererMode.set(Config.Client.quickEnableRendering.get() ? ERendererMode.DEFAULT : ERendererMode.DISABLED); });
+ this.rendererModeChangeListener = new ConfigChangeListener<>(Config.Client.Advanced.Debugging.rendererMode, (val) -> { Config.Client.quickEnableRendering.set(Config.Client.Advanced.Debugging.rendererMode.get() != ERendererMode.DISABLED); });
+ }
+
+ /**
+ * Set the UI only config based on what is set in the file.
+ * This should only be called once.
+ */
+ public void setUiOnlyConfigValues()
+ {
+ Config.Client.quickEnableRendering.set(Config.Client.Advanced.Debugging.rendererMode.get() != ERendererMode.DISABLED);
+ }
+
+}
diff --git a/core/src/main/java/com/seibel/lod/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java b/core/src/main/java/com/seibel/lod/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java
index 3c66d4f36..7351a1e84 100644
--- a/core/src/main/java/com/seibel/lod/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java
+++ b/core/src/main/java/com/seibel/lod/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java
@@ -20,6 +20,17 @@ public abstract class AbstractPresetConfigEventHandler
+ * This should only be called once.
+ */
+ public void setUiOnlyConfigValues()
+ {
+ TPresetEnum currentQualitySetting = this.getCurrentQualityPreset();
+ this.getPresetConfigEntry().set(currentQualitySetting);
+ }
+
+
//===========//
// listeners //
//===========//
@@ -28,15 +39,6 @@ public abstract class AbstractPresetConfigEventHandler extends AbstractConfigType> implem
public ConfigEntry build()
{
- return new ConfigEntry(tmpAppearance, tmpValue, tmpComment, tmpMin, tmpMax, tmpUseApiOverwrite, tmpPerformance, tmpIConfigListener);
+ return new ConfigEntry<>(this.tmpAppearance, this.tmpValue, this.tmpComment, this.tmpMin, this.tmpMax, this.tmpUseApiOverwrite, this.tmpPerformance, this.tmpIConfigListener);
}
}