From 254f51ea5eb7ddb44e4747901076001610447b6d Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 15 Nov 2025 09:50:05 -0600 Subject: [PATCH] replace server tick/world gen tick with a timer --- .../BatchGenerationEnvironment.java | 13 +++++++++ coreSubProjects | 2 +- .../fabric/FabricServerProxy.java | 4 --- .../mixins/server/MixinMinecraftServer.java | 28 ------------------- .../DistantHorizons.fabric.mixins.json | 3 +- .../forge/ForgeServerProxy.java | 10 ------- .../mixins/server/MixinMinecraftServer.java | 28 ------------------- .../DistantHorizons.forge.mixins.json | 5 ++-- .../neoforge/NeoforgeServerProxy.java | 17 ----------- .../mixins/server/MixinMinecraftServer.java | 28 ------------------- .../DistantHorizons.neoforge.mixins.json | 3 +- 11 files changed, 18 insertions(+), 123 deletions(-) delete mode 100644 fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinMinecraftServer.java delete mode 100644 forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinMinecraftServer.java delete mode 100644 neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/server/MixinMinecraftServer.java diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java index 69f5155a5..19d03bbb7 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java @@ -537,6 +537,19 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv PREF_LOGGER.debug(genEvent.timer.toString()); } } + catch (CompletionException e) + { + Throwable actualThrowable = e.getCause(); + + // interrupts mean the world generator is being shut down, no need to log that + boolean isShutdownException = + actualThrowable instanceof InterruptedException + || actualThrowable instanceof ClosedByInterruptException; + if (!isShutdownException) + { + EVENT_LOGGER.error("Completion error during world gen for min chunk pos ["+genEvent.minPos+"], error: ["+e.getMessage()+"].", e); + } + } catch (Exception e) { EVENT_LOGGER.error("Unexpected error during world gen for min chunk pos ["+genEvent.minPos+"], error: ["+e.getMessage()+"].", e); diff --git a/coreSubProjects b/coreSubProjects index eea5198fb..3257ae848 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit eea5198fb6cda0196ea714254f2515a40e72fc33 +Subproject commit 3257ae84806d6627567e5b9e0f29eebc8518f4ba diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java index fd00d4571..7b6517fd0 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java @@ -93,10 +93,6 @@ public class FabricServerProxy implements AbstractModInitializer.IEventProxy /* Register the mod needed event callbacks */ - // ServerTickEvent - ServerTickEvents.END_SERVER_TICK.register((server) -> SERVER_API.serverTickEvent()); - - // can be enabled to test overrides/events without having to build a separate API project if (false) { diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinMinecraftServer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinMinecraftServer.java deleted file mode 100644 index 29445798c..000000000 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinMinecraftServer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.seibel.distanthorizons.fabric.mixins.server; - -import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftServerWrapper; -import net.minecraft.server.MinecraftServer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.function.BooleanSupplier; - -@Mixin(MinecraftServer.class) -public class MixinMinecraftServer -{ - @Shadow - private int emptyTicks; - - @Inject(method = "tickServer", at = @At("HEAD")) - private void onTickServer(BooleanSupplier hasTimeLeft, CallbackInfo ci) - { - if (MinecraftServerWrapper.INSTANCE.preventAutoPause) - { - this.emptyTicks = 0; - } - } - -} diff --git a/fabric/src/main/resources/DistantHorizons.fabric.mixins.json b/fabric/src/main/resources/DistantHorizons.fabric.mixins.json index 5c7df8859..dca9096a5 100644 --- a/fabric/src/main/resources/DistantHorizons.fabric.mixins.json +++ b/fabric/src/main/resources/DistantHorizons.fabric.mixins.json @@ -9,8 +9,7 @@ "server.MixinServerPlayer", "server.MixinTracingExecutor", "server.MixinUtilBackgroundThread", - "server.MixinLevelTicks", - "server.MixinMinecraftServer" + "server.MixinLevelTicks" ], "client": [ "client.MixinClientLevel", diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java index 498c8a441..9d1c205f9 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java @@ -90,16 +90,6 @@ public class ForgeServerProxy implements AbstractModInitializer.IEventProxy // events // //========// - // ServerTickEvent (at end) - @SubscribeEvent - public void serverTickEvent(TickEvent.ServerTickEvent event) - { - if (event.phase == TickEvent.Phase.END) - { - this.serverApi.serverTickEvent(); - } - } - // ServerWorldLoadEvent @SubscribeEvent public void dedicatedWorldLoadEvent(#if MC_VER == MC_1_16_5 || MC_VER == MC_1_17_1 FMLServerAboutToStartEvent #else ServerAboutToStartEvent #endif event) diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinMinecraftServer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinMinecraftServer.java deleted file mode 100644 index 29445798c..000000000 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinMinecraftServer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.seibel.distanthorizons.fabric.mixins.server; - -import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftServerWrapper; -import net.minecraft.server.MinecraftServer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.function.BooleanSupplier; - -@Mixin(MinecraftServer.class) -public class MixinMinecraftServer -{ - @Shadow - private int emptyTicks; - - @Inject(method = "tickServer", at = @At("HEAD")) - private void onTickServer(BooleanSupplier hasTimeLeft, CallbackInfo ci) - { - if (MinecraftServerWrapper.INSTANCE.preventAutoPause) - { - this.emptyTicks = 0; - } - } - -} diff --git a/forge/src/main/resources/DistantHorizons.forge.mixins.json b/forge/src/main/resources/DistantHorizons.forge.mixins.json index 9d6292ade..f5842f306 100644 --- a/forge/src/main/resources/DistantHorizons.forge.mixins.json +++ b/forge/src/main/resources/DistantHorizons.forge.mixins.json @@ -6,10 +6,9 @@ "server.MixinUtilBackgroundThread", "server.MixinChunkGenerator", "server.MixinTFChunkGenerator", - "server.MixinChunkMap", + "server.MixinChunkMap", "server.MixinServerPlayer", - "server.MixinEntity", - "server.MixinMinecraftServer" + "server.MixinEntity" ], "client": [ "client.MixinClientPacketListener", diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeServerProxy.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeServerProxy.java index 351b5b081..da9fbf0b8 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeServerProxy.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeServerProxy.java @@ -68,23 +68,6 @@ public class NeoforgeServerProxy implements AbstractModInitializer.IEventProxy // events // //========// - #if MC_VER < MC_1_20_6 - @SubscribeEvent - public void serverTickEvent(TickEvent.ServerTickEvent event) - { - if (event.phase == TickEvent.Phase.END) - { - this.serverApi.serverTickEvent(); - } - } - #else - @SubscribeEvent - public void serverTickEvent(ServerTickEvent.Post event) - { - this.serverApi.serverTickEvent(); - } - #endif - // ServerWorldLoadEvent @SubscribeEvent public void dedicatedWorldLoadEvent(ServerAboutToStartEvent event) diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/server/MixinMinecraftServer.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/server/MixinMinecraftServer.java deleted file mode 100644 index 6eb0234d4..000000000 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/server/MixinMinecraftServer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.seibel.distanthorizons.neoforge.mixins.server; - -import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftServerWrapper; -import net.minecraft.server.MinecraftServer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.function.BooleanSupplier; - -@Mixin(MinecraftServer.class) -public class MixinMinecraftServer -{ - @Shadow - private int emptyTicks; - - @Inject(method = "tickServer", at = @At("HEAD")) - private void onTickServer(BooleanSupplier hasTimeLeft, CallbackInfo ci) - { - if (MinecraftServerWrapper.INSTANCE.preventAutoPause) - { - this.emptyTicks = 0; - } - } - -} diff --git a/neoforge/src/main/resources/DistantHorizons.neoforge.mixins.json b/neoforge/src/main/resources/DistantHorizons.neoforge.mixins.json index a05364de6..e0f886569 100644 --- a/neoforge/src/main/resources/DistantHorizons.neoforge.mixins.json +++ b/neoforge/src/main/resources/DistantHorizons.neoforge.mixins.json @@ -9,8 +9,7 @@ "server.MixinTFChunkGenerator", "server.MixinTracingExecutor", "server.MixinUtilBackgroundThread", - "server.MixinLevelTicks", - "server.MixinMinecraftServer" + "server.MixinLevelTicks" ], "client": [ "client.MixinClientPacketListener",