From 2e1ff17ea72ad0e0ec501f1a6f10c591d3ab6812 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Mon, 15 Nov 2021 22:41:19 -0600 Subject: [PATCH] Start adding singleton dependency injection --- .../com/seibel/lod/api/lod/ClientApi.java | 33 +-- .../java/com/seibel/lod/api/lod/EventApi.java | 2 +- .../LodBufferBuilderFactory.java | 2 +- .../core/builders/lodBuilding/LodBuilder.java | 2 +- .../worldGeneration/LodWorldGenerator.java | 2 +- .../com/seibel/lod/core/config/LodConfig.java | 98 ++++----- .../lod/core/handlers/ReflectionHandler.java | 2 +- .../java/com/seibel/lod/core/objects/Box.java | 2 +- .../lod/core/objects/lod/LodDimension.java | 2 +- .../com/seibel/lod/core/render/GlProxy.java | 2 +- .../seibel/lod/core/render/LodRenderer.java | 4 +- .../seibel/lod/core/render/RenderUtil.java | 2 +- .../com/seibel/lod/core/util/ColorUtil.java | 2 +- .../lod/core/util/DetailDistanceUtil.java | 2 +- .../com/seibel/lod/core/util/LodUtil.java | 2 +- .../wrapperAdapters/SingletonHandler.java | 75 +++++++ .../config/ILodConfigWrapperSingleton.java | 163 ++++++++++++++ .../seibel/lod/mixin/MixinWorldRenderer.java | 2 +- .../seibel/lod/wrappers/DependencySetup.java | 20 ++ .../lod/wrappers/block/BlockColorWrapper.java | 2 +- ...er.java => LodConfigWrapperSingleton.java} | 199 +++++++++++++----- .../{ => minecraft}/McObjectConverter.java | 2 +- .../{ => minecraft}/MinecraftWrapper.java | 2 +- .../wrappers/{ => misc}/LightMapWrapper.java | 2 +- 24 files changed, 481 insertions(+), 145 deletions(-) create mode 100644 src/main/java/com/seibel/lod/core/wrapperAdapters/SingletonHandler.java create mode 100644 src/main/java/com/seibel/lod/core/wrapperAdapters/config/ILodConfigWrapperSingleton.java create mode 100644 src/main/java/com/seibel/lod/wrappers/DependencySetup.java rename src/main/java/com/seibel/lod/wrappers/config/{LodConfigWrapper.java => LodConfigWrapperSingleton.java} (77%) rename src/main/java/com/seibel/lod/wrappers/{ => minecraft}/McObjectConverter.java (97%) rename src/main/java/com/seibel/lod/wrappers/{ => minecraft}/MinecraftWrapper.java (99%) rename src/main/java/com/seibel/lod/wrappers/{ => misc}/LightMapWrapper.java (91%) diff --git a/src/main/java/com/seibel/lod/api/lod/ClientApi.java b/src/main/java/com/seibel/lod/api/lod/ClientApi.java index c2697e91d..43a946d25 100644 --- a/src/main/java/com/seibel/lod/api/lod/ClientApi.java +++ b/src/main/java/com/seibel/lod/api/lod/ClientApi.java @@ -22,7 +22,6 @@ package com.seibel.lod.api.lod; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import com.seibel.lod.api.forge.ForgeConfig; import com.seibel.lod.core.builders.worldGeneration.LodGenWorker; import com.seibel.lod.core.objects.lod.LodDimension; import com.seibel.lod.core.objects.math.Mat4f; @@ -30,7 +29,9 @@ import com.seibel.lod.core.render.GlProxy; import com.seibel.lod.core.render.LodRenderer; import com.seibel.lod.core.util.DetailDistanceUtil; import com.seibel.lod.core.util.ThreadMapUtil; -import com.seibel.lod.wrappers.MinecraftWrapper; +import com.seibel.lod.core.wrapperAdapters.SingletonHandler; +import com.seibel.lod.core.wrapperAdapters.config.ILodConfigWrapperSingleton; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; import net.minecraft.profiler.IProfiler; import net.minecraft.util.text.StringTextComponent; @@ -50,9 +51,9 @@ public class ClientApi public static LodRenderer renderer = new LodRenderer(ApiShared.lodBufferBuilderFactory); - private final MinecraftWrapper mc = MinecraftWrapper.INSTANCE; private final EventApi eventApi = EventApi.INSTANCE; + private final ILodConfigWrapperSingleton config = SingletonHandler.get(ILodConfigWrapperSingleton.class); /** * there is some setup that should only happen once, @@ -74,7 +75,7 @@ public class ClientApi public void renderLods(Mat4f mcModelViewMatrix, Mat4f mcProjectionMatrix, float partialTicks) { // comment out when creating a release - // applyConfigOverrides(); + applyConfigOverrides(); // clear any out of date objects mc.clearFrameObjectCache(); @@ -119,7 +120,7 @@ public class ClientApi // these can't be set until after the buffers are built (in renderer.drawLODs) // otherwise the buffers may be set to the wrong size, or not changed at all ApiShared.previousChunkRenderDistance = mc.getRenderDistance(); - ApiShared.previousLodRenderDistance = ForgeConfig.CLIENT.graphics.qualityOption.lodChunkRenderDistance.get(); + ApiShared.previousLodRenderDistance = config.getClient().getGraphics().getQualityOption().getLodChunkRenderDistance(); } catch (Exception e) { @@ -142,29 +143,9 @@ public class ClientApi configOverrideReminderPrinted = true; } -// LodConfig.CLIENT.graphics.drawResolution.set(HorizontalResolution.BLOCK); -// LodConfig.CLIENT.worldGenerator.generationResolution.set(HorizontalResolution.BLOCK); - // requires a world restart? -// LodConfig.CLIENT.worldGenerator.lodQualityMode.set(VerticalQuality.VOXEL); -// LodConfig.CLIENT.graphics.fogQualityOption.fogDistance.set(FogDistance.FAR); -// LodConfig.CLIENT.graphics.fogQualityOption.fogDrawOverride.set(FogDrawOverride.FANCY); -// LodConfig.CLIENT.graphics.fogQualityOption.disableVanillaFog.set(true); -// LodConfig.CLIENT.graphics.shadingMode.set(ShadingMode.DARKEN_SIDES); -// LodConfig.CLIENT.graphics.advancedGraphicsOption.vanillaOverdraw.set(VanillaOverdraw.DYNAMIC); - -// LodConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadMethod.set(GpuUploadMethod.BUFFER_STORAGE); - -// LodConfig.CLIENT.worldGenerator.distanceGenerationMode.set(DistanceGenerationMode.SURFACE); -// LodConfig.CLIENT.graphics.qualityOption.lodChunkRenderDistance.set(128); -// LodConfig.CLIENT.worldGenerator.lodDistanceCalculatorType.set(DistanceCalculatorType.LINEAR); -// LodConfig.CLIENT.worldGenerator.allowUnstableFeatureGeneration.set(false); - -// LodConfig.CLIENT.buffers.rebuildTimes.set(BufferRebuildTimes.FREQUENT); - - ForgeConfig.CLIENT.advancedModOptions.debugging.enableDebugKeybindings.set(true); -// LodConfig.CLIENT.debugging.debugMode.set(DebugMode.SHOW_DETAIL); + config.getClient().getAdvancedModOptions().getDebugging().setEnableDebugKeybindings(true); } diff --git a/src/main/java/com/seibel/lod/api/lod/EventApi.java b/src/main/java/com/seibel/lod/api/lod/EventApi.java index 6716d9824..3815d4573 100644 --- a/src/main/java/com/seibel/lod/api/lod/EventApi.java +++ b/src/main/java/com/seibel/lod/api/lod/EventApi.java @@ -33,8 +33,8 @@ import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.util.ThreadMapUtil; import com.seibel.lod.core.wrapperAdapters.world.IDimensionTypeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IWorldWrapper; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.chunk.ChunkWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; /** * This holds the methods that should be called diff --git a/src/main/java/com/seibel/lod/core/builders/bufferBuilding/LodBufferBuilderFactory.java b/src/main/java/com/seibel/lod/core/builders/bufferBuilding/LodBufferBuilderFactory.java index a814c292c..2fbd90ca0 100644 --- a/src/main/java/com/seibel/lod/core/builders/bufferBuilding/LodBufferBuilderFactory.java +++ b/src/main/java/com/seibel/lod/core/builders/bufferBuilding/LodBufferBuilderFactory.java @@ -57,9 +57,9 @@ import com.seibel.lod.core.util.LevelPosUtil; import com.seibel.lod.core.util.LodThreadFactory; import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.util.ThreadMapUtil; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; /** * This object creates the buffers that are diff --git a/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java b/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java index e523fed7f..a779006cc 100644 --- a/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java +++ b/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java @@ -38,12 +38,12 @@ import com.seibel.lod.core.util.ThreadMapUtil; import com.seibel.lod.core.wrapperAdapters.world.IBiomeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IDimensionTypeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IWorldWrapper; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.block.BlockColorWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.block.BlockShapeWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; import com.seibel.lod.wrappers.chunk.ChunkWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; /** * This object is in charge of creating Lod related objects. diff --git a/src/main/java/com/seibel/lod/core/builders/worldGeneration/LodWorldGenerator.java b/src/main/java/com/seibel/lod/core/builders/worldGeneration/LodWorldGenerator.java index 925e0e2cd..8c8e69aa2 100644 --- a/src/main/java/com/seibel/lod/core/builders/worldGeneration/LodWorldGenerator.java +++ b/src/main/java/com/seibel/lod/core/builders/worldGeneration/LodWorldGenerator.java @@ -36,8 +36,8 @@ import com.seibel.lod.core.util.LevelPosUtil; import com.seibel.lod.core.util.LodThreadFactory; import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.wrapperAdapters.world.IWorldWrapper; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; import net.minecraftforge.common.WorldWorkerManager; diff --git a/src/main/java/com/seibel/lod/core/config/LodConfig.java b/src/main/java/com/seibel/lod/core/config/LodConfig.java index 8b86eb08a..47cb463c9 100644 --- a/src/main/java/com/seibel/lod/core/config/LodConfig.java +++ b/src/main/java/com/seibel/lod/core/config/LodConfig.java @@ -16,7 +16,7 @@ import com.seibel.lod.core.enums.rendering.FogDistance; import com.seibel.lod.core.enums.rendering.FogDrawOverride; import com.seibel.lod.core.objects.MinDefaultMax; import com.seibel.lod.core.util.LodUtil; -import com.seibel.lod.wrappers.config.LodConfigWrapper; +import com.seibel.lod.wrappers.config.LodConfigWrapperSingleton; /** * Interacts with the LodConfigWrapper to get the config @@ -82,11 +82,11 @@ public class LodConfig public HorizontalResolution getDrawResolution() { - return LodConfigWrapper.CLIENT.graphics.qualityOption.getDrawResolution(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.getDrawResolution(); } public void setDrawResolution(HorizontalResolution newHorizontalResolution) { - LodConfigWrapper.CLIENT.graphics.qualityOption.setDrawResolution(newHorizontalResolution); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.setDrawResolution(newHorizontalResolution); } @@ -97,11 +97,11 @@ public class LodConfig public int getLodChunkRenderDistance() { - return LodConfigWrapper.CLIENT.graphics.qualityOption.getLodChunkRenderDistance(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.getLodChunkRenderDistance(); } public void setLodChunkRenderDistance(int newLodChunkRenderDistance) { - LodConfigWrapper.CLIENT.graphics.qualityOption.setLodChunkRenderDistance(newLodChunkRenderDistance); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.setLodChunkRenderDistance(newLodChunkRenderDistance); } @@ -117,11 +117,11 @@ public class LodConfig public VerticalQuality getVerticalQuality() { - return LodConfigWrapper.CLIENT.graphics.qualityOption.getVerticalQuality(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.getVerticalQuality(); } public void setVerticalQuality(VerticalQuality newVerticalQuality) { - LodConfigWrapper.CLIENT.graphics.qualityOption.setVerticalQuality(newVerticalQuality); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.setVerticalQuality(newVerticalQuality); } @@ -135,11 +135,11 @@ public class LodConfig public HorizontalScale getHorizontalScale() { - return LodConfigWrapper.CLIENT.graphics.qualityOption.getHorizontalScale(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.getHorizontalScale(); } public void setLodChunkRenderDistance(HorizontalScale newHorizontalScale) { - LodConfigWrapper.CLIENT.graphics.qualityOption.setHorizontalScale(newHorizontalScale); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.setHorizontalScale(newHorizontalScale); } @@ -154,11 +154,11 @@ public class LodConfig public HorizontalQuality getHorizontalQuality() { - return LodConfigWrapper.CLIENT.graphics.qualityOption.getHorizontalQuality(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.getHorizontalQuality(); } public void setLodChunkRenderDistance(HorizontalQuality newHorizontalQuality) { - LodConfigWrapper.CLIENT.graphics.qualityOption.setHorizontalQuality(newHorizontalQuality); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.qualityOption.setHorizontalQuality(newHorizontalQuality); } } @@ -177,11 +177,11 @@ public class LodConfig public FogDistance getFogDistance() { - return LodConfigWrapper.CLIENT.graphics.fogQualityOption.getFogDistance(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.fogQualityOption.getFogDistance(); } public void setFogDistance(FogDistance newFogDistance) { - LodConfigWrapper.CLIENT.graphics.fogQualityOption.setFogDistance(newFogDistance); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.fogQualityOption.setFogDistance(newFogDistance); } @@ -196,11 +196,11 @@ public class LodConfig public FogDrawOverride getFogDrawOverride() { - return LodConfigWrapper.CLIENT.graphics.fogQualityOption.getFogDrawOverride(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.fogQualityOption.getFogDrawOverride(); } public void setFogDrawOverride(FogDrawOverride newFogDrawOverride) { - LodConfigWrapper.CLIENT.graphics.fogQualityOption.setFogDrawOverride(newFogDrawOverride); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.fogQualityOption.setFogDrawOverride(newFogDrawOverride); } @@ -217,11 +217,11 @@ public class LodConfig public boolean getDisableVanillaFog() { - return LodConfigWrapper.CLIENT.graphics.fogQualityOption.getDisableVanillaFog(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.fogQualityOption.getDisableVanillaFog(); } public void setDisableVanillaFog(boolean newDisableVanillaFog) { - LodConfigWrapper.CLIENT.graphics.fogQualityOption.setDisableVanillaFog(newDisableVanillaFog); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.fogQualityOption.setDisableVanillaFog(newDisableVanillaFog); } } @@ -244,11 +244,11 @@ public class LodConfig public LodTemplate getLodTemplate() { - return LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.getLodTemplate(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.getLodTemplate(); } public void setLodTemplate(LodTemplate newLodTemplate) { - LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.setLodTemplate(newLodTemplate); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.setLodTemplate(newLodTemplate); } @@ -266,11 +266,11 @@ public class LodConfig public boolean getDisableDirectionalCulling() { - return LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.getDisableDirectionalCulling(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.getDisableDirectionalCulling(); } public void setDisableDirectionalCulling(boolean newDisableDirectionalCulling) { - LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.setDisableDirectionalCulling(newDisableDirectionalCulling); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.setDisableDirectionalCulling(newDisableDirectionalCulling); } @@ -287,11 +287,11 @@ public class LodConfig public boolean getAlwaysDrawAtMaxQuality() { - return LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.getAlwaysDrawAtMaxQuality(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.getAlwaysDrawAtMaxQuality(); } public void setAlwaysDrawAtMaxQuality(boolean newAlwaysDrawAtMaxQuality) { - LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.setAlwaysDrawAtMaxQuality(newAlwaysDrawAtMaxQuality); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.setAlwaysDrawAtMaxQuality(newAlwaysDrawAtMaxQuality); } @@ -310,11 +310,11 @@ public class LodConfig public VanillaOverdraw getVanillaOverdraw() { - return LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.getVanillaOverdraw(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.getVanillaOverdraw(); } public void setVanillaOverdraw(VanillaOverdraw newVanillaOverdraw) { - LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.setVanillaOverdraw(newVanillaOverdraw); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.setVanillaOverdraw(newVanillaOverdraw); } @@ -329,11 +329,11 @@ public class LodConfig public GpuUploadMethod getGpuUploadMethod() { - return LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.getGpuUploadMethod(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.getGpuUploadMethod(); } public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog) { - LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.setGpuUploadMethod(newDisableVanillaFog); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.setGpuUploadMethod(newDisableVanillaFog); } @@ -345,11 +345,11 @@ public class LodConfig public boolean getUseExtendedNearClipPlane() { - return LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.getUseExtendedNearClipPlane(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.getUseExtendedNearClipPlane(); } public void setGpuUploadMethod(boolean newUseExtendedNearClipPlane) { - LodConfigWrapper.CLIENT.graphics.advancedGraphicsOption.setUseExtendedNearClipPlane(newUseExtendedNearClipPlane); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.advancedGraphicsOption.setUseExtendedNearClipPlane(newUseExtendedNearClipPlane); } } } @@ -379,11 +379,11 @@ public class LodConfig public GenerationPriority getGenerationPriority() { - return LodConfigWrapper.CLIENT.worldGenerator.getGenerationPriority(); + return LodConfigWrapperSingleton.INSTANCE.LodConfigWrapperSingleton.INSTANCE.worldGenerator.getGenerationPriority(); } public void setGenerationPriority(GenerationPriority newGenerationPriority) { - LodConfigWrapper.CLIENT.worldGenerator.setGenerationPriority(newGenerationPriority); + LodConfigWrapperSingleton.INSTANCE.LodConfigWrapperSingleton.INSTANCE.worldGenerator.setGenerationPriority(newGenerationPriority); } @@ -437,11 +437,11 @@ public class LodConfig public DistanceGenerationMode getDistanceGenerationMode() { - return LodConfigWrapper.CLIENT.worldGenerator.getDistanceGenerationMode(); + return LodConfigWrapperSingleton.INSTANCE.LodConfigWrapperSingleton.INSTANCE.worldGenerator.getDistanceGenerationMode(); } public void setDistanceGenerationMode(DistanceGenerationMode newDistanceGenerationMode) { - LodConfigWrapper.CLIENT.worldGenerator.setDistanceGenerationMode(newDistanceGenerationMode); + LodConfigWrapperSingleton.INSTANCE.LodConfigWrapperSingleton.INSTANCE.worldGenerator.setDistanceGenerationMode(newDistanceGenerationMode); } @@ -466,11 +466,11 @@ public class LodConfig public boolean getAllowUnstableFeatureGeneration() { - return LodConfigWrapper.CLIENT.worldGenerator.getAllowUnstableFeatureGeneration(); + return LodConfigWrapperSingleton.INSTANCE.LodConfigWrapperSingleton.INSTANCE.worldGenerator.getAllowUnstableFeatureGeneration(); } public void setAllowUnstableFeatureGeneration(boolean newAllowUnstableFeatureGeneration) { - LodConfigWrapper.CLIENT.worldGenerator.setAllowUnstableFeatureGeneration(newAllowUnstableFeatureGeneration); + LodConfigWrapperSingleton.INSTANCE.LodConfigWrapperSingleton.INSTANCE.worldGenerator.setAllowUnstableFeatureGeneration(newAllowUnstableFeatureGeneration); } @@ -487,11 +487,11 @@ public class LodConfig public BlockToAvoid getBlockToAvoid() { - return LodConfigWrapper.CLIENT.worldGenerator.getBlockToAvoid(); + return LodConfigWrapperSingleton.INSTANCE.LodConfigWrapperSingleton.INSTANCE.worldGenerator.getBlockToAvoid(); } public void setBlockToAvoid(BlockToAvoid newBlockToAvoid) { - LodConfigWrapper.CLIENT.worldGenerator.setBlockToAvoid(newBlockToAvoid); + LodConfigWrapperSingleton.INSTANCE.LodConfigWrapperSingleton.INSTANCE.worldGenerator.setBlockToAvoid(newBlockToAvoid); } } @@ -534,11 +534,11 @@ public class LodConfig public int getNumberOfWorldGenerationThreads() { - return LodConfigWrapper.CLIENT.advancedModOptions.threading.getNumberOfWorldGenerationThreads(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.threading.getNumberOfWorldGenerationThreads(); } public void setNumberOfWorldGenerationThreads(int newNumberOfWorldGenerationThreads) { - LodConfigWrapper.CLIENT.advancedModOptions.threading.setNumberOfWorldGenerationThreads(newNumberOfWorldGenerationThreads); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.threading.setNumberOfWorldGenerationThreads(newNumberOfWorldGenerationThreads); } @@ -555,11 +555,11 @@ public class LodConfig public int getNumberOfBufferBuilderThreads() { - return LodConfigWrapper.CLIENT.advancedModOptions.threading.getNumberOfBufferBuilderThreads(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.threading.getNumberOfBufferBuilderThreads(); } public void setNumberOfBufferBuilderThreads(int newNumberOfWorldBuilderThreads) { - LodConfigWrapper.CLIENT.advancedModOptions.threading.setNumberOfBufferBuilderThreads(newNumberOfWorldBuilderThreads); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.threading.setNumberOfBufferBuilderThreads(newNumberOfWorldBuilderThreads); } } @@ -583,11 +583,11 @@ public class LodConfig public boolean getDrawLods() { - return LodConfigWrapper.CLIENT.advancedModOptions.debugging.getDrawLods(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.debugging.getDrawLods(); } public void setDrawLods(boolean newDrawLods) { - LodConfigWrapper.CLIENT.advancedModOptions.debugging.setDrawLods(newDrawLods); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.debugging.setDrawLods(newDrawLods); } @@ -600,11 +600,11 @@ public class LodConfig public DebugMode getDebugMode() { - return LodConfigWrapper.CLIENT.advancedModOptions.debugging.getDebugMode(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.debugging.getDebugMode(); } public void setDebugMode(DebugMode newDebugMode) { - LodConfigWrapper.CLIENT.advancedModOptions.debugging.setDebugMode(newDebugMode); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.debugging.setDebugMode(newDebugMode); } @@ -616,11 +616,11 @@ public class LodConfig public boolean getEnableDebugKeybindings() { - return LodConfigWrapper.CLIENT.advancedModOptions.debugging.getEnableDebugKeybindings(); + return LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.debugging.getEnableDebugKeybindings(); } public void setEnableDebugKeybindings(boolean newEnableDebugKeybindings) { - LodConfigWrapper.CLIENT.advancedModOptions.debugging.setEnableDebugKeybindings(newEnableDebugKeybindings); + LodConfigWrapperSingleton.INSTANCE.getClient().LodConfigWrapperSingleton.INSTANCE.debugging.setEnableDebugKeybindings(newEnableDebugKeybindings); } } @@ -638,11 +638,11 @@ public class LodConfig public BufferRebuildTimes getDrawLods() { - return LodConfigWrapper.CLIENT.advancedModOptions.buffers.getRebuildTimes(); + return LodConfigWrapperSingleton.INSTANCE.getClient().getAdvancedModOptions().getBuffers().getRebuildTimes(); } public void setDrawLods(BufferRebuildTimes newBufferRebuildTimes) { - LodConfigWrapper.CLIENT.advancedModOptions.buffers.setRebuildTimes(newBufferRebuildTimes); + LodConfigWrapperSingleton.INSTANCE.getClient().getAdvancedModOptions().getBuffers().setRebuildTimes(newBufferRebuildTimes); } } } diff --git a/src/main/java/com/seibel/lod/core/handlers/ReflectionHandler.java b/src/main/java/com/seibel/lod/core/handlers/ReflectionHandler.java index b413d6fbc..022591f70 100644 --- a/src/main/java/com/seibel/lod/core/handlers/ReflectionHandler.java +++ b/src/main/java/com/seibel/lod/core/handlers/ReflectionHandler.java @@ -25,7 +25,7 @@ import java.lang.reflect.Method; import com.seibel.lod.api.lod.ClientApi; import com.seibel.lod.core.enums.rendering.FogQuality; import com.seibel.lod.core.objects.math.Mat4f; -import com.seibel.lod.wrappers.MinecraftWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; /** * This object is used to get variables from methods diff --git a/src/main/java/com/seibel/lod/core/objects/Box.java b/src/main/java/com/seibel/lod/core/objects/Box.java index 27d2a2e21..76be1ecb5 100644 --- a/src/main/java/com/seibel/lod/core/objects/Box.java +++ b/src/main/java/com/seibel/lod/core/objects/Box.java @@ -30,8 +30,8 @@ import com.seibel.lod.core.objects.math.Vec3i; import com.seibel.lod.core.util.ColorUtil; import com.seibel.lod.core.util.DataPointUtil; import com.seibel.lod.core.util.LodUtil; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; /** * Similar to Minecraft's AxisAlignedBoundingBox. diff --git a/src/main/java/com/seibel/lod/core/objects/lod/LodDimension.java b/src/main/java/com/seibel/lod/core/objects/lod/LodDimension.java index eda4a5cf4..f5999fc8c 100644 --- a/src/main/java/com/seibel/lod/core/objects/lod/LodDimension.java +++ b/src/main/java/com/seibel/lod/core/objects/lod/LodDimension.java @@ -38,8 +38,8 @@ import com.seibel.lod.core.util.LodThreadFactory; import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.wrapperAdapters.world.IDimensionTypeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IWorldWrapper; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; diff --git a/src/main/java/com/seibel/lod/core/render/GlProxy.java b/src/main/java/com/seibel/lod/core/render/GlProxy.java index 62c761a91..85c3ef0ce 100644 --- a/src/main/java/com/seibel/lod/core/render/GlProxy.java +++ b/src/main/java/com/seibel/lod/core/render/GlProxy.java @@ -33,7 +33,7 @@ import com.seibel.lod.api.lod.ClientApi; import com.seibel.lod.core.enums.rendering.GlProxyContext; import com.seibel.lod.core.render.shader.LodShader; import com.seibel.lod.core.render.shader.LodShaderProgram; -import com.seibel.lod.wrappers.MinecraftWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; /** * A singleton that holds references to different openGL contexts diff --git a/src/main/java/com/seibel/lod/core/render/LodRenderer.java b/src/main/java/com/seibel/lod/core/render/LodRenderer.java index a327fe365..aba575e83 100644 --- a/src/main/java/com/seibel/lod/core/render/LodRenderer.java +++ b/src/main/java/com/seibel/lod/core/render/LodRenderer.java @@ -45,10 +45,10 @@ import com.seibel.lod.core.render.shader.LodShaderProgram; import com.seibel.lod.core.util.DetailDistanceUtil; import com.seibel.lod.core.util.LevelPosUtil; import com.seibel.lod.core.util.LodUtil; -import com.seibel.lod.wrappers.McObjectConverter; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; +import com.seibel.lod.wrappers.minecraft.McObjectConverter; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.GameRenderer; diff --git a/src/main/java/com/seibel/lod/core/render/RenderUtil.java b/src/main/java/com/seibel/lod/core/render/RenderUtil.java index 7489bd271..7040cb748 100644 --- a/src/main/java/com/seibel/lod/core/render/RenderUtil.java +++ b/src/main/java/com/seibel/lod/core/render/RenderUtil.java @@ -20,9 +20,9 @@ package com.seibel.lod.core.render; import com.seibel.lod.core.util.LodUtil; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.vector.Vector3f; diff --git a/src/main/java/com/seibel/lod/core/util/ColorUtil.java b/src/main/java/com/seibel/lod/core/util/ColorUtil.java index a3e6eb875..fd1feb8af 100644 --- a/src/main/java/com/seibel/lod/core/util/ColorUtil.java +++ b/src/main/java/com/seibel/lod/core/util/ColorUtil.java @@ -21,7 +21,7 @@ package com.seibel.lod.core.util; import java.awt.Color; -import com.seibel.lod.wrappers.MinecraftWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; /** * diff --git a/src/main/java/com/seibel/lod/core/util/DetailDistanceUtil.java b/src/main/java/com/seibel/lod/core/util/DetailDistanceUtil.java index 992e2d33e..efc550502 100644 --- a/src/main/java/com/seibel/lod/core/util/DetailDistanceUtil.java +++ b/src/main/java/com/seibel/lod/core/util/DetailDistanceUtil.java @@ -23,7 +23,7 @@ import com.seibel.lod.api.forge.ForgeConfig; import com.seibel.lod.core.enums.config.DistanceGenerationMode; import com.seibel.lod.core.enums.config.HorizontalQuality; import com.seibel.lod.core.enums.config.HorizontalResolution; -import com.seibel.lod.wrappers.MinecraftWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; /** * diff --git a/src/main/java/com/seibel/lod/core/util/LodUtil.java b/src/main/java/com/seibel/lod/core/util/LodUtil.java index 3db9db7a1..77b19736d 100644 --- a/src/main/java/com/seibel/lod/core/util/LodUtil.java +++ b/src/main/java/com/seibel/lod/core/util/LodUtil.java @@ -34,9 +34,9 @@ import com.seibel.lod.core.objects.opengl.DefaultLodVertexFormats; import com.seibel.lod.core.objects.opengl.LodVertexFormat; import com.seibel.lod.core.wrapperAdapters.world.IDimensionTypeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IWorldWrapper; -import com.seibel.lod.wrappers.MinecraftWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.renderer.WorldRenderer; diff --git a/src/main/java/com/seibel/lod/core/wrapperAdapters/SingletonHandler.java b/src/main/java/com/seibel/lod/core/wrapperAdapters/SingletonHandler.java new file mode 100644 index 000000000..1a76f7cf6 --- /dev/null +++ b/src/main/java/com/seibel/lod/core/wrapperAdapters/SingletonHandler.java @@ -0,0 +1,75 @@ +package com.seibel.lod.core.wrapperAdapters; + +import java.util.HashMap; +import java.util.Map; + +/** + * This class takes care of dependency injection + * for singletons. + * + * @author James Seibel + * @version 11-15-2021 + */ +public class SingletonHandler +{ +private static final Map, Object> singletons = new HashMap, Object>(); + + + + /** + * Adds the given singleton so it can be referenced later. + * + * @param objectClass + * @param singletonReference + * @throws IllegalStateException + */ + public static void bind(Class interfaceClass, Object singletonReference) throws IllegalStateException + { + // make sure we haven't already bound this singleton + if (singletons.containsKey(interfaceClass)) + { + throw new IllegalStateException("The singleton [" + interfaceClass.getSimpleName() + "] has already been bound."); + } + + + // make sure the given singleton implements the interface + boolean singletonImplementsInterface = false; + for (Class singletonInterface : singletonReference.getClass().getInterfaces()) + { + if (singletonInterface.equals(interfaceClass)) + { + singletonImplementsInterface = true; + break; + } + } + if (!singletonImplementsInterface) + { + throw new IllegalStateException("The singleton [" + interfaceClass.getSimpleName() + "] doesn't implement the interface [" + interfaceClass.getSimpleName() + "]."); + } + + + singletons.put(interfaceClass, singletonReference); + } + + /** + * Returns a singleton of type T + * if one has been bound. + * + * @param class of the singleton + * @param objectClass class of the singleton, but as a parameter! + * @return the singleton of type T + * @throws NullPointerException if no singleton of type T has been bound. + * @throws ClassCastException if the singleton isn't able to be cast to type T. (this shouldn't normally happen, unless the bound object changed somehow) + */ + @SuppressWarnings("unchecked") + public static T get(Class objectClass) throws NullPointerException, ClassCastException + { + if (!singletons.containsKey(objectClass)) + { + throw new NullPointerException("The singleton [" + objectClass.getSimpleName() + "] was never bound."); + } + + return (T) singletons.get(objectClass); + } + +} diff --git a/src/main/java/com/seibel/lod/core/wrapperAdapters/config/ILodConfigWrapperSingleton.java b/src/main/java/com/seibel/lod/core/wrapperAdapters/config/ILodConfigWrapperSingleton.java new file mode 100644 index 000000000..16f81da77 --- /dev/null +++ b/src/main/java/com/seibel/lod/core/wrapperAdapters/config/ILodConfigWrapperSingleton.java @@ -0,0 +1,163 @@ +package com.seibel.lod.core.wrapperAdapters.config; + +import com.seibel.lod.core.enums.config.BlockToAvoid; +import com.seibel.lod.core.enums.config.BufferRebuildTimes; +import com.seibel.lod.core.enums.config.DistanceGenerationMode; +import com.seibel.lod.core.enums.config.GenerationPriority; +import com.seibel.lod.core.enums.config.GpuUploadMethod; +import com.seibel.lod.core.enums.config.HorizontalQuality; +import com.seibel.lod.core.enums.config.HorizontalResolution; +import com.seibel.lod.core.enums.config.HorizontalScale; +import com.seibel.lod.core.enums.config.LodTemplate; +import com.seibel.lod.core.enums.config.VanillaOverdraw; +import com.seibel.lod.core.enums.config.VerticalQuality; +import com.seibel.lod.core.enums.rendering.DebugMode; +import com.seibel.lod.core.enums.rendering.FogDistance; +import com.seibel.lod.core.enums.rendering.FogDrawOverride; + +/** + * This holds the config defaults and setters/getters + * that should be hooked into the host mod loader (Fabric, Forge, etc.). + * + * @author James Seibel + * @version 11-15-2021 + */ +public interface ILodConfigWrapperSingleton +{ + public ILodConfigWrapperSingleton getInstance(); + + public IClient getClient(); + + public interface IClient + { + public IGraphics getGraphics(); + public IWorldGenerator getWorldGenerator(); + public IAdvancedModOptions getAdvancedModOptions(); + + + //==================// + // Graphics Configs // + //==================// + public interface IGraphics + { + public IQualityOption getQualityOption(); + public IFogQualityOption getFogQualityOption(); + public IAdvancedGraphicsOption getAdvancedGraphicsOption(); + + + public interface IQualityOption + { + public HorizontalResolution getDrawResolution(); + public void setDrawResolution(HorizontalResolution newHorizontalResolution); + + public int getLodChunkRenderDistance(); + public void setLodChunkRenderDistance(int newLodChunkRenderDistance); + + public VerticalQuality getVerticalQuality(); + public void setVerticalQuality(VerticalQuality newVerticalQuality); + + public HorizontalScale getHorizontalScale(); + public void setHorizontalScale(HorizontalScale newHorizontalScale); + + public HorizontalQuality getHorizontalQuality(); + public void setHorizontalQuality(HorizontalQuality newHorizontalQuality); + } + + public interface IFogQualityOption + { + public FogDistance getFogDistance(); + public void setFogDistance(FogDistance newFogDistance); + + public FogDrawOverride getFogDrawOverride(); + public void setFogDrawOverride(FogDrawOverride newFogDrawOverride); + + public boolean getDisableVanillaFog(); + public void setDisableVanillaFog(boolean newDisableVanillaFog); + } + + public interface IAdvancedGraphicsOption + { + public LodTemplate getLodTemplate(); + public void setLodTemplate(LodTemplate newLodTemplate); + + public boolean getDisableDirectionalCulling(); + public void setDisableDirectionalCulling(boolean newDisableDirectionalCulling); + + public boolean getAlwaysDrawAtMaxQuality(); + public void setAlwaysDrawAtMaxQuality(boolean newAlwaysDrawAtMaxQuality); + + public VanillaOverdraw getVanillaOverdraw(); + public void setVanillaOverdraw(VanillaOverdraw newVanillaOverdraw); + + public GpuUploadMethod getGpuUploadMethod(); + public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog); + + public boolean getUseExtendedNearClipPlane(); + public void setUseExtendedNearClipPlane(boolean newUseExtendedNearClipPlane); + } + } + + + + + //========================// + // WorldGenerator Configs // + //========================// + public interface IWorldGenerator + { + public GenerationPriority getGenerationPriority(); + public void setGenerationPriority(GenerationPriority newGenerationPriority); + + public DistanceGenerationMode getDistanceGenerationMode(); + public void setDistanceGenerationMode(DistanceGenerationMode newDistanceGenerationMode); + + public boolean getAllowUnstableFeatureGeneration(); + public void setAllowUnstableFeatureGeneration(boolean newAllowUnstableFeatureGeneration); + + public BlockToAvoid getBlockToAvoid(); + public void setBlockToAvoid(BlockToAvoid newBlockToAvoid); + } + + + + + //============================// + // AdvancedModOptions Configs // + //============================// + public interface IAdvancedModOptions + { + public IThreading getThreading(); + public IDebugging getDebugging(); + public IBuffers getBuffers(); + + + public interface IThreading + { + public int getNumberOfWorldGenerationThreads(); + public void setNumberOfWorldGenerationThreads(int newNumberOfWorldGenerationThreads); + + public int getNumberOfBufferBuilderThreads(); + public void setNumberOfBufferBuilderThreads(int newNumberOfWorldBuilderThreads); + } + + public interface IDebugging + { + public boolean getDrawLods(); + public void setDrawLods(boolean newDrawLods); + + public DebugMode getDebugMode(); + public void setDebugMode(DebugMode newDebugMode); + + public boolean getEnableDebugKeybindings(); + public void setEnableDebugKeybindings(boolean newEnableDebugKeybindings); + } + + public interface IBuffers + { + public BufferRebuildTimes getRebuildTimes(); + public void setRebuildTimes(BufferRebuildTimes newBufferRebuildTimes); + } + } + } + +} diff --git a/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java b/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java index fa130a77c..484090841 100644 --- a/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java +++ b/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java @@ -28,7 +28,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.mojang.blaze3d.matrix.MatrixStack; import com.seibel.lod.api.lod.ClientApi; import com.seibel.lod.core.objects.math.Mat4f; -import com.seibel.lod.wrappers.McObjectConverter; +import com.seibel.lod.wrappers.minecraft.McObjectConverter; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.WorldRenderer; diff --git a/src/main/java/com/seibel/lod/wrappers/DependencySetup.java b/src/main/java/com/seibel/lod/wrappers/DependencySetup.java new file mode 100644 index 000000000..aafa2c82b --- /dev/null +++ b/src/main/java/com/seibel/lod/wrappers/DependencySetup.java @@ -0,0 +1,20 @@ +package com.seibel.lod.wrappers; + +import com.seibel.lod.core.wrapperAdapters.SingletonHandler; +import com.seibel.lod.core.wrapperAdapters.config.ILodConfigWrapperSingleton; +import com.seibel.lod.wrappers.config.LodConfigWrapperSingleton; + +/** + * Binds all necessary singletons so we + * can access them in Core. + * + * @author James Seibel + * @version 11-15-2021 + */ +public class DependencySetup +{ + static + { + SingletonHandler.bind(ILodConfigWrapperSingleton.class, LodConfigWrapperSingleton.INSTANCE); + } +} diff --git a/src/main/java/com/seibel/lod/wrappers/block/BlockColorWrapper.java b/src/main/java/com/seibel/lod/wrappers/block/BlockColorWrapper.java index 2fc42721a..108e78e01 100644 --- a/src/main/java/com/seibel/lod/wrappers/block/BlockColorWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/block/BlockColorWrapper.java @@ -7,7 +7,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import com.seibel.lod.core.util.ColorUtil; -import com.seibel.lod.wrappers.MinecraftWrapper; +import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; import net.minecraft.block.AbstractPlantBlock; import net.minecraft.block.AbstractTopPlantBlock; diff --git a/src/main/java/com/seibel/lod/wrappers/config/LodConfigWrapper.java b/src/main/java/com/seibel/lod/wrappers/config/LodConfigWrapperSingleton.java similarity index 77% rename from src/main/java/com/seibel/lod/wrappers/config/LodConfigWrapper.java rename to src/main/java/com/seibel/lod/wrappers/config/LodConfigWrapperSingleton.java index f04b0554f..27b417b6e 100644 --- a/src/main/java/com/seibel/lod/wrappers/config/LodConfigWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/config/LodConfigWrapperSingleton.java @@ -15,6 +15,7 @@ import com.seibel.lod.core.enums.config.VerticalQuality; import com.seibel.lod.core.enums.rendering.DebugMode; import com.seibel.lod.core.enums.rendering.FogDistance; import com.seibel.lod.core.enums.rendering.FogDrawOverride; +import com.seibel.lod.core.wrapperAdapters.config.ILodConfigWrapperSingleton; /** * This holds the config defaults and setters/getters @@ -23,16 +24,48 @@ import com.seibel.lod.core.enums.rendering.FogDrawOverride; * @author James Seibel * @version 11-14-2021 */ -public class LodConfigWrapper +public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton { - public static final Client CLIENT = new Client(); - - - public static class Client + public static final LodConfigWrapperSingleton INSTANCE = new LodConfigWrapperSingleton(); + @Override + public ILodConfigWrapperSingleton getInstance() { - public final Graphics graphics; - public final WorldGenerator worldGenerator; - public final AdvancedModOptions advancedModOptions; + return INSTANCE; + } + + + private static final Client client = new Client(); + @Override + public IClient getClient() + { + return client; + } + + public static class Client implements IClient + { + public final IGraphics graphics; + public final IWorldGenerator worldGenerator; + public final IAdvancedModOptions advancedModOptions; + + + @Override + public IGraphics getGraphics() + { + return graphics; + } + + @Override + public IWorldGenerator getWorldGenerator() + { + return worldGenerator; + } + + @Override + public IAdvancedModOptions getAdvancedModOptions() + { + return advancedModOptions; + } + //================// @@ -49,12 +82,32 @@ public class LodConfigWrapper //==================// // Graphics Configs // //==================// - public static class Graphics + public static class Graphics implements IGraphics { + public final IQualityOption qualityOption; + public final IFogQualityOption fogQualityOption; + public final IAdvancedGraphicsOption advancedGraphicsOption; + + + + @Override + public IQualityOption getQualityOption() + { + return qualityOption; + } + + @Override + public IFogQualityOption getFogQualityOption() + { + return fogQualityOption; + } + + @Override + public IAdvancedGraphicsOption getAdvancedGraphicsOption() + { + return advancedGraphicsOption; + } - public final QualityOption qualityOption; - public final FogQualityOption fogQualityOption; - public final AdvancedGraphicsOption advancedGraphicsOption; Graphics() { @@ -64,57 +117,62 @@ public class LodConfigWrapper } - public static class QualityOption + public static class QualityOption implements IQualityOption { - + @Override public HorizontalResolution getDrawResolution() { return ForgeConfig.CLIENT.graphics.qualityOption.drawResolution.get(); } + @Override public void setDrawResolution(HorizontalResolution newHorizontalResolution) { ForgeConfig.CLIENT.graphics.qualityOption.drawResolution.set(newHorizontalResolution); } - + @Override public int getLodChunkRenderDistance() { return ForgeConfig.CLIENT.graphics.qualityOption.lodChunkRenderDistance.get(); } + @Override public void setLodChunkRenderDistance(int newLodChunkRenderDistance) { ForgeConfig.CLIENT.graphics.qualityOption.lodChunkRenderDistance.set(newLodChunkRenderDistance); } - + @Override public VerticalQuality getVerticalQuality() { return ForgeConfig.CLIENT.graphics.qualityOption.verticalQuality.get(); } + @Override public void setVerticalQuality(VerticalQuality newVerticalQuality) { ForgeConfig.CLIENT.graphics.qualityOption.verticalQuality.set(newVerticalQuality); } - + @Override public HorizontalScale getHorizontalScale() { return ForgeConfig.CLIENT.graphics.qualityOption.horizontalScale.get(); } + @Override public void setHorizontalScale(HorizontalScale newHorizontalScale) { ForgeConfig.CLIENT.graphics.qualityOption.horizontalScale.set(newHorizontalScale); } - + @Override public HorizontalQuality getHorizontalQuality() { return ForgeConfig.CLIENT.graphics.qualityOption.horizontalQuality.get(); } + @Override public void setHorizontalQuality(HorizontalQuality newHorizontalQuality) { ForgeConfig.CLIENT.graphics.qualityOption.horizontalQuality.set(newHorizontalQuality); @@ -122,35 +180,38 @@ public class LodConfigWrapper } - public static class FogQualityOption + public static class FogQualityOption implements IFogQualityOption { - + @Override public FogDistance getFogDistance() { return ForgeConfig.CLIENT.graphics.fogQualityOption.fogDistance.get(); } + @Override public void setFogDistance(FogDistance newFogDistance) { ForgeConfig.CLIENT.graphics.fogQualityOption.fogDistance.set(newFogDistance); } - + @Override public FogDrawOverride getFogDrawOverride() { return ForgeConfig.CLIENT.graphics.fogQualityOption.fogDrawOverride.get(); } + @Override public void setFogDrawOverride(FogDrawOverride newFogDrawOverride) { ForgeConfig.CLIENT.graphics.fogQualityOption.fogDrawOverride.set(newFogDrawOverride); } - + @Override public boolean getDisableVanillaFog() { return ForgeConfig.CLIENT.graphics.fogQualityOption.disableVanillaFog.get(); } + @Override public void setDisableVanillaFog(boolean newDisableVanillaFog) { ForgeConfig.CLIENT.graphics.fogQualityOption.disableVanillaFog.set(newDisableVanillaFog); @@ -158,68 +219,74 @@ public class LodConfigWrapper } - public static class AdvancedGraphicsOption + public static class AdvancedGraphicsOption implements IAdvancedGraphicsOption { - + @Override public LodTemplate getLodTemplate() { return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.lodTemplate.get(); } + @Override public void setLodTemplate(LodTemplate newLodTemplate) { ForgeConfig.CLIENT.graphics.advancedGraphicsOption.lodTemplate.set(newLodTemplate); } - + @Override public boolean getDisableDirectionalCulling() { return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.disableDirectionalCulling.get(); } + @Override public void setDisableDirectionalCulling(boolean newDisableDirectionalCulling) { ForgeConfig.CLIENT.graphics.advancedGraphicsOption.disableDirectionalCulling.set(newDisableDirectionalCulling); } - + @Override public boolean getAlwaysDrawAtMaxQuality() { return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.alwaysDrawAtMaxQuality.get(); } + @Override public void setAlwaysDrawAtMaxQuality(boolean newAlwaysDrawAtMaxQuality) { ForgeConfig.CLIENT.graphics.advancedGraphicsOption.alwaysDrawAtMaxQuality.set(newAlwaysDrawAtMaxQuality); } - + @Override public VanillaOverdraw getVanillaOverdraw() { return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.vanillaOverdraw.get(); } + @Override public void setVanillaOverdraw(VanillaOverdraw newVanillaOverdraw) { ForgeConfig.CLIENT.graphics.advancedGraphicsOption.vanillaOverdraw.set(newVanillaOverdraw); } - + @Override public GpuUploadMethod getGpuUploadMethod() { return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadMethod.get(); } + @Override public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog) { ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadMethod.set(newDisableVanillaFog); } - + @Override public boolean getUseExtendedNearClipPlane() { return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.useExtendedNearClipPlane.get(); } + @Override public void setUseExtendedNearClipPlane(boolean newUseExtendedNearClipPlane) { ForgeConfig.CLIENT.graphics.advancedGraphicsOption.useExtendedNearClipPlane.set(newUseExtendedNearClipPlane); @@ -233,46 +300,50 @@ public class LodConfigWrapper //========================// // WorldGenerator Configs // //========================// - public static class WorldGenerator + public static class WorldGenerator implements IWorldGenerator { - + @Override public GenerationPriority getGenerationPriority() { return ForgeConfig.CLIENT.worldGenerator.generationPriority.get(); } + @Override public void setGenerationPriority(GenerationPriority newGenerationPriority) { ForgeConfig.CLIENT.worldGenerator.generationPriority.set(newGenerationPriority); } - + @Override public DistanceGenerationMode getDistanceGenerationMode() { return ForgeConfig.CLIENT.worldGenerator.distanceGenerationMode.get(); } + @Override public void setDistanceGenerationMode(DistanceGenerationMode newDistanceGenerationMode) { ForgeConfig.CLIENT.worldGenerator.distanceGenerationMode.set(newDistanceGenerationMode); } - + @Override public boolean getAllowUnstableFeatureGeneration() { return ForgeConfig.CLIENT.worldGenerator.allowUnstableFeatureGeneration.get(); } + @Override public void setAllowUnstableFeatureGeneration(boolean newAllowUnstableFeatureGeneration) { ForgeConfig.CLIENT.worldGenerator.allowUnstableFeatureGeneration.set(newAllowUnstableFeatureGeneration); } - + @Override public BlockToAvoid getBlockToAvoid() { return ForgeConfig.CLIENT.worldGenerator.blockToAvoid.get(); } + @Override public void setBlockToAvoid(BlockToAvoid newBlockToAvoid) { ForgeConfig.CLIENT.worldGenerator.blockToAvoid.set(newBlockToAvoid); @@ -285,12 +356,33 @@ public class LodConfigWrapper //============================// // AdvancedModOptions Configs // //============================// - public static class AdvancedModOptions + public static class AdvancedModOptions implements IAdvancedModOptions { + public final IThreading threading; + public final IDebugging debugging; + public final IBuffers buffers; + + + @Override + public IThreading getThreading() + { + return threading; + } + + + @Override + public IDebugging getDebugging() + { + return debugging; + } + + + @Override + public IBuffers getBuffers() + { + return buffers; + } - public final Threading threading; - public final Debugging debugging; - public final Buffers buffers; public AdvancedModOptions() { @@ -299,65 +391,70 @@ public class LodConfigWrapper buffers = new Buffers(); } - public static class Threading + public static class Threading implements IThreading { - + @Override public int getNumberOfWorldGenerationThreads() { return ForgeConfig.CLIENT.advancedModOptions.threading.numberOfWorldGenerationThreads.get(); } + @Override public void setNumberOfWorldGenerationThreads(int newNumberOfWorldGenerationThreads) { ForgeConfig.CLIENT.advancedModOptions.threading.numberOfWorldGenerationThreads.set(newNumberOfWorldGenerationThreads); } - + @Override public int getNumberOfBufferBuilderThreads() { return ForgeConfig.CLIENT.advancedModOptions.threading.numberOfBufferBuilderThreads.get(); } + @Override public void setNumberOfBufferBuilderThreads(int newNumberOfWorldBuilderThreads) { ForgeConfig.CLIENT.advancedModOptions.threading.numberOfBufferBuilderThreads.set(newNumberOfWorldBuilderThreads); } } - + //===============// // Debug Options // //===============// - public static class Debugging + public static class Debugging implements IDebugging { - + @Override public boolean getDrawLods() { return ForgeConfig.CLIENT.advancedModOptions.debugging.drawLods.get(); } + @Override public void setDrawLods(boolean newDrawLods) { ForgeConfig.CLIENT.advancedModOptions.debugging.drawLods.set(newDrawLods); } - + @Override public DebugMode getDebugMode() { return ForgeConfig.CLIENT.advancedModOptions.debugging.debugMode.get(); } + @Override public void setDebugMode(DebugMode newDebugMode) { ForgeConfig.CLIENT.advancedModOptions.debugging.debugMode.set(newDebugMode); } - + @Override public boolean getEnableDebugKeybindings() { return ForgeConfig.CLIENT.advancedModOptions.debugging.enableDebugKeybindings.get(); } + @Override public void setEnableDebugKeybindings(boolean newEnableDebugKeybindings) { ForgeConfig.CLIENT.advancedModOptions.debugging.enableDebugKeybindings.set(newEnableDebugKeybindings); @@ -365,19 +462,19 @@ public class LodConfigWrapper } - public static class Buffers + public static class Buffers implements IBuffers { - + @Override public BufferRebuildTimes getRebuildTimes() { return ForgeConfig.CLIENT.advancedModOptions.buffers.rebuildTimes.get(); } + @Override public void setRebuildTimes(BufferRebuildTimes newBufferRebuildTimes) { ForgeConfig.CLIENT.advancedModOptions.buffers.rebuildTimes.set(newBufferRebuildTimes); } } - } - } - + } + } } diff --git a/src/main/java/com/seibel/lod/wrappers/McObjectConverter.java b/src/main/java/com/seibel/lod/wrappers/minecraft/McObjectConverter.java similarity index 97% rename from src/main/java/com/seibel/lod/wrappers/McObjectConverter.java rename to src/main/java/com/seibel/lod/wrappers/minecraft/McObjectConverter.java index a77d70aa7..6cc5de6f8 100644 --- a/src/main/java/com/seibel/lod/wrappers/McObjectConverter.java +++ b/src/main/java/com/seibel/lod/wrappers/minecraft/McObjectConverter.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.seibel.lod.wrappers; +package com.seibel.lod.wrappers.minecraft; import java.nio.FloatBuffer; diff --git a/src/main/java/com/seibel/lod/wrappers/MinecraftWrapper.java b/src/main/java/com/seibel/lod/wrappers/minecraft/MinecraftWrapper.java similarity index 99% rename from src/main/java/com/seibel/lod/wrappers/MinecraftWrapper.java rename to src/main/java/com/seibel/lod/wrappers/minecraft/MinecraftWrapper.java index 69922d319..ae5313f86 100644 --- a/src/main/java/com/seibel/lod/wrappers/MinecraftWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/minecraft/MinecraftWrapper.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.seibel.lod.wrappers; +package com.seibel.lod.wrappers.minecraft; import java.awt.Color; import java.io.File; diff --git a/src/main/java/com/seibel/lod/wrappers/LightMapWrapper.java b/src/main/java/com/seibel/lod/wrappers/misc/LightMapWrapper.java similarity index 91% rename from src/main/java/com/seibel/lod/wrappers/LightMapWrapper.java rename to src/main/java/com/seibel/lod/wrappers/misc/LightMapWrapper.java index a52ddf51a..1aed1826d 100644 --- a/src/main/java/com/seibel/lod/wrappers/LightMapWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/misc/LightMapWrapper.java @@ -1,4 +1,4 @@ -package com.seibel.lod.wrappers; +package com.seibel.lod.wrappers.misc; import net.minecraft.client.renderer.texture.NativeImage;