Improve timings around chunk loading

Timers such as syncChunkLoad are hit persistently due to changes in how
this mechanism works which impacts the usablity of timings
This commit is contained in:
Shane Freeder 2019-07-12 05:04:38 +01:00
parent 7e8ae207bd
commit ff085b8e8e
No known key found for this signature in database
GPG key ID: A3F61EA5A085289C
11 changed files with 151 additions and 103 deletions

View file

@ -1,4 +1,4 @@
From 9e00b0ab023fe548a1acb5c67f03ce7bfbc18ca0 Mon Sep 17 00:00:00 2001
From 3eed1e9f0fc42e4d7cc5ef8e2943d2f5975d2cee Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 3 Mar 2016 04:00:11 -0600
Subject: [PATCH] Timings v2
@ -6,7 +6,7 @@ Subject: [PATCH] Timings v2
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
new file mode 100644
index 0000000000..3f9fb6f906
index 000000000..3f9fb6f90
--- /dev/null
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
@@ -0,0 +1,133 @@
@ -145,10 +145,10 @@ index 0000000000..3f9fb6f906
+}
diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
new file mode 100644
index 0000000000..d5d3b2a20c
index 000000000..366de6665
--- /dev/null
+++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
@@ -0,0 +1,105 @@
@@ -0,0 +1,107 @@
+package co.aikar.timings;
+
+import net.minecraft.server.World;
@ -193,6 +193,7 @@ index 0000000000..d5d3b2a20c
+ public final Timing syncChunkLoadStructuresTimer;
+ public final Timing syncChunkLoadPostTimer;
+ public final Timing syncChunkLoadPopulateTimer;
+ public final Timing chunkAwait;
+ public final Timing chunkLoadLevelTimer;
+ public final Timing chunkGeneration;
+ public final Timing chunkIOStage1;
@ -235,6 +236,7 @@ index 0000000000..d5d3b2a20c
+ syncChunkLoadStructuresTimer = Timings.ofSafe(name + "chunkLoad - recreateStructures");
+ syncChunkLoadPostTimer = Timings.ofSafe(name + "chunkLoad - Post");
+ syncChunkLoadPopulateTimer = Timings.ofSafe(name + "chunkLoad - Populate");
+ chunkAwait = Timings.ofSafe(name + "chunkAwait");
+ chunkLoadLevelTimer = Timings.ofSafe(name + "chunkLoad - Load Level");
+ chunkGeneration = Timings.ofSafe(name + "chunkGeneration");
+ chunkIOStage1 = Timings.ofSafe(name + "ChunkIO Stage 1 - DiskIO");
@ -255,7 +257,7 @@ index 0000000000..d5d3b2a20c
+ }
+}
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 5518ec1e54..0c65afccfd 100644
index 5518ec1e5..0c65afccf 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -14,11 +14,14 @@ import java.util.concurrent.TimeUnit;
@ -302,7 +304,7 @@ index 5518ec1e54..0c65afccfd 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
index ee9a571bf2..4b9e51b30f 100644
index ee9a571bf..4b9e51b30 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
@@ -31,6 +31,15 @@ public class Block implements IMaterial {
@ -322,7 +324,7 @@ index ee9a571bf2..4b9e51b30f 100644
private final float frictionFactor;
protected final BlockStateList<Block, IBlockData> blockStateList;
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index f3c5c729ff..ab9b7bbd31 100644
index f3c5c729f..ab9b7bbd3 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -573,6 +573,7 @@ public class Chunk implements IChunkAccess {
@ -342,10 +344,26 @@ index f3c5c729ff..ab9b7bbd31 100644
}
}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 710d40b43a..22aba06270 100644
index 710d40b43..9b3b598d8 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -301,7 +301,9 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -137,11 +137,13 @@ public class ChunkProviderServer extends IChunkProvider {
}
}
- world.timings.syncChunkLoadTimer.startTiming(); // Spigot
CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> completablefuture = this.getChunkFutureMainThread(i, j, chunkstatus, flag);
+ if (!completablefuture.isDone()) { // Paper
+ this.world.timings.chunkAwait.startTiming(); // Paper
this.serverThreadQueue.awaitTasks(completablefuture::isDone);
- world.timings.syncChunkLoadTimer.stopTiming(); // Spigot
+ this.world.timings.chunkAwait.stopTiming(); // Paper
+ } // Paper
ichunkaccess = (IChunkAccess) ((Either) completablefuture.join()).map((ichunkaccess1) -> {
return ichunkaccess1;
}, (playerchunk_failure) -> {
@@ -301,7 +303,9 @@ public class ChunkProviderServer extends IChunkProvider {
public void save(boolean flag) {
this.tickDistanceManager();
@ -355,7 +373,7 @@ index 710d40b43a..22aba06270 100644
}
@Override
@@ -417,9 +419,9 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -417,9 +421,9 @@ public class ChunkProviderServer extends IChunkProvider {
this.world.getMethodProfiler().exit();
}
@ -367,7 +385,7 @@ index 710d40b43a..22aba06270 100644
}
}
});
@@ -432,9 +434,7 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -432,9 +436,7 @@ public class ChunkProviderServer extends IChunkProvider {
this.world.getMethodProfiler().exit();
}
@ -378,7 +396,7 @@ index 710d40b43a..22aba06270 100644
@Override
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 1894509df8..ad3ade3c5c 100644
index 1894509df..ad3ade3c5 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -1,5 +1,6 @@
@ -416,7 +434,7 @@ index 1894509df8..ad3ade3c5c 100644
}
diff --git a/src/main/java/net/minecraft/server/CustomFunction.java b/src/main/java/net/minecraft/server/CustomFunction.java
index 12885cbd60..49de6e997a 100644
index 12885cbd6..49de6e997 100644
--- a/src/main/java/net/minecraft/server/CustomFunction.java
+++ b/src/main/java/net/minecraft/server/CustomFunction.java
@@ -13,12 +13,22 @@ public class CustomFunction {
@ -443,7 +461,7 @@ index 12885cbd60..49de6e997a 100644
return this.b;
}
diff --git a/src/main/java/net/minecraft/server/CustomFunctionData.java b/src/main/java/net/minecraft/server/CustomFunctionData.java
index 8346778383..8bc74add6d 100644
index 834677838..8bc74add6 100644
--- a/src/main/java/net/minecraft/server/CustomFunctionData.java
+++ b/src/main/java/net/minecraft/server/CustomFunctionData.java
@@ -101,7 +101,7 @@ public class CustomFunctionData implements IResourcePackListener {
@ -456,7 +474,7 @@ index 8346778383..8bc74add6d 100644
int j = 0;
CustomFunction.c[] acustomfunction_c = customfunction.b();
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index c088ff9692..c7ea4ec4fe 100644
index c088ff969..c7ea4ec4f 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -19,6 +19,8 @@ import java.util.Collections;
@ -544,7 +562,7 @@ index c088ff9692..c7ea4ec4fe 100644
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index b7c07b4166..ea6cf39baa 100644
index b7c07b416..ea6cf39ba 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -29,7 +29,8 @@ import org.bukkit.command.CommandSender;
@ -583,7 +601,7 @@ index b7c07b4166..ea6cf39baa 100644
protected Vec3D a(Vec3D vec3d, EnumMoveType enummovetype) {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index e0b12e1fd7..30aa4f56d3 100644
index e0b12e1fd..30aa4f56d 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -35,7 +35,7 @@ import org.bukkit.event.entity.EntityTeleportEvent;
@ -659,7 +677,7 @@ index e0b12e1fd7..30aa4f56d3 100644
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index f9ec2b0686..d0419119b3 100644
index f9ec2b068..d0419119b 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -54,7 +54,7 @@ import org.bukkit.craftbukkit.CraftServer;
@ -779,7 +797,7 @@ index f9ec2b0686..d0419119b3 100644
this.methodProfiler.exit();
}
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 9381734a3a..ef31a269e4 100644
index b5ba3fcb0..85da52e2c 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -1,7 +1,9 @@
@ -792,7 +810,21 @@ index 9381734a3a..ef31a269e4 100644
import com.google.common.collect.Lists;
import com.google.common.collect.Queues;
import com.google.common.collect.Sets;
@@ -477,7 +479,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -439,8 +441,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
private CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> f(ChunkCoordIntPair chunkcoordintpair) {
return CompletableFuture.supplyAsync(() -> {
- try {
- NBTTagCompound nbttagcompound = this.readChunkData(chunkcoordintpair);
+ try (Timing ignored = this.world.timings.syncChunkLoadTimer.startTimingIfSync()) { // Paper
+ NBTTagCompound nbttagcompound; // Paper
+ try (Timing ignored2 = this.world.timings.chunkIOStage1.startTimingIfSync()) { // Paper
+ nbttagcompound = this.readChunkData(chunkcoordintpair);
+ }
if (nbttagcompound != null) {
boolean flag = nbttagcompound.hasKeyOfType("Level", 10) && nbttagcompound.getCompound("Level").hasKeyOfType("Status", 8);
@@ -477,7 +482,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
});
return completablefuture.thenComposeAsync((either) -> {
@ -801,7 +833,23 @@ index 9381734a3a..ef31a269e4 100644
try {
CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> completablefuture1 = chunkstatus.a(this.world, this.chunkGenerator, this.definedStructureManager, this.lightEngine, (ichunkaccess) -> {
return this.c(playerchunk);
@@ -967,6 +969,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -530,6 +535,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
ChunkStatus chunkstatus = PlayerChunk.getChunkStatus(playerchunk.getTicketLevel());
return !chunkstatus.b(ChunkStatus.FULL) ? PlayerChunk.UNLOADED_CHUNK_ACCESS : either.mapLeft((ichunkaccess) -> {
+ try (Timing ignored = world.timings.chunkIOStage2.startTimingIfSync()) { // Paper
ChunkCoordIntPair chunkcoordintpair = playerchunk.i();
Chunk chunk;
@@ -574,6 +580,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
return chunk;
+ } // Paper
});
}, (runnable) -> {
Mailbox mailbox = this.mailboxMain;
@@ -967,6 +974,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
PlayerChunkMap.EntityTracker playerchunkmap_entitytracker;
ObjectIterator objectiterator;
@ -809,7 +857,7 @@ index 9381734a3a..ef31a269e4 100644
for (objectiterator = this.trackedEntities.values().iterator(); objectiterator.hasNext(); playerchunkmap_entitytracker.trackerEntry.a()) {
playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next();
@@ -984,13 +987,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -984,13 +992,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
playerchunkmap_entitytracker.e = sectionposition1;
}
}
@ -827,7 +875,7 @@ index 9381734a3a..ef31a269e4 100644
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index d40600c103..fa37c19c69 100644
index d40600c10..fa37c19c6 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -58,6 +58,7 @@ import org.bukkit.inventory.CraftingInventory;
@ -882,7 +930,7 @@ index d40600c103..fa37c19c69 100644
// this.minecraftServer.getCommandDispatcher().a(this.player.getCommandListener(), s);
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java
index cb6d50ea70..9ba03f8ed0 100644
index cb6d50ea7..9ba03f8ed 100644
--- a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java
+++ b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java
@@ -1,5 +1,8 @@
@ -908,7 +956,7 @@ index cb6d50ea70..9ba03f8ed0 100644
throw CancelledPacketHandleException.INSTANCE;
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index ee22d6c81a..fb6b48e3fe 100644
index ee22d6c81..fb6b48e3f 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -1,5 +1,6 @@
@ -932,7 +980,7 @@ index ee22d6c81a..fb6b48e3fe 100644
public WhiteList getWhitelist() {
diff --git a/src/main/java/net/minecraft/server/TickListServer.java b/src/main/java/net/minecraft/server/TickListServer.java
index 061730c560..c5890f5dcc 100644
index 061730c56..c5890f5dc 100644
--- a/src/main/java/net/minecraft/server/TickListServer.java
+++ b/src/main/java/net/minecraft/server/TickListServer.java
@@ -28,13 +28,18 @@ public class TickListServer<T> implements TickList<T> {
@ -982,7 +1030,7 @@ index 061730c560..c5890f5dcc 100644
this.g.clear();
}
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index 2efaf516ff..22a8ea916a 100644
index 2efaf516f..22a8ea916 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -9,11 +9,12 @@ import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer;
@ -1001,7 +1049,7 @@ index 2efaf516ff..22a8ea916a 100644
private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
public CraftPersistentDataContainer persistentDataContainer;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 32981c4422..2f608305f7 100644
index 32981c442..2f608305f 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1,5 +1,7 @@
@ -1056,7 +1104,7 @@ index 32981c4422..2f608305f7 100644
CrashReport crashreport = CrashReport.a(throwable, "Ticking entity");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being ticked");
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index df518ff633..69af071e60 100644
index df518ff63..69af071e6 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1,5 +1,7 @@
@ -1156,7 +1204,7 @@ index df518ff633..69af071e60 100644
// CraftBukkit start - moved from MinecraftServer.saveChunks
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 64d39414ac..764e4dc772 100644
index 39ca7b5f3..5adfd6a7b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1931,12 +1931,31 @@ public final class CraftServer implements Server {
@ -1193,7 +1241,7 @@ index 64d39414ac..764e4dc772 100644
org.spigotmc.RestartCommand.restart();
diff --git a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java b/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java
deleted file mode 100644
index 38f211526b..0000000000
index 38f211526..000000000
--- a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java
+++ /dev/null
@@ -1,166 +0,0 @@
@ -1364,7 +1412,7 @@ index 38f211526b..0000000000
- }
-}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 00aecdc472..c6daf693c5 100644
index 00aecdc47..c6daf693c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1749,6 +1749,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -1383,7 +1431,7 @@ index 00aecdc472..c6daf693c5 100644
public Player.Spigot spigot()
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index b90979c7ba..8823f94f7b 100644
index b90979c7b..8823f94f7 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -1,5 +1,6 @@
@ -1449,7 +1497,7 @@ index b90979c7ba..8823f94f7b 100644
private boolean isReady(final int currentTick) {
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java
index 3f55381c15..0d9a466809 100644
index 3f55381c1..0d9a46680 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java
@@ -1,9 +1,11 @@
@ -1534,7 +1582,7 @@ index 3f55381c15..0d9a466809 100644
- // Spigot end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java
index e52ef47b78..3d90b34268 100644
index e52ef47b7..3d90b3426 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java
@@ -5,6 +5,7 @@ import org.bukkit.util.CachedServerIcon;
@ -1546,7 +1594,7 @@ index e52ef47b78..3d90b34268 100644
this.value = value;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 8b6ec888e8..2733c63aa1 100644
index 8b6ec888e..2733c63aa 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -288,6 +288,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
@ -1564,7 +1612,7 @@ index 8b6ec888e8..2733c63aa1 100644
* This helper class represents the different NBT Tags.
* <p>
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index 4c947a9352..106e9d7e2d 100644
index ca7789b5e..442383969 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -31,7 +31,7 @@ import net.minecraft.server.EntityWither;

View file

@ -1,11 +1,11 @@
From 4f60c9d49368eedc399fcbe3b4f301bf9fe25578 Mon Sep 17 00:00:00 2001
From 02d36a1ddf62541417ea624258a0019b01584fc4 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Wed, 2 Mar 2016 23:13:07 -0600
Subject: [PATCH] Send absolute position the first time an entity is seen
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index cf0e1a6a0c..f04a9d18c4 100644
index cf0e1a6a0..f04a9d18c 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -2,6 +2,7 @@ package net.minecraft.server;
@ -77,10 +77,10 @@ index cf0e1a6a0c..f04a9d18c4 100644
this.c();
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index ef31a269e4..07a1796c77 100644
index 85da52e2c..312845ec0 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -1085,10 +1085,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -1090,10 +1090,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
private final Entity tracker;
private final int trackingDistance;
private SectionPosition e;
@ -97,7 +97,7 @@ index ef31a269e4..07a1796c77 100644
this.tracker = entity;
this.trackingDistance = i;
this.e = SectionPosition.a(entity);
@@ -1170,7 +1174,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -1175,7 +1179,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
entityplayer.removeQueue.remove(Integer.valueOf(this.tracker.getId()));
// CraftBukkit end

View file

@ -1,4 +1,4 @@
From 9c80e9bb4734e94684d0d51d56cdf7d9b17f70cd Mon Sep 17 00:00:00 2001
From 4e1cc41ed39216510254b9cda8fe10e8a62b1d03 Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Thu, 3 Mar 2016 03:15:41 -0600
Subject: [PATCH] Add exception reporting event
@ -6,7 +6,7 @@ Subject: [PATCH] Add exception reporting event
diff --git a/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java
new file mode 100644
index 0000000000..f699ce18ca
index 000000000..f699ce18c
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java
@@ -0,0 +1,38 @@
@ -49,7 +49,7 @@ index 0000000000..f699ce18ca
+ }
+}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index f6f5b72de3..ec64391a4a 100644
index f6f5b72de..ec64391a4 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -1,5 +1,6 @@
@ -80,7 +80,7 @@ index f6f5b72de3..ec64391a4a 100644
}
}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 22aba06270..3da7e10a92 100644
index 60b73bff8..43da95e60 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -14,6 +14,9 @@ import java.util.function.BooleanSupplier;
@ -94,7 +94,7 @@ index 22aba06270..3da7e10a92 100644
public class ChunkProviderServer extends IChunkProvider {
diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
index 2cb0962ff1..21a8ed3231 100644
index 2cb0962ff..21a8ed323 100644
--- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
+++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
@@ -1,5 +1,6 @@
@ -121,10 +121,10 @@ index 2cb0962ff1..21a8ed3231 100644
}
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 07a1796c77..808c178157 100644
index 312845ec0..d4122b893 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -644,6 +644,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -649,6 +649,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
this.world.checkSession();
} catch (ExceptionWorldConflict exceptionworldconflict) {
PlayerChunkMap.LOGGER.error("Couldn't save chunk; already in use by another instance of Minecraft?", exceptionworldconflict);
@ -132,7 +132,7 @@ index 07a1796c77..808c178157 100644
return false;
}
@@ -671,6 +672,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -676,6 +677,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
return true;
} catch (Exception exception) {
PlayerChunkMap.LOGGER.error("Failed to save chunk {},{}", chunkcoordintpair.x, chunkcoordintpair.z, exception);
@ -141,7 +141,7 @@ index 07a1796c77..808c178157 100644
}
}
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
index d4a9af975d..88b5aa3a51 100644
index d4a9af975..88b5aa3a5 100644
--- a/src/main/java/net/minecraft/server/RegionFile.java
+++ b/src/main/java/net/minecraft/server/RegionFile.java
@@ -1,5 +1,6 @@
@ -168,7 +168,7 @@ index d4a9af975d..88b5aa3a51 100644
}
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
index a54d653372..4aa65c1934 100644
index a54d65337..4aa65c193 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -8,6 +8,7 @@ import org.apache.logging.log4j.LogManager;
@ -196,7 +196,7 @@ index a54d653372..4aa65c1934 100644
}
diff --git a/src/main/java/net/minecraft/server/VillageSiege.java b/src/main/java/net/minecraft/server/VillageSiege.java
index 0a1d342c13..347608531f 100644
index 0a1d342c1..347608531 100644
--- a/src/main/java/net/minecraft/server/VillageSiege.java
+++ b/src/main/java/net/minecraft/server/VillageSiege.java
@@ -1,5 +1,7 @@
@ -216,7 +216,7 @@ index 0a1d342c13..347608531f 100644
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index c58c95b03f..d2062b335c 100644
index c58c95b03..d2062b335 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -2,6 +2,9 @@ package net.minecraft.server;
@ -255,7 +255,7 @@ index c58c95b03f..d2062b335c 100644
return;
// Paper end
diff --git a/src/main/java/net/minecraft/server/WorldPersistentData.java b/src/main/java/net/minecraft/server/WorldPersistentData.java
index f5f540032f..00e9a17355 100644
index f5f540032..00e9a1735 100644
--- a/src/main/java/net/minecraft/server/WorldPersistentData.java
+++ b/src/main/java/net/minecraft/server/WorldPersistentData.java
@@ -121,6 +121,7 @@ public class WorldPersistentData {
@ -267,7 +267,7 @@ index f5f540032f..00e9a17355 100644
} finally {
if (pushbackinputstream != null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index 8823f94f7b..552daf4376 100644
index 8823f94f7..552daf437 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -16,6 +16,9 @@ import java.util.concurrent.atomic.AtomicInteger;

View file

@ -1,4 +1,4 @@
From a0a096827f8afc67e10dcbb7b0db1cf71c8b0590 Mon Sep 17 00:00:00 2001
From ade0c873db8b95683bd6e1dd75a8fc316742f1fb Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 14 Jan 2018 17:36:02 -0500
Subject: [PATCH] PlayerNaturallySpawnCreaturesEvent
@ -9,10 +9,10 @@ from triggering monster spawns on a server.
Also a highly more effecient way to blanket block spawns in a world
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 6960e46ec6..1212f3f67d 100644
index aed9e7e45..c9bac0523 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -755,12 +755,24 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -760,12 +760,24 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
chunkRange = (chunkRange > world.spigotConfig.viewDistance) ? (byte) world.spigotConfig.viewDistance : chunkRange;
chunkRange = (chunkRange > 8) ? 8 : chunkRange;

View file

@ -1,4 +1,4 @@
From a01f84d4d3117850f5f7f66118084860c9b85088 Mon Sep 17 00:00:00 2001
From 59f2452fdb005f3e95616e8c3a088fde2676678e Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 21 Jul 2018 08:25:40 -0400
Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
@ -6,7 +6,7 @@ Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
Add -Ddebug.entities=true to your JVM flags to gain more information
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 146ce3a7a6..143937236d 100644
index 146ce3a7a..143937236 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -75,6 +75,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@ -19,10 +19,10 @@ index 146ce3a7a6..143937236d 100644
if (bukkitEntity == null) {
bukkitEntity = CraftEntity.getEntity(world.getServer(), this);
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 1212f3f67d..b38bc77c93 100644
index c9bac0523..9aad0c6b9 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -934,6 +934,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -939,6 +939,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
} else {
PlayerChunkMap.EntityTracker playerchunkmap_entitytracker = new PlayerChunkMap.EntityTracker(entity, i, j, entitytypes.isDeltaTracking());
@ -30,7 +30,7 @@ index 1212f3f67d..b38bc77c93 100644
this.trackedEntities.put(entity.getId(), playerchunkmap_entitytracker);
playerchunkmap_entitytracker.track(this.world.getPlayers());
if (entity instanceof EntityPlayer) {
@@ -976,7 +977,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -981,7 +982,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
if (playerchunkmap_entitytracker1 != null) {
playerchunkmap_entitytracker1.a();
}
@ -40,7 +40,7 @@ index 1212f3f67d..b38bc77c93 100644
protected void g() {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index b9570ea928..23d5555d93 100644
index b9570ea92..23d5555d9 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -68,6 +68,7 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose
@ -52,7 +52,7 @@ index b9570ea928..23d5555d93 100644
public boolean captureBlockStates = false;
public boolean captureTreeGeneration = false;
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 2e19b7342f..dbdc4b66e9 100644
index 2e19b7342..dbdc4b66e 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -69,6 +69,9 @@ public class WorldServer extends World {

View file

@ -1,4 +1,4 @@
From 73a47cc046ad4f5356b4122127ad6a3256656efb Mon Sep 17 00:00:00 2001
From 4b09246872f5a380b3397c175f8cfbe2485005ef Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 23 Oct 2018 20:25:05 -0400
Subject: [PATCH] Don't sleep after profile lookups if not needed
@ -7,30 +7,30 @@ Mojang was sleeping even if we had no more requests to go after
the current one finished, resulting in 100ms lost per profile lookup
diff --git a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
index 26a743722..6ed3199c3 100644
index 71e48e87b..23f1447cf 100644
--- a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
+++ b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
@@ -42,6 +42,7 @@ public class YggdrasilGameProfileRepository implements GameProfileRepository {
}
final int page = 0;
}
final int page = 0;
+ boolean hasRequested = false; // Paper
for (final List<String> request : Iterables.partition(criteria, ENTRIES_PER_PAGE)) {
int failCount = 0;
for (final List<String> request : Iterables.partition(criteria, ENTRIES_PER_PAGE)) {
int failCount = 0;
@@ -67,6 +68,12 @@ public class YggdrasilGameProfileRepository implements GameProfileRepository {
LOGGER.debug("Couldn't find profile {}", name);
callback.onProfileLookupFailed(new GameProfile(null, name), new ProfileNotFoundException("Server did not find the requested profile"));
}
LOGGER.debug("Couldn't find profile {}", name);
callback.onProfileLookupFailed(new GameProfile(null, name), new ProfileNotFoundException("Server did not find the requested profile"));
}
+ // Paper start
+ if (!hasRequested) {
+ hasRequested = true;
+ continue;
+ }
+ // Paper end
try {
Thread.sleep(DELAY_BETWEEN_PAGES);
try {
Thread.sleep(DELAY_BETWEEN_PAGES);
--
2.22.0

View file

@ -1,4 +1,4 @@
From 7cae6a999380675c040812ee336143b86a07b9b8 Mon Sep 17 00:00:00 2001
From 1d1186470d0999939e32bee2870c4714da2fda0a Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 21 Jul 2018 14:27:34 -0400
Subject: [PATCH] Duplicate UUID Resolve Option
@ -33,7 +33,7 @@ But for those who are ok with leaving this inconsistent behavior, you may use WA
It is recommended you regenerate the entities, as these were legit entities, and deserve your love.
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
index 91c809b7ce..d8bb13693d 100644
index 91c809b7c..d8bb13693 100644
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
@@ -444,4 +444,43 @@ public class PaperWorldConfig {
@ -81,7 +81,7 @@ index 91c809b7ce..d8bb13693d 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 099f0ad78b..5bf781bb63 100644
index 099f0ad78..5bf781bb6 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -397,6 +397,7 @@ public class Chunk implements IChunkAccess {
@ -93,7 +93,7 @@ index 099f0ad78b..5bf781bb63 100644
int k = MathHelper.floor(entity.locY / 16.0D);
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index c5ba24f27f..b2a2090e79 100644
index c5ba24f27..b2a2090e7 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2727,6 +2727,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@ -105,7 +105,7 @@ index c5ba24f27f..b2a2090e79 100644
this.uniqueID = uuid;
this.ap = this.uniqueID.toString();
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index b38bc77c93..9102bf8b60 100644
index 9aad0c6b9..f003d5a1f 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -1,6 +1,7 @@
@ -132,7 +132,7 @@ index b38bc77c93..9102bf8b60 100644
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicInteger;
@@ -557,12 +561,49 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -561,12 +565,49 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
for (int j = 0; j < i; ++j) {
List<Entity> entityslice = aentityslice[j]; // Spigot
@ -186,7 +186,7 @@ index b38bc77c93..9102bf8b60 100644
if (list == null) {
list = Lists.newArrayList(new Entity[]{entity});
} else {
@@ -570,6 +611,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -574,6 +615,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
}
}
@ -195,7 +195,7 @@ index b38bc77c93..9102bf8b60 100644
if (list != null) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 8d5a291d7c..04cf967616 100644
index 8d5a291d7..04cf96761 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -2,6 +2,8 @@ package net.minecraft.server;

View file

@ -1,14 +1,14 @@
From 2e16ef9a17c49d1325ec3bbb880a912afc03d762 Mon Sep 17 00:00:00 2001
From 55ddc6f54f09251d01ec96037f6255769034f70d Mon Sep 17 00:00:00 2001
From: kickash32 <kickash32@gmail.com>
Date: Sun, 2 Jun 2019 01:22:02 -0400
Subject: [PATCH] Actually-Limit-Natural-Spawns-To-Limit
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 3da7e10a92..4c3bcb63d9 100644
index 43da95e60..49b8c1187 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -412,8 +412,12 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -414,8 +414,12 @@ public class ChunkProviderServer extends IChunkProvider {
if (enumcreaturetype != EnumCreatureType.MISC && (!enumcreaturetype.c() || this.allowAnimals) && (enumcreaturetype.c() || this.allowMonsters) && (!enumcreaturetype.d() || flag2)) {
int k1 = limit * l / ChunkProviderServer.b; // CraftBukkit - use per-world limits
@ -24,7 +24,7 @@ index 3da7e10a92..4c3bcb63d9 100644
}
}
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
index 09f1b9d762..b442e09eb4 100644
index 09f1b9d76..b442e09eb 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -16,13 +16,20 @@ public final class SpawnerCreature {

View file

@ -1,4 +1,4 @@
From a5c71a512c5ef631b69251c06cb5f4e1d3deedda Mon Sep 17 00:00:00 2001
From f652935fc9f95af75b49dc0e665ed32fe7eb74e0 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
@ -8,7 +8,7 @@ This patch also adds a chunk status cache on region files (note that
its only purpose is to cache the status on DISK)
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 630feec16..42b97ba86 100644
index bff81bdb8..dab86960a 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -27,7 +27,7 @@ public class ChunkProviderServer extends IChunkProvider {
@ -134,10 +134,10 @@ index 0daf5f99e..761cd1355 100644
public CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> getStatusFutureUnchecked(ChunkStatus chunkstatus) {
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index be707d820..6775175d1 100644
index 884c8a908..e0798c1c8 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -802,10 +802,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -807,10 +807,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
@Nullable

View file

@ -1,4 +1,4 @@
From 3a6cd1b34c71328e9f0d7d47a4ba1d4cabf6d4ca Mon Sep 17 00:00:00 2001
From 3423bf44d5532a8e2d8a7b2fdf6aa278aa1702b1 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Sat, 22 Jun 2019 04:20:47 -0700
Subject: [PATCH] Use ChunkStatus cache when saving protochunks
@ -7,10 +7,10 @@ The cache should contain the chunk status when saving. If not it
will load it.
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 3f41072f72..f34d7d0dad 100644
index e0798c1c8..f21961d3a 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -718,8 +718,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -723,8 +723,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
NBTTagCompound nbttagcompound;
if (chunkstatus.getType() != ChunkStatus.Type.LEVELCHUNK) {

View file

@ -1,4 +1,4 @@
From dd8ece01e600a532f79f4182d89965ac6eb9cfd6 Mon Sep 17 00:00:00 2001
From ff5ffde5a598d484afed73de5c1e35743cb184bf Mon Sep 17 00:00:00 2001
From: stonar96 <minecraft.stonar96@gmail.com>
Date: Mon, 20 Aug 2018 03:03:58 +0200
Subject: [PATCH] Anti-Xray
@ -1565,10 +1565,10 @@ index 761cd1355..956a47132 100644
this.a(new PacketPlayOutMultiBlockChange(this.dirtyCount, this.dirtyBlocks, chunk), false);
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 1b18505e0..7e8b0811b 100644
index f21961d3a..f5b35b95b 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -491,7 +491,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -494,7 +494,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
PlayerChunkMap.LOGGER.error("Couldn't load chunk {}", chunkcoordintpair, exception);
}
@ -1577,7 +1577,7 @@ index 1b18505e0..7e8b0811b 100644
}, this.executor);
}
@@ -1111,7 +1111,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -1116,7 +1116,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
private void a(EntityPlayer entityplayer, Packet<?>[] apacket, Chunk chunk) {
if (apacket[0] == null) {