From 537b3b48233d46f26b359277544ee5852813f2df Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Wed, 10 Mar 2021 16:05:26 +0800 Subject: [PATCH] Restore terminal environment and run shutdown hooks --- .../server/dedicated/DedicatedServerMixin.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/dedicated/DedicatedServerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/dedicated/DedicatedServerMixin.java index 07a4e0fb..26be07f8 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/dedicated/DedicatedServerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/dedicated/DedicatedServerMixin.java @@ -7,6 +7,7 @@ import net.minecraft.command.Commands; import net.minecraft.network.rcon.RConConsoleSource; import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.server.dedicated.PendingCommand; +import net.minecrell.terminalconsole.TerminalConsoleAppender; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v.CraftServer; import org.bukkit.craftbukkit.v.command.CraftRemoteConsoleCommandSender; @@ -23,6 +24,8 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.io.IOException; + @Mixin(DedicatedServer.class) public abstract class DedicatedServerMixin extends MinecraftServerMixin { @@ -80,15 +83,12 @@ public abstract class DedicatedServerMixin extends MinecraftServerMixin { @Inject(method = "systemExitNow", at = @At("RETURN")) public void arclight$exitNow(CallbackInfo ci) { - new Thread(() -> { - try { - Thread.sleep(5000); - } catch (InterruptedException ignored) { - } finally { - Runtime.getRuntime().halt(0); - } - }, "Exit Thread").start(); - System.exit(0); + try { + TerminalConsoleAppender.close(); + } catch (IOException e) { + e.printStackTrace(); + } + new Thread(() -> System.exit(0), "Exit Thread").start(); } /**