diff --git a/paper-server/patches/sources/net/minecraft/server/level/DistanceManager.java.patch b/paper-server/patches/sources/net/minecraft/server/level/DistanceManager.java.patch index eadab866c..2ac4d5bef 100644 --- a/paper-server/patches/sources/net/minecraft/server/level/DistanceManager.java.patch +++ b/paper-server/patches/sources/net/minecraft/server/level/DistanceManager.java.patch @@ -57,18 +57,16 @@ private SortedArraySet> getTickets(long chunkPos) { return this.tickets.computeIfAbsent(chunkPos, l -> SortedArraySet.create(4)); -@@ -217,8 +_,12 @@ +@@ -217,8 +_,10 @@ ChunkPos chunkPos = sectionPos.chunk(); long packedChunkPos = chunkPos.toLong(); ObjectSet set = this.playersPerChunk.get(packedChunkPos); - set.remove(player); - if (set.isEmpty()) { + // Paper start - some state corruption happens here, don't crash, clean up gracefully -+ if (set != null) { -+ set.remove(player); -+ } ++ if (set != null) set.remove(player); + if (set == null || set.isEmpty()) { -+ // Paper end - some state corruption happens here, don't crash, clean up gracefully ++ // Paper end - some state corruption happens here, don't crash, clean up gracefully this.playersPerChunk.remove(packedChunkPos); this.naturalSpawnChunkCounter.update(packedChunkPos, Integer.MAX_VALUE, false); this.playerTicketManager.update(packedChunkPos, Integer.MAX_VALUE, false);