From 5a35e1e8f56aa4d9acd087dbf059783780360096 Mon Sep 17 00:00:00 2001 From: Shiewk Date: Fri, 25 Jul 2025 13:00:25 +0200 Subject: [PATCH] (1.3.1) 1.21.6-1.21.8 support --- build.gradle | 2 +- gradle.properties | 10 +++--- .../client/screen/BedrockDeathScreen.java | 35 ++++++++++--------- .../mixin/MixinGameRenderer.java | 8 ++--- 4 files changed, 28 insertions(+), 27 deletions(-) diff --git a/build.gradle b/build.gradle index e8d416e..f8740e3 100644 --- a/build.gradle +++ b/build.gradle @@ -37,7 +37,7 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modImplementation "maven.modrinth:modmenu:14.0.0-rc.2" + modImplementation "maven.modrinth:modmenu:15.0.0-beta.3" } processResources { diff --git a/gradle.properties b/gradle.properties index 12d59eb..a7562e6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html - minecraft_version=1.21.5 - yarn_mappings=1.21.5+build.1 - loader_version=0.16.12 + minecraft_version=1.21.6 + yarn_mappings=1.21.6+build.1 + loader_version=0.16.13 # Mod Properties - mod_version = 1.3.0 + mod_version = 1.3.1 maven_group = de.shiewk archives_base_name = BedrockDeathScreen # Dependencies # check this on https://modmuss50.me/fabric.html - fabric_version=0.119.5+1.21.5 + fabric_version=0.127.0+1.21.6 diff --git a/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java b/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java index bddb9a0..30adfd0 100644 --- a/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java +++ b/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java @@ -3,17 +3,18 @@ package de.shiewk.bedrockdeathscreen.client.screen; import de.shiewk.bedrockdeathscreen.client.BedrockDeathScreenClient; import de.shiewk.bedrockdeathscreen.client.screen.components.BedrockDeathScreenButton; import de.shiewk.bedrockdeathscreen.config.BedrockDeathScreenConfig; +import net.minecraft.client.gl.RenderPipelines; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.DeathScreen; -import net.minecraft.client.gui.screen.MessageScreen; import net.minecraft.client.gui.screen.TitleScreen; -import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.world.ClientWorld; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.Util; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix3x2fStack; import org.lwjgl.glfw.GLFW; import java.awt.*; @@ -58,7 +59,7 @@ public class BedrockDeathScreen extends DeathScreen { if (totalScreenTime > 750.0f){ final int backOpacity = (int) Math.min(255, (totalScreenTime - 750f) / 10f); context.drawTexture( - RenderLayer::getGuiTextured, + RenderPipelines.GUI_TEXTURED, VIGNETTE, 0, 0, @@ -74,10 +75,10 @@ public class BedrockDeathScreen extends DeathScreen { final int textOpacity = (int) Math.min(255, (totalScreenTime - 750f) / 3f); if (textOpacity > 3){ - context.getMatrices().push(); - context.getMatrices().scale(2F, 2F, 2F); + Matrix3x2fStack stack = context.getMatrices().pushMatrix(); + stack.scale(2F, 2F, stack); context.drawCenteredTextWithShadow(this.textRenderer, this.title, this.width / 2 / 2, (int) (this.height / 3.5 / 2 - 10), new Color(255, 255, 255, textOpacity).getRGB()); - context.getMatrices().pop(); + stack.popMatrix(); if (message != null) { context.drawCenteredTextWithShadow(this.textRenderer, this.message, this.width / 2, (int) (this.height / 3.5), new Color(255, 255, 255, textOpacity).getRGB()); } @@ -173,16 +174,6 @@ public class BedrockDeathScreen extends DeathScreen { return true; } - private void quitLevel(){ - if (this.client != null && this.client.world != null) { - this.client.world.disconnect(); - } - if (this.client != null) { - this.client.disconnect(new MessageScreen(Text.translatable("menu.savingLevel"))); - this.client.setScreen(new TitleScreen()); - } - } - public float calcCamPitch() { return 20; } @@ -216,7 +207,7 @@ public class BedrockDeathScreen extends DeathScreen { private void clickQuitButton() { if (confirmingExit) { - this.quitLevel(); + quitLevel(); } else { confirmingExit = true; int y = menuButton.getY(); @@ -227,4 +218,14 @@ public class BedrockDeathScreen extends DeathScreen { respawnButton.resetClickedState(); } } + + private void quitLevel() { + assert this.client != null; + if (this.client.world != null) { + this.client.world.disconnect(ClientWorld.QUITTING_MULTIPLAYER_TEXT); + } + + this.client.disconnectWithSavingScreen(); + this.client.setScreen(new TitleScreen()); + } } diff --git a/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java index 80c9173..966be84 100644 --- a/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java +++ b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java @@ -20,7 +20,7 @@ public abstract class MixinGameRenderer { @Shadow @Final private MinecraftClient client; - @Shadow protected abstract void renderHand(Camera camera, float tickDelta, Matrix4f matrix4f); + @Shadow protected abstract void renderHand(float tickProgress, boolean sleeping, Matrix4f positionMatrix); @Inject(at = @At("TAIL"), method = "getFov", cancellable = true) public void onFovGet(Camera camera, float tickDelta, boolean changingFov, CallbackInfoReturnable cir){ @@ -38,10 +38,10 @@ public abstract class MixinGameRenderer { } } - @Redirect(method = "renderWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;renderHand(Lnet/minecraft/client/render/Camera;FLorg/joml/Matrix4f;)V")) - public void onCameraUpdate(GameRenderer instance, Camera camera, float tickDelta, Matrix4f matrix4f){ + @Redirect(method = "renderWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;renderHand(FZLorg/joml/Matrix4f;)V")) + public void onCameraUpdate(GameRenderer instance, float tickProgress, boolean sleeping, Matrix4f positionMatrix){ if (!(instance.getClient().currentScreen instanceof BedrockDeathScreen)){ - renderHand(camera, tickDelta, matrix4f); + renderHand(tickProgress, sleeping, positionMatrix); } } }