mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user