Prevent auto-pause while pregen is running

This commit is contained in:
s809
2025-11-11 23:48:13 +05:00
parent 2a49fdee7f
commit 91dffa3c3e
2 changed files with 9 additions and 0 deletions
@@ -5,6 +5,7 @@ import com.google.common.cache.CacheBuilder;
import com.google.common.cache.RemovalCause;
import com.seibel.distanthorizons.core.api.internal.SharedApi;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.file.fullDatafile.GeneratedFullDataSourceProvider;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
@@ -12,6 +13,7 @@ import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos2D;
import com.seibel.distanthorizons.core.util.FormatUtil;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.objects.RollingAverage;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper;
import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
@@ -28,6 +30,8 @@ public class PregenManager
{
protected static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftSharedWrapper MC_SERVER = SingletonInjector.INSTANCE.get(IMinecraftSharedWrapper.class);
private final AtomicReference<PregenState> pregenFuture = new AtomicReference<>();
@@ -51,8 +55,11 @@ public class PregenManager
pregenState.completeExceptionally(new IllegalStateException("Pregen is already running."));
return pregenState;
}
MC_SERVER.setPreventAutoPause(true);
pregenState.whenComplete((result, throwable) -> {
this.pregenFuture.set(null);
MC_SERVER.setPreventAutoPause(false);
});
pregenState.fillPendingQueue();
@@ -32,4 +32,6 @@ public interface IMinecraftSharedWrapper extends IBindable
int getPlayerCount();
void setPreventAutoPause(boolean preventAutoPause);
}