Updated Upstream (Paper)

Upstream has released updates that appears to apply and compile correctly

Paper Changes:
c6987e1a Peek the unload queue for chunk generation checks (#2332)
4ac69cec Bring task execution into server tick timings (#2357)
edce5384 Amend PlayerInteractAtEntityEvent javadoc for ArmorStands (#2309)
8ecd4337 Set spawning entity for fireworks spawned by a crossbow (#2358)
This commit is contained in:
William Blake Galbreath
2019-07-24 20:20:08 -05:00
parent 8f3dd0b176
commit eb13b323fd
8 changed files with 53 additions and 52 deletions

View File

@@ -1,4 +1,4 @@
From 63a3866ef5cccf783042f255d664176a0387719f Mon Sep 17 00:00:00 2001
From d984124be7de318154ca820efc6c4f94744cf007 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Sat, 13 Jul 2019 09:23:10 -0700
Subject: [PATCH] Asynchronous chunk IO and loading
@@ -159,10 +159,10 @@ and some poi tasks).
create mode 100644 src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java
diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
index 366de66657..2b8f064ba3 100644
index 92c32c48d2..f4d5db02f7 100644
--- a/src/main/java/co/aikar/timings/WorldTimingsHandler.java
+++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
@@ -52,6 +52,17 @@ public class WorldTimingsHandler {
@@ -58,6 +58,17 @@ public class WorldTimingsHandler {
public final Timing worldSaveLevel;
public final Timing chunkSaveData;
@@ -180,10 +180,10 @@ index 366de66657..2b8f064ba3 100644
public WorldTimingsHandler(World server) {
String name = server.worldData.getName() +" - ";
@@ -99,6 +110,17 @@ public class WorldTimingsHandler {
tracker2 = Timings.ofSafe(name + "tracker stage 2");
doTick = Timings.ofSafe(name + "doTick");
tickEntities = Timings.ofSafe(name + "tickEntities");
@@ -112,6 +123,17 @@ public class WorldTimingsHandler {
chunkProviderTick = Timings.ofSafe(name + "Chunk provider tick");
broadcastChunkUpdates = Timings.ofSafe(name + "Broadcast chunk updates");
countNaturalMobs = Timings.ofSafe(name + "Count natural mobs");
+
+ poiUnload = Timings.ofSafe(name + "Chunk unload - POI");
+ chunkUnload = Timings.ofSafe(name + "Chunk unload - Chunk");
@@ -2271,7 +2271,7 @@ index 0000000000..03cb8e0b32
+
+}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 775b5f7fe3..5c6f9c4809 100644
index b465136a66..0e977a8472 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -160,11 +160,137 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -2803,7 +2803,7 @@ index 23d1935dd5..14f8b61042 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index d5a9a5f069..a4bd7348eb 100644
index ab2c002bc1..57b1dd4145 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -774,6 +774,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -2853,7 +2853,7 @@ index af934ef8bc..8d18d9dd0f 100644
completablefuture = (CompletableFuture) this.statusFutures.get(i);
if (completablefuture != null) {
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index b447c49a63..594c2b9aa6 100644
index 8aa610bae0..7d2808aa29 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -62,7 +62,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -3249,7 +3249,7 @@ index b447c49a63..594c2b9aa6 100644
RegionFile regionFile = this.getRegionFile(chunkPos, false);
if (!regionFile.chunkExists(chunkPos)) {
@@ -918,17 +1105,55 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -918,18 +1105,56 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
if (status != null) {
return status;
}
@@ -3271,7 +3271,7 @@ index b447c49a63..594c2b9aa6 100644
regionFile.setStatus(chunkPos.x, chunkPos.z, ChunkRegionLoader.getStatus(compound));
+ } // Paper - async io
}
+
+ // Paper start - async io
+ // this function will not load chunk data off disk to check for status
+ // ret null for unknown, empty for empty status on disk or absent from disk
@@ -3304,10 +3304,11 @@ index b447c49a63..594c2b9aa6 100644
+ }
+ }
+ // Paper end
// Paper end
boolean isOutsideOfRange(ChunkCoordIntPair chunkcoordintpair) {
@@ -1272,6 +1497,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
+
public IChunkAccess getUnloadingChunk(int chunkX, int chunkZ) {
PlayerChunk chunkHolder = this.pendingUnload.get(ChunkCoordIntPair.pair(chunkX, chunkZ));
return chunkHolder == null ? null : chunkHolder.getAvailableChunkNow();
@@ -1277,6 +1502,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
@@ -3600,7 +3601,7 @@ index b0e6ad773e..f6c95ae8c1 100644
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index b2cfdecb4a..3e66e1782c 100644
index 917fbb35b4..dc710b2fbd 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1,9 +1,9 @@
@@ -3704,13 +3705,13 @@ index b2cfdecb4a..3e66e1782c 100644
public void doTick(BooleanSupplier booleansupplier) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 9b4e57424e..d3e9babe58 100644
index 42bab6d574..43b894af52 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -531,22 +531,23 @@ public class CraftWorld implements World {
}
@@ -538,22 +538,23 @@ public class CraftWorld implements World {
return true;
}
if (!generate) {
- net.minecraft.server.RegionFile file;
- try {
- file = world.getChunkProvider().playerChunkMap.getRegionFile(chunkPos, false);
@@ -3739,7 +3740,7 @@ index 9b4e57424e..d3e9babe58 100644
// fall through to load
// we do this so we do not re-read the chunk data on disk
@@ -2325,16 +2326,17 @@ public class CraftWorld implements World {
@@ -2336,16 +2337,17 @@ public class CraftWorld implements World {
@Override
public CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen) {