diff --git a/common/src/main/java/com/seibel/lod/common/Config.java b/common/src/main/java/com/seibel/lod/common/Config.java index 7451fb5b4..72724da9e 100644 --- a/common/src/main/java/com/seibel/lod/common/Config.java +++ b/common/src/main/java/com/seibel/lod/common/Config.java @@ -20,7 +20,6 @@ package com.seibel.lod.common; import com.seibel.lod.common.wrappers.config.ConfigGui; -import com.seibel.lod.common.wrappers.world.DimensionTypeWrapper; import com.seibel.lod.core.config.*; import com.seibel.lod.core.enums.config.*; import com.seibel.lod.core.enums.rendering.*; @@ -57,8 +56,11 @@ public class Config extends ConfigGui @ConfigAnnotations.ScreenEntry public static Client client; + // I know this option should be in Client + // This is a hacky method to not show the button in the options screen but show it in the mod menu + // Tough it is in client in the wrapper singleton @ConfigAnnotations.Entry - public static boolean ShowButton = true; + public static boolean optionsButton = true; public static class Client { diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java b/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java index 029dd50d6..033299897 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java @@ -60,7 +60,7 @@ import net.minecraft.client.gui.narration.NarratableEntry; // Remove in 1.16 * Credits to Motschen * * @author coolGi2007 - * @version 12-28-2021 + * @version 1-6-2022 */ @SuppressWarnings("unchecked") public abstract class ConfigGui @@ -109,7 +109,7 @@ public abstract class ConfigGui public static final int ResetButtonWidth = 40; } - protected static class EntryInfo + public static class EntryInfo { Field field; Object widget; @@ -164,7 +164,6 @@ public abstract class ConfigGui if (field.isAnnotationPresent(ConfigAnnotations.Entry.class) || field.isAnnotationPresent(ConfigAnnotations.Comment.class) || field.isAnnotationPresent(ConfigAnnotations.ScreenEntry.class)) { // If putting in your own mod then put your own check for server sided - entryMap.put((!category.isEmpty() ? category + "." : "") + field.getName(), info); info.category = category; if (!LodCommonMain.serverSided) initClient(field, info, category); @@ -172,6 +171,7 @@ public abstract class ConfigGui if (field.isAnnotationPresent(ConfigAnnotations.Entry.class)) { + entryMap.put((!category.isEmpty() ? category + "." : "") + field.getName(), info); info.varClass = field.getType(); try { @@ -327,6 +327,7 @@ public abstract class ConfigGui for (EntryInfo info : entries) { if (info.field.isAnnotationPresent(ConfigAnnotations.Entry.class)) { +// editSingleOption.saveOption(info); config.set((info.category.isEmpty() ? "" : info.category + ".") + info.field.getName(), info.value); } } @@ -355,37 +356,69 @@ public abstract class ConfigGui // Puts everything into its variable for (EntryInfo info : entries) { if (info.field.isAnnotationPresent(ConfigAnnotations.Entry.class)) { - saveOption(info); +// editSingleOption.loadOption(info); + String itemPath = (info.category.isEmpty() ? "" : info.category + ".") + info.field.getName(); + if (config.contains(itemPath)) { + if (info.field.getType().isEnum()) + info.value = config.getEnum(itemPath, info.varClass); + else + info.value = config.get(itemPath); + } else + config.set(itemPath, info.value); + + try { + info.field.set(null, info.value); + } catch (IllegalAccessException ignored) { + } } } config.close(); } - // TODO: Use this in the config wrapper singleton - public static void saveOption(String name) { - saveOption(entryMap.get(name)); - } + public static class editSingleOption { + public static EntryInfo getEntry(String name) { + return entryMap.get(name); + } - public static void saveOption(EntryInfo info) - { - CommentedFileConfig config = CommentedFileConfig.builder(configFilePath.toFile()).autosave().build(); - config.load(); + public static void saveOption(String name) { + saveOption(entryMap.get(name)); + } - String itemPath = (info.category.isEmpty() ? "" : info.category + ".") + info.field.getName(); - if (config.contains(itemPath)) { - if (info.field.getType().isEnum()) - info.value = config.getEnum(itemPath, info.varClass); - else - info.value = config.get(itemPath); - } else - config.set(itemPath, info.value); + public static void saveOption(EntryInfo info) { + CommentedFileConfig config = CommentedFileConfig.builder(configFilePath.toFile()).build(); + config.load(); - try { - info.field.set(null, info.value); - } catch (IllegalAccessException ignored) {} + config.set((info.category.isEmpty() ? "" : info.category + ".") + info.field.getName(), info.value); - config.close(); + config.save(); + config.close(); + } + + public static void loadOption(String name) { + loadOption(entryMap.get(name)); + } + + public static void loadOption(EntryInfo info) { + CommentedFileConfig config = CommentedFileConfig.builder(configFilePath.toFile()).autosave().build(); + config.load(); + + String itemPath = (info.category.isEmpty() ? "" : info.category + ".") + info.field.getName(); + if (config.contains(itemPath)) { + if (info.field.getType().isEnum()) + info.value = config.getEnum(itemPath, info.varClass); + else + info.value = config.get(itemPath); + } else + config.set(itemPath, info.value); + + try { + info.field.set(null, info.value); + } catch (IllegalAccessException ignored) { + } + + config.close(); + } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/config/LodConfigWrapperSingleton.java b/common/src/main/java/com/seibel/lod/common/wrappers/config/LodConfigWrapperSingleton.java index dfedc1571..5893c5739 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/config/LodConfigWrapperSingleton.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/config/LodConfigWrapperSingleton.java @@ -50,6 +50,18 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton } + @Override + public boolean getOptionsButton() + { + return Config.optionsButton; + } + @Override + public void setOptionsButton(boolean newOptionsButton) + { + ConfigGui.editSingleOption.getEntry("optionsButton").value = newOptionsButton; + ConfigGui.editSingleOption.saveOption("optionsButton"); + } + //================// // Client Configs // @@ -118,8 +130,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setDrawResolution(HorizontalResolution newHorizontalResolution) { - Config.Client.Graphics.Quality.drawResolution = newHorizontalResolution; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.quality.drawResolution").value = newHorizontalResolution; + ConfigGui.editSingleOption.saveOption("client.graphics.quality.drawResolution"); } @@ -131,8 +143,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setLodChunkRenderDistance(int newLodChunkRenderDistance) { - Config.Client.Graphics.Quality.lodChunkRenderDistance = newLodChunkRenderDistance; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.quality.lodChunkRenderDistance").value = newLodChunkRenderDistance; + ConfigGui.editSingleOption.saveOption("client.graphics.quality.lodChunkRenderDistance"); } @@ -144,8 +156,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setVerticalQuality(VerticalQuality newVerticalQuality) { - Config.Client.Graphics.Quality.verticalQuality = newVerticalQuality; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.quality.verticalQuality").value = newVerticalQuality; + ConfigGui.editSingleOption.saveOption("client.graphics.quality.verticalQuality"); } @@ -157,8 +169,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setHorizontalScale(int newHorizontalScale) { - Config.Client.Graphics.Quality.horizontalScale = newHorizontalScale; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.quality.horizontalScale").value = newHorizontalScale; + ConfigGui.editSingleOption.saveOption("client.graphics.quality.horizontalScale"); } @@ -170,8 +182,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setHorizontalQuality(HorizontalQuality newHorizontalQuality) { - Config.Client.Graphics.Quality.horizontalQuality = newHorizontalQuality; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.quality.horizontalQuality").value = newHorizontalQuality; + ConfigGui.editSingleOption.saveOption("client.graphics.quality.horizontalQuality"); } } @@ -186,8 +198,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setFogDistance(FogDistance newFogDistance) { - Config.Client.Graphics.FogQuality.fogDistance = newFogDistance; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.fogQuality.fogDistance").value = newFogDistance; + ConfigGui.editSingleOption.saveOption("client.graphics.fogQuality.fogDistance"); } @@ -200,8 +212,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setFogDrawMode(FogDrawMode setFogDrawMode) { - Config.Client.Graphics.FogQuality.fogDrawMode = setFogDrawMode; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.fogQuality.fogDrawMode").value = setFogDrawMode; + ConfigGui.editSingleOption.saveOption("client.graphics.fogQuality.fogDrawMode"); } @@ -214,8 +226,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setFogColorMode(FogColorMode newFogColorMode) { - Config.Client.Graphics.FogQuality.fogColorMode = newFogColorMode; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.fogQuality.fogColorMode").value = newFogColorMode; + ConfigGui.editSingleOption.saveOption("client.graphics.fogQuality.fogColorMode"); } @@ -227,8 +239,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setDisableVanillaFog(boolean newDisableVanillaFog) { - Config.Client.Graphics.FogQuality.disableVanillaFog = newDisableVanillaFog; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.fogQuality.disableVanillaFog").value = newDisableVanillaFog; + ConfigGui.editSingleOption.saveOption("client.graphics.fogQuality.disableVanillaFog"); } } @@ -243,8 +255,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setCustomClouds(boolean newCustomClouds) { - Config.Client.Graphics.CloudQuality.customClouds = newCustomClouds; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.cloudQuality.customClouds").value = newCustomClouds; + ConfigGui.editSingleOption.saveOption("client.graphics.cloudQuality.customClouds"); } @@ -256,8 +268,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setFabulousClouds(boolean newFabulousClouds) { - Config.Client.Graphics.CloudQuality.fabulousClouds = newFabulousClouds; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.cloudQuality.fabulousClouds").value = newFabulousClouds; + ConfigGui.editSingleOption.saveOption("client.graphics.cloudQuality.fabulousClouds"); } @@ -269,8 +281,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setExtendClouds(boolean newExtendClouds) { - Config.Client.Graphics.CloudQuality.extendClouds = newExtendClouds; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.cloudQuality.extendClouds").value = newExtendClouds; + ConfigGui.editSingleOption.saveOption("client.graphics.cloudQuality.extendClouds"); } @@ -282,8 +294,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setCloudHeight(double newCloudHeight) { - Config.Client.Graphics.CloudQuality.cloudHeight = newCloudHeight; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.cloudQuality.cloudHeight").value = newCloudHeight; + ConfigGui.editSingleOption.saveOption("client.graphics.cloudQuality.cloudHeight"); } } @@ -298,8 +310,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setDisableDirectionalCulling(boolean newDisableDirectionalCulling) { - Config.Client.Graphics.AdvancedGraphics.disableDirectionalCulling = newDisableDirectionalCulling; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.advancedGraphics.disableDirectionalCulling").value = newDisableDirectionalCulling; + ConfigGui.editSingleOption.saveOption("client.graphics.advancedGraphics.disableDirectionalCulling"); } @@ -311,8 +323,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setAlwaysDrawAtMaxQuality(boolean newAlwaysDrawAtMaxQuality) { - Config.Client.Graphics.AdvancedGraphics.alwaysDrawAtMaxQuality = newAlwaysDrawAtMaxQuality; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.advancedGraphics.alwaysDrawAtMaxQuality").value = newAlwaysDrawAtMaxQuality; + ConfigGui.editSingleOption.saveOption("client.graphics.advancedGraphics.alwaysDrawAtMaxQuality"); } @@ -324,8 +336,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setVanillaOverdraw(VanillaOverdraw newVanillaOverdraw) { - Config.Client.Graphics.AdvancedGraphics.vanillaOverdraw = newVanillaOverdraw; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.advancedGraphics.vanillaOverdraw").value = newVanillaOverdraw; + ConfigGui.editSingleOption.saveOption("client.graphics.advancedGraphics.vanillaOverdraw"); } @Override @@ -334,10 +346,10 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton return Config.Client.Graphics.AdvancedGraphics.backsideCullingRange; } @Override - public void setBacksideCullingRange(int backsideCullingRange) + public void setBacksideCullingRange(int newBacksideCullingRange) { - Config.Client.Graphics.AdvancedGraphics.backsideCullingRange = backsideCullingRange; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.advancedGraphics.backsideCullingRange").value = newBacksideCullingRange; + ConfigGui.editSingleOption.saveOption("client.graphics.advancedGraphics.backsideCullingRange"); } @Override @@ -348,8 +360,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setUseExtendedNearClipPlane(boolean newUseExtendedNearClipPlane) { - Config.Client.Graphics.AdvancedGraphics.useExtendedNearClipPlane = newUseExtendedNearClipPlane; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.graphics.advancedGraphics.useExtendedNearClipPlane").value = newUseExtendedNearClipPlane; + ConfigGui.editSingleOption.saveOption("client.graphics.advancedGraphics.useExtendedNearClipPlane"); } } } @@ -370,8 +382,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setGenerationPriority(GenerationPriority newGenerationPriority) { - Config.Client.WorldGenerator.generationPriority = newGenerationPriority; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.worldGenerator.generationPriority").value = newGenerationPriority; + ConfigGui.editSingleOption.saveOption("client.worldGenerator.generationPriority"); } @@ -383,8 +395,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setDistanceGenerationMode(DistanceGenerationMode newDistanceGenerationMode) { - Config.Client.WorldGenerator.distanceGenerationMode = newDistanceGenerationMode; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.worldGenerator.distanceGenerationMode").value = newDistanceGenerationMode; + ConfigGui.editSingleOption.saveOption("client.worldGenerator.distanceGenerationMode"); } @@ -396,8 +408,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setAllowUnstableFeatureGeneration(boolean newAllowUnstableFeatureGeneration) { - Config.Client.WorldGenerator.allowUnstableFeatureGeneration = newAllowUnstableFeatureGeneration; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.worldGenerator.allowUnstableFeatureGeneration").value = newAllowUnstableFeatureGeneration; + ConfigGui.editSingleOption.saveOption("client.worldGenerator.allowUnstableFeatureGeneration"); } @@ -409,8 +421,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setBlockToAvoid(BlocksToAvoid newBlockToAvoid) { - Config.Client.WorldGenerator.blocksToAvoid = newBlockToAvoid; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.worldGenerator.blocksToAvoid").value = newBlockToAvoid; + ConfigGui.editSingleOption.saveOption("client.worldGenerator.blocksToAvoid"); } } @@ -465,8 +477,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setNumberOfWorldGenerationThreads(int newNumberOfWorldGenerationThreads) { - Config.Client.Advanced.Threading.numberOfWorldGenerationThreads = newNumberOfWorldGenerationThreads; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.advanced.threading.numberOfWorldGenerationThreads").value = newNumberOfWorldGenerationThreads; + ConfigGui.editSingleOption.saveOption("client.advanced.threading.numberOfWorldGenerationThreads"); } @@ -478,8 +490,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setNumberOfBufferBuilderThreads(int newNumberOfWorldBuilderThreads) { - Config.Client.Advanced.Threading.numberOfBufferBuilderThreads = newNumberOfWorldBuilderThreads; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.advanced.threading.numberOfBufferBuilderThreads").value = newNumberOfWorldBuilderThreads; + ConfigGui.editSingleOption.saveOption("client.advanced.threading.numberOfBufferBuilderThreads"); } } @@ -499,8 +511,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setDrawLods(boolean newDrawLods) { - Config.Client.Advanced.Debugging.drawLods = newDrawLods; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.advanced.debugging.drawLods").value = newDrawLods; + ConfigGui.editSingleOption.saveOption("client.advanced.debugging.drawLods"); } @@ -512,8 +524,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setDebugMode(DebugMode newDebugMode) { - Config.Client.Advanced.Debugging.debugMode = newDebugMode; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.advanced.debugging.debugMode").value = newDebugMode; + ConfigGui.editSingleOption.saveOption("client.advanced.debugging.debugMode"); } @@ -525,8 +537,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setDebugKeybindingsEnabled(boolean newEnableDebugKeybindings) { - Config.Client.Advanced.Debugging.enableDebugKeybindings = newEnableDebugKeybindings; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.advanced.debugging.enableDebugKeybindings").value = newEnableDebugKeybindings; + ConfigGui.editSingleOption.saveOption("client.advanced.debugging.enableDebugKeybindings"); } } @@ -542,8 +554,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog) { - Config.Client.Advanced.Buffers.gpuUploadMethod = newDisableVanillaFog; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.advanced.buffers.gpuUploadMethod").value = newDisableVanillaFog; + ConfigGui.editSingleOption.saveOption("client.advanced.buffers.gpuUploadMethod"); } @@ -554,8 +566,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton } @Override public void setGpuUploadPerMegabyteInMilliseconds(int newMilliseconds) { - Config.Client.Advanced.Buffers.gpuUploadPerMegabyteInMilliseconds = newMilliseconds; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.advanced.buffers.gpuUploadPerMegabyteInMilliseconds").value = newMilliseconds; + ConfigGui.editSingleOption.saveOption("client.advanced.buffers.gpuUploadPerMegabyteInMilliseconds"); } @@ -567,8 +579,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton @Override public void setRebuildTimes(BufferRebuildTimes newBufferRebuildTimes) { - Config.Client.Advanced.Buffers.rebuildTimes = newBufferRebuildTimes; - ConfigGui.saveToFile(); + ConfigGui.editSingleOption.getEntry("client.advanced.buffers.newBufferRebuildTimes").value = newBufferRebuildTimes; + ConfigGui.editSingleOption.saveOption("client.advanced.buffers.newBufferRebuildTimes"); } } } diff --git a/core b/core index c664564fb..a8d52c105 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit c664564fb061b633d97daf23851c9847cb00c556 +Subproject commit a8d52c10595eecd04c117a3e3dad15d8b5f918d2 diff --git a/fabric/src/main/java/com/seibel/lod/fabric/ClientProxy.java b/fabric/src/main/java/com/seibel/lod/fabric/ClientProxy.java index 7a0d25495..ced9ad1f4 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/ClientProxy.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/ClientProxy.java @@ -19,14 +19,15 @@ package com.seibel.lod.fabric; -import com.seibel.lod.common.Config; import com.seibel.lod.core.api.ClientApi; import com.seibel.lod.core.api.EventApi; import com.seibel.lod.common.wrappers.chunk.ChunkWrapper; import com.seibel.lod.common.wrappers.world.DimensionTypeWrapper; import com.seibel.lod.common.wrappers.world.WorldWrapper; +import com.seibel.lod.core.util.SingletonHandler; import com.seibel.lod.core.wrapperInterfaces.chunk.IChunkWrapper; +import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; import com.seibel.lod.fabric.mixins.events.MixinClientLevel; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientChunkEvents; @@ -164,17 +165,17 @@ public class ClientProxy boolean PreDebugToggle = false; boolean PreDrawToggle = false; public void onKeyInput() { - if (Config.Client.Advanced.Debugging.enableDebugKeybindings) + ILodConfigWrapperSingleton CONFIG = SingletonHandler.get(ILodConfigWrapperSingleton.class); + if (CONFIG.client().advanced().debugging().getDebugKeybindingsEnabled()) { // Only activates when you press the key if (DebugToggle.isDown() && DebugToggle.isDown() != PreDebugToggle) - Config.Client.Advanced.Debugging.debugMode = Config.Client.Advanced.Debugging.debugMode.getNext(); + CONFIG.client().advanced().debugging().setDebugMode(CONFIG.client().advanced().debugging().getDebugMode().getNext()); if (DrawToggle.isDown() && DrawToggle.isDown() != PreDebugToggle) - Config.Client.Advanced.Debugging.drawLods = !Config.Client.Advanced.Debugging.drawLods; + CONFIG.client().advanced().debugging().setDrawLods(!CONFIG.client().advanced().debugging().getDrawLods()); } PreDebugToggle = DebugToggle.isDown(); PreDrawToggle = DrawToggle.isDown(); } - } diff --git a/fabric/src/main/java/com/seibel/lod/fabric/Main.java b/fabric/src/main/java/com/seibel/lod/fabric/Main.java index cd96c9f6b..bc0765002 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/Main.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/Main.java @@ -19,9 +19,7 @@ package com.seibel.lod.fabric; -import com.seibel.lod.common.Config; import com.seibel.lod.common.LodCommonMain; -import com.seibel.lod.common.wrappers.config.ConfigGui; import com.seibel.lod.core.ModInfo; import com.seibel.lod.core.api.ClientApi; import com.seibel.lod.fabric.wrappers.DependencySetup; diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java index 4f30b253c..7b44f7ae2 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java @@ -1,9 +1,10 @@ package com.seibel.lod.fabric.mixins; -import com.seibel.lod.common.Config; import com.seibel.lod.common.wrappers.config.ConfigGui; import com.seibel.lod.common.wrappers.config.TexturedButtonWidget; import com.seibel.lod.core.ModInfo; +import com.seibel.lod.core.util.SingletonHandler; +import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; import net.minecraft.client.gui.screens.OptionsScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; @@ -32,7 +33,7 @@ public class MixinOptionsScreen extends Screen { @Inject(at = @At("HEAD"),method = "init") private void lodconfig$init(CallbackInfo ci) { - if (Config.ShowButton) + if (SingletonHandler.get(ILodConfigWrapperSingleton.class).client().getOptionsButton()) this.addRenderableWidget(new TexturedButtonWidget( // Where the button is on the screen this.width / 2 - 180, this.height / 6 - 12, diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java index 63daa97cf..25fc1cb70 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java @@ -19,23 +19,17 @@ package com.seibel.lod.fabric.mixins; -import com.mojang.blaze3d.shaders.Uniform; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; -import com.seibel.lod.common.Config; import com.seibel.lod.common.clouds.CloudBufferSingleton; import com.seibel.lod.common.clouds.CloudTexture; import com.seibel.lod.common.clouds.NoiseCloudHandler; import com.seibel.lod.common.wrappers.McObjectConverter; +import com.seibel.lod.common.wrappers.config.LodConfigWrapperSingleton; import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.util.SingletonHandler; import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; import net.minecraft.client.renderer.LevelRenderer; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL20; -import org.lwjgl.opengl.GL32; -import org.lwjgl.system.MemoryStack; -import org.lwjgl.system.MemoryUtil; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -100,14 +94,15 @@ public class MixinWorldRenderer @Inject(method = "renderClouds", at = @At("HEAD"), cancellable = true) public void renderClouds(PoseStack poseStack, Matrix4f projectionMatrix, float tickDelta, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) { - if (Config.Client.Graphics.CloudQuality.customClouds) { + ILodConfigWrapperSingleton CONFIG = SingletonHandler.get(ILodConfigWrapperSingleton.class); + if (CONFIG.client().graphics().cloudQuality().getCustomClouds()) { TextureManager textureManager = Minecraft.getInstance().getTextureManager(); registerClouds(textureManager); NoiseCloudHandler.update(); if (minecraft.level.dimension() == ClientLevel.OVERWORLD) { CloudTexture cloudTexture = NoiseCloudHandler.cloudTextures.get(NoiseCloudHandler.cloudTextures.size() - 1); - renderCloudLayer(poseStack, projectionMatrix, tickDelta, cameraX, cameraY, cameraZ, (float) (Config.Client.Graphics.CloudQuality.cloudHeight + 0.01 /* Make clouds a bit higher so it dosnt do janky stuff */), 0, 1, 1, cloudTexture.resourceLocation); + renderCloudLayer(poseStack, projectionMatrix, tickDelta, cameraX, cameraY, cameraZ, (float) (CONFIG.client().graphics().cloudQuality().getCloudHeight() + 0.01 /* Make clouds a bit higher so it dosnt do janky stuff */), 0, 1, 1, cloudTexture.resourceLocation); } ci.cancel(); @@ -190,7 +185,7 @@ public class MixinWorldRenderer } RenderSystem.setShader(GameRenderer::getPositionTexColorNormalShader); - + //Setup custom projection matrix and override minecraft's. //create needed objects ILodConfigWrapperSingleton CONFIG = SingletonHandler.get(ILodConfigWrapperSingleton.class); @@ -212,7 +207,7 @@ public class MixinWorldRenderer customBuffer.put(14, matFarClip); //load values from our buffer to the projection matrix projectionMatrix.load(customBuffer); - + if (this.generateClouds) { this.generateClouds = false; Tesselator tessellator = Tesselator.getInstance(); @@ -274,8 +269,9 @@ public class MixinWorldRenderer bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR_NORMAL); float adjustedCloudY = (float)Math.floor(cloudY / cloudThickness) * cloudThickness; + ILodConfigWrapperSingleton CONFIG = SingletonHandler.get(ILodConfigWrapperSingleton.class); if (this.prevCloudsType == CloudStatus.FANCY) { - int scaledViewDistance = (int) (((Config.Client.Graphics.CloudQuality.extendClouds ? Config.Client.Graphics.Quality.lodChunkRenderDistance : minecraft.options.renderDistance) / 2) / scale) / 2; + int scaledViewDistance = (int) (((CONFIG.client().graphics().cloudQuality().getExtendClouds() ? CONFIG.client().graphics().quality().getLodChunkRenderDistance() : minecraft.options.renderDistance) / 2) / scale) / 2; for (int x = -scaledViewDistance - 1; x <= scaledViewDistance; ++x) { for (int z = -scaledViewDistance - 1; z <= scaledViewDistance; ++z) { @@ -328,7 +324,7 @@ public class MixinWorldRenderer } } } else { - int scaledRenderDistance = (int) ((Config.Client.Graphics.CloudQuality.extendClouds ? Config.Client.Graphics.Quality.lodChunkRenderDistance : minecraft.options.renderDistance) / scale); + int scaledRenderDistance = (int) ((CONFIG.client().graphics().cloudQuality().getExtendClouds() ? CONFIG.client().graphics().quality().getLodChunkRenderDistance() : minecraft.options.renderDistance) / scale); for (int x = -scaledRenderDistance; x < scaledRenderDistance; x += scaledRenderDistance) { for (int z = -scaledRenderDistance; z < scaledRenderDistance; z += scaledRenderDistance) { diff --git a/fabric/src/main/java/com/seibel/lod/fabric/wrappers/config/ModMenuIntegration.java b/fabric/src/main/java/com/seibel/lod/fabric/wrappers/config/ModMenuIntegration.java index 05924a4ef..b050d4728 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/wrappers/config/ModMenuIntegration.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/wrappers/config/ModMenuIntegration.java @@ -1,8 +1,6 @@ package com.seibel.lod.fabric.wrappers.config; import com.seibel.lod.common.wrappers.config.ConfigGui; -import com.seibel.lod.core.ModInfo; -import com.seibel.lod.common.Config; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; import net.fabricmc.api.EnvType; @@ -19,6 +17,6 @@ public class ModMenuIntegration implements ModMenuApi { // For the custom config code @Override public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> Config.getScreen(parent, ""); + return parent -> ConfigGui.getScreen(parent, ""); } } diff --git a/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java b/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java index 2ebc98bbf..548c78d86 100644 --- a/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java +++ b/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java @@ -19,9 +19,9 @@ package com.seibel.lod.forge; -import com.seibel.lod.common.Config; import com.seibel.lod.common.LodCommonMain; import com.seibel.lod.common.forge.LodForgeMethodCaller; +import com.seibel.lod.common.wrappers.config.ConfigGui; import com.seibel.lod.common.wrappers.minecraft.MinecraftWrapper; import com.seibel.lod.core.ModInfo; import com.seibel.lod.forge.wrappers.ForgeDependencySetup; @@ -78,7 +78,7 @@ public class ForgeMain implements LodForgeMethodCaller private void onClientStart(final FMLClientSetupEvent event) { ModLoadingContext.get().registerExtensionPoint(ConfigGuiHandler.ConfigGuiFactory.class, - () -> new ConfigGuiHandler.ConfigGuiFactory((client, parent) -> Config.getScreen(parent, ""))); + () -> new ConfigGuiHandler.ConfigGuiFactory((client, parent) -> ConfigGui.getScreen(parent, ""))); forgeClientProxy = new ForgeClientProxy(); MinecraftForge.EVENT_BUS.register(forgeClientProxy); } diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java index 05a85ffed..704005a68 100644 --- a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java @@ -1,9 +1,10 @@ package com.seibel.lod.forge.mixins; -import com.seibel.lod.common.Config; import com.seibel.lod.common.wrappers.config.ConfigGui; import com.seibel.lod.common.wrappers.config.TexturedButtonWidget; import com.seibel.lod.core.ModInfo; +import com.seibel.lod.core.util.SingletonHandler; +import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; import net.minecraft.client.gui.screens.OptionsScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; @@ -32,19 +33,20 @@ public class MixinOptionsScreen extends Screen { @Inject(at = @At("HEAD"),method = "init") private void lodconfig$init(CallbackInfo ci) { - if (Config.ShowButton) + if (SingletonHandler.get(ILodConfigWrapperSingleton.class).client().getOptionsButton()) this.addRenderableWidget(new TexturedButtonWidget( - // Where the button is on the screen - this.width / 2 - 180, this.height / 6 - 12, - // Width and height of the button - 20, 20, - // Offset - 0, 0, - // Some textuary stuff - 20, ICON_TEXTURE, 20, 40, - // Create the button and tell it where to go - (buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(ConfigGui.getScreen(this, "client")), - // Add a title to the screen - new TranslatableComponent("text.autoconfig." + ModInfo.ID + ".title"))); + // Where the button is on the screen + this.width / 2 - 180, this.height / 6 - 12, + // Width and height of the button + 20, 20, + // Offset + 0, 0, + // Some textuary stuff + 20, ICON_TEXTURE, 20, 40, + // Create the button and tell it where to go + // For now it goes to the client option by default + (buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(ConfigGui.getScreen(this, "client")), + // Add a title to the screen + new TranslatableComponent("text.autoconfig." + ModInfo.ID + ".title"))); } } diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java index 3ecfbb999..3c4e8a428 100644 --- a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java @@ -21,11 +21,11 @@ package com.seibel.lod.forge.mixins; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; -import com.seibel.lod.common.Config; import com.seibel.lod.common.clouds.CloudBufferSingleton; import com.seibel.lod.common.clouds.CloudTexture; import com.seibel.lod.common.clouds.NoiseCloudHandler; import com.seibel.lod.common.wrappers.McObjectConverter; +import com.seibel.lod.common.wrappers.config.LodConfigWrapperSingleton; import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.util.SingletonHandler; import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; @@ -94,14 +94,15 @@ public class MixinWorldRenderer @Inject(method = "renderClouds", at = @At("HEAD"), cancellable = true) public void renderClouds(PoseStack poseStack, Matrix4f projectionMatrix, float tickDelta, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) { - if (Config.Client.Graphics.CloudQuality.customClouds) { + ILodConfigWrapperSingleton CONFIG = SingletonHandler.get(ILodConfigWrapperSingleton.class); + if (CONFIG.client().graphics().cloudQuality().getCustomClouds()) { TextureManager textureManager = Minecraft.getInstance().getTextureManager(); registerClouds(textureManager); NoiseCloudHandler.update(); if (minecraft.level.dimension() == ClientLevel.OVERWORLD) { CloudTexture cloudTexture = NoiseCloudHandler.cloudTextures.get(NoiseCloudHandler.cloudTextures.size() - 1); - renderCloudLayer(poseStack, projectionMatrix, tickDelta, cameraX, cameraY, cameraZ, (float) (Config.Client.Graphics.CloudQuality.cloudHeight + 0.01 /* Make clouds a bit higher so it dosnt do janky stuff */), 0, 1, 1, cloudTexture.resourceLocation); + renderCloudLayer(poseStack, projectionMatrix, tickDelta, cameraX, cameraY, cameraZ, (float) (CONFIG.client().graphics().cloudQuality().getCloudHeight() + 0.01 /* Make clouds a bit higher so it dosnt do janky stuff */), 0, 1, 1, cloudTexture.resourceLocation); } ci.cancel(); @@ -184,7 +185,7 @@ public class MixinWorldRenderer } RenderSystem.setShader(GameRenderer::getPositionTexColorNormalShader); - + //Setup custom projection matrix and override minecraft's. //create needed objects ILodConfigWrapperSingleton CONFIG = SingletonHandler.get(ILodConfigWrapperSingleton.class); @@ -197,8 +198,8 @@ public class MixinWorldRenderer float nearClip = 0.05f; float matNearClip = -((farClip + nearClip) / (farClip - nearClip)); float matFarClip = -((2 * farClip * nearClip) / (farClip - nearClip)); - - //store projectionMatrix values to buffers + + //store ProjectionMatrix values to buffers projectionMatrix.store(customBuffer); projectionMatrix.store(mcBuffer); //change values on our custom buffer @@ -206,7 +207,7 @@ public class MixinWorldRenderer customBuffer.put(14, matFarClip); //load values from our buffer to the projection matrix projectionMatrix.load(customBuffer); - + if (this.generateClouds) { this.generateClouds = false; Tesselator tessellator = Tesselator.getInstance(); @@ -268,8 +269,9 @@ public class MixinWorldRenderer bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR_NORMAL); float adjustedCloudY = (float)Math.floor(cloudY / cloudThickness) * cloudThickness; + ILodConfigWrapperSingleton CONFIG = SingletonHandler.get(ILodConfigWrapperSingleton.class); if (this.prevCloudsType == CloudStatus.FANCY) { - int scaledViewDistance = (int) (((Config.Client.Graphics.CloudQuality.extendClouds ? Config.Client.Graphics.Quality.lodChunkRenderDistance : minecraft.options.renderDistance) / 2) / scale) / 2; + int scaledViewDistance = (int) (((CONFIG.client().graphics().cloudQuality().getExtendClouds() ? CONFIG.client().graphics().quality().getLodChunkRenderDistance() : minecraft.options.renderDistance) / 2) / scale) / 2; for (int x = -scaledViewDistance - 1; x <= scaledViewDistance; ++x) { for (int z = -scaledViewDistance - 1; z <= scaledViewDistance; ++z) { @@ -322,7 +324,7 @@ public class MixinWorldRenderer } } } else { - int scaledRenderDistance = (int) ((Config.Client.Graphics.CloudQuality.extendClouds ? Config.Client.Graphics.Quality.lodChunkRenderDistance : minecraft.options.renderDistance) / scale); + int scaledRenderDistance = (int) ((CONFIG.client().graphics().cloudQuality().getExtendClouds() ? CONFIG.client().graphics().quality().getLodChunkRenderDistance() : minecraft.options.renderDistance) / scale); for (int x = -scaledRenderDistance; x < scaledRenderDistance; x += scaledRenderDistance) { for (int z = -scaledRenderDistance; z < scaledRenderDistance; z += scaledRenderDistance) {