From d1f7563e1c33a5892e42263f6f79bbef7ff52840 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 c1fdd7b7a4..1a6fe87cd8 100644 --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java +++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java @@ -331,12 +331,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); }); @@ -380,6 +386,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; } @@ -387,7 +394,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