aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0384-improve-CraftWorld-isChunkLoaded.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0384-improve-CraftWorld-isChunkLoaded.patch')
-rw-r--r--Spigot-Server-Patches/0384-improve-CraftWorld-isChunkLoaded.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0384-improve-CraftWorld-isChunkLoaded.patch b/Spigot-Server-Patches/0384-improve-CraftWorld-isChunkLoaded.patch
new file mode 100644
index 0000000000..20645ad09e
--- /dev/null
+++ b/Spigot-Server-Patches/0384-improve-CraftWorld-isChunkLoaded.patch
@@ -0,0 +1,34 @@
+From baa3dd45ad57cf4059302cee17998fa773a5bb22 Mon Sep 17 00:00:00 2001
+From: Shane Freeder <[email protected]>
+Date: Tue, 21 May 2019 02:34:04 +0100
+Subject: [PATCH] improve CraftWorld#isChunkLoaded
+
+getChunkAt will request the chunk using vanillas chunk loading system,
+which while we're not going to load the chunk, does involve the server
+waiting for the execution queue to get to our request; We can just query
+the chunk status and get a response now, vs having to wait
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+index ab357095d..38939ce81 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+@@ -402,14 +402,13 @@ public class CraftWorld implements World {
+
+ @Override
+ public boolean isChunkLoaded(int x, int z) {
+- net.minecraft.server.Chunk chunk = world.getChunkProvider().getChunkAt(x, z, false);
+- return chunk != null;
++ return world.getChunkProvider().getChunkAtIfLoadedImmediately(x, z) != null; // Paper
+ }
+
+ @Override
+ public boolean isChunkGenerated(int x, int z) {
+ try {
+- return isChunkLoaded(x, z) || world.getChunkProvider().playerChunkMap.chunkExists(new ChunkCoordIntPair(x, z));
++ return world.getChunkProvider().getChunkAtIfCachedImmediately(x, z) != null || world.getChunkProvider().playerChunkMap.chunkExists(new ChunkCoordIntPair(x, z)); // Paper
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+--
+2.23.0
+