diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkPosQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkPosQueue.java index 34df639a0..ad1574475 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkPosQueue.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkPosQueue.java @@ -2,6 +2,7 @@ package com.seibel.distanthorizons.core.api.internal.chunkUpdating; import com.seibel.distanthorizons.core.api.internal.SharedApi; import com.seibel.distanthorizons.core.pos.DhChunkPos; +import org.jetbrains.annotations.Nullable; import java.util.Comparator; import java.util.concurrent.ConcurrentHashMap; @@ -105,6 +106,7 @@ public class ChunkPosQueue this.furthestQueue.remove(closest); return this.updateDataByChunkPos.remove(closest); } + @Nullable public ChunkUpdateData popFurthest() { if (this.furthestQueue.isEmpty()) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkUpdateQueueManager.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkUpdateQueueManager.java index 528a63ea5..6901b69c8 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkUpdateQueueManager.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkUpdateQueueManager.java @@ -5,6 +5,7 @@ import com.google.common.cache.CacheBuilder; import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.seibel.distanthorizons.core.api.internal.SharedApi; import com.seibel.distanthorizons.core.config.Config; +import com.seibel.distanthorizons.core.enums.EMinecraftColor; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.multiplayer.client.SyncOnLoadRequestQueue; import com.seibel.distanthorizons.core.pos.DhChunkPos; @@ -94,7 +95,10 @@ public class ChunkUpdateQueueManager if (remainingSlots <= 0) { ChunkUpdateData removedData = queue.popFurthest(); - this.queuedChunkWrapperByChunkPos.remove(removedData.chunkWrapper.getChunkPos()); + if (removedData != null) + { + this.queuedChunkWrapperByChunkPos.remove(removedData.chunkWrapper.getChunkPos()); + } } queue.addItem(pos,updateData); @@ -116,7 +120,7 @@ public class ChunkUpdateQueueManager { lastOverloadedLogMessageMsTime = System.currentTimeMillis(); - String message = "\u00A76" + "Distant Horizons overloaded, too many chunks queued for LOD processing. " + "\u00A7r" + + String message = EMinecraftColor.ORANGE + "Distant Horizons overloaded, too many chunks queued for LOD processing. " + EMinecraftColor.CLEAR_FORMATTING + "\nThis may result in holes in your LODs. " + "\nFix: move through the world slower, decrease your vanilla render distance, slow down your world pre-generator (IE Chunky), or increase the Distant Horizons' CPU thread counts. " + "\nMax queue count [" + SharedApi.CHUNK_UPDATE_QUEUE_MANAGER.maxSize + "] ([" + SharedApi.MAX_UPDATING_CHUNK_COUNT_PER_THREAD_AND_PLAYER + "] per thread+players).";