diff --git a/dependencies.gradle b/dependencies.gradle index 5293f853..ea663d39 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -2,18 +2,18 @@ dependencies { - api("com.github.GTNewHorizons:GTNHLib:0.9.0:dev") - compileOnly("com.github.GTNewHorizons:NotEnoughItems:2.8.48-GTNH:dev") {transitive = false} - compileOnly("com.github.GTNewHorizons:EnderIO:2.10.12:dev") {transitive = false} + api("com.github.GTNewHorizons:GTNHLib:0.9.6:dev") + compileOnly("com.github.GTNewHorizons:NotEnoughItems:2.8.55-GTNH:dev") {transitive = false} + compileOnly("com.github.GTNewHorizons:EnderIO:2.10.15:dev") {transitive = false} compileOnly("com.github.GTNewHorizons:Random-Things:2.7.1:dev") {transitive = false} compileOnly("com.github.GTNewHorizons:Navigator:1.0.17:dev") compileOnly('org.jetbrains:annotations:25.0.0') compileOnly('com.github.GTNewHorizons:Baubles-Expanded:2.2.6-GTNH:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Battlegear2:1.4.3:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Galacticraft:3.4.15-GTNH:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:TinkersConstruct:1.14.17-GTNH:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:AdventureBackpack2:1.4.7-GTNH:dev') {transitive = false} + compileOnly('com.github.GTNewHorizons:TinkersConstruct:1.14.24-GTNH:dev') {transitive = false} + compileOnly('com.github.GTNewHorizons:AdventureBackpack2:1.4.12-GTNH:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Minecraft-Backpack-Mod:2.6.7-GTNH:dev') {transitive = false} - runtimeOnlyNonPublishable("com.github.GTNewHorizons:waila:1.9.15:dev") + runtimeOnlyNonPublishable("com.github.GTNewHorizons:waila:1.19.21:dev") } diff --git a/settings.gradle b/settings.gradle index da3076b4..32896c7a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,7 +17,7 @@ pluginManagement { } plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.12' + id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.18' } diff --git a/src/main/java/serverutils/watchdog/ServerHangWatchdog.java b/src/main/java/serverutils/watchdog/ServerHangWatchdog.java index 3cdda86d..ee7328fb 100644 --- a/src/main/java/serverutils/watchdog/ServerHangWatchdog.java +++ b/src/main/java/serverutils/watchdog/ServerHangWatchdog.java @@ -34,7 +34,19 @@ public ServerHangWatchdog(DedicatedServer server) { this.maxTickTime = ((IMaxTickTimeDedicatedServer) server).serverutilities$getMaxTickTime(); } + public static void init() { + if (MinecraftServer.getServer() instanceof IMaxTickTimeDedicatedServer maxTickTimeDedicatedServer) { + if (maxTickTimeDedicatedServer.serverutilities$getMaxTickTime() > 0) { + Thread thread1 = new Thread(new ServerHangWatchdog((DedicatedServer) maxTickTimeDedicatedServer)); + thread1.setName("Server Watchdog"); + thread1.setDaemon(true); + thread1.start(); + } + } + } + public void run() { + LOGGER.info("Server watchdog thread started with max tick time of {}ms", maxTickTime); while (this.server.isServerRunning()) { long i = ((IMaxTickTimeMinecraftServer) this.server).serverutilities$getCurrentTime(); long j = MinecraftServer.getSystemTimeMillis(); diff --git a/src/mixins/java/serverutils/mixins/early/minecraft/MixinDedicatedServer_MaxTickTime.java b/src/mixins/java/serverutils/mixins/early/minecraft/MixinDedicatedServer_MaxTickTime.java index 5986132e..e82404e9 100644 --- a/src/mixins/java/serverutils/mixins/early/minecraft/MixinDedicatedServer_MaxTickTime.java +++ b/src/mixins/java/serverutils/mixins/early/minecraft/MixinDedicatedServer_MaxTickTime.java @@ -11,7 +11,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import serverutils.watchdog.IMaxTickTimeDedicatedServer; -import serverutils.watchdog.ServerHangWatchdog; @Mixin(DedicatedServer.class) @SuppressWarnings("unused") @@ -30,25 +29,24 @@ public class MixinDedicatedServer_MaxTickTime implements IMaxTickTimeDedicatedSe @Unique private long serverutilties$getLongProperty(String key, long defaultValue) { try { - return Long.parseLong(settings.getStringProperty(key, "" + defaultValue)); + return Long.parseLong(settings.getStringProperty(key, String.valueOf(defaultValue))); } catch (Exception var5) { - settings.setProperty(key, "" + defaultValue); + settings.setProperty(key, String.valueOf(defaultValue)); settings.saveProperties(); return defaultValue; } } - @Inject(method = "startServer", at = @At(value = "INVOKE", target = "Ljava/lang/System;nanoTime()J", ordinal = 1)) + @Inject( + method = "startServer", + at = @At( + value = "INVOKE", + target = "Lcpw/mods/fml/common/FMLCommonHandler;onServerStarted()V", + remap = false, + shift = At.Shift.AFTER)) public void serverutilties$startServer(CallbackInfoReturnable cir) { - // 0 default since it didn't exist before - serverutilties$maxTickTime = serverutilties$getLongProperty("max-tick-time", 0L); - - if (serverutilties$maxTickTime > 0) { - Thread thread1 = new Thread(new ServerHangWatchdog((DedicatedServer) (Object) this)); - thread1.setName("Server Watchdog"); - thread1.setDaemon(true); - thread1.start(); - } + // -1 default since it didn't exist before + serverutilties$maxTickTime = serverutilties$getLongProperty("max-tick-time", -1); } } diff --git a/src/mixins/java/serverutils/mixins/early/minecraft/MixinMinecraftServer_MaxTickTime.java b/src/mixins/java/serverutils/mixins/early/minecraft/MixinMinecraftServer_MaxTickTime.java index fbfda790..ff5643a0 100644 --- a/src/mixins/java/serverutils/mixins/early/minecraft/MixinMinecraftServer_MaxTickTime.java +++ b/src/mixins/java/serverutils/mixins/early/minecraft/MixinMinecraftServer_MaxTickTime.java @@ -6,15 +6,15 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.llamalad7.mixinextras.sugar.Local; - import serverutils.watchdog.IMaxTickTimeMinecraftServer; +import serverutils.watchdog.ServerHangWatchdog; @SuppressWarnings("unused") @Mixin(MinecraftServer.class) -public class MixinMinecraftServer_MaxTickTime implements IMaxTickTimeMinecraftServer { +public abstract class MixinMinecraftServer_MaxTickTime implements IMaxTickTimeMinecraftServer { @Unique protected long serverutilties$currentTime = System.currentTimeMillis(); @@ -24,23 +24,22 @@ public class MixinMinecraftServer_MaxTickTime implements IMaxTickTimeMinecraftSe return serverutilties$currentTime; } - @Inject( + @Redirect( method = "run", - at = @At( - value = "INVOKE_ASSIGN", - target = "Lnet/minecraft/server/MinecraftServer;getSystemTimeMillis()J", - ordinal = 0)) - public void serverutilities$run(CallbackInfo ci, @Local(name = "i") long i) { - serverutilties$currentTime = i; + at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getSystemTimeMillis()J")) + public long serverutilities$run() { + long ret = MinecraftServer.getSystemTimeMillis(); + serverutilties$currentTime = ret; + return ret; } @Inject( method = "run", at = @At( - value = "INVOKE_ASSIGN", - target = "Lnet/minecraft/server/MinecraftServer;getSystemTimeMillis()J", - ordinal = 1)) - public void serverutilities$run2(CallbackInfo ci, @Local(name = "j") long j) { - serverutilties$currentTime = j; + value = "INVOKE", + target = "Lnet/minecraft/server/MinecraftServer;func_147138_a(Lnet/minecraft/network/ServerStatusResponse;)V", + shift = At.Shift.AFTER)) + public void serverutilities$runWatchdog(CallbackInfo ci) { + ServerHangWatchdog.init(); } }