From a50f13caa018f85eaf7f9880ce504a2a69b5c1a6 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 28 Jun 2025 08:37:18 -0500 Subject: [PATCH] Mostly fix Iris transparent rendering for 1.21.6 --- .../fabric/FabricClientProxy.java | 11 +++++ .../mixins/client/MixinLevelRenderer.java | 44 ++----------------- .../neoforge/NeoforgeClientProxy.java | 11 +++++ .../mixins/client/MixinLevelRenderer.java | 17 ------- 4 files changed, 26 insertions(+), 57 deletions(-) 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 e7ae8cfa1..360160eb4 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java @@ -284,6 +284,17 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy modelViewMatrix = McObjectConverter.Convert(renderContext.positionMatrix()); #endif + + #if MC_VER < MC_1_21_6 + // rendered in MixinLevelRenderer + #else + ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(renderContext.world()), + ClientApi.RENDER_STATE.mcModelViewMatrix, + ClientApi.RENDER_STATE.mcProjectionMatrix, + ClientApi.RENDER_STATE.frameTime + ); + #endif + this.clientApi.renderFade( modelViewMatrix, projectionMatrix, 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 d33d83090..9f477c9ad 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 @@ -31,12 +31,8 @@ import com.mojang.blaze3d.vertex.PoseStack; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; #else -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Camera; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.chunk.ChunkSectionsToRender; import org.joml.Matrix4fc; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; #endif @@ -60,17 +56,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.apache.logging.log4j.Logger; -/** - * This class is used to mix in my rendering code - * before Minecraft starts rendering blocks. - * If this wasn't done, and we used Forge's - * render last event, the LODs would render on top - * of the normal terrain. - * - * @author coolGi - * @author James Seibel - * @version 12-31-2021 - */ + @Mixin(LevelRenderer.class) public class MixinLevelRenderer { @@ -108,7 +94,7 @@ public class MixinLevelRenderer private void renderChunkLayer(RenderType renderType, double x, double y, double z, Matrix4f projectionMatrix, Matrix4f frustumMatrix, CallbackInfo callback) #else @Inject(at = @At("HEAD"), method = "prepareChunkRenders", cancellable = true) - private void renderChunkLayer(Matrix4fc projectionMatrix, double d, double e, double f, CallbackInfoReturnable callback) + private void prepareChunkRenders(Matrix4fc projectionMatrix, double d, double e, double f, CallbackInfoReturnable callback) #endif { #if MC_VER == MC_1_16_5 @@ -157,6 +143,8 @@ public class MixinLevelRenderer ClientApi.RENDER_STATE.frameTime ); } + #else + // rendering handled via Fabric Api render event #endif // FIXME completely disables rendering when sodium is installed @@ -168,28 +156,4 @@ public class MixinLevelRenderer - #if MC_VER < MC_1_21_6 - - // formerly handled in renderChunkLayer() - - #else - @Inject(at = @At("HEAD"), method = "renderBlockDestroyAnimation", cancellable = true) - private void renderBlockDestroyAnimation(PoseStack poseStack, Camera camera, MultiBufferSource.BufferSource bufferSource, CallbackInfo callback) - { - // only crash during development - if (ModInfo.IS_DEV_BUILD) - { - ClientApi.RENDER_STATE.canRenderOrThrow(); - } - - ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(this.level), - ClientApi.RENDER_STATE.mcModelViewMatrix, - ClientApi.RENDER_STATE.mcProjectionMatrix, - ClientApi.RENDER_STATE.frameTime - ); - } - #endif - - - } 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 01a70ec0e..3441eb5ba 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeClientProxy.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeClientProxy.java @@ -254,6 +254,17 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy LOGGER.error("Unexpected error in afterLevelRenderEvent: "+e.getMessage(), e); } } + #if MC_VER < MC_1_21_6 + #else + else if (event.getStage() == RenderLevelStageEvent.Stage.AFTER_TRANSLUCENT_BLOCKS) + { + ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper((ClientLevel)event.getLevel()), + ClientApi.RENDER_STATE.mcModelViewMatrix, + ClientApi.RENDER_STATE.mcProjectionMatrix, + ClientApi.RENDER_STATE.frameTime + ); + } + #endif } 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 0e2699e77..5e73763bd 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 @@ -199,23 +199,6 @@ public class MixinLevelRenderer ClientApi.RENDER_STATE.frameTime); } - - @Inject(at = @At("HEAD"), method = "renderBlockDestroyAnimation", cancellable = true) - private void renderBlockDestroyAnimation(PoseStack poseStack, Camera camera, MultiBufferSource.BufferSource bufferSource, CallbackInfo callback) - { - // only crash during development - if (ModInfo.IS_DEV_BUILD) - { - ClientApi.RENDER_STATE.canRenderOrThrow(); - } - - ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(this.level), - ClientApi.RENDER_STATE.mcModelViewMatrix, - ClientApi.RENDER_STATE.mcProjectionMatrix, - ClientApi.RENDER_STATE.frameTime - ); - } - #endif