From 4187eaf112576f24b22b41f74d88b709e6fb008f Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 11 Oct 2025 11:14:12 -0500 Subject: [PATCH] Fix fading when Sodium is installed --- coreSubProjects | 2 +- .../fabric/FabricClientProxy.java | 2 +- .../client/MixinChunkSectionsToRender.java | 29 ++++++------------- .../mixins/client/MixinLevelRenderer.java | 16 ---------- .../mixins/client/MixinLevelRenderer.java | 2 +- .../neoforge/NeoforgeClientProxy.java | 2 +- .../mixins/client/MixinLevelRenderer.java | 2 +- 7 files changed, 14 insertions(+), 41 deletions(-) diff --git a/coreSubProjects b/coreSubProjects index 57aec6092..b3928d3b1 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 57aec6092c163713c6dbd70bdd4305eb3a516850 +Subproject commit b3928d3b1fdc276e10627d09a0807ee6b49d8baa diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java index 3d03c0132..fae958e27 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java @@ -293,7 +293,7 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(); #endif - this.clientApi.renderFade(); + this.clientApi.renderFadeTransparent(); }); #endif diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinChunkSectionsToRender.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinChunkSectionsToRender.java index 1a78c3bc9..dc3b343c7 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinChunkSectionsToRender.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinChunkSectionsToRender.java @@ -43,36 +43,25 @@ public class MixinChunkSectionsToRender { - // needs to fire at HEAD otherwise it will be canceled by Sodium - @Inject(at = @At("HEAD"), method = "renderGroup") + // needs to fire at HEAD with a lower than normal order (less than 1000) + // otherwise it will be canceled by Sodium + @Inject(at = @At("HEAD"), method = "renderGroup", order = 800) private void renderDeferredLayer(ChunkSectionLayerGroup chunkSectionLayerGroup, CallbackInfo ci) { ClientApi.RENDER_STATE.clientLevelWrapper = ClientLevelWrapper.getWrapperIfDifferent(ClientApi.RENDER_STATE.clientLevelWrapper, Minecraft.getInstance().levelRenderer.level); - if (chunkSectionLayerGroup == ChunkSectionLayerGroup.OPAQUE) + if (chunkSectionLayerGroup == ChunkSectionLayerGroup.TRANSLUCENT) + { + ClientApi.INSTANCE.renderFadeTransparent(); + ClientApi.INSTANCE.renderDeferredLodsForShaders(); + } + else if (chunkSectionLayerGroup == ChunkSectionLayerGroup.TRIPWIRE) { ClientApi.INSTANCE.renderFadeOpaque(); } - else if (chunkSectionLayerGroup == ChunkSectionLayerGroup.TRANSLUCENT) - { - ClientApi.INSTANCE.renderDeferredLodsForShaders(); - } } - // canceled by sodium, but there isn't a better way to handle it right now - // https://github.com/CaffeineMC/sodium/blob/dev/common/src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/world/ChunkSectionsToRenderMixin.java - @Inject(at = @At("RETURN"), method = "renderGroup") - private void renderOpaqueFade(ChunkSectionLayerGroup chunkSectionLayerGroup, CallbackInfo ci) - { - ClientApi.RENDER_STATE.clientLevelWrapper = ClientLevelWrapper.getWrapperIfDifferent(ClientApi.RENDER_STATE.clientLevelWrapper, Minecraft.getInstance().levelRenderer.level); - - - if (chunkSectionLayerGroup == ChunkSectionLayerGroup.OPAQUE) - { - ClientApi.INSTANCE.renderFadeOpaque(); - } - } } diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java index cb7982b14..92f538ed5 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java @@ -183,22 +183,6 @@ public class MixinLevelRenderer } - @Inject(at = @At("RETURN"), method = "renderLevel") - private void postRenderLevel(GraphicsResourceAllocator graphicsResourceAllocator, DeltaTracker deltaTracker, boolean bl, Camera camera, Matrix4f matrix4f, Matrix4f matrix4f2, Matrix4f matrix4f3, GpuBufferSlice gpuBufferSlice, Vector4f vector4f, boolean bl2, CallbackInfo ci) - { - ClientApi.RENDER_STATE.clientLevelWrapper = ClientLevelWrapper.getWrapperIfDifferent(ClientApi.RENDER_STATE.clientLevelWrapper, this.level); - ClientApi.RENDER_STATE.frameTime = deltaTracker.getGameTimeDeltaTicks(); - - // only crash during development - if (ModInfo.IS_DEV_BUILD) - { - ClientApi.RENDER_STATE.canRenderOrThrow(); - } - - ClientApi.INSTANCE.renderFade(); - - } - #endif diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java index b9cef5dc3..a6a6ea2ed 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java @@ -170,7 +170,7 @@ public class MixinLevelRenderer } else if (renderType.equals(RenderType.tripwire())) { - ClientApi.INSTANCE.renderFade(); + ClientApi.INSTANCE.renderFadeTransparent(); } } diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeClientProxy.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeClientProxy.java index 934cdc109..ac30eadaa 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeClientProxy.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeClientProxy.java @@ -256,7 +256,7 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy ClientApi.RENDER_STATE.clientLevelWrapper = ClientLevelWrapper.getWrapperIfDifferent(ClientApi.RENDER_STATE.clientLevelWrapper, event.getLevelRenderer().level); #endif - ClientApi.INSTANCE.renderFade(); + ClientApi.INSTANCE.renderFadeTransparent(); } diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinLevelRenderer.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinLevelRenderer.java index 399c859c6..a06869d27 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinLevelRenderer.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinLevelRenderer.java @@ -148,7 +148,7 @@ public class MixinLevelRenderer } else if (renderType.equals(RenderType.tripwire())) { - ClientApi.INSTANCE.renderFade(); + ClientApi.INSTANCE.renderFadeTransparent(); } #endif }