diff --git a/src/main/java/com/seibel/lod/core/api/external/DhApiMain.java b/src/main/java/com/seibel/lod/core/api/external/DhApiMain.java
index 8968dff22..c88e013da 100644
--- a/src/main/java/com/seibel/lod/core/api/external/DhApiMain.java
+++ b/src/main/java/com/seibel/lod/core/api/external/DhApiMain.java
@@ -44,4 +44,5 @@ public class DhApiMain
{
return LodDimensionFileHandler.LOD_SAVE_FILE_VERSION;
}
+
}
diff --git a/src/main/java/com/seibel/lod/core/api/external/ExternalApiShared.java b/src/main/java/com/seibel/lod/core/api/external/ExternalApiShared.java
index ba6dca001..ec6c5aaf8 100644
--- a/src/main/java/com/seibel/lod/core/api/external/ExternalApiShared.java
+++ b/src/main/java/com/seibel/lod/core/api/external/ExternalApiShared.java
@@ -1,9 +1,5 @@
package com.seibel.lod.core.api.external;
-import com.seibel.lod.core.config.types.ConfigEntry;
-import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton;
-
/**
* This stores objects and variables that
* are shared between the different external api classes.
@@ -15,29 +11,9 @@ import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton;
*
*
* @author James Seibel
- * @version 2022-5-28
+ * @version 2022-6-2
*/
public class ExternalApiShared
{
- /**
- * If the ConfigEntry doesn't allowApiOverride nothing happens.
- *
- * @param configEntry The ConfigEntry to set
- * @param newValue the value to set the config too
- * @param the type the config accepts
- *
- * @return true if the value was set, false otherwise
- */
- public static boolean attemptToSetApiValue(ConfigEntry configEntry, T newValue)
- {
- if (configEntry.allowApiOverride)
- {
- configEntry.set(newValue);
- return true;
- }
- else
- {
- return false;
- }
- }
+
}
diff --git a/src/main/java/com/seibel/lod/core/enums/rendering/FogColorMode.java b/src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogColorMode.java
similarity index 81%
rename from src/main/java/com/seibel/lod/core/enums/rendering/FogColorMode.java
rename to src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogColorMode.java
index e36655d4f..d8ee93d8e 100644
--- a/src/main/java/com/seibel/lod/core/enums/rendering/FogColorMode.java
+++ b/src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogColorMode.java
@@ -17,26 +17,30 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.core.api.external.apiObjects.enums;
/**
* USE_DEFAULT_FOG_COLOR,
* USE_SKY_COLOR,
*
* @author James Seibel
- * @version 11-27-2021
+ * @version 2022-6-2
*/
-public enum FogColorMode
+public enum DhApiFogColorMode
{
+ // Reminder:
+ // when adding items up the API minor version
+ // when removing items up the API major version
+
/** Fog uses Minecraft's fog color. */
USE_WORLD_FOG_COLOR,
/**
* Replicates the effect of the clear sky mod.
* Making the fog blend in with the sky better
+ * For it to look good you need one of the following mods:
* https://www.curseforge.com/minecraft/mc-mods/clear-skies
* https://www.curseforge.com/minecraft/mc-mods/clear-skies-forge-port
- * For it to look good you need one of those mods
*/
USE_SKY_COLOR,
}
diff --git a/src/main/java/com/seibel/lod/core/enums/rendering/FogDistance.java b/src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogDistance.java
similarity index 80%
rename from src/main/java/com/seibel/lod/core/enums/rendering/FogDistance.java
rename to src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogDistance.java
index 304e84d42..367cb5a03 100644
--- a/src/main/java/com/seibel/lod/core/enums/rendering/FogDistance.java
+++ b/src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogDistance.java
@@ -17,16 +17,20 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.core.api.external.apiObjects.enums;
/**
* NEAR, FAR, or NEAR_AND_FAR.
*
* @author James Seibel
- * @version 11-26-2021
+ * @version 2022-6-2
*/
-public enum FogDistance
+public enum DhApiFogDistance
{
+ // Reminder:
+ // when adding items up the API minor version
+ // when removing items up the API major version
+
NEAR,
FAR,
NEAR_AND_FAR
diff --git a/src/main/java/com/seibel/lod/core/enums/rendering/FogDrawMode.java b/src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogDrawMode.java
similarity index 82%
rename from src/main/java/com/seibel/lod/core/enums/rendering/FogDrawMode.java
rename to src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogDrawMode.java
index 5f83529cd..f131a2a83 100644
--- a/src/main/java/com/seibel/lod/core/enums/rendering/FogDrawMode.java
+++ b/src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiFogDrawMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.core.api.external.apiObjects.enums;
/**
* USE_OPTIFINE_FOG_SETTING,
@@ -25,10 +25,14 @@ package com.seibel.lod.core.enums.rendering;
* FOG_DISABLED
*
* @author James Seibel
- * @version 11-27-2021
+ * @version 2022-6-2
*/
-public enum FogDrawMode
+public enum DhApiFogDrawMode
{
+ // Reminder:
+ // when adding items up the API minor version
+ // when removing items up the API major version
+
/**
* Use whatever Fog setting optifine is using.
* If optifine isn't installed this defaults to ALWAYS_DRAW_FOG.
@@ -36,5 +40,6 @@ public enum FogDrawMode
USE_OPTIFINE_SETTING,
FOG_ENABLED,
- FOG_DISABLED
+ FOG_DISABLED;
+
}
diff --git a/src/main/java/com/seibel/lod/core/enums/rendering/RendererType.java b/src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiRendererType.java
similarity index 61%
rename from src/main/java/com/seibel/lod/core/enums/rendering/RendererType.java
rename to src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiRendererType.java
index d32aa4821..7865860e7 100644
--- a/src/main/java/com/seibel/lod/core/enums/rendering/RendererType.java
+++ b/src/main/java/com/seibel/lod/core/api/external/apiObjects/enums/DhApiRendererType.java
@@ -17,27 +17,46 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.core.api.external.apiObjects.enums;
-public enum RendererType {
+/**
+ * Default
+ * Debug
+ * Disabled
+ *
+ * @version 2022-6-2
+ */
+public enum DhApiRendererType
+{
+ // Reminder:
+ // when adding items up the API minor version
+ // when removing items up the API major version
+
DEFAULT,
DEBUG,
- DISABLED,
- ;
-
- public static RendererType next(RendererType type) {
- switch (type) {
+ DISABLED;
+
+
+ /** Used by the config GUI to cycle through the available rendering options */
+ public static DhApiRendererType next(DhApiRendererType type)
+ {
+ switch (type)
+ {
case DEFAULT: return DEBUG;
case DEBUG: return DISABLED;
default: return DEFAULT;
}
}
-
- public static RendererType previous(RendererType type) {
- switch (type) {
+
+ /** Used by the config GUI to cycle through the available rendering options */
+ public static DhApiRendererType previous(DhApiRendererType type)
+ {
+ switch (type)
+ {
case DEFAULT: return DISABLED;
case DEBUG: return DEFAULT;
default: return DEBUG;
}
}
+
}
diff --git a/src/main/java/com/seibel/lod/core/api/external/apiObjects/objects/DhApiConfig_v1.java b/src/main/java/com/seibel/lod/core/api/external/apiObjects/objects/DhApiConfig_v1.java
new file mode 100644
index 000000000..70948642e
--- /dev/null
+++ b/src/main/java/com/seibel/lod/core/api/external/apiObjects/objects/DhApiConfig_v1.java
@@ -0,0 +1,75 @@
+package com.seibel.lod.core.api.external.apiObjects.objects;
+
+import com.seibel.lod.core.config.types.ConfigEntry;
+
+/**
+ * A wrapper used to interface with Distant Horizon's Config.
+ *
+ * @param
+ * @author James Seibel
+ * @version 2022-6-2
+ */
+public class DhApiConfig_v1
+{
+ private final ConfigEntry configEntry;
+
+
+ /**
+ * This constructor should only be called internally.
+ * There is no reason to create this object.
+ */
+ public DhApiConfig_v1(ConfigEntry newConfigEntry)
+ {
+ this.configEntry = newConfigEntry;
+ }
+
+
+ /**
+ * Returns the active value for this config.
+ * Returns the True value if either the config cannot be overridden by
+ * the API or if it hasn't been set by the API.
+ */
+ public T getValue() { return this.configEntry.get(); }
+ /**
+ * Returns the value held by this config.
+ * This is the value stored in the config file.
+ */
+ public T getTrueValue() { return this.configEntry.getTrueValue(); }
+ /**
+ * Returns the value of the config if it was set by the API.
+ * Returns null if the config wasn't set by the API.
+ */
+ public T getApiValue() { return this.configEntry.getApiValue(); }
+
+ /**
+ * Sets the config's value.
+ * If the newValue is set to null then the config
+ * will revert to using the True Value.
+ * If the config cannot be set via the API this method will return false.
+ *
+ * @return true if the value was set, false otherwise.
+ */
+ public boolean setValue(T newValue)
+ {
+ if (this.configEntry.allowApiOverride)
+ {
+ this.configEntry.setApiValue(newValue);
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ /** Returns true if this config can be set via the API, false otherwise. */
+ public boolean getCanBeOverrodeByApi() { return this.configEntry.allowApiOverride; }
+
+ /** Returns the default value for this config. */
+ public T getDefaultValue() { return this.configEntry.getDefaultValue(); }
+ /** Returns the max value for this config, null if there is no max. */
+ public T getMaxValue() { return this.configEntry.getMax(); }
+ /** Returns the min value for this config, null if there is no min. */
+ public T getMinValue() { return this.configEntry.getMin(); }
+
+}
diff --git a/src/main/java/com/seibel/lod/core/api/external/config/client/DhApiThreading.java b/src/main/java/com/seibel/lod/core/api/external/config/client/DhApiThreading.java
index 2e906b075..6951d8812 100644
--- a/src/main/java/com/seibel/lod/core/api/external/config/client/DhApiThreading.java
+++ b/src/main/java/com/seibel/lod/core/api/external/config/client/DhApiThreading.java
@@ -1,6 +1,6 @@
package com.seibel.lod.core.api.external.config.client;
-import com.seibel.lod.core.api.external.ExternalApiShared;
+import com.seibel.lod.core.api.external.apiObjects.objects.DhApiConfig_v1;
import com.seibel.lod.core.config.Config.Client.Advanced.Threading;
@@ -8,46 +8,29 @@ import com.seibel.lod.core.config.Config.Client.Advanced.Threading;
* General Threading settings.
*
* @author James Seibel
- * @version 2022-5-28
+ * @version 2022-6-2
*/
public class DhApiThreading
{
- /**
- * Returns the number of threads used to generate
- * terrain outside the vanilla render distance.
- */
- public static int getNumberOfWorldGeneratorThreads_v1()
- {
- return Threading.getWorldGenerationThreadPoolSize();
- }
- /** @return true if the value was set, false otherwise. */
- public static boolean setNumberOfWorldGeneratorThreads_v1(double newValue)
- {
- return ExternalApiShared.attemptToSetApiValue(Threading.numberOfWorldGenerationThreads, newValue);
- }
/**
- * Returns a number between 0.0 and 1.0, represents the expected time a world generator
- * thread will be actively generating terrain as a percentage.
+ * Returns the config related to the world generator threads.
+ *
+ * If the number of threads is less than 1 it will be treated as a percentage
+ * representing how often a single thread will be actively generating terrain.
*
- * 0.0 = active 0% of the time
- * 0.5 = active 50% of the time
- * 1.0 = active 100% of the time
+ * 0.0 = 1 thread active 0% of the time
+ * 0.5 = 1 thread active 50% of the time
+ * 1.0 = 1 thread active 100% of the time
+ * 1.5 = 2 threads active 100% of the time (partial values are rounded up)
+ * 2.0 = 2 threads active 100% of the time
*/
- public static double getWorldGeneratorThreadActivePercentage_v1()
- {
- return Threading.getWorldGenerationPartialRunTime();
- }
+ public static DhApiConfig_v1 getWorldGeneratorThreadConfig_v1()
+ { return new DhApiConfig_v1<>(Threading.numberOfWorldGenerationThreads); }
- /** Returns the number of threads used to rebuild geometry data. */
- public static int getNumberOfBufferBuilderThreads_v1()
- {
- return Threading.numberOfBufferBuilderThreads.get();
- }
- /** @return true if the value was set, false otherwise. */
- public static boolean setNumberOfBufferBuilderThreads_v1(int newValue)
- {
- return ExternalApiShared.attemptToSetApiValue(Threading.numberOfBufferBuilderThreads, newValue);
- }
+ /** Returns the config related to the buffer (GPU Terrain data) builder threads. */
+ public static DhApiConfig_v1 getBufferBuilderThreadConfig_v1()
+ { return new DhApiConfig_v1<>(Threading.numberOfBufferBuilderThreads); }
+
}
diff --git a/src/main/java/com/seibel/lod/core/api/external/config/client/graphics/DhApiGraphicsFog.java b/src/main/java/com/seibel/lod/core/api/external/config/client/graphics/DhApiGraphicsFog.java
new file mode 100644
index 000000000..7d13c419b
--- /dev/null
+++ b/src/main/java/com/seibel/lod/core/api/external/config/client/graphics/DhApiGraphicsFog.java
@@ -0,0 +1,35 @@
+package com.seibel.lod.core.api.external.config.client.graphics;
+
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogColorMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDistance;
+import com.seibel.lod.core.api.external.apiObjects.objects.DhApiConfig_v1;
+import com.seibel.lod.core.config.Config.Client.Graphics.FogQuality;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDrawMode;
+
+/**
+ * Any graphics settings related to fog.
+ *
+ * @author James Seibel
+ * @version 2022-6-2
+ */
+public class DhApiGraphicsFog
+{
+
+ /** Returns the config related to when fog is rendered. */
+ public static DhApiConfig_v1 getFogDistanceConfig_v1()
+ { return new DhApiConfig_v1<>(FogQuality.fogDistance); }
+
+ /** Returns the config related to when fog is rendered. */
+ public static DhApiConfig_v1 getFogRenderConfig_v1()
+ { return new DhApiConfig_v1<>(FogQuality.fogDrawMode); }
+
+ /** Returns the config related to the fog draw type. */
+ public static DhApiConfig_v1 getFogColorConfig_v1()
+ { return new DhApiConfig_v1<>(FogQuality.fogColorMode); }
+
+ /** Returns the config related to disabling vanilla fog. */
+ public static DhApiConfig_v1 getDisableVanillaFogConfig_v1()
+ { return new DhApiConfig_v1<>(FogQuality.disableVanillaFog); }
+
+
+}
diff --git a/src/main/java/com/seibel/lod/core/api/external/config/client/graphics/DhApiGraphicsGeneral.java b/src/main/java/com/seibel/lod/core/api/external/config/client/graphics/DhApiGraphicsGeneral.java
index 8c4a324ef..925b8bf67 100644
--- a/src/main/java/com/seibel/lod/core/api/external/config/client/graphics/DhApiGraphicsGeneral.java
+++ b/src/main/java/com/seibel/lod/core/api/external/config/client/graphics/DhApiGraphicsGeneral.java
@@ -1,8 +1,8 @@
package com.seibel.lod.core.api.external.config.client.graphics;
-import com.seibel.lod.core.api.external.ExternalApiShared;
+import com.seibel.lod.core.api.external.apiObjects.objects.DhApiConfig_v1;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.rendering.RendererType;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiRendererType;
import com.seibel.lod.core.config.Config.Client.Graphics.Quality;
import com.seibel.lod.core.config.Config.Client.Advanced.Debugging;
@@ -10,35 +10,20 @@ import com.seibel.lod.core.config.Config.Client.Advanced.Debugging;
* General graphics settings.
*
* @author James Seibel
- * @version 2022-5-28
+ * @version 2022-6-2
*/
public class DhApiGraphicsGeneral
{
- /** Returns the current Disant Horizons render distance radius in chunks. */
- public static int getLodChunkRenderDistance_v1()
- {
- return Quality.lodChunkRenderDistance.get();
- }
- /** @return true if the value was set, false otherwise. */
- public static boolean setLodChunkRenderDistance_v1(int newValue)
- {
- return ExternalApiShared.attemptToSetApiValue(Quality.lodChunkRenderDistance, newValue);
- }
-
/**
- * Returns true if rendering is currently enabled.
- * Returns false when rendering is disabled or debug rendering is enabled.
+ * Returns the config related to Distant Horizons render distance.
+ * The distance is a radius in measured in chunks.
*/
- public static boolean getRenderingEnabled_v1()
- {
- return Config.Client.Advanced.Debugging.rendererType.get() == RendererType.DEFAULT;
- }
- /** @return true if the value was set, false otherwise. */
- public static boolean setRenderingEnabled_v1(boolean enableRendering)
- {
- RendererType newValue = enableRendering ? RendererType.DEFAULT : RendererType.DISABLED;
- return ExternalApiShared.attemptToSetApiValue(Debugging.rendererType, newValue);
- }
+ public static DhApiConfig_v1 getDhChunkRenderDistanceConfig_v1()
+ { return new DhApiConfig_v1<>(Quality.lodChunkRenderDistance); }
+
+ /** Returns the config related to how Distant Horizons is set to render. */
+ public static DhApiConfig_v1 getRenderingTypeConfig_v1()
+ { return new DhApiConfig_v1<>(Debugging.rendererType); }
}
diff --git a/src/main/java/com/seibel/lod/core/api/internal/ClientApi.java b/src/main/java/com/seibel/lod/core/api/internal/ClientApi.java
index ee18790f6..058c7d00e 100644
--- a/src/main/java/com/seibel/lod/core/api/internal/ClientApi.java
+++ b/src/main/java/com/seibel/lod/core/api/internal/ClientApi.java
@@ -24,7 +24,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import com.seibel.lod.core.builders.lodBuilding.LodBuilder;
-import com.seibel.lod.core.enums.rendering.RendererType;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiRendererType;
import com.seibel.lod.core.logging.ConfigBasedLogger;
import com.seibel.lod.core.logging.ConfigBasedSpamLogger;
import com.seibel.lod.core.objects.DHChunkPos;
@@ -264,7 +264,7 @@ public class ClientApi
- if (CONFIG.client().advanced().debugging().getRendererType() == RendererType.DEFAULT)
+ if (CONFIG.client().advanced().debugging().getRendererType() == DhApiRendererType.DEFAULT)
{
// Note to self:
// if "unspecified" shows up in the pie chart, it is
@@ -290,7 +290,7 @@ public class ClientApi
}
profiler.pop(); // end LOD
profiler.push("terrain"); // go back into "terrain"
- } else if (CONFIG.client().advanced().debugging().getRendererType() == RendererType.DEBUG) {
+ } else if (CONFIG.client().advanced().debugging().getRendererType() == DhApiRendererType.DEBUG) {
IProfilerWrapper profiler = MC.getProfiler();
profiler.pop(); // get out of "terrain"
profiler.push("LODTestRendering");
@@ -359,7 +359,7 @@ public class ClientApi
if (glfwKey == GLFW.GLFW_KEY_F6)
{
CONFIG.client().advanced().debugging()
- .setRendererType(RendererType.next(CONFIG.client().advanced().debugging().getRendererType()));
+ .setRendererType(DhApiRendererType.next(CONFIG.client().advanced().debugging().getRendererType()));
MC.sendChatMessage("F6: Set rendering to " + CONFIG.client().advanced().debugging().getRendererType());
}
diff --git a/src/main/java/com/seibel/lod/core/api/internal/a7/ClientApi.java b/src/main/java/com/seibel/lod/core/api/internal/a7/ClientApi.java
index 9e6483d6a..e9966ed69 100644
--- a/src/main/java/com/seibel/lod/core/api/internal/a7/ClientApi.java
+++ b/src/main/java/com/seibel/lod/core/api/internal/a7/ClientApi.java
@@ -22,7 +22,7 @@ package com.seibel.lod.core.api.internal.a7;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.ModInfo;
import com.seibel.lod.core.enums.rendering.DebugMode;
-import com.seibel.lod.core.enums.rendering.RendererType;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiRendererType;
import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler;
import com.seibel.lod.core.logging.ConfigBasedLogger;
import com.seibel.lod.core.logging.ConfigBasedSpamLogger;
@@ -211,7 +211,7 @@ public class ClientApi
level.asyncTick();
}
- if (Config.Client.Advanced.Debugging.rendererType.get() == RendererType.DEFAULT) {
+ if (Config.Client.Advanced.Debugging.rendererType.get() == DhApiRendererType.DEFAULT) {
if (MC_RENDER.playerHasBlindnessEffect()) {
// if the player is blind, don't render LODs,
// and don't change minecraft's fog
@@ -237,7 +237,7 @@ public class ClientApi
}
}
profiler.pop(); // "Render-Lods"
- } else if (Config.Client.Advanced.Debugging.rendererType.get() == RendererType.DEBUG) {
+ } else if (Config.Client.Advanced.Debugging.rendererType.get() == DhApiRendererType.DEBUG) {
profiler.push("Render-Test");
try {
ClientApi.testRenderer.render();
@@ -293,7 +293,7 @@ public class ClientApi
}
if (glfwKey == GLFW.GLFW_KEY_F6)
{
- Config.Client.Advanced.Debugging.rendererType.set(RendererType.next(Config.Client.Advanced.Debugging.rendererType.get()));
+ Config.Client.Advanced.Debugging.rendererType.set(DhApiRendererType.next(Config.Client.Advanced.Debugging.rendererType.get()));
MC.sendChatMessage("F6: Set rendering to " + Config.Client.Advanced.Debugging.rendererType.get());
}
if (glfwKey == GLFW.GLFW_KEY_P)
diff --git a/src/main/java/com/seibel/lod/core/config/Config.java b/src/main/java/com/seibel/lod/core/config/Config.java
index e70329875..fd35f0290 100644
--- a/src/main/java/com/seibel/lod/core/config/Config.java
+++ b/src/main/java/com/seibel/lod/core/config/Config.java
@@ -20,22 +20,15 @@
package com.seibel.lod.core.config;
-import com.seibel.lod.core.config.*;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDrawMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogColorMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDistance;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiRendererType;
import com.seibel.lod.core.config.types.*;
import com.seibel.lod.core.enums.config.*;
import com.seibel.lod.core.enums.rendering.*;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IAdvanced.*;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IGraphics.*;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IGraphics.IFogQuality.IAdvancedFog;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IGraphics.IFogQuality.IAdvancedFog.IHeightFog;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IMultiplayer;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IWorldGenerator;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IAdvanced;
-import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IAdvanced.IDebugging.*;
-
/**
* This handles any configuration the user has access to.
@@ -178,34 +171,34 @@ public class Config
public static class FogQuality
{
- public static ConfigEntry fogDistance = new ConfigEntry.Builder()
- .set(FogDistance.FAR)
+ public static ConfigEntry fogDistance = new ConfigEntry.Builder()
+ .set(DhApiFogDistance.FAR)
.comment(""
+ "At what distance should Fog be drawn on the fake chunks? \n"
+ "\n"
+ "This setting shouldn't affect performance.")
.build();
- public static ConfigEntry fogDrawMode = new ConfigEntry.Builder()
- .set(FogDrawMode.FOG_ENABLED)
+ public static ConfigEntry fogDrawMode = new ConfigEntry.Builder()
+ .set(DhApiFogDrawMode.FOG_ENABLED)
.comment(""
+ "When should fog be drawn? \n"
+ "\n"
- + FogDrawMode.USE_OPTIFINE_SETTING + ": Use whatever Fog setting Optifine is using.\n"
- + "If Optifine isn't installed this defaults to " + FogDrawMode.FOG_ENABLED + ". \n"
- + FogDrawMode.FOG_ENABLED + ": Never draw fog on the LODs \n"
- + FogDrawMode.FOG_DISABLED + ": Always draw fast fog on the LODs \n"
+ + DhApiFogDrawMode.USE_OPTIFINE_SETTING + ": Use whatever Fog setting Optifine is using.\n"
+ + "If Optifine isn't installed this defaults to " + DhApiFogDrawMode.FOG_ENABLED + ". \n"
+ + DhApiFogDrawMode.FOG_ENABLED + ": Never draw fog on the LODs \n"
+ + DhApiFogDrawMode.FOG_DISABLED + ": Always draw fast fog on the LODs \n"
+ "\n"
+ "Disabling fog will improve GPU performance.")
.build();
- public static ConfigEntry fogColorMode = new ConfigEntry.Builder()
- .set(FogColorMode.USE_WORLD_FOG_COLOR)
+ public static ConfigEntry fogColorMode = new ConfigEntry.Builder()
+ .set(DhApiFogColorMode.USE_WORLD_FOG_COLOR)
.comment(""
+ "What color should fog use? \n"
+ "\n"
- + FogColorMode.USE_WORLD_FOG_COLOR + ": Use the world's fog color. \n"
- + FogColorMode.USE_SKY_COLOR + ": Use the sky's color. \n"
+ + DhApiFogColorMode.USE_WORLD_FOG_COLOR + ": Use the world's fog color. \n"
+ + DhApiFogColorMode.USE_SKY_COLOR + ": Use the sky's color. \n"
+ "\n"
+ "This setting doesn't affect performance.")
.build();
@@ -737,14 +730,14 @@ public class Config
public static class Debugging
{
- public static ConfigEntry rendererType = new ConfigEntry.Builder()
- .set(RendererType.DEFAULT)
+ public static ConfigEntry rendererType = new ConfigEntry.Builder()
+ .set(DhApiRendererType.DEFAULT)
.comment(""
+ "What renderer is active? \n"
+ "\n"
- + RendererType.DEFAULT + ": Default lod renderer \n"
- + RendererType.DEBUG + ": Debug testing renderer \n"
- + RendererType.DISABLED + ": Disable rendering")
+ + DhApiRendererType.DEFAULT + ": Default lod renderer \n"
+ + DhApiRendererType.DEBUG + ": Debug testing renderer \n"
+ + DhApiRendererType.DISABLED + ": Disable rendering")
.build();
public static ConfigEntry debugMode = new ConfigEntry.Builder()
diff --git a/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java b/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java
index 0f6193057..09720c788 100644
--- a/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java
+++ b/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java
@@ -115,14 +115,14 @@ public class ConfigFileHandling {
if (workConfig.contains(entry.getNameWCategory())) {
try {
if (entry.getType().isEnum()) {
- entry.setWithoutSaving((T) ( workConfig.getEnum(entry.getNameWCategory(), (Class extends Enum>) entry.getType()) ));
+ entry.setWTSave((T) ( workConfig.getEnum(entry.getNameWCategory(), (Class extends Enum>) entry.getType()) ));
} else if (ConfigTypeConverters.convertObjects.containsKey(entry.getType())) {
- entry.setWithoutSaving((T) ConfigTypeConverters.convertFromString(entry.getType(), workConfig.get(entry.getNameWCategory())));
+ entry.setWTSave((T) ConfigTypeConverters.convertFromString(entry.getType(), workConfig.get(entry.getNameWCategory())));
} else {
- entry.setWithoutSaving((T) workConfig.get(entry.getNameWCategory()));
+ entry.setWTSave((T) workConfig.get(entry.getNameWCategory()));
if (entry.isValid() == 0) return;
- else if (entry.isValid() == -1) entry.setWithoutSaving(entry.getMin());
- else if (entry.isValid() == 1) entry.setWithoutSaving(entry.getMax());
+ else if (entry.isValid() == -1) entry.setWTSave(entry.getMin());
+ else if (entry.isValid() == 1) entry.setWTSave(entry.getMax());
}
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/seibel/lod/core/config/types/ConfigEntry.java b/src/main/java/com/seibel/lod/core/config/types/ConfigEntry.java
index 642047c3c..8225817ea 100644
--- a/src/main/java/com/seibel/lod/core/config/types/ConfigEntry.java
+++ b/src/main/java/com/seibel/lod/core/config/types/ConfigEntry.java
@@ -41,10 +41,14 @@ public class ConfigEntry extends AbstractConfigType>
public T getDefaultValue() {
return this.defaultValue;
}
-
+
+
public void setApiValue(T newApiValue) {
this.apiValue = newApiValue;
}
+ public T getApiValue() {
+ return this.apiValue;
+ }
@Override
public void set(T newValue) {
this.value = newValue;
@@ -61,7 +65,7 @@ public class ConfigEntry extends AbstractConfigType>
}
/** Sets the value without saving */
- public void setWithoutSaving(T newValue) {
+ public void setWTSave(T newValue) {
this.value = newValue;
}
@@ -190,4 +194,5 @@ public class ConfigEntry extends AbstractConfigType>
return new ConfigEntry(tmpAppearance, tmpValue, tmpComment, tmpMin, tmpMax, tmpUseApiOverwrite);
}
}
+
}
diff --git a/src/main/java/com/seibel/lod/core/handlers/IReflectionHandler.java b/src/main/java/com/seibel/lod/core/handlers/IReflectionHandler.java
index 210dcd47f..0ba4b83aa 100644
--- a/src/main/java/com/seibel/lod/core/handlers/IReflectionHandler.java
+++ b/src/main/java/com/seibel/lod/core/handlers/IReflectionHandler.java
@@ -19,7 +19,7 @@
package com.seibel.lod.core.handlers;
-import com.seibel.lod.core.enums.rendering.FogDrawMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDrawMode;
import com.seibel.lod.core.handlers.dependencyInjection.IBindable;
/**
@@ -40,7 +40,7 @@ import com.seibel.lod.core.handlers.dependencyInjection.IBindable;
public interface IReflectionHandler extends IBindable
{
/** @return Whether Optifine is set to render fog or not. */
- FogDrawMode getFogDrawMode();
+ DhApiFogDrawMode getFogDrawMode();
/** @return if Vivecraft is present. Attempts to find the "VRRenderer" class. */
boolean vivecraftPresent();
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 8f7dcc572..4b8d23a91 100644
--- a/src/main/java/com/seibel/lod/core/handlers/ReflectionHandler.java
+++ b/src/main/java/com/seibel/lod/core/handlers/ReflectionHandler.java
@@ -27,7 +27,7 @@ import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import org.apache.logging.log4j.Logger;
-import com.seibel.lod.core.enums.rendering.FogDrawMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDrawMode;
/**
* A singleton used to get variables from methods
@@ -109,14 +109,14 @@ public class ReflectionHandler implements IReflectionHandler
* @return the fog quality
*/
@Override
- public FogDrawMode getFogDrawMode()
+ public DhApiFogDrawMode getFogDrawMode()
{
if (ofFogField == null)
{
// either optifine isn't installed,
// the variable name was changed, or
// the setup method wasn't called yet.
- return FogDrawMode.FOG_ENABLED;
+ return DhApiFogDrawMode.FOG_ENABLED;
}
int returnNum = 0;
@@ -140,9 +140,9 @@ public class ReflectionHandler implements IReflectionHandler
// normal options
case 1: // fast
case 2: // fancy
- return FogDrawMode.FOG_ENABLED;
+ return DhApiFogDrawMode.FOG_ENABLED;
case 3: // off
- return FogDrawMode.FOG_DISABLED;
+ return DhApiFogDrawMode.FOG_DISABLED;
}
}
diff --git a/src/main/java/com/seibel/lod/core/render/LodFogConfig.java b/src/main/java/com/seibel/lod/core/render/LodFogConfig.java
index ed0b4d007..0844a6100 100644
--- a/src/main/java/com/seibel/lod/core/render/LodFogConfig.java
+++ b/src/main/java/com/seibel/lod/core/render/LodFogConfig.java
@@ -19,6 +19,8 @@
package com.seibel.lod.core.render;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDrawMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDistance;
import com.seibel.lod.core.enums.rendering.*;
import com.seibel.lod.core.handlers.IReflectionHandler;
import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler;
@@ -60,26 +62,26 @@ public class LodFogConfig
public static LodFogConfig generateFogConfig()
{
- FogDrawMode fogMode = CONFIG.client().graphics().fogQuality().getFogDrawMode();
- if (fogMode == FogDrawMode.USE_OPTIFINE_SETTING)
+ DhApiFogDrawMode fogMode = CONFIG.client().graphics().fogQuality().getFogDrawMode();
+ if (fogMode == DhApiFogDrawMode.USE_OPTIFINE_SETTING)
fogMode = REFLECTION_HANDLER.getFogDrawMode();
return new LodFogConfig(fogMode);
}
/** sets all fog options from the config */
- private LodFogConfig(FogDrawMode fogDrawMode)
+ private LodFogConfig(DhApiFogDrawMode fogDrawMode)
{
earthCurveRatio = CONFIG.client().graphics().advancedGraphics().getEarthCurveRatio(); //FIXME: Move this out of here
- if (fogDrawMode != FogDrawMode.FOG_DISABLED)
+ if (fogDrawMode != DhApiFogDrawMode.FOG_DISABLED)
{
ILodConfigWrapperSingleton.IClient.IGraphics.IFogQuality fogSettings = CONFIG.client().graphics().fogQuality();
- FogDistance fogDistance = fogSettings.getFogDistance();
- drawNearFog = (fogDistance == FogDistance.NEAR || fogDistance == FogDistance.NEAR_AND_FAR);
+ DhApiFogDistance fogDistance = fogSettings.getFogDistance();
+ drawNearFog = (fogDistance == DhApiFogDistance.NEAR || fogDistance == DhApiFogDistance.NEAR_AND_FAR);
- if (fogDistance == FogDistance.FAR || fogDistance == FogDistance.NEAR_AND_FAR)
+ if (fogDistance == DhApiFogDistance.FAR || fogDistance == DhApiFogDistance.NEAR_AND_FAR)
{
// far fog should be drawn
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 39d44869e..f26f365de 100644
--- a/src/main/java/com/seibel/lod/core/render/LodRenderer.java
+++ b/src/main/java/com/seibel/lod/core/render/LodRenderer.java
@@ -39,8 +39,8 @@ import org.lwjgl.opengl.GL32;
import com.seibel.lod.core.builders.lodBuilding.bufferBuilding.LodBufferBuilderFactory;
import com.seibel.lod.core.enums.rendering.DebugMode;
-import com.seibel.lod.core.enums.rendering.FogColorMode;
-import com.seibel.lod.core.enums.rendering.FogDistance;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogColorMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDistance;
import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler;
import com.seibel.lod.core.objects.lod.LodDimension;
import com.seibel.lod.core.objects.math.Mat4f;
@@ -118,7 +118,7 @@ public class LodRenderer
/** This is used to determine if the LODs should be regenerated */
- private FogDistance prevFogDistance = FogDistance.NEAR_AND_FAR;
+ private DhApiFogDistance prevFogDistance = DhApiFogDistance.NEAR_AND_FAR;
/**
* if this is true the LOD buffers should be regenerated,
@@ -432,7 +432,7 @@ public class LodRenderer
{
Color fogColor;
- if (CONFIG.client().graphics().fogQuality().getFogColorMode() == FogColorMode.USE_SKY_COLOR)
+ if (CONFIG.client().graphics().fogQuality().getFogColorMode() == DhApiFogColorMode.USE_SKY_COLOR)
fogColor = MC_RENDER.getSkyColor();
else
fogColor = MC_RENDER.getFogColor(partialTicks);
diff --git a/src/main/java/com/seibel/lod/core/render/a7LodRenderer.java b/src/main/java/com/seibel/lod/core/render/a7LodRenderer.java
index 9baf8c661..40f326c27 100644
--- a/src/main/java/com/seibel/lod/core/render/a7LodRenderer.java
+++ b/src/main/java/com/seibel/lod/core/render/a7LodRenderer.java
@@ -20,36 +20,26 @@
package com.seibel.lod.core.render;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.api.internal.InternalApiShared;
import com.seibel.lod.core.builders.lodBuilding.bufferBuilding.LodBufferBuilderFactory;
import com.seibel.lod.core.config.types.ConfigEntry;
import com.seibel.lod.core.enums.rendering.DebugMode;
-import com.seibel.lod.core.enums.rendering.FogColorMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogColorMode;
import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler;
import com.seibel.lod.core.logging.ConfigBasedLogger;
import com.seibel.lod.core.logging.ConfigBasedSpamLogger;
-import com.seibel.lod.core.objects.BoolType;
import com.seibel.lod.core.objects.DHBlockPos;
-import com.seibel.lod.core.objects.Pos2D;
import com.seibel.lod.core.objects.a7.DHLevel;
import com.seibel.lod.core.objects.a7.render.RenderBufferHandler;
-import com.seibel.lod.core.objects.lod.LodDimension;
import com.seibel.lod.core.objects.math.Mat4f;
import com.seibel.lod.core.objects.math.Vec3d;
import com.seibel.lod.core.objects.math.Vec3f;
-import com.seibel.lod.core.objects.opengl.RenderRegion;
import com.seibel.lod.core.render.objects.GLState;
import com.seibel.lod.core.render.objects.QuadElementBuffer;
-import com.seibel.lod.core.util.DetailDistanceUtil;
import com.seibel.lod.core.util.LodUtil;
-import com.seibel.lod.core.util.gridList.EdgeDistanceBooleanGrid;
-import com.seibel.lod.core.util.gridList.MovableGridRingList;
-import com.seibel.lod.core.util.gridList.PosArrayGridList;
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
import com.seibel.lod.core.wrapperInterfaces.minecraft.IProfilerWrapper;
import com.seibel.lod.core.wrapperInterfaces.misc.ILightMapWrapper;
-import com.seibel.lod.core.wrapperInterfaces.world.IWorldWrapper;
import org.apache.logging.log4j.LogManager;
import org.lwjgl.opengl.GL32;
@@ -286,7 +276,7 @@ public class a7LodRenderer
{
Color fogColor;
- if (Config.Client.Graphics.FogQuality.fogColorMode.get() == FogColorMode.USE_SKY_COLOR)
+ if (Config.Client.Graphics.FogQuality.fogColorMode.get() == DhApiFogColorMode.USE_SKY_COLOR)
fogColor = MC_RENDER.getSkyColor();
else
fogColor = MC_RENDER.getFogColor(partialTicks);
diff --git a/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/ILodConfigWrapperSingleton.java b/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/ILodConfigWrapperSingleton.java
index f31f168ba..f0b0655ae 100644
--- a/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/ILodConfigWrapperSingleton.java
+++ b/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/ILodConfigWrapperSingleton.java
@@ -19,6 +19,10 @@
package com.seibel.lod.core.wrapperInterfaces.config;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDrawMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogColorMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDistance;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiRendererType;
import com.seibel.lod.core.enums.config.*;
import com.seibel.lod.core.enums.rendering.*;
import com.seibel.lod.core.handlers.dependencyInjection.IBindable;
@@ -89,14 +93,14 @@ public interface ILodConfigWrapperSingleton extends IBindable
@Deprecated
interface IFogQuality
{
- FogDistance getFogDistance();
- void setFogDistance(FogDistance newFogDistance);
+ DhApiFogDistance getFogDistance();
+ void setFogDistance(DhApiFogDistance newFogDistance);
- FogDrawMode getFogDrawMode();
- void setFogDrawMode(FogDrawMode newFogDrawMode);
+ DhApiFogDrawMode getFogDrawMode();
+ void setFogDrawMode(DhApiFogDrawMode newFogDrawMode);
- FogColorMode getFogColorMode();
- void setFogColorMode(FogColorMode newFogColorMode);
+ DhApiFogColorMode getFogColorMode();
+ void setFogColorMode(DhApiFogColorMode newFogColorMode);
boolean getDisableVanillaFog();
void setDisableVanillaFog(boolean newDisableVanillaFog);
@@ -305,8 +309,8 @@ public interface ILodConfigWrapperSingleton extends IBindable
@Deprecated
interface IDebugging
{
- RendererType getRendererType();
- void setRendererType(RendererType newRendererType);
+ DhApiRendererType getRendererType();
+ void setRendererType(DhApiRendererType newRendererType);
DebugMode getDebugMode();
void setDebugMode(DebugMode newDebugMode);
diff --git a/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/LodConfigWrapperSingleton.java b/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/LodConfigWrapperSingleton.java
index a0e2fd358..d390b5955 100644
--- a/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/LodConfigWrapperSingleton.java
+++ b/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/LodConfigWrapperSingleton.java
@@ -1,5 +1,9 @@
package com.seibel.lod.core.wrapperInterfaces.config;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDrawMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogColorMode;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiFogDistance;
+import com.seibel.lod.core.api.external.apiObjects.enums.DhApiRendererType;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.enums.config.*;
import com.seibel.lod.core.enums.rendering.*;
@@ -206,38 +210,38 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
}
@Override
- public FogDistance getFogDistance()
+ public DhApiFogDistance getFogDistance()
{
return Config.Client.Graphics.FogQuality.fogDistance.get();
}
@Override
- public void setFogDistance(FogDistance newFogDistance)
+ public void setFogDistance(DhApiFogDistance newFogDistance)
{
Config.Client.Graphics.FogQuality.fogDistance.set(newFogDistance);
}
@Override
- public FogDrawMode getFogDrawMode()
+ public DhApiFogDrawMode getFogDrawMode()
{
return Config.Client.Graphics.FogQuality.fogDrawMode.get();
}
@Override
- public void setFogDrawMode(FogDrawMode setFogDrawMode)
+ public void setFogDrawMode(DhApiFogDrawMode setFogDrawMode)
{
Config.Client.Graphics.FogQuality.fogDrawMode.set(setFogDrawMode);
}
@Override
- public FogColorMode getFogColorMode()
+ public DhApiFogColorMode getFogColorMode()
{
return Config.Client.Graphics.FogQuality.fogColorMode.get();
}
@Override
- public void setFogColorMode(FogColorMode newFogColorMode)
+ public void setFogColorMode(DhApiFogColorMode newFogColorMode)
{
Config.Client.Graphics.FogQuality.fogColorMode.set(newFogColorMode);
}
@@ -725,11 +729,11 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
* DISABLED
* */
@Override
- public RendererType getRendererType() {
+ public DhApiRendererType getRendererType() {
return Config.Client.Advanced.Debugging.rendererType.get();
}
@Override
- public void setRendererType(RendererType newRenderType) {
+ public void setRendererType(DhApiRendererType newRenderType) {
Config.Client.Advanced.Debugging.rendererType.set(newRenderType);
}