From a4274380cb6bb141bd6b1103d8cef8e4d182d02c Mon Sep 17 00:00:00 2001 From: MrSphay Date: Thu, 7 May 2026 14:06:16 +0200 Subject: [PATCH] Fix GameRenderer blur mixin for 1.21.1 --- docs/agent-handoff.md | 3 +++ .../mixin/GameRendererBlurMixin.java | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/agent-handoff.md b/docs/agent-handoff.md index 808c97f..a5cb831 100644 --- a/docs/agent-handoff.md +++ b/docs/agent-handoff.md @@ -23,6 +23,7 @@ The Gitea runner has been used for: - `AsyncCraterManager` - `BlockIndexManager` - Updated the `ExplosionMixin` complex constructor injection descriptor for Minecraft `1.21.1` after a client bootstrap crash showed the old Forge `1.20.1` constructor target no longer exists. +- Updated `GameRendererBlurMixin` render callback and invoke descriptors for Minecraft `1.21.1` after the next client crash showed `GameRenderer#render` now receives `DeltaTracker, boolean`. - Fixed runner setup issues: - executable `gradlew` - tracked `gradle-wrapper.jar` @@ -34,6 +35,7 @@ The Gitea runner has been used for: | --- | --- | | `git diff --check` | PASS before last committed source fixes | | `git diff --check` | PASS after NeoForge `21.1.225` metadata change and `ExplosionMixin` runtime crash fix | +| `git diff --check` | PASS after `GameRendererBlurMixin` runtime crash fix | | Gitea decompile workflow | PASS | | Gitea build workflow | FAIL, now reaches Java API migration errors | @@ -63,6 +65,7 @@ The remaining failures are real Forge-to-NeoForge/API-porting work, not runner s 3. Replace GUI overlay events and config screen registration. 4. Re-run the Gitea build after each API family rather than attempting all files at once. 5. Retest the client jar after the `ExplosionMixin` descriptor fix; the next crash, if any, should be a later runtime/API issue rather than the bootstrap constructor mismatch. +6. Retest the client jar after the `GameRendererBlurMixin` descriptor fix; the next crash, if any, should be the next stale mixin/API target. ## Risks diff --git a/src/main/java/com/vinlanx/explosionoverhaul/mixin/GameRendererBlurMixin.java b/src/main/java/com/vinlanx/explosionoverhaul/mixin/GameRendererBlurMixin.java index 42f8f82..14f9fd8 100644 --- a/src/main/java/com/vinlanx/explosionoverhaul/mixin/GameRendererBlurMixin.java +++ b/src/main/java/com/vinlanx/explosionoverhaul/mixin/GameRendererBlurMixin.java @@ -3,8 +3,8 @@ */ package com.vinlanx.explosionoverhaul.mixin; -import com.mojang.blaze3d.vertex.PoseStack; import com.vinlanx.explosionoverhaul.client.Blur; +import net.minecraft.client.DeltaTracker; import net.minecraft.client.renderer.GameRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -13,18 +13,18 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(value={GameRenderer.class}) public class GameRendererBlurMixin { - @Inject(method={"renderLevel"}, at={@At(value="INVOKE", target="Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;)V", shift=At.Shift.AFTER)}) - private void explosionoverhaul$afterWorld(float tickDelta, long nanoTime, PoseStack poseStack, CallbackInfo ci) { + @Inject(method={"renderLevel"}, at={@At(value="INVOKE", target="Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lnet/minecraft/client/DeltaTracker;ZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V", shift=At.Shift.AFTER)}) + private void explosionoverhaul$afterWorld(DeltaTracker deltaTracker, CallbackInfo ci) { Blur.render(Blur.RenderStage.WORLD); } - @Inject(method={"renderLevel"}, at={@At(value="INVOKE", target="Lnet/minecraft/client/renderer/GameRenderer;renderItemInHand(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/Camera;F)V", shift=At.Shift.AFTER)}) - private void explosionoverhaul$afterHand(float tickDelta, long nanoTime, PoseStack poseStack, CallbackInfo ci) { + @Inject(method={"renderLevel"}, at={@At(value="INVOKE", target="Lnet/minecraft/client/renderer/GameRenderer;renderItemInHand(Lnet/minecraft/client/Camera;FLorg/joml/Matrix4f;)V", shift=At.Shift.AFTER)}) + private void explosionoverhaul$afterHand(DeltaTracker deltaTracker, CallbackInfo ci) { Blur.render(Blur.RenderStage.HAND); } @Inject(method={"render"}, at={@At(value="TAIL")}) - private void explosionoverhaul$afterGui(float tickDelta, long nanoTime, boolean renderLevel, CallbackInfo ci) { + private void explosionoverhaul$afterGui(DeltaTracker deltaTracker, boolean renderLevel, CallbackInfo ci) { Blur.render(Blur.RenderStage.HUD); } }