From 39391b944f495b92b36f6cc9ca5a053b9cd47d76 Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Thu, 6 Jun 2024 21:25:19 +0500 Subject: [PATCH] Add toString to messages & fix incorrect call --- .../core/level/DhClientLevel.java | 6 ----- .../client/AbstractFullDataRequestQueue.java | 23 +++++++------------ .../config/AbstractMultiplayerConfig.java | 16 +++++++++++++ .../multiplayer/config/MultiplayerConfig.java | 14 ----------- .../plugin/CurrentLevelKeyMessage.java | 12 +++++++++- .../plugin/base/CloseReasonMessage.java | 9 ++++++++ .../plugin/base/ExceptionMessage.java | 9 ++++++++ .../FullDataPartialUpdateMessage.java | 10 ++++++++ .../FullDataSourceRequestMessage.java | 11 +++++++++ .../FullDataSourceResponseMessage.java | 9 ++++++++ .../session/RemotePlayerConfigMessage.java | 9 ++++++++ .../network/plugin/PluginChannelMessage.java | 14 +++++++++++ .../network/plugin/PluginChannelSession.java | 1 + .../core/network/plugin/TrackableMessage.java | 8 +++++++ .../core/sql/dto/FullDataSourceV2DTO.java | 20 +++++++++++++++- 15 files changed, 134 insertions(+), 37 deletions(-) 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 5581dac18..bdf2f3494 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 @@ -204,12 +204,6 @@ public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel if (this.worldGenModule.isWorldGenRunning()) { - ClientLevelModule.ClientRenderState renderState = this.clientside.ClientRenderStateRef.get(); - if (renderState != null && renderState.quadtree != null) - { - this.dataFileHandler.removeRetrievalRequestIf(p -> !renderState.quadtree.isSectionPosInBounds(p)); - } - this.worldGenModule.worldGenTick( new DhBlockPos2D(MC_CLIENT.getPlayerBlockPos()) .scale(MC_CLIENT.getWrappedClientLevel().getDimensionType().getTeleportationScale(this.getLevelWrapper().getDimensionType())) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataRequestQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataRequestQueue.java index d1edc76c4..f304fda1d 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataRequestQueue.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataRequestQueue.java @@ -56,8 +56,6 @@ public abstract class AbstractFullDataRequestQueue implements IDebugRenderable, private final AtomicInteger failedRequests = new AtomicInteger(); private final ConfigEntry showDebugWireframeConfig; - private final Set alreadyRequestedPositions = ConcurrentHashMap.newKeySet(); - private final SupplierBasedRateLimiter rateLimiter = new SupplierBasedRateLimiter<>(this::getRequestConcurrencyLimit); private final ScheduledExecutorService taskFinishScheduler = Executors.newScheduledThreadPool(1); @@ -90,15 +88,6 @@ public abstract class AbstractFullDataRequestQueue implements IDebugRenderable, { LodUtil.assertTrue(DhSectionPos.getDetailLevel(sectionPos) == DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL, "Only highest-detail sections are allowed."); - // check if this is a duplicate task - if (this.alreadyRequestedPositions.contains(sectionPos)) - { - // temporary solution to prevent requesting the same section multiple times - LOGGER.debug("Duplicate section " + sectionPos + ". Skipping..."); - return CompletableFuture.completedFuture(false); - } - this.alreadyRequestedPositions.add(sectionPos); - RequestQueueEntry entry = new RequestQueueEntry(chunkDataConsumer, clientTimestamp); this.waitingTasks.put(sectionPos, entry); return entry.future; @@ -141,12 +130,13 @@ public abstract class AbstractFullDataRequestQueue implements IDebugRenderable, if (removeIf.accept(pos)) { + LOGGER.debug("Removing request " + mapEntry.getKey() + "..."); + entry.future.cancel(false); if (entry.request != null) { entry.request.cancel(false); } - this.alreadyRequestedPositions.remove(pos); } } } @@ -183,7 +173,10 @@ public abstract class AbstractFullDataRequestQueue implements IDebugRenderable, long sectionPos = mapEntry.getKey(); RequestQueueEntry entry = mapEntry.getValue(); - CompletableFuture request = this.networkState.getSession().sendRequest(new FullDataSourceRequestMessage(this.level.getLevelWrapper(), sectionPos, entry.updateTimestamp), FullDataSourceResponseMessage.class); + CompletableFuture request = this.networkState.getSession().sendRequest( + new FullDataSourceRequestMessage(this.level.getLevelWrapper(), sectionPos, entry.updateTimestamp), + FullDataSourceResponseMessage.class + ); entry.request = request; request.handleAsync((response, throwable) -> { @@ -192,13 +185,13 @@ public abstract class AbstractFullDataRequestQueue implements IDebugRenderable, try { + this.waitingTasks.remove(sectionPos); + if (throwable != null) { throw throwable; } - this.waitingTasks.remove(sectionPos); - if (response.dataSourceDto != null) { FullDataSourceV2 fullDataSource = response.dataSourceDto.createPooledDataSource(this.level.getLevelWrapper()); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/config/AbstractMultiplayerConfig.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/config/AbstractMultiplayerConfig.java index 341780b8d..a3c834406 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/config/AbstractMultiplayerConfig.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/config/AbstractMultiplayerConfig.java @@ -1,5 +1,6 @@ package com.seibel.distanthorizons.core.multiplayer.config; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.core.network.protocol.INetworkObject; import io.netty.buffer.ByteBuf; @@ -25,4 +26,19 @@ public abstract class AbstractMultiplayerConfig implements INetworkObject out.writeInt(this.getLoginDataSyncRCLimit()); } + + @Override + public String toString() + { + return MoreObjects.toStringHelper(this) + .add("renderDistanceRadius", this.getRenderDistanceRadius()) + .add("distantGenerationEnabled", this.isDistantGenerationEnabled()) + .add("fullDataRequestConcurrencyLimit", this.getFullDataRequestConcurrencyLimit()) + .add("genTaskPriorityRequestRateLimit", this.getGenTaskPriorityRequestRateLimit()) + .add("realTimeUpdatesEnabled", this.isRealTimeUpdatesEnabled()) + .add("loginDataSyncEnabled", this.isLoginDataSyncEnabled()) + .add("loginDataSyncRCLimit", this.getLoginDataSyncRCLimit()) + .toString(); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/config/MultiplayerConfig.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/config/MultiplayerConfig.java index 88c10e848..cdb08d678 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/config/MultiplayerConfig.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/config/MultiplayerConfig.java @@ -41,18 +41,4 @@ public class MultiplayerConfig extends AbstractMultiplayerConfig this.loginDataSyncRCLimit = in.readInt(); } - @Override - public String toString() - { - return "MultiplayerConfig{" + - "renderDistanceRadius=" + this.renderDistanceRadius + - ", distantGenerationEnabled=" + this.distantGenerationEnabled + - ", fullDataRequestConcurrencyLimit=" + this.fullDataRequestConcurrencyLimit + - ", genTaskPriorityRequestRateLimit=" + this.genTaskPriorityRequestRateLimit + - ", realTimeUpdatesEnabled=" + this.realTimeUpdatesEnabled + - ", loginDataSyncEnabled=" + this.loginDataSyncEnabled + - ", loginDataSyncRCLimit=" + this.loginDataSyncRCLimit + - '}'; - } - } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/CurrentLevelKeyMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/CurrentLevelKeyMessage.java index cf61f3e36..7f1ec7177 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/CurrentLevelKeyMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/CurrentLevelKeyMessage.java @@ -1,5 +1,6 @@ package com.seibel.distanthorizons.core.network.messages.plugin; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage; import io.netty.buffer.ByteBuf; @@ -29,4 +30,13 @@ public class CurrentLevelKeyMessage extends PluginChannelMessage this.deleteExistingData = in.readBoolean(); } -} + + @Override + public MoreObjects.ToStringHelper toStringHelper() + { + return super.toStringHelper() + .add("levelKey", this.levelKey) + .add("deleteExistingData", this.deleteExistingData); + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/base/CloseReasonMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/base/CloseReasonMessage.java index 42ef502c4..367a609a8 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/base/CloseReasonMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/base/CloseReasonMessage.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.network.messages.plugin.base; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage; import io.netty.buffer.ByteBuf; @@ -38,4 +39,12 @@ public class CloseReasonMessage extends PluginChannelMessage @Override public void decode(ByteBuf in) { this.reason = this.readString(in); } + + @Override + public MoreObjects.ToStringHelper toStringHelper() + { + return super.toStringHelper() + .add("reason", this.reason); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/base/ExceptionMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/base/ExceptionMessage.java index 1c305aa0c..d10589f5c 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/base/ExceptionMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/base/ExceptionMessage.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.network.messages.plugin.base; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.core.network.exceptions.InvalidLevelException; import com.seibel.distanthorizons.core.network.exceptions.InvalidSectionPosException; import com.seibel.distanthorizons.core.network.exceptions.RateLimitedException; @@ -62,4 +63,12 @@ public class ExceptionMessage extends TrackableMessage this.exception = exceptionMap.get(id).getDeclaredConstructor(String.class).newInstance(message); } + + @Override + public MoreObjects.ToStringHelper toStringHelper() + { + return super.toStringHelper() + .add("exception", this.exception); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataPartialUpdateMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataPartialUpdateMessage.java index 7273380c7..321901d88 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataPartialUpdateMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataPartialUpdateMessage.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.network.messages.plugin.fullData; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; @@ -74,4 +75,13 @@ public class FullDataPartialUpdateMessage extends PluginChannelMessage implement this.dataSourceDto = INetworkObject.decodeToInstance(new FullDataSourceV2DTO(), in); } + + @Override + public MoreObjects.ToStringHelper toStringHelper() + { + return super.toStringHelper() + .add("levelName", this.levelName) + .add("dataSourceDto", this.dataSourceDto); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataSourceRequestMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataSourceRequestMessage.java index 329151493..8d030a7af 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataSourceRequestMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataSourceRequestMessage.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.network.messages.plugin.fullData; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.core.network.messages.plugin.ILevelRelatedMessage; import com.seibel.distanthorizons.core.network.plugin.TrackableMessage; import com.seibel.distanthorizons.core.network.protocol.INetworkObject; @@ -68,4 +69,14 @@ public class FullDataSourceRequestMessage extends TrackableMessage implements IL this.clientTimestamp = this.readOptional(in, in::readLong); } + + @Override + public MoreObjects.ToStringHelper toStringHelper() + { + return super.toStringHelper() + .add("levelName", this.levelName) + .add("sectionPos", this.sectionPos) + .add("clientTimestamp", this.clientTimestamp); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataSourceResponseMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataSourceResponseMessage.java index bcb2ed00a..74176220d 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataSourceResponseMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/fullData/FullDataSourceResponseMessage.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.network.messages.plugin.fullData; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; @@ -71,4 +72,12 @@ public class FullDataSourceResponseMessage extends TrackableMessage this.dataSourceDto = this.readOptional(in, () -> INetworkObject.decodeToInstance(new FullDataSourceV2DTO(), in)); } + + @Override + public MoreObjects.ToStringHelper toStringHelper() + { + return super.toStringHelper() + .add("dataSourceDto", this.dataSourceDto); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/session/RemotePlayerConfigMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/session/RemotePlayerConfigMessage.java index 930a8d41a..3cb0f6795 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/session/RemotePlayerConfigMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/plugin/session/RemotePlayerConfigMessage.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.network.messages.plugin.session; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.core.multiplayer.config.AbstractMultiplayerConfig; import com.seibel.distanthorizons.core.multiplayer.config.MultiplayerConfig; import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage; @@ -38,4 +39,12 @@ public class RemotePlayerConfigMessage extends PluginChannelMessage @Override public void decode(ByteBuf in) { this.payload = INetworkObject.decodeToInstance(new MultiplayerConfig(), in); } + + @Override + public MoreObjects.ToStringHelper toStringHelper() + { + return super.toStringHelper() + .add("payload", this.payload); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/PluginChannelMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/PluginChannelMessage.java index 372d66d4a..003e8bc39 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/PluginChannelMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/PluginChannelMessage.java @@ -1,5 +1,6 @@ package com.seibel.distanthorizons.core.network.plugin; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.core.network.protocol.INetworkObject; import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper; @@ -23,4 +24,17 @@ public abstract class PluginChannelMessage implements INetworkObject } this.session = connection; } + + + @Override + public String toString() + { + return this.toStringHelper().toString(); + } + + public MoreObjects.ToStringHelper toStringHelper() + { + return MoreObjects.toStringHelper(this); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/PluginChannelSession.java b/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/PluginChannelSession.java index f8fe6d94a..17939b0cf 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/PluginChannelSession.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/PluginChannelSession.java @@ -51,6 +51,7 @@ public class PluginChannelSession extends NetworkEventSource try { + LOGGER.debug("Received message: " + message); this.handleMessage(message); } catch (Throwable e) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/TrackableMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/TrackableMessage.java index dd899974d..e303f934c 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/TrackableMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/plugin/TrackableMessage.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.network.plugin; +import com.google.common.base.MoreObjects; import com.google.common.collect.MapMaker; import com.seibel.distanthorizons.core.api.internal.SharedApi; import com.seibel.distanthorizons.core.network.messages.plugin.base.ExceptionMessage; @@ -80,4 +81,11 @@ public abstract class TrackableMessage extends PluginChannelMessage protected abstract void encode0(ByteBuf out) throws Exception; protected abstract void decode0(ByteBuf in) throws Exception; + + @Override public MoreObjects.ToStringHelper toStringHelper() + { + return super.toStringHelper() + .add("futureId", this.futureId); + } + } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV2DTO.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV2DTO.java index 6fb3148a4..62a69b4fc 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV2DTO.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV2DTO.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.sql.dto; +import com.google.common.base.MoreObjects; import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode; import com.seibel.distanthorizons.api.enums.config.EDhApiWorldCompressionMode; import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGenerationStep; @@ -416,7 +417,24 @@ public class FullDataSourceV2DTO implements IBaseDTO, INetworkObject @Override public Long getKey() { return this.pos; } - + @Override + public String toString() + { + return MoreObjects.toStringHelper(this) + .add("levelMinY", this.levelMinY) + .add("pos", this.pos) + .add("dataChecksum", this.dataChecksum) + .add("compressedDataByteArray", this.compressedDataByteArray) + .add("compressedColumnGenStepByteArray", this.compressedColumnGenStepByteArray) + .add("compressedWorldCompressionModeByteArray", this.compressedWorldCompressionModeByteArray) + .add("compressedMappingByteArray", this.compressedMappingByteArray) + .add("dataFormatVersion", this.dataFormatVersion) + .add("compressionModeValue", this.compressionModeValue) + .add("applyToParent", this.applyToParent) + .add("lastModifiedUnixDateTime", this.lastModifiedUnixDateTime) + .add("createdUnixDateTime", this.createdUnixDateTime) + .toString(); + } //================// // helper methods //