From eb409033720ee9541cc17a4a264be7efefdfd166 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Fri, 20 Feb 2026 18:11:58 +0100 Subject: [PATCH] SetScreen mixin --- .../saturnclient/mixin/SetScreenMixin.java | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/saturnclient/saturnclient/mixin/SetScreenMixin.java b/src/main/java/org/saturnclient/saturnclient/mixin/SetScreenMixin.java index 913d004..7e4e0af 100644 --- a/src/main/java/org/saturnclient/saturnclient/mixin/SetScreenMixin.java +++ b/src/main/java/org/saturnclient/saturnclient/mixin/SetScreenMixin.java @@ -4,8 +4,7 @@ import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.ui2.screens.TitleMenu; 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 org.spongepowered.asm.mixin.injection.ModifyVariable; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; @@ -13,23 +12,15 @@ import net.minecraft.client.gui.screen.TitleScreen; @Mixin(MinecraftClient.class) public class SetScreenMixin { - - private boolean replacingScreen = false; - - @Inject(method = "setScreen", at = @At("HEAD"), cancellable = true) - private void onSetScreen(Screen screen, CallbackInfo ci) { - if (replacingScreen) - return; - - @SuppressWarnings("resource") // False positive bc MinecraftClient has close() - MinecraftClient client = ((MinecraftClient) (Object) this); - - if (SaturnClientConfig.saturnTitleScreen.value - && ((screen == null && client.world == null) || screen instanceof TitleScreen)) { - replacingScreen = true; - client.setScreen(new TitleMenu()); - ci.cancel(); - replacingScreen = false; + @ModifyVariable(method = "setScreen", at = @At("HEAD"), argsOnly = true) + private Screen replaceTitleScreen(Screen screen) { + if (SaturnClientConfig.saturnTitleScreen.value) { + if (screen instanceof TitleScreen) + return new TitleMenu(); + if (screen == null && ((MinecraftClient) (Object) this).world == null) + return new TitleMenu(); } + + return screen; } } \ No newline at end of file