From 3bd4ab0f82e44ab3a7a55555cb6fe0aa7b5bd4c4 Mon Sep 17 00:00:00 2001 From: Xander Date: Sun, 14 May 2023 14:55:35 +0100 Subject: [PATCH] Fix screen api passing wrong MatrixStack to render events (#3061) --- .../fabricmc/fabric/mixin/screen/GameRendererMixin.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/GameRendererMixin.java b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/GameRendererMixin.java index d21bd662f..ea1681d98 100644 --- a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/GameRendererMixin.java +++ b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/GameRendererMixin.java @@ -42,17 +42,17 @@ abstract class GameRendererMixin { private Screen renderingScreen; @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;renderWithTooltip(Lnet/minecraft/client/util/math/MatrixStack;IIF)V"), locals = LocalCapture.CAPTURE_FAILEXCEPTION) - private void onBeforeRenderScreen(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, MatrixStack matrices) { + private void onBeforeRenderScreen(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, MatrixStack worldStack, MatrixStack screenStack) { // Store the screen in a variable in case someone tries to change the screen during this before render event. // If someone changes the screen, the after render event will likely have class cast exceptions or an NPE. this.renderingScreen = this.client.currentScreen; - ScreenEvents.beforeRender(this.renderingScreen).invoker().beforeRender(this.renderingScreen, matrices, mouseX, mouseY, tickDelta); + ScreenEvents.beforeRender(this.renderingScreen).invoker().beforeRender(this.renderingScreen, screenStack, mouseX, mouseY, tickDelta); } // This injection should end up in the try block so exceptions are caught @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;renderWithTooltip(Lnet/minecraft/client/util/math/MatrixStack;IIF)V", shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILEXCEPTION) - private void onAfterRenderScreen(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, MatrixStack matrices) { - ScreenEvents.afterRender(this.renderingScreen).invoker().afterRender(this.renderingScreen, matrices, mouseX, mouseY, tickDelta); + private void onAfterRenderScreen(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int mouseX, int mouseY, MatrixStack worldStack, MatrixStack screenStack) { + ScreenEvents.afterRender(this.renderingScreen).invoker().afterRender(this.renderingScreen, screenStack, mouseX, mouseY, tickDelta); // Finally set the currently rendering screen to null this.renderingScreen = null; }