diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EBlocksToAvoid.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EBlocksToAvoid.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EBlocksToAvoid.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EBlocksToAvoid.java
index 837533ccf..4ffdd38dd 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EBlocksToAvoid.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EBlocksToAvoid.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* NONE,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EBufferRebuildTimes.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EBufferRebuildTimes.java
similarity index 97%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EBufferRebuildTimes.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EBufferRebuildTimes.java
index 2c68f910f..4e697fe54 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EBufferRebuildTimes.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EBufferRebuildTimes.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* CONSTANT
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EDistanceGenerationMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EDistanceGenerationMode.java
similarity index 98%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EDistanceGenerationMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EDistanceGenerationMode.java
index a811ab464..daf69261b 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EDistanceGenerationMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EDistanceGenerationMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* NONE
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EGenerationPriority.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EGenerationPriority.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EGenerationPriority.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EGenerationPriority.java
index 4753cd1c6..255c497eb 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EGenerationPriority.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EGenerationPriority.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* AUTO
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EGpuUploadMethod.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EGpuUploadMethod.java
similarity index 97%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EGpuUploadMethod.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EGpuUploadMethod.java
index 83ffb0d1a..53b41ef46 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EGpuUploadMethod.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EGpuUploadMethod.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* AUTO,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalQuality.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalQuality.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalQuality.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalQuality.java
index ccbf96e47..98192f164 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalQuality.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalQuality.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* LOWEST
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalResolution.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalResolution.java
similarity index 98%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalResolution.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalResolution.java
index e361d48cf..a25fc4ecc 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalResolution.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalResolution.java
@@ -17,12 +17,11 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
import java.util.ArrayList;
import java.util.Collections;
-import com.seibel.lod.core.util.LodUtil;
import com.seibel.lod.core.util.MathUtil;
/**
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalScale.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalScale.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalScale.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalScale.java
index 95617f03d..ecb8db89c 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EHorizontalScale.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EHorizontalScale.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* Low
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/ELightGenerationMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/ELightGenerationMode.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/config/ELightGenerationMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/ELightGenerationMode.java
index 1084b4784..9badd1dcf 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/ELightGenerationMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/ELightGenerationMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* FAST,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/ELoggerMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/ELoggerMode.java
similarity index 97%
rename from core/src/main/java/com/seibel/lod/core/enums/config/ELoggerMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/ELoggerMode.java
index bc99f6108..face70155 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/ELoggerMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/ELoggerMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
import org.apache.logging.log4j.Level;
public enum ELoggerMode
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EServerFolderNameMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EServerFolderNameMode.java
similarity index 97%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EServerFolderNameMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EServerFolderNameMode.java
index defc01a64..6961a82c8 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EServerFolderNameMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EServerFolderNameMode.java
@@ -18,7 +18,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* AUTO,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EShadingMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EShadingMode.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EShadingMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EShadingMode.java
index 9600612ef..06e952411 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EShadingMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EShadingMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* NONE, GAME_SHADING
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EVanillaOverdraw.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EVanillaOverdraw.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EVanillaOverdraw.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EVanillaOverdraw.java
index 3832bad73..9d5b4f7dd 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EVanillaOverdraw.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EVanillaOverdraw.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* NEVER,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/config/EVerticalQuality.java b/api/src/main/java/com/seibel/lod/api/items/enums/config/EVerticalQuality.java
similarity index 98%
rename from core/src/main/java/com/seibel/lod/core/enums/config/EVerticalQuality.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/config/EVerticalQuality.java
index 81a1c3c82..99aafc4a5 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/config/EVerticalQuality.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/config/EVerticalQuality.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.config;
+package com.seibel.lod.api.items.enums.config;
/**
* heightmap
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/EDebugMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EDebugMode.java
similarity index 98%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/EDebugMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/EDebugMode.java
index 26198cf0d..2744e597a 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/EDebugMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EDebugMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* OFF,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/EFogColorMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogColorMode.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/EFogColorMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogColorMode.java
index 3cfc1118c..bc43215b6 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/EFogColorMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogColorMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* USE_DEFAULT_FOG_COLOR,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/EFogDistance.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogDistance.java
similarity index 95%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/EFogDistance.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogDistance.java
index ca8ef64da..0a39a143a 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/EFogDistance.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogDistance.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* NEAR, FAR, or NEAR_AND_FAR.
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/EFogDrawMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogDrawMode.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/EFogDrawMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogDrawMode.java
index f9dfbd39b..7843338ed 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/EFogDrawMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogDrawMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* USE_OPTIFINE_FOG_SETTING,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/EFogFalloff.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogFalloff.java
similarity index 87%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/EFogFalloff.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogFalloff.java
index 1f939fd14..350cfaf60 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/EFogFalloff.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EFogFalloff.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* LINEAR,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/EGLProxyContext.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EGLProxyContext.java
similarity index 95%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/EGLProxyContext.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/EGLProxyContext.java
index 25dba3bf7..19d47f32d 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/EGLProxyContext.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EGLProxyContext.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* Minecraft, Lod_Builder, None
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/EHeightFogMixMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EHeightFogMixMode.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/EHeightFogMixMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/EHeightFogMixMode.java
index ac13e6e91..a3f0b8c64 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/EHeightFogMixMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EHeightFogMixMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* BASIC
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/EHeightFogMode.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EHeightFogMode.java
similarity index 97%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/EHeightFogMode.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/EHeightFogMode.java
index a5f3bd4d6..d1a26e0b0 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/EHeightFogMode.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/EHeightFogMode.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* ABOVE_CAMERA,
diff --git a/core/src/main/java/com/seibel/lod/core/enums/rendering/ETransparency.java b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/ETransparency.java
similarity index 97%
rename from core/src/main/java/com/seibel/lod/core/enums/rendering/ETransparency.java
rename to api/src/main/java/com/seibel/lod/api/items/enums/rendering/ETransparency.java
index f12d331a5..d1a66661a 100644
--- a/core/src/main/java/com/seibel/lod/core/enums/rendering/ETransparency.java
+++ b/api/src/main/java/com/seibel/lod/api/items/enums/rendering/ETransparency.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.enums.rendering;
+package com.seibel.lod.api.items.enums.rendering;
/**
* OFF,
diff --git a/api/src/main/java/com/seibel/lod/api/items/interfaces/config/both/IDhApiWorldGeneration.java b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/both/IDhApiWorldGeneration.java
new file mode 100644
index 000000000..b8e8020dc
--- /dev/null
+++ b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/both/IDhApiWorldGeneration.java
@@ -0,0 +1,76 @@
+/*
+ * This file is part of the Distant Horizons mod (formerly the LOD Mod),
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020-2022 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.lod.api.items.interfaces.config.both;
+
+import com.seibel.lod.api.items.enums.config.EBlocksToAvoid;
+import com.seibel.lod.api.items.enums.config.EDistanceGenerationMode;
+import com.seibel.lod.api.items.enums.config.EGenerationPriority;
+import com.seibel.lod.api.items.enums.config.ELightGenerationMode;
+import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
+
+/**
+ * Distant Horizons' world generation configuration.
+ *
+ * Note: Fake chunks are NOT saved in Minecraft's vanilla save system.
+ *
+ * @author James Seibel
+ * @version 2022-7-11
+ */
+public interface IDhApiWorldGeneration
+{
+
+ /**
+ * Defines whether fake chunks will be generated
+ * outside Minecraft's vanilla render distance.
+ */
+ IDhApiConfig getEnableDistantWorldGenerationConfig();
+
+ /** Defines to what level fake chunks will be generated. */
+ IDhApiConfig getDistantGeneratorDetailLevelConfig();
+
+ /** Defines how generated fake chunks will be lit. */
+ IDhApiConfig getLightingModeConfig();
+
+ /** Defines the order in which fake chunks will be generated. */
+ IDhApiConfig getGenerationPriorityConfig();
+
+ /**
+ * Defines what blocks will be ignored when generating LODs.
+ *
+ * TODO if this isn't deprecated before 1.7 it should probably be moved to the graphics tab
+ * @deprecated this method won't be needed once we transition to an ID based save system
+ * (vs the color based system we have currently)
+ */
+ @Deprecated
+ IDhApiConfig getBlocksToAvoidConfig();
+
+ /**
+ * Defines if the color of avoided blocks will color the block below them.
+ * (IE: if flowers are avoided should they color the grass below them?)
+ *
+ * TODO if this isn't deprecated before 1.7 it should probably be moved to the graphics tab
+ * @deprecated this method won't be needed once we transition to an ID based save system
+ * (vs the color based system we have currently)
+ */
+ @Deprecated
+ IDhApiConfig getTintWithAvoidedBlocksConfig();
+
+
+}
diff --git a/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiBuffers.java b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiBuffers.java
new file mode 100644
index 000000000..d3bdcfb2c
--- /dev/null
+++ b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiBuffers.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the Distant Horizons mod (formerly the LOD Mod),
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020-2022 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.lod.api.items.interfaces.config.client;
+
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
+
+/**
+ * Distant Horizons' OpenGL buffer configuration.
+ *
+ * @author James Seibel
+ * @version 2022-7-5
+ */
+public interface IDhApiBuffers
+{
+
+ /** Defines how geometry data is uploaded to the GPU. */
+ IDhApiConfig getGpuUploadMethodConfig();
+
+ /**
+ * Defines how long we should wait after uploading one
+ * Megabyte of geometry data to the GPU before uploading
+ * the next Megabyte of data.
+ * This can be set to a non-zero number to reduce stuttering caused by
+ * uploading buffers to the GPU.
+ */
+ IDhApiConfig getBufferUploadTimeoutPerMegabyteInMillisecondsConfig();
+
+}
diff --git a/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiDebugging.java b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiDebugging.java
new file mode 100644
index 000000000..db21aaa4d
--- /dev/null
+++ b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiDebugging.java
@@ -0,0 +1,40 @@
+/*
+ * This file is part of the Distant Horizons mod (formerly the LOD Mod),
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020-2022 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.lod.api.items.interfaces.config.client;
+
+import com.seibel.lod.api.items.enums.rendering.EDebugMode;
+import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
+
+/**
+ * Distant Horizons' debug configuration.
+ *
+ * @author James Seibel
+ * @version 2022-7-5
+ */
+public interface IDhApiDebugging
+{
+ /** Can be used to debug the standard fake chunk rendering. */
+ IDhApiConfig getDebugRenderModeConfig();
+
+ /** If enabled debug keybindings can be used. */
+ IDhApiConfig getEnableDebugKeybindingsConfig();
+
+
+}
diff --git a/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiGraphics.java b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiGraphics.java
new file mode 100644
index 000000000..a86153652
--- /dev/null
+++ b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiGraphics.java
@@ -0,0 +1,137 @@
+/*
+ * This file is part of the Distant Horizons mod (formerly the LOD Mod),
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020-2022 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.lod.api.items.interfaces.config.client;
+
+import com.seibel.lod.api.items.enums.config.*;
+import com.seibel.lod.api.items.enums.rendering.ERendererMode;
+import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
+
+/**
+ * Distant Horizons' graphics/rendering configuration.
+ *
+ * @author James Seibel
+ * @version 2022-7-11
+ */
+public interface IDhApiGraphics
+{
+
+ //========================//
+ // basic graphic settings //
+ //========================//
+
+ /** The distance is the radius measured in chunks. */
+ IDhApiConfig getChunkRenderDistanceConfig();
+
+ /**
+ * Simplified version of {@link IDhApiGraphics#getRenderingModeConfig()}
+ * that only enables/disables the fake chunk rendering.
+ *
+ * Changing this config also changes {@link IDhApiGraphics#getRenderingModeConfig()}'s value.
+ */
+ IDhApiConfig getRenderingEnabledConfig();
+
+ /**
+ * Can be used to enable/disable fake chunk rendering or enable the debug renderer.
+ *
+ * The debug renderer is used to confirm rendering is working at and will draw
+ * a single multicolor rhombus on the screen in skybox space (AKA behind MC's rendering).
+ *
+ * Changing this config also changes {@link IDhApiGraphics#getRenderingEnabledConfig()}'s value.
+ */
+ IDhApiConfig getRenderingModeConfig();
+
+
+
+ //==================//
+ // graphic settings //
+ //==================//
+
+ /** Defines how detailed fake chunks are in the horizontal direction */
+ IDhApiConfig getMaxDetailLevelConfig();
+
+ /** Defines how detailed fake chunks are in the vertical direction */
+ IDhApiConfig getVerticalQualityConfig();
+
+ /** Modifies the quadratic function fake chunks use for horizontal quality drop-off. */
+ IDhApiConfig getHorizontalQualityDropoffConfig();
+
+ /**
+ * The same as vanilla Minecraft's biome blending.
+ *
+ * 0 = blending of 1x1 aka off
+ * 1 = blending of 3x3
+ * 2 = blending of 5x5
+ * ...
+ */
+ IDhApiConfig getBiomeBlendingConfig();
+
+
+
+ //===========================//
+ // advanced graphic settings //
+ //===========================//
+
+ /** If directional culling is disabled fake chunks will be rendered behind the camera. */
+ IDhApiConfig getDisableDirectionalCullingConfig();
+
+ /** Determines how fake chunks are rendered in comparison to vanilla MC's chunks. */
+ IDhApiConfig getVanillaOverdrawConfig();
+
+ /** Modifies how far the vanilla overdraw is rendered in chunks. */
+ IDhApiConfig getVanillaOverdrawOffsetConfig();
+
+ /**
+ * If enabled the near clip plane is extended to reduce
+ * overdraw and improve Z-fighting at extreme render distances.
+ * Disabling this reduces holes in the world due to the near clip plane
+ * being too close to the camera and the terrain not being covered by vanilla terrain.
+ */
+ IDhApiConfig getUseExtendedNearClipPlaneConfig();
+
+ /**
+ * Modifies how bright fake chunks are.
+ * This is done when generating the vertex data and is applied before any shaders.
+ */
+ IDhApiConfig getBrightnessMultiplierConfig();
+
+ /**
+ * Modifies how saturated fake chunks are.
+ * This is done when generating the vertex data and is applied before any shaders.
+ */
+ IDhApiConfig getSaturationMultiplierConfig();
+
+ /** Defines if Distant Horizons should attempt to cull fake chunk cave geometry. */
+ IDhApiConfig getCaveCullingEnabledConfig();
+
+ /** Defines what height cave culling should be used below if enabled. */
+ IDhApiConfig getCaveCullingHeightConfig();
+
+ /** This ratio is relative to Earth's real world curvature. */
+ IDhApiConfig getEarthCurvatureRatioConfig();
+
+ /** If enabled vanilla chunk rendering is disabled and only fake chunks are rendered. */
+ IDhApiConfig getEnableLodOnlyModeConfig();
+
+ /** Defines how often the geometry should be rebuilt when the player moves. */
+ IDhApiConfig getGeometryRebuildFrequencyConfig();
+
+
+
+}
diff --git a/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiGraphicsFog.java b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiGraphicsFog.java
new file mode 100644
index 000000000..e0eb9d909
--- /dev/null
+++ b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiGraphicsFog.java
@@ -0,0 +1,130 @@
+/*
+ * This file is part of the Distant Horizons mod (formerly the LOD Mod),
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020-2022 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.lod.api.items.interfaces.config.client;
+
+import com.seibel.lod.api.items.enums.rendering.*;
+import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
+
+/**
+ * Distant Horizons' fog configuration.
+ *
+ * Note: unless an option explicitly states that it modifies
+ * Minecraft's vanilla rendering (like DisableVanillaFog)
+ * these settings will only affect Distant horizons' fog.
+ *
+ * @author James Seibel
+ * @version 2022-7-11
+ */
+public interface IDhApiGraphicsFog
+{
+
+ //====================//
+ // basic fog settings //
+ //====================//
+
+ /** Defines at what distance fog is rendered on fake chunks. */
+ IDhApiConfig getFogDistanceConfig();
+
+ /** Should be used to enable/disable fog rendering. */
+ IDhApiConfig getFogRenderConfig();
+
+ /** Can be used to enable support with mods that change vanilla MC's fog color. */
+ IDhApiConfig getFogColorConfig();
+
+ /**
+ * If enabled attempts to disable vanilla MC's fog on real chunks.
+ * May not play nice with other fog editing mods.
+ */
+ IDhApiConfig getDisableVanillaFogConfig();
+
+
+ //=======================//
+ // advanced fog settings //
+ //=======================//
+
+ /**
+ * Defines where the fog starts as a percent of the
+ * fake chunks render distance radius.
+ * Can be greater than the fog end distance to invert the fog direction.
+ *
+ * 0.0 = fog starts at the camera
+ * 1.0 = fog starts at the edge of the fake chunk render distance
+ */
+ IDhApiConfig getFogStartDistanceConfig();
+
+ /**
+ * Defines where the fog ends as a percent of the radius
+ * of the fake chunks render distance.
+ * Can be less than the fog start distance to invert the fog direction.
+ *
+ * 0.0 = fog ends at the camera
+ * 1.0 = fog ends at the edge of the fake chunk render distance
+ */
+ IDhApiConfig getFogEndDistanceConfig();
+
+ /** Defines how opaque the fog is at its thinnest point. */
+ IDhApiConfig getFogMinThicknessConfig();
+
+ /** Defines how opaque the fog is at its thickest point. */
+ IDhApiConfig getFogMaxThicknessConfig();
+
+ /** Defines how the fog changes in thickness. */
+ IDhApiConfig getFogFalloffConfig();
+
+ /** Defines the fog density. */
+ IDhApiConfig getFogDensityConfig();
+
+
+ //=====================//
+ // height fog settings //
+ //=====================//
+
+ /** Defines how the height fog mixes. */
+ IDhApiConfig getHeightFogMixModeConfig();
+
+ /** Defines how the height fog is drawn relative to the camera or world. */
+ IDhApiConfig getHeightFogModeConfig();
+
+ /**
+ * Defines the height fog's base height if {@link IDhApiGraphicsFog#getHeightFogModeConfig()}
+ * is set to use a specific height.
+ */
+ IDhApiConfig getHeightFogBaseHeightConfig();
+
+ /** Defines the height fog's starting height as a percent of the world height. */
+ IDhApiConfig getHeightFogStartingHeightPercentConfig();
+
+ /** Defines the height fog's ending height as a percent of the world height. */
+ IDhApiConfig getHeightFogEndingHeightPercentConfig();
+
+ /** Defines how opaque the height fog is at its thinnest point. */
+ IDhApiConfig getHeightFogMinThicknessConfig();
+
+ /** Defines how opaque the height fog is at its thickest point. */
+ IDhApiConfig getHeightFogMaxThicknessConfig();
+
+ /** Defines how the height fog changes in thickness. */
+ IDhApiConfig getHeightFogFalloffConfig();
+
+ /** Defines the height fog's density. */
+ IDhApiConfig getHeightFogDensityConfig();
+
+
+}
diff --git a/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiMultiplayer.java b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiMultiplayer.java
new file mode 100644
index 000000000..208df14af
--- /dev/null
+++ b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiMultiplayer.java
@@ -0,0 +1,52 @@
+/*
+ * This file is part of the Distant Horizons mod (formerly the LOD Mod),
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020-2022 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.lod.api.items.interfaces.config.client;
+
+import com.seibel.lod.api.items.enums.config.EServerFolderNameMode;
+import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
+
+/**
+ * Distant Horizons' client-side multiplayer configuration.
+ *
+ * @author James Seibel
+ * @version 2022-7-5
+ */
+public interface IDhApiMultiplayer
+{
+
+ /**
+ * Defines how multiplayer server folders are named.
+ * Note: Changing this while connected to a multiplayer world will cause undefined behavior!
+ */
+ IDhApiConfig getFolderSavingModeConfig();
+
+ /**
+ * Defines the necessary similarity (as a percent) that two potential levels
+ * need in order to be considered the same.
+ *
+ * Setting this to zero causes every level of a specific dimension type to be consider
+ * the same level.
+ * Setting this to a non-zero value allows for usage in servers that user Multiverse
+ * or similar mods.
+ */
+ IDhApiConfig getMultiverseSimilarityRequirementConfig();
+
+
+}
diff --git a/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiThreading.java b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiThreading.java
new file mode 100644
index 000000000..de13b2a99
--- /dev/null
+++ b/api/src/main/java/com/seibel/lod/api/items/interfaces/config/client/IDhApiThreading.java
@@ -0,0 +1,63 @@
+/*
+ * This file is part of the Distant Horizons mod (formerly the LOD Mod),
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020-2022 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.lod.api.items.interfaces.config.client;
+
+import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
+
+/**
+ * Distant Horizons' threading configuration.
+ *
+ * @author James Seibel
+ * @version 2022-7-5
+ */
+public interface IDhApiThreading
+{
+
+ /**
+ * Defines how many world generator threads are used to generate
+ * terrain outside Minecraf's vanilla render distance.
+ *
+ * If the number of threads is less than 1 it will be treated as a percentage
+ * representing how often the single thread will actively generate terrain.
+ *
+ * 0.1 = 1 thread active 10% 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
+ *
+ * @deprecated this (and the related config) should be replaced with an int
+ * count of threads and then a double percent active config.
+ */
+ @Deprecated
+ IDhApiConfig getWorldGeneratorThreadConfig();
+
+ // TODO the above should be replaced with these
+// IDhApiConfig getWorldGeneratorThreadConfig()
+// { return new DhApiConfig<>(Threading.numberOfWorldGenerationThreads); }
+
+// IDhApiConfig getWorldGeneratorThreadActivePercentConfig()
+// { return new DhApiConfig<>(Threading.ToBeDetermined); }
+
+
+ /** Defines how many buffer (GPU Terrain data) builder threads are used. */
+ IDhApiConfig getBufferBuilderThreadConfig();
+
+}
diff --git a/api/src/main/java/com/seibel/lod/api/methods/config/DhApiConfig.java b/api/src/main/java/com/seibel/lod/api/items/objects/config/DhApiConfig.java
similarity index 98%
rename from api/src/main/java/com/seibel/lod/api/methods/config/DhApiConfig.java
rename to api/src/main/java/com/seibel/lod/api/items/objects/config/DhApiConfig.java
index 6cdc6ab93..8e3e61036 100644
--- a/api/src/main/java/com/seibel/lod/api/methods/config/DhApiConfig.java
+++ b/api/src/main/java/com/seibel/lod/api/items/objects/config/DhApiConfig.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.api.methods.config;
+package com.seibel.lod.api.items.objects.config;
import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
import com.seibel.lod.core.interfaces.config.IConfigEntry;
diff --git a/core/src/main/java/com/seibel/lod/core/IReflectionHandler.java b/core/src/main/java/com/seibel/lod/core/IReflectionHandler.java
index 3b5306789..01008bcfd 100644
--- a/core/src/main/java/com/seibel/lod/core/IReflectionHandler.java
+++ b/core/src/main/java/com/seibel/lod/core/IReflectionHandler.java
@@ -19,7 +19,7 @@
package com.seibel.lod.core;
-import com.seibel.lod.core.enums.rendering.EFogDrawMode;
+import com.seibel.lod.api.items.enums.rendering.EFogDrawMode;
import com.seibel.lod.core.dependencyInjection.IBindable;
/**
diff --git a/core/src/main/java/com/seibel/lod/core/ReflectionHandler.java b/core/src/main/java/com/seibel/lod/core/ReflectionHandler.java
index 0b890d86d..362e44e44 100644
--- a/core/src/main/java/com/seibel/lod/core/ReflectionHandler.java
+++ b/core/src/main/java/com/seibel/lod/core/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.EFogDrawMode;
+import com.seibel.lod.api.items.enums.rendering.EFogDrawMode;
/**
* A singleton used to get variables from methods
diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/both/DhApiWorldGeneration.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/both/DhApiWorldGeneration.java
index 49a9123e2..89eeafc32 100644
--- a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/both/DhApiWorldGeneration.java
+++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/both/DhApiWorldGeneration.java
@@ -20,12 +20,13 @@
package com.seibel.lod.core.api.external.coreImplementations.methods.config.both;
import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
-import com.seibel.lod.api.methods.config.DhApiConfig;
+import com.seibel.lod.api.items.interfaces.config.both.IDhApiWorldGeneration;
+import com.seibel.lod.api.items.objects.config.DhApiConfig;
import com.seibel.lod.core.config.Config.Client.WorldGenerator;
-import com.seibel.lod.core.enums.config.EBlocksToAvoid;
-import com.seibel.lod.core.enums.config.EDistanceGenerationMode;
-import com.seibel.lod.core.enums.config.EGenerationPriority;
-import com.seibel.lod.core.enums.config.ELightGenerationMode;
+import com.seibel.lod.api.items.enums.config.EBlocksToAvoid;
+import com.seibel.lod.api.items.enums.config.EDistanceGenerationMode;
+import com.seibel.lod.api.items.enums.config.EGenerationPriority;
+import com.seibel.lod.api.items.enums.config.ELightGenerationMode;
/**
* Distant Horizons' world generation configuration.
@@ -35,26 +36,30 @@ import com.seibel.lod.core.enums.config.ELightGenerationMode;
* @author James Seibel
* @version 2022-7-11
*/
-public class DhApiWorldGeneration
+public class DhApiWorldGeneration implements IDhApiWorldGeneration
{
/**
* Defines whether fake chunks will be generated
* outside Minecraft's vanilla render distance.
*/
- public static IDhApiConfig getEnableDistantWorldGenerationConfig()
+ @Override
+ public IDhApiConfig getEnableDistantWorldGenerationConfig()
{ return new DhApiConfig<>(WorldGenerator.enableDistantGeneration); }
/** Defines to what level fake chunks will be generated. */
- public static IDhApiConfig getDistantGeneratorDetailLevelConfig()
+ @Override
+ public IDhApiConfig getDistantGeneratorDetailLevelConfig()
{ return new DhApiConfig<>(WorldGenerator.distanceGenerationMode); }
/** Defines how generated fake chunks will be lit. */
- public static IDhApiConfig getLightingModeConfig()
+ @Override
+ public IDhApiConfig getLightingModeConfig()
{ return new DhApiConfig<>(WorldGenerator.lightGenerationMode); }
/** Defines the order in which fake chunks will be generated. */
- public static IDhApiConfig getGenerationPriorityConfig()
+ @Override
+ public IDhApiConfig getGenerationPriorityConfig()
{ return new DhApiConfig<>(WorldGenerator.generationPriority); }
/**
@@ -65,7 +70,8 @@ public class DhApiWorldGeneration
* (vs the color based system we have currently)
*/
@Deprecated
- public static IDhApiConfig getBlocksToAvoidConfig()
+ @Override
+ public IDhApiConfig getBlocksToAvoidConfig()
{ return new DhApiConfig<>(WorldGenerator.blocksToAvoid); }
/**
@@ -77,7 +83,8 @@ public class DhApiWorldGeneration
* (vs the color based system we have currently)
*/
@Deprecated
- public static IDhApiConfig getTintWithAvoidedBlocksConfig()
+ @Override
+ public IDhApiConfig getTintWithAvoidedBlocksConfig()
{ return new DhApiConfig<>(WorldGenerator.tintWithAvoidedBlocks); }
diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiBuffers.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiBuffers.java
index f5e4402bc..7d5180cfc 100644
--- a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiBuffers.java
+++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiBuffers.java
@@ -20,9 +20,9 @@
package com.seibel.lod.core.api.external.coreImplementations.methods.config.client;
import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
-import com.seibel.lod.api.methods.config.DhApiConfig;
+import com.seibel.lod.api.items.objects.config.DhApiConfig;
import com.seibel.lod.core.config.Config.Client.Advanced.Buffers;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
/**
* Distant Horizons' OpenGL buffer configuration.
diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiDebugging.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiDebugging.java
index 402ff1ff9..eeda8a50c 100644
--- a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiDebugging.java
+++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiDebugging.java
@@ -20,9 +20,9 @@
package com.seibel.lod.core.api.external.coreImplementations.methods.config.client;
import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
-import com.seibel.lod.api.methods.config.DhApiConfig;
+import com.seibel.lod.api.items.objects.config.DhApiConfig;
import com.seibel.lod.core.config.Config.Client.Advanced.Debugging;
-import com.seibel.lod.core.enums.rendering.EDebugMode;
+import com.seibel.lod.api.items.enums.rendering.EDebugMode;
/**
* Distant Horizons' debug configuration.
diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiGraphics.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiGraphics.java
index 70b032ee4..3ce63f986 100644
--- a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiGraphics.java
+++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiGraphics.java
@@ -19,11 +19,11 @@
package com.seibel.lod.core.api.external.coreImplementations.methods.config.client;
+import com.seibel.lod.api.items.enums.config.*;
import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
-import com.seibel.lod.api.methods.config.DhApiConfig;
+import com.seibel.lod.api.items.objects.config.DhApiConfig;
import com.seibel.lod.core.interfaces.config.converters.RenderModeEnabledConverter;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.config.*;
import com.seibel.lod.api.items.enums.rendering.ERendererMode;
import com.seibel.lod.core.config.Config.Client.Graphics.Quality;
import com.seibel.lod.core.config.Config.Client.Advanced.Debugging;
diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiGraphicsFog.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiGraphicsFog.java
index 713f906ff..7fc974e4f 100644
--- a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiGraphicsFog.java
+++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiGraphicsFog.java
@@ -19,9 +19,9 @@
package com.seibel.lod.core.api.external.coreImplementations.methods.config.client;
+import com.seibel.lod.api.items.enums.rendering.*;
import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
-import com.seibel.lod.api.methods.config.DhApiConfig;
-import com.seibel.lod.core.enums.rendering.*;
+import com.seibel.lod.api.items.objects.config.DhApiConfig;
import com.seibel.lod.core.config.Config.Client.Graphics.FogQuality;
/**
diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiMultiplayer.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiMultiplayer.java
index 9f17721da..1d0109f85 100644
--- a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiMultiplayer.java
+++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiMultiplayer.java
@@ -20,9 +20,9 @@
package com.seibel.lod.core.api.external.coreImplementations.methods.config.client;
import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
-import com.seibel.lod.api.methods.config.DhApiConfig;
+import com.seibel.lod.api.items.objects.config.DhApiConfig;
import com.seibel.lod.core.config.Config.Client.Multiplayer;
-import com.seibel.lod.core.enums.config.EServerFolderNameMode;
+import com.seibel.lod.api.items.enums.config.EServerFolderNameMode;
/**
* Distant Horizons' client-side multiplayer configuration.
diff --git a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiThreading.java b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiThreading.java
index 190cd6d9e..e79b3e8db 100644
--- a/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiThreading.java
+++ b/core/src/main/java/com/seibel/lod/core/api/external/coreImplementations/methods/config/client/DhApiThreading.java
@@ -20,7 +20,7 @@
package com.seibel.lod.core.api.external.coreImplementations.methods.config.client;
import com.seibel.lod.api.items.interfaces.config.IDhApiConfig;
-import com.seibel.lod.api.methods.config.DhApiConfig;
+import com.seibel.lod.api.items.objects.config.DhApiConfig;
import com.seibel.lod.core.config.Config.Client.Advanced.Threading;
/**
diff --git a/core/src/main/java/com/seibel/lod/core/api/internal/ClientApi.java b/core/src/main/java/com/seibel/lod/core/api/internal/ClientApi.java
index b656c41ac..290a17a24 100644
--- a/core/src/main/java/com/seibel/lod/core/api/internal/ClientApi.java
+++ b/core/src/main/java/com/seibel/lod/core/api/internal/ClientApi.java
@@ -19,14 +19,12 @@
package com.seibel.lod.core.api.internal;
-import com.seibel.lod.api.methods.events.abstractEvents.*;
import com.seibel.lod.api.methods.events.sharedParameterObjects.DhApiRenderParam;
import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.ModInfo;
-import com.seibel.lod.core.enums.rendering.EDebugMode;
+import com.seibel.lod.api.items.enums.rendering.EDebugMode;
import com.seibel.lod.api.items.enums.rendering.ERendererMode;
-import com.seibel.lod.core.dependencyInjection.DhApiEventInjector;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.logging.ConfigBasedLogger;
import com.seibel.lod.core.logging.ConfigBasedSpamLogger;
diff --git a/core/src/main/java/com/seibel/lod/core/config/Config.java b/core/src/main/java/com/seibel/lod/core/config/Config.java
index 074c9b79a..462d07325 100644
--- a/core/src/main/java/com/seibel/lod/core/config/Config.java
+++ b/core/src/main/java/com/seibel/lod/core/config/Config.java
@@ -20,15 +20,10 @@
package com.seibel.lod.core.config;
-import com.seibel.lod.core.enums.rendering.EFogDrawMode;
-import com.seibel.lod.core.enums.rendering.EFogColorMode;
-import com.seibel.lod.core.enums.rendering.EFogDistance;
-import com.seibel.lod.api.items.enums.rendering.ERendererMode;
+import com.seibel.lod.api.items.enums.config.*;
+import com.seibel.lod.api.items.enums.rendering.*;
import com.seibel.lod.core.config.types.*;
-import com.seibel.lod.core.enums.config.*;
-import com.seibel.lod.core.enums.rendering.*;
-
/**
* This handles any configuration the user has access to.
diff --git a/core/src/main/java/com/seibel/lod/core/config/gui/ConfigScreen.java b/core/src/main/java/com/seibel/lod/core/config/gui/ConfigScreen.java
index ec7aa645b..ce317449e 100644
--- a/core/src/main/java/com/seibel/lod/core/config/gui/ConfigScreen.java
+++ b/core/src/main/java/com/seibel/lod/core/config/gui/ConfigScreen.java
@@ -1,6 +1,6 @@
package com.seibel.lod.core.config.gui;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
import com.seibel.lod.core.render.glObject.GLProxy;
import com.seibel.lod.core.render.glObject.GLState;
import com.seibel.lod.core.render.glObject.buffer.GLVertexBuffer;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/column/render/ColumnRenderBuffer.java b/core/src/main/java/com/seibel/lod/core/datatype/column/render/ColumnRenderBuffer.java
index c73406962..9828751bd 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/column/render/ColumnRenderBuffer.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/column/render/ColumnRenderBuffer.java
@@ -9,9 +9,9 @@ import com.seibel.lod.core.util.objects.UncheckedInterruptedException;
import com.seibel.lod.core.render.RenderBuffer;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.enums.ELodDirection;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
-import com.seibel.lod.core.enums.rendering.EDebugMode;
-import com.seibel.lod.core.enums.rendering.EGLProxyContext;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.rendering.EDebugMode;
+import com.seibel.lod.api.items.enums.rendering.EGLProxyContext;
import com.seibel.lod.core.logging.ConfigBasedLogger;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.pos.DhBlockPos;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/column/render/CubicLodTemplate.java b/core/src/main/java/com/seibel/lod/core/datatype/column/render/CubicLodTemplate.java
index 35a61056e..062b2bbe2 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/column/render/CubicLodTemplate.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/column/render/CubicLodTemplate.java
@@ -20,7 +20,7 @@
package com.seibel.lod.core.datatype.column.render;
import com.seibel.lod.core.datatype.column.accessor.ColumnFormat;
-import com.seibel.lod.core.enums.rendering.EDebugMode;
+import com.seibel.lod.api.items.enums.rendering.EDebugMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.datatype.column.accessor.ColumnArrayView;
import com.seibel.lod.core.util.ColorUtil;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/column/render/LodQuadBuilder.java b/core/src/main/java/com/seibel/lod/core/datatype/column/render/LodQuadBuilder.java
index 8cf243741..49fcf25de 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/column/render/LodQuadBuilder.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/column/render/LodQuadBuilder.java
@@ -28,11 +28,10 @@ import java.util.ListIterator;
import com.seibel.lod.core.render.RenderBuffer;
import com.seibel.lod.core.enums.ELodDirection;
import com.seibel.lod.core.enums.ELodDirection.Axis;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.render.glObject.buffer.GLVertexBuffer;
import com.seibel.lod.core.util.ColorUtil;
-import com.seibel.lod.core.util.LodUtil;
import com.seibel.lod.core.util.MathUtil;
import org.apache.logging.log4j.Logger;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/transform/LodBuilderConfig.java b/core/src/main/java/com/seibel/lod/core/datatype/transform/LodBuilderConfig.java
index 1f8aee8bd..471ffe0fd 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/transform/LodBuilderConfig.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/transform/LodBuilderConfig.java
@@ -19,7 +19,7 @@
package com.seibel.lod.core.datatype.transform;
-import com.seibel.lod.core.enums.config.EDistanceGenerationMode;
+import com.seibel.lod.api.items.enums.config.EDistanceGenerationMode;
/**
* This is used to easily configure how LodChunks are generated.
diff --git a/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java b/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java
index a5b3959ac..c0e1fb1f6 100644
--- a/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java
+++ b/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java
@@ -2,7 +2,7 @@ package com.seibel.lod.core.file.structure;
import com.seibel.lod.core.file.LevelToFileMatcher;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.config.EServerFolderNameMode;
+import com.seibel.lod.api.items.enums.config.EServerFolderNameMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.util.objects.ParsedIp;
import com.seibel.lod.core.util.LodUtil;
diff --git a/core/src/main/java/com/seibel/lod/core/generation/BatchGenerator.java b/core/src/main/java/com/seibel/lod/core/generation/BatchGenerator.java
index f9f6bccb9..7c84f712a 100644
--- a/core/src/main/java/com/seibel/lod/core/generation/BatchGenerator.java
+++ b/core/src/main/java/com/seibel/lod/core/generation/BatchGenerator.java
@@ -21,7 +21,7 @@ package com.seibel.lod.core.generation;
import com.seibel.lod.core.level.ILevel;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.config.EDistanceGenerationMode;
+import com.seibel.lod.api.items.enums.config.EDistanceGenerationMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.pos.DhChunkPos;
diff --git a/core/src/main/java/com/seibel/lod/core/logging/ConfigBasedLogger.java b/core/src/main/java/com/seibel/lod/core/logging/ConfigBasedLogger.java
index 54fb5e69f..8e5503667 100644
--- a/core/src/main/java/com/seibel/lod/core/logging/ConfigBasedLogger.java
+++ b/core/src/main/java/com/seibel/lod/core/logging/ConfigBasedLogger.java
@@ -19,7 +19,7 @@
package com.seibel.lod.core.logging;
-import com.seibel.lod.core.enums.config.ELoggerMode;
+import com.seibel.lod.api.items.enums.config.ELoggerMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import org.apache.logging.log4j.Level;
diff --git a/core/src/main/java/com/seibel/lod/core/logging/ConfigBasedSpamLogger.java b/core/src/main/java/com/seibel/lod/core/logging/ConfigBasedSpamLogger.java
index d523ff93e..5fa9da5a7 100644
--- a/core/src/main/java/com/seibel/lod/core/logging/ConfigBasedSpamLogger.java
+++ b/core/src/main/java/com/seibel/lod/core/logging/ConfigBasedSpamLogger.java
@@ -19,7 +19,7 @@
package com.seibel.lod.core.logging;
-import com.seibel.lod.core.enums.config.ELoggerMode;
+import com.seibel.lod.api.items.enums.config.ELoggerMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import org.apache.logging.log4j.Level;
diff --git a/core/src/main/java/com/seibel/lod/core/render/fog/FogSettings.java b/core/src/main/java/com/seibel/lod/core/render/fog/FogSettings.java
index 2964dbcb3..8b2e48ba5 100644
--- a/core/src/main/java/com/seibel/lod/core/render/fog/FogSettings.java
+++ b/core/src/main/java/com/seibel/lod/core/render/fog/FogSettings.java
@@ -19,7 +19,7 @@
package com.seibel.lod.core.render.fog;
-import com.seibel.lod.core.enums.rendering.EFogFalloff;
+import com.seibel.lod.api.items.enums.rendering.EFogFalloff;
import java.util.Objects;
diff --git a/core/src/main/java/com/seibel/lod/core/render/fog/LodFogConfig.java b/core/src/main/java/com/seibel/lod/core/render/fog/LodFogConfig.java
index a728cb7d6..1c44d66b3 100644
--- a/core/src/main/java/com/seibel/lod/core/render/fog/LodFogConfig.java
+++ b/core/src/main/java/com/seibel/lod/core/render/fog/LodFogConfig.java
@@ -19,10 +19,8 @@
package com.seibel.lod.core.render.fog;
+import com.seibel.lod.api.items.enums.rendering.*;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.rendering.EFogDrawMode;
-import com.seibel.lod.core.enums.rendering.EFogDistance;
-import com.seibel.lod.core.enums.rendering.*;
import com.seibel.lod.core.IReflectionHandler;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.render.glObject.shader.Shader;
diff --git a/core/src/main/java/com/seibel/lod/core/render/glObject/GLProxy.java b/core/src/main/java/com/seibel/lod/core/render/glObject/GLProxy.java
index 52b5c2b19..cebe326dc 100644
--- a/core/src/main/java/com/seibel/lod/core/render/glObject/GLProxy.java
+++ b/core/src/main/java/com/seibel/lod/core/render/glObject/GLProxy.java
@@ -40,8 +40,8 @@ import org.lwjgl.opengl.GLUtil;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.seibel.lod.core.ModInfo;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
-import com.seibel.lod.core.enums.rendering.EGLProxyContext;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.rendering.EGLProxyContext;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.util.objects.GLMessage;
import com.seibel.lod.core.util.objects.GLMessageOutputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/GLBuffer.java b/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/GLBuffer.java
index 8e2a32657..0d45c4b84 100644
--- a/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/GLBuffer.java
+++ b/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/GLBuffer.java
@@ -1,7 +1,7 @@
package com.seibel.lod.core.render.glObject.buffer;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
-import com.seibel.lod.core.enums.rendering.EGLProxyContext;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.rendering.EGLProxyContext;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.render.glObject.GLProxy;
import com.seibel.lod.core.util.LodUtil;
diff --git a/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/GLVertexBuffer.java b/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/GLVertexBuffer.java
index bea05f5d4..ee594d470 100644
--- a/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/GLVertexBuffer.java
+++ b/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/GLVertexBuffer.java
@@ -23,7 +23,7 @@ import java.nio.ByteBuffer;
import org.lwjgl.opengl.GL32;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
/**
* This is a container for a OpenGL
diff --git a/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/QuadElementBuffer.java b/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/QuadElementBuffer.java
index a6a1944fc..9c25484bb 100644
--- a/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/QuadElementBuffer.java
+++ b/core/src/main/java/com/seibel/lod/core/render/glObject/buffer/QuadElementBuffer.java
@@ -1,6 +1,6 @@
package com.seibel.lod.core.render.glObject.buffer;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.render.glObject.GLProxy;
import com.seibel.lod.core.render.glObject.GLEnums;
diff --git a/core/src/main/java/com/seibel/lod/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/lod/core/render/renderer/LodRenderer.java
index 575c18c57..45a5675bf 100644
--- a/core/src/main/java/com/seibel/lod/core/render/renderer/LodRenderer.java
+++ b/core/src/main/java/com/seibel/lod/core/render/renderer/LodRenderer.java
@@ -22,8 +22,8 @@ package com.seibel.lod.core.render.renderer;
import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.config.types.ConfigEntry;
-import com.seibel.lod.core.enums.rendering.EDebugMode;
-import com.seibel.lod.core.enums.rendering.EFogColorMode;
+import com.seibel.lod.api.items.enums.rendering.EDebugMode;
+import com.seibel.lod.api.items.enums.rendering.EFogColorMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.logging.ConfigBasedLogger;
import com.seibel.lod.core.logging.ConfigBasedSpamLogger;
diff --git a/core/src/main/java/com/seibel/lod/core/render/renderer/TestRenderer.java b/core/src/main/java/com/seibel/lod/core/render/renderer/TestRenderer.java
index 18e39c1de..eb1f9e3d9 100644
--- a/core/src/main/java/com/seibel/lod/core/render/renderer/TestRenderer.java
+++ b/core/src/main/java/com/seibel/lod/core/render/renderer/TestRenderer.java
@@ -19,8 +19,8 @@
package com.seibel.lod.core.render.renderer;
-import com.seibel.lod.core.enums.config.EGpuUploadMethod;
-import com.seibel.lod.core.enums.config.ELoggerMode;
+import com.seibel.lod.api.items.enums.config.EGpuUploadMethod;
+import com.seibel.lod.api.items.enums.config.ELoggerMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.logging.ConfigBasedLogger;
diff --git a/core/src/main/java/com/seibel/lod/core/util/DetailDistanceUtil.java b/core/src/main/java/com/seibel/lod/core/util/DetailDistanceUtil.java
index 9634c74f0..576b110cb 100644
--- a/core/src/main/java/com/seibel/lod/core/util/DetailDistanceUtil.java
+++ b/core/src/main/java/com/seibel/lod/core/util/DetailDistanceUtil.java
@@ -20,7 +20,7 @@
package com.seibel.lod.core.util;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.config.EHorizontalQuality;
+import com.seibel.lod.api.items.enums.config.EHorizontalQuality;
/**
*
diff --git a/core/src/main/java/com/seibel/lod/core/util/LodUtil.java b/core/src/main/java/com/seibel/lod/core/util/LodUtil.java
index ced34873c..f1475268c 100644
--- a/core/src/main/java/com/seibel/lod/core/util/LodUtil.java
+++ b/core/src/main/java/com/seibel/lod/core/util/LodUtil.java
@@ -24,8 +24,8 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.config.EServerFolderNameMode;
-import com.seibel.lod.core.enums.config.EVanillaOverdraw;
+import com.seibel.lod.api.items.enums.config.EServerFolderNameMode;
+import com.seibel.lod.api.items.enums.config.EVanillaOverdraw;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.pos.DhChunkPos;
diff --git a/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/ILodConfigWrapperSingleton.java b/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/ILodConfigWrapperSingleton.java
index 8efd9ad95..366294be4 100644
--- a/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/ILodConfigWrapperSingleton.java
+++ b/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/ILodConfigWrapperSingleton.java
@@ -19,13 +19,9 @@
package com.seibel.lod.core.wrapperInterfaces.config;
+import com.seibel.lod.api.items.enums.config.*;
+import com.seibel.lod.api.items.enums.rendering.*;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.rendering.EFogDrawMode;
-import com.seibel.lod.core.enums.rendering.EFogColorMode;
-import com.seibel.lod.core.enums.rendering.EFogDistance;
-import com.seibel.lod.api.items.enums.rendering.ERendererMode;
-import com.seibel.lod.core.enums.config.*;
-import com.seibel.lod.core.enums.rendering.*;
import com.seibel.lod.core.dependencyInjection.IBindable;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.render.fog.FogSettings;
diff --git a/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/LodConfigWrapperSingleton.java b/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/LodConfigWrapperSingleton.java
index 94dab4b76..d139ff7cd 100644
--- a/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/LodConfigWrapperSingleton.java
+++ b/core/src/main/java/com/seibel/lod/core/wrapperInterfaces/config/LodConfigWrapperSingleton.java
@@ -1,12 +1,8 @@
package com.seibel.lod.core.wrapperInterfaces.config;
-import com.seibel.lod.core.enums.rendering.EFogDrawMode;
-import com.seibel.lod.core.enums.rendering.EFogColorMode;
-import com.seibel.lod.core.enums.rendering.EFogDistance;
-import com.seibel.lod.api.items.enums.rendering.ERendererMode;
+import com.seibel.lod.api.items.enums.config.*;
+import com.seibel.lod.api.items.enums.rendering.*;
import com.seibel.lod.core.config.Config;
-import com.seibel.lod.core.enums.config.*;
-import com.seibel.lod.core.enums.rendering.*;
/**
* Use config getters rather than this