Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ pluginManagement {
}

plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.12'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.18'
}


12 changes: 12 additions & 0 deletions src/main/java/serverutils/watchdog/ServerHangWatchdog.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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<Boolean> 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);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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();
}
}