From a71692ec6aeb7abe087da3831528e7cbadf2bfc0 Mon Sep 17 00:00:00 2001 From: Eccys <73040912+Eccys@users.noreply.github.com> Date: Sun, 6 Sep 2026 22:38:17 +0000 Subject: [PATCH] Fix chat submission closing screens opened by commands --- .../meteorclient/mixin/ChatScreenMixin.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatScreenMixin.java index b0301867a26..55e0ca7ff01 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChatScreenMixin.java @@ -5,10 +5,13 @@ package meteordevelopment.meteorclient.mixin; +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.BetterChat; +import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.gui.screens.Screen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -24,4 +27,10 @@ public abstract class ChatScreenMixin { private void onInit(CallbackInfo ci) { if (Modules.get().get(BetterChat.class).isInfiniteChatBox()) input.setMaxLength(Integer.MAX_VALUE); } + + @WrapWithCondition(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V")) + private boolean onCloseChat(Gui gui, Screen screen) { + // Commands can replace the chat screen, e.g. with a connection screen when reconnecting. + return gui.screen() == (Object) this; + } }