diff --git a/Spigot-Server-Patches/0054-Don-t-create-a-chunk-just-to-unload-it.patch b/Spigot-Server-Patches/0054-Don-t-create-a-chunk-just-to-unload-it.patch index 69a787625a..d938be980b 100644 --- a/Spigot-Server-Patches/0054-Don-t-create-a-chunk-just-to-unload-it.patch +++ b/Spigot-Server-Patches/0054-Don-t-create-a-chunk-just-to-unload-it.patch @@ -1,17 +1,17 @@ -From 4523f4c601e523971012b1a5b50c40704f74fdc6 Mon Sep 17 00:00:00 2001 +From 953114a5206b9fffd1d9b46aae12c9a520e53add Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 2 Mar 2016 23:55:20 -0600 Subject: [PATCH] Don't create a chunk just to unload it diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 83e3003..3f2d83a 100644 +index 02ff463..dfa7e73 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -205,7 +205,12 @@ public class CraftWorld implements World { - return false; - } +@@ -209,7 +209,13 @@ public class CraftWorld implements World { + } + private boolean unloadChunk0(int x, int z, boolean save, boolean safe) { - net.minecraft.server.Chunk chunk = world.getChunkProviderServer().getChunkAt(x, z); + // Paper start - Don't create a chunk just to unload it + net.minecraft.server.Chunk chunk = world.getChunkProviderServer().getChunkIfLoaded(x, z); @@ -19,9 +19,10 @@ index 83e3003..3f2d83a 100644 + return false; + } + // Paper end ++ if (chunk.mustSave) { // If chunk had previously been queued to save, must do save to avoid loss of that data save = true; } -- -2.8.0 +2.8.0.windows.1 diff --git a/Spigot-Server-Patches/0098-Optimize-Chunk-Unload-Queue.patch b/Spigot-Server-Patches/0098-Optimize-Chunk-Unload-Queue.patch index aa276d09f5..ce325c944d 100644 --- a/Spigot-Server-Patches/0098-Optimize-Chunk-Unload-Queue.patch +++ b/Spigot-Server-Patches/0098-Optimize-Chunk-Unload-Queue.patch @@ -1,4 +1,4 @@ -From c9723ad854bc3dc21412e28c3a7914e9a97768fd Mon Sep 17 00:00:00 2001 +From 0dce8356b0edff838a19e1b615fa18366af30563 Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 18 Mar 2016 17:57:25 -0400 Subject: [PATCH] Optimize Chunk Unload Queue @@ -251,7 +251,7 @@ index 63e118d..721bcae 100644 i += server.getChunkAt( x, z ).entityCount.get( oClass ); } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index d658fa2..0a3cfbc 100644 +index f76ff72..c1cb133 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -159,9 +159,15 @@ public abstract class World implements IBlockAccess { @@ -272,19 +272,19 @@ index d658fa2..0a3cfbc 100644 this.spigotConfig = new org.spigotmc.SpigotWorldConfig( worlddata.getName() ); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(worlddata.getName(), this.spigotConfig); // Paper diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 3f2d83a..c81dfee 100644 +index dfa7e73..922ebaf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -206,7 +206,7 @@ public class CraftWorld implements World { - } +@@ -210,7 +210,7 @@ public class CraftWorld implements World { + private boolean unloadChunk0(int x, int z, boolean save, boolean safe) { // Paper start - Don't create a chunk just to unload it - net.minecraft.server.Chunk chunk = world.getChunkProviderServer().getChunkIfLoaded(x, z); + net.minecraft.server.Chunk chunk = world.getChunkProviderServer().getChunkIfActive(x, z); // Paper if (chunk == null) { return false; } -@@ -232,7 +232,7 @@ public class CraftWorld implements World { +@@ -237,7 +237,7 @@ public class CraftWorld implements World { continue; } @@ -293,7 +293,7 @@ index 3f2d83a..c81dfee 100644 if (neighbor != null) { neighbor.setNeighborUnloaded(-xx, -zz); chunk.setNeighborUnloaded(xx, zz); -@@ -294,6 +294,7 @@ public class CraftWorld implements World { +@@ -299,6 +299,7 @@ public class CraftWorld implements World { // Use the default variant of loadChunk when generate == true. return world.getChunkProviderServer().getChunkAt(x, z) != null; } @@ -301,7 +301,7 @@ index 3f2d83a..c81dfee 100644 world.getChunkProviderServer().unloadQueue.remove(x, z); net.minecraft.server.Chunk chunk = world.getChunkProviderServer().chunks.get(LongHash.toLong(x, z)); -@@ -319,7 +320,7 @@ public class CraftWorld implements World { +@@ -324,7 +325,7 @@ public class CraftWorld implements World { continue; } @@ -310,7 +310,7 @@ index 3f2d83a..c81dfee 100644 if (neighbor != null) { neighbor.setNeighborLoaded(-x, -z); chunk.setNeighborLoaded(x, z); -@@ -1536,7 +1537,7 @@ public class CraftWorld implements World { +@@ -1541,7 +1542,7 @@ public class CraftWorld implements World { } // Already unloading? @@ -359,5 +359,5 @@ index f0d3a19..c32b805 100644 { isActive = false; -- -2.8.0 +2.8.0.windows.1 diff --git a/Spigot-Server-Patches/0126-Configurable-Keep-Spawn-Loaded-range-per-world.patch b/Spigot-Server-Patches/0126-Configurable-Keep-Spawn-Loaded-range-per-world.patch index 7aa3eeb6be..d87cb140b6 100644 --- a/Spigot-Server-Patches/0126-Configurable-Keep-Spawn-Loaded-range-per-world.patch +++ b/Spigot-Server-Patches/0126-Configurable-Keep-Spawn-Loaded-range-per-world.patch @@ -1,4 +1,4 @@ -From b1eaaca9b59ca471b92ae67aeb900658bfc5f6e9 Mon Sep 17 00:00:00 2001 +From 7e68dc8430adc1759e5bca25c1e819723843d39d Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 13 Sep 2014 23:14:43 -0400 Subject: [PATCH] Configurable Keep Spawn Loaded range per world @@ -63,10 +63,10 @@ index 5b70d7a..831ef84 100644 for (int j = -short1; j <= short1; j += 16) { for (int k = -short1; k <= short1; k += 16) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index c81dfee..dff2aa4 100644 +index 922ebaf..207a8d8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -1249,8 +1249,9 @@ public class CraftWorld implements World { +@@ -1254,8 +1254,9 @@ public class CraftWorld implements World { int chunkCoordX = chunkcoordinates.getX() >> 4; int chunkCoordZ = chunkcoordinates.getZ() >> 4; // Cycle through the 25x25 Chunks around it to load/unload the chunks. @@ -79,5 +79,5 @@ index c81dfee..dff2aa4 100644 loadChunk(chunkCoordX + x, chunkCoordZ + z); } else { -- -2.8.0 +2.8.0.windows.1 diff --git a/work/CraftBukkit b/work/CraftBukkit index f01861f80b..f326992b8b 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit f01861f80bc8d903f72210e7d79c90c35473aa74 +Subproject commit f326992b8b4df295dc35b06e8c3701c7b4397c9b diff --git a/work/Spigot b/work/Spigot index a1b8bf3530..f6feaaae5b 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit a1b8bf3530b3f83fbd94cc8624d05426b0d9de5f +Subproject commit f6feaaae5b036bd574632a98c684b2fddf4454b9