From 3ef8bd7e20af02d42ea4f470d67147257f6c617e Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 29 Apr 2026 07:35:16 -0500 Subject: [PATCH] Add position finder debug config --- .../core/api/internal/ClientApi.java | 31 +++++++++++-------- .../distanthorizons/core/config/Config.java | 31 +++++++++++++++++++ .../render/bufferBuilding/LodQuadBuilder.java | 4 +-- .../core/render/QuadTree/LodQuadTree.java | 11 ------- .../core/render/renderer/LodRenderer.java | 19 ++++++++++++ .../assets/distanthorizons/lang/en_us.json | 20 ++++++++++++ 6 files changed, 90 insertions(+), 26 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java index 891263526..6e6544c9d 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java @@ -63,6 +63,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.lwjgl.glfw.GLFW; +import java.awt.*; import java.io.File; import java.util.*; import java.util.concurrent.LinkedBlockingQueue; @@ -160,7 +161,7 @@ public class ClientApi //==============// // world events // //==============// - //region + //region world events /** * May be fired slightly before or after the associated @@ -245,7 +246,7 @@ public class ClientApi //==============// // level events // //==============// - //region + //region level events public void clientLevelUnloadEvent(IClientLevelWrapper level) { @@ -364,7 +365,7 @@ public class ClientApi //============// // networking // //============// - //region + //region networking /** * Forwards a decoded message into the registered handlers. @@ -404,7 +405,7 @@ public class ClientApi //===============// // LOD rendering // //===============// - //region + //region lod rendering /** Should be called before {@link ClientApi#renderDeferredLodsForShaders} */ public void renderLods() { this.renderLodLayer(false); } @@ -428,12 +429,16 @@ public class ClientApi //===========// //region - //DhApiTerrainDataRepo.asyncDebugMethod( - // RENDER_STATE.clientLevelWrapper, - // MC_CLIENT.getPlayerBlockPos().getX(), - // MC_CLIENT.getPlayerBlockPos().getY(), - // MC_CLIENT.getPlayerBlockPos().getZ() - //); + // only run these tasks once per frame + if (!renderingDeferredLayer) + { + //DhApiTerrainDataRepo.asyncDebugMethod( + // RENDER_STATE.clientLevelWrapper, + // MC_CLIENT.getPlayerBlockPos().getX(), + // MC_CLIENT.getPlayerBlockPos().getY(), + // MC_CLIENT.getPlayerBlockPos().getZ() + //); + } //endregion @@ -667,7 +672,7 @@ public class ClientApi //================// // fade rendering // //================// - //region + //region fade rendering /** * The first fade pass. @@ -737,7 +742,7 @@ public class ClientApi //==========// // keyboard // //==========// - //region + //region keyboard /** Trigger once on key press, with CLIENT PLAYER. */ public void keyPressedEvent(int glfwKey) @@ -773,7 +778,7 @@ public class ClientApi //======// // chat // //======// - //region + //region chat private void sendQueuedChatMessages() { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java index 038433e84..790d6c2cf 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java @@ -964,6 +964,7 @@ public class Config public static ConfigCategory debugWireframe = new ConfigCategory.Builder().set(DebugWireframe.class).build(); public static ConfigCategory openGl = new ConfigCategory.Builder().set(OpenGl.class).build(); public static ConfigCategory columnBuilderDebugging = new ConfigCategory.Builder().set(ColumnBuilderDebugging.class).build(); + public static ConfigCategory positionFinderDebugging = new ConfigCategory.Builder().set(PositionFinder.class).build(); public static ConfigCategory f3Screen = new ConfigCategory.Builder().set(F3Screen.class).build(); public static ConfigCategory exampleConfigScreen = new ConfigCategory.Builder().set(ExampleConfigScreen.class).build(); @@ -1095,6 +1096,36 @@ public class Config } + public static class PositionFinder + { + //public static ConfigUIComment positionFinderHeader = new ConfigUIComment.Builder().setParentConfigClass(ColumnBuilderDebugging.class).build(); + + public static ConfigEntry positionFinderEnable = new ConfigEntry.Builder() + .set(false) + .build(); + + public static ConfigEntry positionFinderDetailLevel = new ConfigEntry.Builder() + .set((int) DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL) + .build(); + public static ConfigEntry positionFinderXPos = new ConfigEntry.Builder() + .set(0) + .build(); + public static ConfigEntry positionFinderZPos = new ConfigEntry.Builder() + .set(0) + .build(); + + public static ConfigEntry positionFinderMinBlockY = new ConfigEntry.Builder() + .set(-64) + .build(); + public static ConfigEntry positionFinderMaxBlockY = new ConfigEntry.Builder() + .set(125) + .build(); + public static ConfigEntry positionFinderMarginPercent = new ConfigEntry.Builder() + .set(0.0f) + .build(); + + } + public static class F3Screen { public static ConfigUIComment f3ScreenHeader = new ConfigUIComment.Builder().setParentConfigClass(F3Screen.class).build(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java index f97f67da3..ba7bb74d2 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java @@ -61,7 +61,7 @@ public class LodQuadBuilder public static final int BYTES_PER_QUAD = BYTES_PER_VERTEX * 4; public static final int[][][] DIRECTION_VERTEX_IBO_QUAD = new int[][][] - ///region + //region { // X,Z // { // UP @@ -109,7 +109,7 @@ public class LodQuadBuilder {0, 0}, // 3 }, }; - ///endregion + //endregion private int premergeCount = 0; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodQuadTree.java b/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodQuadTree.java index 297343424..a07c61985 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodQuadTree.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodQuadTree.java @@ -1202,17 +1202,6 @@ public class LodQuadTree extends QuadTree implements IDebugRen { this.populateListWithEnabledRenderSections(this.debugNodeList); - //// can be uncommented for debugging/finding a specific position - //debugRenderer.makeParticle( - // new AbstractDebugWireframeRenderer.BoxParticle( - // new AbstractDebugWireframeRenderer.Box( - // DhSectionPos.encode((byte)7, 3,-1) - // , -64, 400, - // 0.1f, - // Color.YELLOW), - // 0.5, 0f - // )); - for (int i = 0; i < this.debugNodeList.size(); i++) { LodRenderSection renderSection = this.debugNodeList.get(i); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java index 66b49f4fb..eca76f816 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java @@ -26,6 +26,7 @@ import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLogger; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; +import com.seibel.distanthorizons.core.pos.DhSectionPos; import com.seibel.distanthorizons.core.render.DhApiRenderProxy; import com.seibel.distanthorizons.core.render.RenderBufferHandler; import com.seibel.distanthorizons.core.render.RenderParams; @@ -36,6 +37,8 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IIrisAccess import com.seibel.distanthorizons.core.wrapperInterfaces.render.renderPass.*; import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector; +import java.awt.*; + /** * This is where all the magic happens.
* This is where LODs are draw to the world. @@ -288,6 +291,22 @@ public class LodRenderer } + if (Config.Client.Advanced.Debugging.PositionFinder.positionFinderEnable.get()) + { + // can be used to find specific positions when debugging + this.debugWireframeRenderer.renderBox(new AbstractDebugWireframeRenderer.Box( + DhSectionPos.encode( + Config.Client.Advanced.Debugging.PositionFinder.positionFinderDetailLevel.get().byteValue(), + Config.Client.Advanced.Debugging.PositionFinder.positionFinderXPos.get(), + Config.Client.Advanced.Debugging.PositionFinder.positionFinderZPos.get()), + Config.Client.Advanced.Debugging.PositionFinder.positionFinderMinBlockY.get(), + Config.Client.Advanced.Debugging.PositionFinder.positionFinderMaxBlockY.get(), + Config.Client.Advanced.Debugging.PositionFinder.positionFinderMarginPercent.get(), + Color.GREEN + )); + } + + //=============================// // Apply to the MC Framebuffer // diff --git a/core/src/main/resources/assets/distanthorizons/lang/en_us.json b/core/src/main/resources/assets/distanthorizons/lang/en_us.json index 8dbce10fd..69dbd660e 100644 --- a/core/src/main/resources/assets/distanthorizons/lang/en_us.json +++ b/core/src/main/resources/assets/distanthorizons/lang/en_us.json @@ -533,6 +533,26 @@ + "distanthorizons.config.client.advanced.debugging.positionFinderDebugging": + "Position Finder", + + "distanthorizons.config.client.advanced.debugging.positionFinderDebugging.positionFinderEnable": + "Enable Position Finder", + "distanthorizons.config.client.advanced.debugging.positionFinderDebugging.positionFinderDetailLevel": + "Absolute Detail Level", + "distanthorizons.config.client.advanced.debugging.positionFinderDebugging.positionFinderXPos": + "Pos X", + "distanthorizons.config.client.advanced.debugging.positionFinderDebugging.positionFinderZPos": + "Pos Z", + "distanthorizons.config.client.advanced.debugging.positionFinderDebugging.positionFinderMinBlockY": + "Min Block Y", + "distanthorizons.config.client.advanced.debugging.positionFinderDebugging.positionFinderMaxBlockY": + "Max Block Y", + "distanthorizons.config.client.advanced.debugging.positionFinderDebugging.positionFinderMarginPercent": + "Margin %", + + + "distanthorizons.config.client.advanced.debugging.f3Screen": "F3 Screen",