From ae7ed5a3b31f8ab908db5eb196375b7142e8c070 Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Fri, 9 Jun 2023 04:14:30 +0200 Subject: [PATCH] Avoid duplicate poi entries from the first section (#9235) --- patches/server/Optimise-general-POI-access.patch | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/patches/server/Optimise-general-POI-access.patch b/patches/server/Optimise-general-POI-access.patch index fa0eed7c34..eae8a86808 100644 --- a/patches/server/Optimise-general-POI-access.patch +++ b/patches/server/Optimise-general-POI-access.patch @@ -258,10 +258,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + final int centerX = sourcePosition.getX() >> 4; + final int centerY = Mth.clamp(sourcePosition.getY() >> 4, lowerY, upperY); + final int centerZ = sourcePosition.getZ() >> 4; ++ final long centerKey = CoordinateUtils.getChunkSectionKey(centerX, centerY, centerZ); + + final LongArrayFIFOQueue queue = new LongArrayFIFOQueue(); -+ queue.enqueue(CoordinateUtils.getChunkSectionKey(centerX, centerY, centerZ)); + final LongOpenHashSet seen = new LongOpenHashSet(); ++ seen.add(centerKey); ++ queue.enqueue(centerKey); + + while (!queue.isEmpty()) { + final long key = queue.dequeueLong(); @@ -315,7 +317,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + continue; + } + -+ final PoiSection poiSection = poiSectionOptional.orElse(null); ++ final PoiSection poiSection = poiSectionOptional.get(); + + final Map, Set> sectionData = poiSection.getData(); + if (sectionData.isEmpty()) { @@ -499,10 +501,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + final int centerX = sourcePosition.getX() >> 4; + final int centerY = Mth.clamp(sourcePosition.getY() >> 4, lowerY, upperY); + final int centerZ = sourcePosition.getZ() >> 4; ++ final long centerKey = CoordinateUtils.getChunkSectionKey(centerX, centerY, centerZ); + + final LongArrayFIFOQueue queue = new LongArrayFIFOQueue(); -+ queue.enqueue(CoordinateUtils.getChunkSectionKey(centerX, centerY, centerZ)); + final LongOpenHashSet seen = new LongOpenHashSet(); ++ seen.add(centerKey); ++ queue.enqueue(centerKey); + + while (!queue.isEmpty()) { + final long key = queue.dequeueLong(); @@ -557,7 +561,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + continue; + } + -+ final PoiSection poiSection = poiSectionOptional.orElse(null); ++ final PoiSection poiSection = poiSectionOptional.get(); + + final Map, Set> sectionData = poiSection.getData(); + if (sectionData.isEmpty()) {