diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/Main_ServerShutdownThreadMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/Main_ServerShutdownThreadMixin.java new file mode 100644 index 00000000..cce0d2b6 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/Main_ServerShutdownThreadMixin.java @@ -0,0 +1,17 @@ +package io.izzel.arclight.common.mixin.core.server; + +import net.minecraft.server.MinecraftServer; +import org.spigotmc.AsyncCatcher; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(targets = "net/minecraft/server/Main$1") +public class Main_ServerShutdownThreadMixin { + + @Redirect(method = "run", at = @At(value = "INVOKE", remap = true, target = "Lnet/minecraft/server/MinecraftServer;halt(Z)V")) + private void arclight$shutdown(MinecraftServer instance, boolean b) { + AsyncCatcher.enabled = false; + instance.close(); + } +} diff --git a/arclight-common/src/main/resources/mixins.arclight.core.json b/arclight-common/src/main/resources/mixins.arclight.core.json index 051ecf1a..33b3788e 100644 --- a/arclight-common/src/main/resources/mixins.arclight.core.json +++ b/arclight-common/src/main/resources/mixins.arclight.core.json @@ -49,6 +49,7 @@ "network.rcon.RConConsoleSourceMixin", "server.BootstrapMixin", "server.CustomServerBossInfoMixin", + "server.Main_ServerShutdownThreadMixin", "server.MinecraftServerMixin", "server.PlayerAdvancementsMixin", "server.ServerFunctionManagerMixin", diff --git a/arclight-forge/build.gradle b/arclight-forge/build.gradle index 117616cd..a62f8f90 100644 --- a/arclight-forge/build.gradle +++ b/arclight-forge/build.gradle @@ -202,6 +202,7 @@ task runProdServer(type: JavaExec) { classpath = files(tasks.jar) systemProperties 'terminal.ansi': 'true' systemProperties 'mixin.debug.export': 'true' + systemProperties 'mixin.dumpTargetOnFailure': 'true' systemProperties 'arclight.alwaysExtract': 'true' systemProperties 'arclight.remapper.dump': './.mixin.out/plugin_classes' workingDir System.env.ARCLIGHT_PROD_DIR ?: file('run_prod')