diff --git a/sources/src/main/java/io/akarin/server/mixin/bootstrap/MixinRestartCommand.java b/sources/src/main/java/io/akarin/server/mixin/bootstrap/MixinRestartCommand.java new file mode 100644 index 000000000..be57ba0e1 --- /dev/null +++ b/sources/src/main/java/io/akarin/server/mixin/bootstrap/MixinRestartCommand.java @@ -0,0 +1,21 @@ +package io.akarin.server.mixin.bootstrap; + +import org.spigotmc.RestartCommand; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; + +import io.akarin.api.internal.Akari; +import io.akarin.server.core.AkarinGlobalConfig; + +@Mixin(value = RestartCommand.class, remap = false) +public abstract class MixinRestartCommand { + @Inject(method = "restart()V", at = @At("HEAD")) + public static void beforeRestart() { + if (AkarinGlobalConfig.noResponseDoGC) { + Akari.logger.warn("Attempting to garbage collect, may takes a few seconds"); + System.runFinalization(); + System.gc(); + } + } +} diff --git a/sources/src/main/java/io/akarin/server/mixin/bootstrap/Watchcat.java b/sources/src/main/java/io/akarin/server/mixin/bootstrap/Watchcat.java index cf7d432cf..6c6fb6ac6 100644 --- a/sources/src/main/java/io/akarin/server/mixin/bootstrap/Watchcat.java +++ b/sources/src/main/java/io/akarin/server/mixin/bootstrap/Watchcat.java @@ -17,7 +17,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import io.akarin.server.core.AkarinGlobalConfig; import net.minecraft.server.MinecraftServer; @Mixin(value = WatchdogThread.class, remap = false) @@ -75,11 +74,7 @@ public abstract class Watchcat extends Thread { } log.log(Level.SEVERE, "------------------------------"); - if (AkarinGlobalConfig.noResponseDoGC) { - log.log(Level.SEVERE, "Attempting to garbage collect, may takes a few seconds"); - System.gc(); - } - if (restart) RestartCommand.restart(); + if (restart) RestartCommand.restart(); // GC Inlined break; } diff --git a/sources/src/main/resources/mixins.akarin.core.json b/sources/src/main/resources/mixins.akarin.core.json index 00cc391eb..b84656f73 100644 --- a/sources/src/main/resources/mixins.akarin.core.json +++ b/sources/src/main/resources/mixins.akarin.core.json @@ -11,6 +11,7 @@ "bootstrap.MixinMetrics", "bootstrap.ParallelRegistry", "bootstrap.MetricsBootstrap", + "bootstrap.MixinRestartCommand", "core.MixinMCUtil", "core.MixinCommandBan", diff --git a/work/Paper b/work/Paper index f84037334..6ea9d3a5c 160000 --- a/work/Paper +++ b/work/Paper @@ -1 +1 @@ -Subproject commit f840373345d70d213b44cc15db0bbf008138253a +Subproject commit 6ea9d3a5c23a524ea88dd71ecad910aee50efd17