Prevent auto-pause while pregen is running

This commit is contained in:
s809
2025-11-11 23:48:17 +05:00
parent aec28854a3
commit 8d9b5f66fa
9 changed files with 104 additions and 4 deletions
@@ -396,4 +396,10 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra
}
}
@Override
public void setPreventAutoPause(boolean preventAutoPause)
{
throw new UnsupportedOperationException();
}
}
@@ -11,6 +11,7 @@ public class MinecraftServerWrapper implements IMinecraftSharedWrapper
public static final MinecraftServerWrapper INSTANCE = new MinecraftServerWrapper();
public DedicatedServer dedicatedServer = null;
public boolean preventAutoPause = false;
//=============//
@@ -49,4 +50,10 @@ public class MinecraftServerWrapper implements IMinecraftSharedWrapper
return this.dedicatedServer.getPlayerCount();
}
@Override
public void setPreventAutoPause(boolean preventAutoPause)
{
this.preventAutoPause = preventAutoPause;
}
}
@@ -0,0 +1,28 @@
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,7 +9,8 @@
"server.MixinServerPlayer",
"server.MixinTracingExecutor",
"server.MixinUtilBackgroundThread",
"server.MixinLevelTicks"
"server.MixinLevelTicks",
"server.MixinMinecraftServer"
],
"client": [
"client.MixinClientLevel",
@@ -0,0 +1,28 @@
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;
}
}
}
@@ -8,7 +8,8 @@
"server.MixinTFChunkGenerator",
"server.MixinChunkMap",
"server.MixinServerPlayer",
"server.MixinEntity"
"server.MixinEntity",
"server.MixinMinecraftServer"
],
"client": [
"client.MixinClientPacketListener",
@@ -0,0 +1,28 @@
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,7 +9,8 @@
"server.MixinTFChunkGenerator",
"server.MixinTracingExecutor",
"server.MixinUtilBackgroundThread",
"server.MixinLevelTicks"
"server.MixinLevelTicks",
"server.MixinMinecraftServer"
],
"client": [
"client.MixinClientPacketListener",