From cdca7723a73c15282bacc3bc3ed167948a3061d7 Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Thu, 23 Jan 2025 23:21:13 +0500 Subject: [PATCH] Ignore local chunks if realtime updates are enabled --- .../distanthorizons/core/api/internal/SharedApi.java | 9 +++++++++ .../core/level/AbstractDhServerLevel.java | 3 +-- .../seibel/distanthorizons/core/level/DhClientLevel.java | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java index 09da292b5..6553720b1 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java @@ -25,6 +25,7 @@ import com.seibel.distanthorizons.core.Initializer; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.generation.DhLightingEngine; +import com.seibel.distanthorizons.core.level.DhClientLevel; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.logging.f3.F3Screen; @@ -231,6 +232,14 @@ public class SharedApi return; } + if (dhLevel instanceof DhClientLevel) + { + if (!((DhClientLevel) dhLevel).shouldProcessLocalChunkUpdates()) + { + return; + } + } + // shoudln't normally happen, but just in case if (UPDATE_POS_MANAGER.contains(chunkWrapper.getChunkPos())) { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhServerLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhServerLevel.java index b843c0135..f7bedcc62 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhServerLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhServerLevel.java @@ -278,8 +278,7 @@ public abstract class AbstractDhServerLevel extends AbstractDhLevel implements I Vec3d playerPosition = serverPlayerState.getServerPlayer().getPosition(); int distanceFromPlayer = DhSectionPos.getChebyshevSignedBlockDistance(data.getPos(), new DhBlockPos2D((int) playerPosition.x, (int) playerPosition.z)) / 16; - if (distanceFromPlayer >= serverPlayerState.getServerPlayer().getViewDistance() - && distanceFromPlayer <= serverPlayerState.sessionConfig.getMaxUpdateDistanceRadius()) + if (distanceFromPlayer <= serverPlayerState.sessionConfig.getMaxUpdateDistanceRadius()) { serverPlayerState.fullDataPayloadSender.sendInChunks(payload, () -> { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java index 314078b1b..a34a7560f 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java @@ -283,6 +283,8 @@ public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel return (renderState != null) ? renderState.renderBufferHandler : null; } + public boolean shouldProcessLocalChunkUpdates() { return this.networkState == null || !this.networkState.sessionConfig.isRealTimeUpdatesEnabled(); } + //===========//