From 8d82953c0b9bdaa5a4b5c4fa197bc32064f7e0e1 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sat, 25 Jul 2020 19:30:09 +0200 Subject: [PATCH] Fix hands always rendering with 1.16 OF shaders (fixes #280) --- .../shaders/mixin/MixinShadersRender.java | 19 +++++++++++++++++-- .../render/hooks/EntityRendererHandler.java | 10 +++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java b/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java index 9e06dd27..58f59ec1 100644 --- a/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java +++ b/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java @@ -7,6 +7,11 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +//#if MC>=11600 +//$$ import net.minecraft.client.render.Camera; +//$$ import net.minecraft.client.util.math.MatrixStack; +//#endif + //#if MC>=11400 import com.replaymod.core.events.PreRenderHandCallback; //#else @@ -21,8 +26,18 @@ import com.replaymod.core.events.PreRenderHandCallback; }, remap = false) public abstract class MixinShadersRender { - @Inject(method = "renderHand0", at = @At("HEAD"), cancellable = true, remap = false) - private static void replayModCompat_disableRenderHand0(GameRenderer er, float partialTicks, int renderPass, CallbackInfo ci) { + @Inject(method = { "renderHand0", "renderHand1" }, at = @At("HEAD"), cancellable = true, remap = false) + private static void replayModCompat_disableRenderHand0( + GameRenderer er, + //#if MC>=11600 + //$$ MatrixStack stack, + //$$ Camera camera, + //#endif + float partialTicks, + //#if MC<11600 + int renderPass, + //#endif + CallbackInfo ci) { //#if MC>=11400 if (PreRenderHandCallback.EVENT.invoker().preRenderHand()) { //#else diff --git a/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java b/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java index 9d335a74..de08ec2c 100644 --- a/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java +++ b/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java @@ -5,6 +5,7 @@ import com.replaymod.render.RenderSettings; import com.replaymod.render.capturer.CaptureData; import com.replaymod.render.capturer.RenderInfo; import com.replaymod.render.capturer.WorldRenderer; +import de.johni0702.minecraft.gui.utils.EventRegistrations; import lombok.Getter; import net.minecraft.client.MinecraftClient; @@ -15,6 +16,7 @@ import net.minecraft.client.util.math.MatrixStack; //#if MC>=11400 import com.replaymod.core.events.PostRenderCallback; import com.replaymod.core.events.PreRenderCallback; +import com.replaymod.core.events.PreRenderHandCallback; //#else //#if MC>=11400 //$$ import net.minecraftforge.fml.hooks.BasicEventHooks; @@ -25,7 +27,7 @@ import com.replaymod.core.events.PreRenderCallback; import java.io.IOException; -public class EntityRendererHandler implements WorldRenderer { +public class EntityRendererHandler extends EventRegistrations implements WorldRenderer { public final MinecraftClient mc = MCVer.getMinecraft(); @Getter @@ -42,7 +44,12 @@ public class EntityRendererHandler implements WorldRenderer { this.settings = settings; this.renderInfo = renderInfo; + //#if MC>=11400 + on(PreRenderHandCallback.EVENT, () -> omnidirectional); + //#endif + ((IEntityRenderer) mc.gameRenderer).replayModRender_setHandler(this); + register(); } @Override @@ -84,6 +91,7 @@ public class EntityRendererHandler implements WorldRenderer { @Override public void close() throws IOException { ((IEntityRenderer) mc.gameRenderer).replayModRender_setHandler(null); + unregister(); } @Override