diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java
index f347086e7..f9836416c 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java
@@ -138,6 +138,17 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im
// world gen (data source retrieval) //
//===================================//
+ public byte lowestDataDetailLevel()
+ {
+ IFullDataSourceRetrievalQueue fullDataSourceRetrievalQueue = this.worldGenQueueRef.get();
+ if (fullDataSourceRetrievalQueue == null)
+ {
+ return DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL;
+ }
+
+ return (byte) (DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL + fullDataSourceRetrievalQueue.lowestDataDetail());
+ }
+
/**
* Assigns the queue for handling world gen and does first time setup as well.
* Assumes there isn't a pre-existing queue.
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataSourceProvider.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataSourceProvider.java
index 48c2f4e8f..f9827a0b7 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataSourceProvider.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataSourceProvider.java
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core.file.fullDatafile;
+import com.google.common.cache.CacheBuilder;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.file.structure.ISaveStructure;
@@ -32,9 +33,11 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftCli
import org.jetbrains.annotations.Nullable;
import java.io.File;
+import java.util.Collections;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
/**
* Only handles {@link SyncOnLoadRequestQueue} requests (IE updating existing LODs based on a timestamp).
@@ -46,7 +49,10 @@ public class RemoteFullDataSourceProvider extends GeneratedFullDataSourceProvide
@Nullable
private final SyncOnLoadRequestQueue syncOnLoadRequestQueue;
- private final Set visitedPositions = ConcurrentHashMap.newKeySet();
+ private final Set visitedPositions = Collections.newSetFromMap(CacheBuilder.newBuilder()
+ .expireAfterWrite(20, TimeUnit.MINUTES)
+ .build()
+ .asMap());
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java
index f52d623fb..8fdf59012 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java
@@ -219,10 +219,9 @@ public class FullDataSourceRequestHandler
{
if (this.fullDataSourceProvider().isFullyGenerated(fullDataSource.columnGenerationSteps))
{
- LOGGER.info("sending - complete [" + DhSectionPos.toString(pos) + "]");
requestGroup.fullDataSource = fullDataSource;
}
- else if (!this.serverLevel.isNSizedGenerationSupported() && DhSectionPos.getDetailLevel(pos) > DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL)
+ else if (DhSectionPos.getDetailLevel(pos) > this.serverLevel.serverside.fullDataFileHandler.lowestDataDetailLevel())
{
// Make this group unavailable for adding into
this.requestGroupsByPos.remove(pos);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/requests/ExceptionMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/requests/ExceptionMessage.java
index 2d3a2c049..68d3ec123 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/requests/ExceptionMessage.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/requests/ExceptionMessage.java
@@ -30,7 +30,6 @@ import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
import java.util.List;
-// TODO appears to be useless yelling at user
public class ExceptionMessage extends AbstractTrackableMessage
{
private static final List> EXCEPTION_LIST = new ArrayList>()