From 2132645f7895a363f1c726ccbe3a15639ab1d998 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Sun, 16 Jun 2019 23:30:25 -0700
Subject: [PATCH] Fix MC-154214

Avoid adding player tickets when they're out of range of the closest player

diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java
index 0c562a5f34..7a76db08fc 100644
--- a/src/main/java/net/minecraft/server/ChunkMapDistance.java
+++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java
@@ -333,12 +333,18 @@ public abstract class ChunkMapDistance {
         }
 
         private void a(long i, int j, boolean flag, boolean flag1) {
+            final long chunkPosition = i; // Paper - conflict on variable change
             if (flag != flag1) {
                 Ticket<?> ticket = new Ticket<>(TicketType.PLAYER, ChunkMapDistance.b, new ChunkCoordIntPair(i), ChunkMapDistance.this.currentTick);
 
                 if (flag1) {
                     ChunkMapDistance.this.j.a(ChunkTaskQueueSorter.a(() -> { // Paper - decompile fix
                         ChunkMapDistance.this.m.execute(() -> {
+                            // Paper start - Fix MC-154214
+                            if (!this.inRange(this.getNearestDistanceFromPlayerMap().get(chunkPosition))) {
+                                return;
+                            }
+                            // Paper end
                             ChunkMapDistance.this.a(i, ticket);
                             ChunkMapDistance.this.l.add(i);
                         });
@@ -382,6 +388,7 @@ public abstract class ChunkMapDistance {
 
         }
 
+        private final boolean inRange(int distance) { return this.c(distance); } // Paper - OBFHELPER
         private boolean c(int i) {
             return i <= this.e - 2;
         }
@@ -389,7 +396,7 @@ public abstract class ChunkMapDistance {
 
     class b extends ChunkMap {
 
-        protected final Long2ByteMap a = new Long2ByteOpenHashMap();
+        protected final Long2ByteMap a = new Long2ByteOpenHashMap(); protected final Long2ByteMap getNearestDistanceFromPlayerMap() { return this.a; } // Paper - OBFHELPER
         protected final int b;
 
         protected b(int i) {
-- 
2.22.0