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; + } }