From 7479f80f8319996139a68e7df7bac6afb2f62164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=9D=E5=A4=8F=E5=90=8C=E5=AD=A6?= <2411829240@qq.com> Date: Sun, 22 Oct 2023 23:51:05 +0800 Subject: [PATCH] keep dialog boxes unique --- .../mixin/mixins/early/MixinMinecraft_ConfirmExit.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/dreammaster/mixin/mixins/early/MixinMinecraft_ConfirmExit.java b/src/main/java/com/dreammaster/mixin/mixins/early/MixinMinecraft_ConfirmExit.java index dfca7577f..bbfd5646c 100644 --- a/src/main/java/com/dreammaster/mixin/mixins/early/MixinMinecraft_ConfirmExit.java +++ b/src/main/java/com/dreammaster/mixin/mixins/early/MixinMinecraft_ConfirmExit.java @@ -23,6 +23,9 @@ public class MixinMinecraft_ConfirmExit { @Unique private boolean dreamcraft$isCloseRequested; + @Unique + private boolean dreamcraft$waitingDialogQuit; + @ModifyExpressionValue( method = "runGameLoop", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/Display;isCloseRequested()Z", remap = false)) @@ -33,7 +36,9 @@ public class MixinMinecraft_ConfirmExit { if (this.dreamcraft$isCloseRequested) { return true; } + if (dreamcraft$waitingDialogQuit) return false; if (isCloseRequested) { + dreamcraft$waitingDialogQuit = true; new Thread(() -> { final JFrame frame = new JFrame(); frame.setAlwaysOnTop(true); @@ -50,6 +55,7 @@ public class MixinMinecraft_ConfirmExit { if (result == JOptionPane.YES_OPTION) { this.dreamcraft$isCloseRequested = true; } + dreamcraft$waitingDialogQuit = false; }).start(); return false; }