replace server tick/world gen tick with a timer

This commit is contained in:
James Seibel
2025-11-15 09:50:05 -06:00
parent d44152dc46
commit 254f51ea5e
11 changed files with 18 additions and 123 deletions
@@ -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);
@@ -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)
{
@@ -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;
}
}
}
@@ -9,8 +9,7 @@
"server.MixinServerPlayer",
"server.MixinTracingExecutor",
"server.MixinUtilBackgroundThread",
"server.MixinLevelTicks",
"server.MixinMinecraftServer"
"server.MixinLevelTicks"
],
"client": [
"client.MixinClientLevel",
@@ -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)
@@ -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;
}
}
}
@@ -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",
@@ -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)
@@ -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;
}
}
}
@@ -9,8 +9,7 @@
"server.MixinTFChunkGenerator",
"server.MixinTracingExecutor",
"server.MixinUtilBackgroundThread",
"server.MixinLevelTicks",
"server.MixinMinecraftServer"
"server.MixinLevelTicks"
],
"client": [
"client.MixinClientPacketListener",