Avoid duplicate poi entries from the first section (#9235)

This commit is contained in:
Lulu13022002 2023-06-09 04:14:30 +02:00
parent 2d17363881
commit ae7ed5a3b3

View File

@ -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<Holder<PoiType>, Set<PoiRecord>> 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<Holder<PoiType>, Set<PoiRecord>> sectionData = poiSection.getData();
+ if (sectionData.isEmpty()) {