diff --git a/src/main/java/com/seibel/lod/ModInfo.java b/src/main/java/com/seibel/lod/ModInfo.java
index 8418b46a8..b86b9789b 100644
--- a/src/main/java/com/seibel/lod/ModInfo.java
+++ b/src/main/java/com/seibel/lod/ModInfo.java
@@ -21,14 +21,21 @@ package com.seibel.lod;
/**
* This file is similar to mcmod.info
+ *
+ * If you are looking at this mod's source code and don't
+ * know where to start.
+ * Go to the api/lod package (folder) and take a look at the ClientApi.java file,
+ * Pretty much all of the mod stems from there.
+ *
* @author James Seibel
- * @version 10-23-2021
+ * @version 11-13-2021
*/
public final class ModInfo
{
public static final String ID = "lod";
+ /** The internal mod name */
public static final String NAME = "DistantHorizons";
- /** Human readable version of MOD_NAME */
+ /** Human readable version of NAME */
public static final String READABLE_NAME = "Distant Horizons";
public static final String API = "LodAPI";
public static final String VERSION = "a1.5.2";
diff --git a/src/main/java/com/seibel/lod/proxy/ClientProxy.java b/src/main/java/com/seibel/lod/api/forge/ClientProxy.java
similarity index 97%
rename from src/main/java/com/seibel/lod/proxy/ClientProxy.java
rename to src/main/java/com/seibel/lod/api/forge/ClientProxy.java
index ee0fb652c..ebe30f46c 100644
--- a/src/main/java/com/seibel/lod/proxy/ClientProxy.java
+++ b/src/main/java/com/seibel/lod/api/forge/ClientProxy.java
@@ -17,9 +17,9 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.proxy;
+package com.seibel.lod.api.forge;
-import com.seibel.lod.lodApi.EventApi;
+import com.seibel.lod.api.lod.EventApi;
import com.seibel.lod.wrappers.chunk.ChunkWrapper;
import com.seibel.lod.wrappers.world.DimensionTypeWrapper;
import com.seibel.lod.wrappers.world.WorldWrapper;
diff --git a/src/main/java/com/seibel/lod/LodForgeMain.java b/src/main/java/com/seibel/lod/api/forge/LodForgeMain.java
similarity index 97%
rename from src/main/java/com/seibel/lod/LodForgeMain.java
rename to src/main/java/com/seibel/lod/api/forge/LodForgeMain.java
index f288b0a26..d071ab949 100644
--- a/src/main/java/com/seibel/lod/LodForgeMain.java
+++ b/src/main/java/com/seibel/lod/api/forge/LodForgeMain.java
@@ -17,10 +17,10 @@
* along with this program. If not, see .
*/
-package com.seibel.lod;
+package com.seibel.lod.api.forge;
+import com.seibel.lod.ModInfo;
import com.seibel.lod.config.LodConfig;
-import com.seibel.lod.proxy.ClientProxy;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.SubscribeEvent;
diff --git a/src/main/java/com/seibel/lod/lodApi/ApiShared.java b/src/main/java/com/seibel/lod/api/lod/ApiShared.java
similarity index 98%
rename from src/main/java/com/seibel/lod/lodApi/ApiShared.java
rename to src/main/java/com/seibel/lod/api/lod/ApiShared.java
index 1e41ddb5b..6ce15b250 100644
--- a/src/main/java/com/seibel/lod/lodApi/ApiShared.java
+++ b/src/main/java/com/seibel/lod/api/lod/ApiShared.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.lodApi;
+package com.seibel.lod.api.lod;
import com.seibel.lod.builders.bufferBuilding.LodBufferBuilderFactory;
import com.seibel.lod.builders.lodBuilding.LodBuilder;
diff --git a/src/main/java/com/seibel/lod/lodApi/ClientApi.java b/src/main/java/com/seibel/lod/api/lod/ClientApi.java
similarity index 98%
rename from src/main/java/com/seibel/lod/lodApi/ClientApi.java
rename to src/main/java/com/seibel/lod/api/lod/ClientApi.java
index 2220df221..7a1dadfb3 100644
--- a/src/main/java/com/seibel/lod/lodApi/ClientApi.java
+++ b/src/main/java/com/seibel/lod/api/lod/ClientApi.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.lodApi;
+package com.seibel.lod.api.lod;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -26,7 +26,7 @@ import com.seibel.lod.builders.worldGeneration.LodGenWorker;
import com.seibel.lod.config.LodConfig;
import com.seibel.lod.objects.lod.LodDimension;
import com.seibel.lod.objects.math.Mat4f;
-import com.seibel.lod.proxy.GlProxy;
+import com.seibel.lod.render.GlProxy;
import com.seibel.lod.render.LodRenderer;
import com.seibel.lod.util.DetailDistanceUtil;
import com.seibel.lod.util.ThreadMapUtil;
diff --git a/src/main/java/com/seibel/lod/lodApi/EventApi.java b/src/main/java/com/seibel/lod/api/lod/EventApi.java
similarity index 99%
rename from src/main/java/com/seibel/lod/lodApi/EventApi.java
rename to src/main/java/com/seibel/lod/api/lod/EventApi.java
index b8d50d11e..a480eb2af 100644
--- a/src/main/java/com/seibel/lod/lodApi/EventApi.java
+++ b/src/main/java/com/seibel/lod/api/lod/EventApi.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.lodApi;
+package com.seibel.lod.api.lod;
import org.lwjgl.glfw.GLFW;
diff --git a/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilderFactory.java b/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilderFactory.java
index fcceb02b6..7a2e036e6 100644
--- a/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilderFactory.java
+++ b/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilderFactory.java
@@ -36,12 +36,12 @@ import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.GL45;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.config.LodConfig;
import com.seibel.lod.enums.LodDirection;
import com.seibel.lod.enums.config.GpuUploadMethod;
import com.seibel.lod.enums.config.VanillaOverdraw;
import com.seibel.lod.enums.rendering.GlProxyContext;
-import com.seibel.lod.lodApi.ClientApi;
import com.seibel.lod.objects.Box;
import com.seibel.lod.objects.PosToRenderContainer;
import com.seibel.lod.objects.lod.LodDimension;
@@ -49,7 +49,7 @@ import com.seibel.lod.objects.lod.LodRegion;
import com.seibel.lod.objects.lod.RegionPos;
import com.seibel.lod.objects.opengl.LodBufferBuilder;
import com.seibel.lod.objects.opengl.LodVertexBuffer;
-import com.seibel.lod.proxy.GlProxy;
+import com.seibel.lod.render.GlProxy;
import com.seibel.lod.render.LodRenderer;
import com.seibel.lod.util.DataPointUtil;
import com.seibel.lod.util.DetailDistanceUtil;
diff --git a/src/main/java/com/seibel/lod/builders/bufferBuilding/lodTemplates/DynamicLodTemplate.java b/src/main/java/com/seibel/lod/builders/bufferBuilding/lodTemplates/DynamicLodTemplate.java
index 977d6dab8..9f5719d5d 100644
--- a/src/main/java/com/seibel/lod/builders/bufferBuilding/lodTemplates/DynamicLodTemplate.java
+++ b/src/main/java/com/seibel/lod/builders/bufferBuilding/lodTemplates/DynamicLodTemplate.java
@@ -22,10 +22,10 @@ package com.seibel.lod.builders.bufferBuilding.lodTemplates;
import java.util.Map;
import com.seibel.lod.enums.rendering.DebugMode;
-import com.seibel.lod.lodApi.ClientApi;
import com.seibel.lod.objects.Box;
import com.seibel.lod.objects.opengl.LodBufferBuilder;
import com.seibel.lod.wrappers.block.BlockPosWrapper;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.enums.LodDirection;
/**
diff --git a/src/main/java/com/seibel/lod/builders/bufferBuilding/lodTemplates/TriangularLodTemplate.java b/src/main/java/com/seibel/lod/builders/bufferBuilding/lodTemplates/TriangularLodTemplate.java
index 1c653ebe3..805d171ea 100644
--- a/src/main/java/com/seibel/lod/builders/bufferBuilding/lodTemplates/TriangularLodTemplate.java
+++ b/src/main/java/com/seibel/lod/builders/bufferBuilding/lodTemplates/TriangularLodTemplate.java
@@ -22,10 +22,10 @@ package com.seibel.lod.builders.bufferBuilding.lodTemplates;
import java.util.Map;
import com.seibel.lod.enums.rendering.DebugMode;
-import com.seibel.lod.lodApi.ClientApi;
import com.seibel.lod.objects.Box;
import com.seibel.lod.objects.opengl.LodBufferBuilder;
import com.seibel.lod.wrappers.block.BlockPosWrapper;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.enums.LodDirection;
/**
diff --git a/src/main/java/com/seibel/lod/builders/worldGeneration/LodGenWorker.java b/src/main/java/com/seibel/lod/builders/worldGeneration/LodGenWorker.java
index fea111652..3511d3bea 100644
--- a/src/main/java/com/seibel/lod/builders/worldGeneration/LodGenWorker.java
+++ b/src/main/java/com/seibel/lod/builders/worldGeneration/LodGenWorker.java
@@ -23,10 +23,10 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.builders.lodBuilding.LodBuilder;
import com.seibel.lod.config.LodConfig;
import com.seibel.lod.enums.config.DistanceGenerationMode;
-import com.seibel.lod.lodApi.ClientApi;
import com.seibel.lod.objects.lod.LodDimension;
import com.seibel.lod.util.LodUtil;
import com.seibel.lod.wrappers.chunk.ChunkPosWrapper;
diff --git a/src/main/java/com/seibel/lod/handlers/LodDimensionFileHandler.java b/src/main/java/com/seibel/lod/handlers/LodDimensionFileHandler.java
index 2e2bdf990..6501f5ce5 100644
--- a/src/main/java/com/seibel/lod/handlers/LodDimensionFileHandler.java
+++ b/src/main/java/com/seibel/lod/handlers/LodDimensionFileHandler.java
@@ -29,9 +29,9 @@ import java.util.concurrent.Executors;
import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
import org.apache.commons.compress.compressors.xz.XZCompressorOutputStream;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.enums.config.DistanceGenerationMode;
import com.seibel.lod.enums.config.VerticalQuality;
-import com.seibel.lod.lodApi.ClientApi;
import com.seibel.lod.objects.lod.LodDimension;
import com.seibel.lod.objects.lod.LodRegion;
import com.seibel.lod.objects.lod.RegionPos;
diff --git a/src/main/java/com/seibel/lod/handlers/ReflectionHandler.java b/src/main/java/com/seibel/lod/handlers/ReflectionHandler.java
index cf7714f98..515deae21 100644
--- a/src/main/java/com/seibel/lod/handlers/ReflectionHandler.java
+++ b/src/main/java/com/seibel/lod/handlers/ReflectionHandler.java
@@ -22,8 +22,8 @@ package com.seibel.lod.handlers;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.enums.rendering.FogQuality;
-import com.seibel.lod.lodApi.ClientApi;
import com.seibel.lod.objects.math.Mat4f;
import com.seibel.lod.wrappers.MinecraftWrapper;
diff --git a/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java b/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java
index f99c6c984..6b0c2e3c3 100644
--- a/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java
+++ b/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java
@@ -26,7 +26,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import com.mojang.blaze3d.matrix.MatrixStack;
-import com.seibel.lod.lodApi.ClientApi;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.objects.math.Mat4f;
import com.seibel.lod.wrappers.McObjectConverter;
diff --git a/src/main/java/com/seibel/lod/objects/PosToRenderContainer.java b/src/main/java/com/seibel/lod/objects/PosToRenderContainer.java
index 606edc44d..4212a58c8 100644
--- a/src/main/java/com/seibel/lod/objects/PosToRenderContainer.java
+++ b/src/main/java/com/seibel/lod/objects/PosToRenderContainer.java
@@ -21,7 +21,7 @@ package com.seibel.lod.objects;
import java.util.Arrays;
-import com.seibel.lod.lodApi.ClientApi;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.util.LevelPosUtil;
import com.seibel.lod.util.LodUtil;
diff --git a/src/main/java/com/seibel/lod/objects/lod/LodWorld.java b/src/main/java/com/seibel/lod/objects/lod/LodWorld.java
index 33fcb95e6..47cc4b5d7 100644
--- a/src/main/java/com/seibel/lod/objects/lod/LodWorld.java
+++ b/src/main/java/com/seibel/lod/objects/lod/LodWorld.java
@@ -22,7 +22,7 @@ package com.seibel.lod.objects.lod;
import java.util.Hashtable;
import java.util.Map;
-import com.seibel.lod.lodApi.ClientApi;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.wrappers.world.DimensionTypeWrapper;
/**
diff --git a/src/main/java/com/seibel/lod/objects/opengl/LodVertexBuffer.java b/src/main/java/com/seibel/lod/objects/opengl/LodVertexBuffer.java
index 4168eb9b2..0657701b6 100644
--- a/src/main/java/com/seibel/lod/objects/opengl/LodVertexBuffer.java
+++ b/src/main/java/com/seibel/lod/objects/opengl/LodVertexBuffer.java
@@ -3,7 +3,7 @@ package com.seibel.lod.objects.opengl;
import org.lwjgl.opengl.GL15;
import com.seibel.lod.enums.rendering.GlProxyContext;
-import com.seibel.lod.proxy.GlProxy;
+import com.seibel.lod.render.GlProxy;
/**
* a (almost) exact copy of MC's
diff --git a/src/main/java/com/seibel/lod/proxy/GlProxy.java b/src/main/java/com/seibel/lod/render/GlProxy.java
similarity index 99%
rename from src/main/java/com/seibel/lod/proxy/GlProxy.java
rename to src/main/java/com/seibel/lod/render/GlProxy.java
index 72a41ffd6..65506870c 100644
--- a/src/main/java/com/seibel/lod/proxy/GlProxy.java
+++ b/src/main/java/com/seibel/lod/render/GlProxy.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.proxy;
+package com.seibel.lod.render;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.opengl.GL;
@@ -29,8 +29,8 @@ import org.lwjgl.opengl.GLCapabilities;
import com.mojang.blaze3d.systems.IRenderCall;
import com.mojang.blaze3d.systems.RenderSystem;
import com.seibel.lod.ModInfo;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.enums.rendering.GlProxyContext;
-import com.seibel.lod.lodApi.ClientApi;
import com.seibel.lod.render.shader.LodShader;
import com.seibel.lod.render.shader.LodShaderProgram;
import com.seibel.lod.wrappers.MinecraftWrapper;
diff --git a/src/main/java/com/seibel/lod/render/LodRenderer.java b/src/main/java/com/seibel/lod/render/LodRenderer.java
index 9de0caf51..4eb374ff4 100644
--- a/src/main/java/com/seibel/lod/render/LodRenderer.java
+++ b/src/main/java/com/seibel/lod/render/LodRenderer.java
@@ -26,6 +26,7 @@ import org.lwjgl.opengl.GL20;
import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.NVFogDistance;
+import com.seibel.lod.api.lod.ApiShared;
import com.seibel.lod.builders.bufferBuilding.LodBufferBuilderFactory;
import com.seibel.lod.builders.bufferBuilding.LodBufferBuilderFactory.VertexBuffersAndOffset;
import com.seibel.lod.config.LodConfig;
@@ -35,13 +36,11 @@ import com.seibel.lod.enums.rendering.FogDistance;
import com.seibel.lod.enums.rendering.FogDrawOverride;
import com.seibel.lod.enums.rendering.FogQuality;
import com.seibel.lod.handlers.ReflectionHandler;
-import com.seibel.lod.lodApi.ApiShared;
import com.seibel.lod.objects.lod.LodDimension;
import com.seibel.lod.objects.lod.RegionPos;
import com.seibel.lod.objects.math.Mat4f;
import com.seibel.lod.objects.opengl.LodVertexBuffer;
import com.seibel.lod.objects.rending.NearFarFogSettings;
-import com.seibel.lod.proxy.GlProxy;
import com.seibel.lod.render.shader.LodShaderProgram;
import com.seibel.lod.util.DetailDistanceUtil;
import com.seibel.lod.util.LevelPosUtil;
diff --git a/src/main/java/com/seibel/lod/render/shader/LodShader.java b/src/main/java/com/seibel/lod/render/shader/LodShader.java
index 5191ae760..edcb31346 100644
--- a/src/main/java/com/seibel/lod/render/shader/LodShader.java
+++ b/src/main/java/com/seibel/lod/render/shader/LodShader.java
@@ -27,7 +27,7 @@ import java.io.InputStreamReader;
import org.lwjgl.opengl.GL20;
-import com.seibel.lod.lodApi.ClientApi;
+import com.seibel.lod.api.lod.ClientApi;
/**
* This object holds a OpenGL reference to a shader
diff --git a/src/main/java/com/seibel/lod/wrappers/MinecraftWrapper.java b/src/main/java/com/seibel/lod/wrappers/MinecraftWrapper.java
index 410cb8e03..5efd2cc38 100644
--- a/src/main/java/com/seibel/lod/wrappers/MinecraftWrapper.java
+++ b/src/main/java/com/seibel/lod/wrappers/MinecraftWrapper.java
@@ -24,8 +24,8 @@ import java.io.File;
import java.util.ArrayList;
import com.seibel.lod.ModInfo;
+import com.seibel.lod.api.lod.ClientApi;
import com.seibel.lod.enums.LodDirection;
-import com.seibel.lod.lodApi.ClientApi;
import com.seibel.lod.util.LodUtil;
import com.seibel.lod.wrappers.block.BlockPosWrapper;
import com.seibel.lod.wrappers.chunk.ChunkPosWrapper;