From cbbfc8eca35d65b99862577ee07b9aeb9d61efd3 Mon Sep 17 00:00:00 2001 From: Anatoly Kopyl Date: Sat, 11 Apr 2026 02:19:50 +0300 Subject: [PATCH] Fix GUI backgrounds --- .../client/RespawnBackoffClient.java | 2 +- .../net/respawnbackoff/mixin/GuiMixin.java | 23 +++++++++++++++++++ .../mixin/ToastManagerMixin.java | 20 ---------------- .../resources/respawn_backoff.mixins.json | 2 +- 4 files changed, 25 insertions(+), 22 deletions(-) create mode 100644 src/client/java/net/respawnbackoff/mixin/GuiMixin.java delete mode 100644 src/client/java/net/respawnbackoff/mixin/ToastManagerMixin.java diff --git a/src/client/java/net/respawnbackoff/client/RespawnBackoffClient.java b/src/client/java/net/respawnbackoff/client/RespawnBackoffClient.java index c8191cf..ec8fada 100644 --- a/src/client/java/net/respawnbackoff/client/RespawnBackoffClient.java +++ b/src/client/java/net/respawnbackoff/client/RespawnBackoffClient.java @@ -27,7 +27,7 @@ public class RespawnBackoffClient implements ClientModInitializer { } - /** Invoked from a mixin after the toast manager draws (post-chat HUD), so opaque blackout sits above vanilla UI. */ + /** Invoked from a mixin at the end of {@link net.minecraft.client.gui.Gui#render} (HUD + chat). Pause UI and toasts draw later. */ public static void renderPenaltyOverlay(GuiGraphics graphics) { if (!overlayActive) { return; diff --git a/src/client/java/net/respawnbackoff/mixin/GuiMixin.java b/src/client/java/net/respawnbackoff/mixin/GuiMixin.java new file mode 100644 index 0000000..8ecdaab --- /dev/null +++ b/src/client/java/net/respawnbackoff/mixin/GuiMixin.java @@ -0,0 +1,23 @@ +package net.respawnbackoff.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.GuiGraphics; +import net.respawnbackoff.client.RespawnBackoffClient; + +/** + * Draw the penalty screen after the in-game HUD (including chat). Vanilla then draws the pause + * menu and toasts on top, so we no longer paint over {@link net.minecraft.client.gui.screens.PauseScreen} widgets. + */ +@Mixin(Gui.class) +public class GuiMixin { + @Inject(method = "render", at = @At("RETURN")) + private void respawn_backoff$afterInGameHud(GuiGraphics graphics, DeltaTracker deltaTracker, CallbackInfo ci) { + RespawnBackoffClient.renderPenaltyOverlay(graphics); + } +} diff --git a/src/client/java/net/respawnbackoff/mixin/ToastManagerMixin.java b/src/client/java/net/respawnbackoff/mixin/ToastManagerMixin.java deleted file mode 100644 index fbbb5f4..0000000 --- a/src/client/java/net/respawnbackoff/mixin/ToastManagerMixin.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.respawnbackoff.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import net.minecraft.client.gui.GuiGraphics; -import net.respawnbackoff.client.RespawnBackoffClient; - -/** - * Intermediary name for {@code net.minecraft.client.toast.ToastManager} (Mojang mappings hide this on compile classpath). - */ -@Mixin(targets = "net.minecraft.class_374") -public class ToastManagerMixin { - @Inject(method = "method_1996", at = @At("RETURN")) - private void respawn_backoff$afterToasts(GuiGraphics graphics, CallbackInfo ci) { - RespawnBackoffClient.renderPenaltyOverlay(graphics); - } -} diff --git a/src/main/resources/respawn_backoff.mixins.json b/src/main/resources/respawn_backoff.mixins.json index 0d23f03..7f4bd1d 100644 --- a/src/main/resources/respawn_backoff.mixins.json +++ b/src/main/resources/respawn_backoff.mixins.json @@ -6,7 +6,7 @@ "ServerPlayerGameModeMixin" ], "client": [ - "ToastManagerMixin" + "GuiMixin" ], "injectors": { "defaultRequire": 1