Fix MC-154214 (#2195)

This should resolve unloading issues.
This commit is contained in:
Spottedleaf 2019-06-19 15:48:48 -07:00 committed by Zach
parent d9c4f8f67b
commit 55aa29c700
3 changed files with 52 additions and 2 deletions

View File

@ -1,4 +1,4 @@
From 66c4bd93d02eff2e8d86242544bf26e251af3adc Mon Sep 17 00:00:00 2001
From 27e5668efea88ccb9b7f77a1d7222b6b9f2ac65a Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Sat, 15 Jun 2019 08:54:33 -0700
Subject: [PATCH] Fix World#isChunkGenerated calls

View File

@ -1,4 +1,4 @@
From 04c4f0e5dc5048071fb5fc42dac2a2302091c670 Mon Sep 17 00:00:00 2001
From 69cdbe91b7cd74fedd4c1cb6eb5d405dca1deaca Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Sat, 15 Jun 2019 10:28:25 -0700
Subject: [PATCH] Show blockstate location if we failed to read it

View File

@ -0,0 +1,50 @@
From 12a8af6c9ac2c8c30a0723cc70b6435ae7f03d01 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 705ca68798..799c134e4b 100644
--- a/src/main/java/net/minecraft/server/ChunkMapDistance.java
+++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java
@@ -367,12 +367,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.m.a(ChunkTaskQueueSorter.a(() -> { // Paper - decompile fix
ChunkMapDistance.this.p.execute(() -> {
+ // Paper start - Fix MC-154214
+ if (!this.inRange(this.getNearestDistanceFromPlayerMap().get(chunkPosition))) {
+ return;
+ }
+ // Paper end
ChunkMapDistance.this.a(i, ticket);
ChunkMapDistance.this.o.add(i);
});
@@ -416,6 +422,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;
}
@@ -463,7 +470,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.21.0