From 34731dd04e39411ce944235f2bccdbd204a511e7 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Fri, 22 Dec 2017 15:25:01 -0600 Subject: [PATCH] Restructure lighting queue runnable handling Instead of overriding add within the queue, never add runnables to the queue if the light queue is disabled. This change is made to make timings reports and stacktraces less confusing for administrators, who prior to this change, would have seen the lighting queue referenced in both, regardless of whether or not it was enabled. This change should not affect performance, nor is it made with the intent to. --- .../0028-Lighting-Queue.patch | 59 +++++++++++-------- ...opper-searches-if-there-are-no-items.patch | 14 ++--- .../0061-Add-exception-reporting-event.patch | 28 ++++----- .../0075-Add-World-Util-Methods.patch | 10 ++-- .../0082-Waving-banner-workaround.patch | 4 +- ...3-Configurable-Chunk-Inhabited-Timer.patch | 8 +-- ...Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch | 8 +-- ...hunks-as-active-for-neighbor-updates.patch | 8 +-- .../0155-Auto-Save-Improvements.patch | 22 +++---- ...tion-to-remove-corrupt-tile-entities.patch | 8 +-- .../0187-Activation-Range-Improvements.patch | 16 ++--- Spigot-Server-Patches/0236-Anti-Xray.patch | 12 ++-- ...nd-unlit-chunks-when-lighting-update.patch | 8 +-- 13 files changed, 106 insertions(+), 99 deletions(-) diff --git a/Spigot-Server-Patches/0028-Lighting-Queue.patch b/Spigot-Server-Patches/0028-Lighting-Queue.patch index 1306b36af3..0b220ca90e 100644 --- a/Spigot-Server-Patches/0028-Lighting-Queue.patch +++ b/Spigot-Server-Patches/0028-Lighting-Queue.patch @@ -1,4 +1,4 @@ -From 91e45fcf2bf47bd1fedb7a09c7e0e1f14a1230bf Mon Sep 17 00:00:00 2001 +From 1564084393d4718d099082ea434dd8f2b1a0b53a Mon Sep 17 00:00:00 2001 From: Byteflux Date: Wed, 2 Mar 2016 00:52:31 -0600 Subject: [PATCH] Lighting Queue @@ -6,7 +6,7 @@ Subject: [PATCH] Lighting Queue This provides option to queue lighting updates to ensure they do not cause the server lag diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java -index e0ad559b7..4eebd9fae 100644 +index e0ad559b..4eebd9fa 100644 --- a/src/main/java/co/aikar/timings/WorldTimingsHandler.java +++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java @@ -49,6 +49,8 @@ public class WorldTimingsHandler { @@ -27,7 +27,7 @@ index e0ad559b7..4eebd9fae 100644 } } diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index e524a464f..fd606ee14 100644 +index e524a464..fd606ee1 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -143,4 +143,10 @@ public class PaperWorldConfig { @@ -42,7 +42,7 @@ index e524a464f..fd606ee14 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index a4b7d0176..6def9debe 100644 +index 66c78083..c1f25e8d 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -33,6 +33,7 @@ public class Chunk { @@ -57,7 +57,7 @@ index a4b7d0176..6def9debe 100644 private void h(boolean flag) { this.world.methodProfiler.a("recheckGaps"); if (this.world.areChunksLoaded(new BlockPosition(this.locX * 16 + 8, 0, this.locZ * 16 + 8), 16)) { -+ lightingQueue.add(() -> recheckGaps(flag)); // Paper - Queue light update ++ this.runOrQueueLightUpdate(() -> recheckGaps(flag)); // Paper - Queue light update + } + } + @@ -67,16 +67,15 @@ index a4b7d0176..6def9debe 100644 for (int i = 0; i < 16; ++i) { for (int j = 0; j < 16; ++j) { if (this.i[i + j * 16]) { -@@ -481,7 +489,7 @@ public class Chunk { - } else { +@@ -482,6 +490,7 @@ public class Chunk { if (flag) { this.initLighting(); -- } else { -+ } else { lightingQueue.add(() -> { // Paper - Queue light update + } else { ++ this.runOrQueueLightUpdate(() -> { // Paper - Queue light update int j1 = iblockdata.c(); int k1 = iblockdata1.c(); -@@ -496,6 +504,7 @@ public class Chunk { +@@ -496,6 +505,7 @@ public class Chunk { if (j1 != k1 && (j1 < k1 || this.getBrightness(EnumSkyBlock.SKY, blockposition) > 0 || this.getBrightness(EnumSkyBlock.BLOCK, blockposition) > 0)) { this.d(i, k); } @@ -84,8 +83,25 @@ index a4b7d0176..6def9debe 100644 } TileEntity tileentity; +@@ -1340,6 +1350,16 @@ public class Chunk { + this.w = i; + } + ++ // Paper start ++ public void runOrQueueLightUpdate(Runnable runnable) { ++ if (this.world.paperConfig.queueLightUpdates) { ++ lightingQueue.add(runnable); ++ } else { ++ runnable.run(); ++ } ++ } ++ // Paper end ++ + public static enum EnumTileEntityState { + + IMMEDIATE, QUEUED, CHECK; diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 024ea5912..ae527d527 100644 +index 69ded6aa..e9bc23a6 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -295,6 +295,7 @@ public class ChunkProviderServer implements IChunkProvider { @@ -97,7 +113,7 @@ index 024ea5912..ae527d527 100644 // Update neighbor counts for (int x = -2; x < 3; x++) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f4d0e2678..5b0431c57 100644 +index 47fe9262..d63a243f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -722,7 +722,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs @@ -119,10 +135,10 @@ index f4d0e2678..5b0431c57 100644 } diff --git a/src/main/java/net/minecraft/server/PaperLightingQueue.java b/src/main/java/net/minecraft/server/PaperLightingQueue.java new file mode 100644 -index 000000000..d8d3e1efd +index 00000000..345cd582 --- /dev/null +++ b/src/main/java/net/minecraft/server/PaperLightingQueue.java -@@ -0,0 +1,101 @@ +@@ -0,0 +1,92 @@ +package net.minecraft.server; + +import co.aikar.timings.Timing; @@ -164,15 +180,6 @@ index 000000000..d8d3e1efd + this.chunk = chunk; + } + -+ @Override -+ public boolean add(Runnable runnable) { -+ if (chunk.world.paperConfig.queueLightUpdates) { -+ return super.add(runnable); -+ } -+ runnable.run(); -+ return true; -+ } -+ + /** + * Processes the lighting queue for this chunk + * @@ -225,7 +232,7 @@ index 000000000..d8d3e1efd + } +} diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index c25e65428..763f21570 100644 +index fd5f8102..77ed2d24 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -391,7 +391,7 @@ public abstract class World implements IBlockAccess { @@ -233,10 +240,10 @@ index c25e65428..763f21570 100644 if (iblockdata.c() != iblockdata1.c() || iblockdata.d() != iblockdata1.d()) { this.methodProfiler.a("checkLight"); - this.w(blockposition); -+ chunk.lightingQueue.add(() -> this.w(blockposition)); // Paper - Queue light update ++ chunk.runOrQueueLightUpdate(() -> this.w(blockposition)); // Paper - Queue light update this.methodProfiler.b(); } -- -2.13.4 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0052-Avoid-hopper-searches-if-there-are-no-items.patch b/Spigot-Server-Patches/0052-Avoid-hopper-searches-if-there-are-no-items.patch index cfa611bb17..2a651094c7 100644 --- a/Spigot-Server-Patches/0052-Avoid-hopper-searches-if-there-are-no-items.patch +++ b/Spigot-Server-Patches/0052-Avoid-hopper-searches-if-there-are-no-items.patch @@ -1,4 +1,4 @@ -From 0c1ce95af25b8c95b34c255e9c0a440d64a100d7 Mon Sep 17 00:00:00 2001 +From 629064b222df6125fa3e161bdafa5746ba9b467e Mon Sep 17 00:00:00 2001 From: CullanP Date: Thu, 3 Mar 2016 02:13:38 -0600 Subject: [PATCH] Avoid hopper searches if there are no items @@ -14,7 +14,7 @@ And since minecart hoppers are used _very_ rarely near we can avoid alot of sear Combined, this adds up a lot. diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index b80f95159..e1fc4ea6c 100644 +index c1f25e8d..2a1c11a0 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -47,6 +47,13 @@ public class Chunk { @@ -31,7 +31,7 @@ index b80f95159..e1fc4ea6c 100644 // CraftBukkit start - Neighbor loaded cache for chunk lighting and entity ticking private int neighbors = 0x1 << 12; public long chunkKey; -@@ -618,6 +625,13 @@ public class Chunk { +@@ -619,6 +626,13 @@ public class Chunk { entity.ac = k; entity.ad = this.locZ; this.entitySlices[k].add(entity); @@ -45,7 +45,7 @@ index b80f95159..e1fc4ea6c 100644 // Spigot start - increment creature type count // Keep this synced up with World.a(Class) if (entity instanceof EntityInsentient) { -@@ -650,6 +664,13 @@ public class Chunk { +@@ -651,6 +665,13 @@ public class Chunk { } this.entitySlices[i].remove(entity); @@ -59,7 +59,7 @@ index b80f95159..e1fc4ea6c 100644 // Spigot start - decrement creature type count // Keep this synced up with World.a(Class) if (entity instanceof EntityInsentient) { -@@ -841,6 +862,15 @@ public class Chunk { +@@ -842,6 +863,15 @@ public class Chunk { if (!this.entitySlices[k].isEmpty()) { Iterator iterator = this.entitySlices[k].iterator(); @@ -75,7 +75,7 @@ index b80f95159..e1fc4ea6c 100644 while (iterator.hasNext()) { Entity entity1 = (Entity) iterator.next(); -@@ -877,7 +907,18 @@ public class Chunk { +@@ -878,7 +908,18 @@ public class Chunk { i = MathHelper.clamp(i, 0, this.entitySlices.length - 1); j = MathHelper.clamp(j, 0, this.entitySlices.length - 1); @@ -95,5 +95,5 @@ index b80f95159..e1fc4ea6c 100644 while (iterator.hasNext()) { -- -2.12.2.windows.2 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0061-Add-exception-reporting-event.patch b/Spigot-Server-Patches/0061-Add-exception-reporting-event.patch index 6d671fe115..e4843c5469 100644 --- a/Spigot-Server-Patches/0061-Add-exception-reporting-event.patch +++ b/Spigot-Server-Patches/0061-Add-exception-reporting-event.patch @@ -1,4 +1,4 @@ -From b2d4ae07752d89d22e2ccabc3d2aed3990e9dd81 Mon Sep 17 00:00:00 2001 +From a9e8dac195aef49744961d9c9edaab6cd1de17b3 Mon Sep 17 00:00:00 2001 From: Joseph Hirschfeld 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 000000000..93397188b +index 00000000..93397188 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java @@ -0,0 +1,38 @@ @@ -50,7 +50,7 @@ index 000000000..93397188b +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index b815acd3e..2a8393dcb 100644 +index 2a1c11a0..cc4a9dbe 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -1,5 +1,6 @@ @@ -68,7 +68,7 @@ index b815acd3e..2a8393dcb 100644 public class Chunk { -@@ -757,10 +759,15 @@ public class Chunk { +@@ -758,10 +760,15 @@ public class Chunk { this.tileEntities.remove(blockposition); // Paper end } else { @@ -89,7 +89,7 @@ index b815acd3e..2a8393dcb 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index e9bc23a6f..4e51585a1 100644 +index e9bc23a6..4e51585a 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -12,6 +12,7 @@ import java.util.Iterator; @@ -144,7 +144,7 @@ index e9bc23a6f..4e51585a1 100644 } diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java -index 83322b85b..b943a9b20 100644 +index 83322b85..b943a9b2 100644 --- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java +++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java @@ -1,5 +1,7 @@ @@ -172,7 +172,7 @@ index 83322b85b..b943a9b20 100644 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PersistentCollection.java b/src/main/java/net/minecraft/server/PersistentCollection.java -index 936d6c640..50056f49a 100644 +index 936d6c64..50056f49 100644 --- a/src/main/java/net/minecraft/server/PersistentCollection.java +++ b/src/main/java/net/minecraft/server/PersistentCollection.java @@ -1,5 +1,6 @@ @@ -199,7 +199,7 @@ index 936d6c640..50056f49a 100644 } diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index 1ba26de5c..6a92b5af8 100644 +index 1ba26de5..6a92b5af 100644 --- a/src/main/java/net/minecraft/server/RegionFile.java +++ b/src/main/java/net/minecraft/server/RegionFile.java @@ -1,5 +1,6 @@ @@ -226,7 +226,7 @@ index 1ba26de5c..6a92b5af8 100644 } diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java -index c15a0d1f8..5f9e9ddef 100644 +index c15a0d1f..5f9e9dde 100644 --- a/src/main/java/net/minecraft/server/RegionFileCache.java +++ b/src/main/java/net/minecraft/server/RegionFileCache.java @@ -1,5 +1,6 @@ @@ -245,7 +245,7 @@ index c15a0d1f8..5f9e9ddef 100644 } diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 1c7c187c7..68a045323 100644 +index 1c7c187c..68a04532 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java @@ -7,6 +7,7 @@ import java.util.Random; @@ -273,7 +273,7 @@ index 1c7c187c7..68a045323 100644 } diff --git a/src/main/java/net/minecraft/server/VillageSiege.java b/src/main/java/net/minecraft/server/VillageSiege.java -index 9ff4f23ab..6fce3015f 100644 +index 9ff4f23a..6fce3015 100644 --- a/src/main/java/net/minecraft/server/VillageSiege.java +++ b/src/main/java/net/minecraft/server/VillageSiege.java @@ -1,5 +1,7 @@ @@ -293,7 +293,7 @@ index 9ff4f23ab..6fce3015f 100644 } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index b814d965e..550d916ce 100644 +index 89197281..6be9c181 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1,5 +1,7 @@ @@ -329,7 +329,7 @@ index b814d965e..550d916ce 100644 this.tileEntityListTick.remove(tileTickPosition--); continue; diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index d50bbd2a6..bce411288 100644 +index d50bbd2a..bce41128 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -15,6 +15,9 @@ import java.util.concurrent.atomic.AtomicReference; @@ -373,5 +373,5 @@ index d50bbd2a6..bce411288 100644 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } -- -2.15.1 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0075-Add-World-Util-Methods.patch b/Spigot-Server-Patches/0075-Add-World-Util-Methods.patch index 4af2249778..582ea18fc4 100644 --- a/Spigot-Server-Patches/0075-Add-World-Util-Methods.patch +++ b/Spigot-Server-Patches/0075-Add-World-Util-Methods.patch @@ -1,4 +1,4 @@ -From 514130481f7133c11f95558ccfa0c017558d9770 Mon Sep 17 00:00:00 2001 +From 722ea2a8bface335c87958b7c9337c9e96000c81 Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 18 Mar 2016 20:16:03 -0400 Subject: [PATCH] Add World Util Methods @@ -6,10 +6,10 @@ Subject: [PATCH] Add World Util Methods Methods that can be used for other patches to help improve logic. diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 33737af78..1a77dfe4e 100644 +index cc4a9dbe..84a88056 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -580,6 +580,7 @@ public class Chunk { +@@ -581,6 +581,7 @@ public class Chunk { } @@ -18,7 +18,7 @@ index 33737af78..1a77dfe4e 100644 int j = blockposition.getX() & 15; int k = blockposition.getY(); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 22497993c..557660163 100644 +index 6be9c181..9339bf83 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -77,7 +77,7 @@ public abstract class World implements IBlockAccess { @@ -119,5 +119,5 @@ index 22497993c..557660163 100644 // CraftBukkit start - tree generation if (captureTreeGeneration) { -- -2.13.3.windows.1 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0082-Waving-banner-workaround.patch b/Spigot-Server-Patches/0082-Waving-banner-workaround.patch index e71851c1b4..713e950814 100644 --- a/Spigot-Server-Patches/0082-Waving-banner-workaround.patch +++ b/Spigot-Server-Patches/0082-Waving-banner-workaround.patch @@ -1,4 +1,4 @@ -From f232c0220c8e33143f2c82cb67e8645356e4ab20 Mon Sep 17 00:00:00 2001 +From 76a5db0ee94c7fb95adac70a4b0a1716cf7c87a9 Mon Sep 17 00:00:00 2001 From: Gabscap Date: Sat, 19 Mar 2016 22:25:11 +0100 Subject: [PATCH] Waving banner workaround @@ -34,5 +34,5 @@ index c5c3f40c..6413f76e 100644 public void a(PacketDataSerializer packetdataserializer) throws IOException { -- -2.13.1.windows.2 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0093-Configurable-Chunk-Inhabited-Timer.patch b/Spigot-Server-Patches/0093-Configurable-Chunk-Inhabited-Timer.patch index 11741e4512..ad4836a415 100644 --- a/Spigot-Server-Patches/0093-Configurable-Chunk-Inhabited-Timer.patch +++ b/Spigot-Server-Patches/0093-Configurable-Chunk-Inhabited-Timer.patch @@ -1,4 +1,4 @@ -From 1875459e0b11e6b9611b7e55e64b4c2508a60072 Mon Sep 17 00:00:00 2001 +From 85af59e5efe9dc63852fd38624fae257d95cdc56 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 28 Mar 2016 20:46:14 -0400 Subject: [PATCH] Configurable Chunk Inhabited Timer @@ -23,10 +23,10 @@ index e706efff..2c682ccf 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 7eb8deb2..32166ee8 100644 +index 172d00bd..300a5619 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -1407,7 +1407,7 @@ public class Chunk { +@@ -1408,7 +1408,7 @@ public class Chunk { } public long x() { @@ -36,5 +36,5 @@ index 7eb8deb2..32166ee8 100644 public void c(long i) { -- -2.13.1.windows.2 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0114-Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch b/Spigot-Server-Patches/0114-Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch index d5a9e95d5f..e536ce6ebb 100644 --- a/Spigot-Server-Patches/0114-Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch +++ b/Spigot-Server-Patches/0114-Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch @@ -1,4 +1,4 @@ -From 6451b52e836abb928f24aad8dda1a7fa68f7107e Mon Sep 17 00:00:00 2001 +From 36f81b84e0a48db88becd763857034391bce22d9 Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 14 Apr 2016 21:01:39 -0400 Subject: [PATCH] Fix Bugs with Spigot Mob Spawn Logic @@ -14,10 +14,10 @@ Specially with servers using smaller mob spawn ranges than view distance, as wel This patch returns mob counting to use all loaded chunks, and 17x17 division. diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 32166ee8..02aeef54 100644 +index 300a5619..ecc76a88 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -682,7 +682,7 @@ public class Chunk { +@@ -683,7 +683,7 @@ public class Chunk { i = this.entitySlices.length - 1; } @@ -56,5 +56,5 @@ index 45a83ae9..2cd06382 100644 Iterator iterator1 = this.b.iterator(); -- -2.13.1.windows.2 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0129-Do-not-mark-chunks-as-active-for-neighbor-updates.patch b/Spigot-Server-Patches/0129-Do-not-mark-chunks-as-active-for-neighbor-updates.patch index 193f0bcb3f..2a5d87eacb 100644 --- a/Spigot-Server-Patches/0129-Do-not-mark-chunks-as-active-for-neighbor-updates.patch +++ b/Spigot-Server-Patches/0129-Do-not-mark-chunks-as-active-for-neighbor-updates.patch @@ -1,4 +1,4 @@ -From 5f7b9ff421c563a1006b28c791ad548fdad2f28d Mon Sep 17 00:00:00 2001 +From 73859b56033285cbe25838550eea43ef5b6112ea Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 12 May 2016 01:55:17 -0400 Subject: [PATCH] Do not mark chunks as active for neighbor updates @@ -6,10 +6,10 @@ Subject: [PATCH] Do not mark chunks as active for neighbor updates Fixes chunk unload issues diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 02aeef54..d662a5a2 100644 +index ecc76a88..f1bcdef5 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -1006,25 +1006,25 @@ public class Chunk { +@@ -1007,25 +1007,25 @@ public class Chunk { // CraftBukkit end world.timings.syncChunkLoadPostTimer.stopTiming(); // Paper world.timings.syncChunkLoadPopulateNeighbors.startTiming(); // Paper @@ -44,5 +44,5 @@ index 02aeef54..d662a5a2 100644 if (chunk4 != null) { chunk4.a(chunkgenerator); -- -2.13.1.windows.2 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0155-Auto-Save-Improvements.patch b/Spigot-Server-Patches/0155-Auto-Save-Improvements.patch index 380b6c3b82..3d827e615d 100644 --- a/Spigot-Server-Patches/0155-Auto-Save-Improvements.patch +++ b/Spigot-Server-Patches/0155-Auto-Save-Improvements.patch @@ -1,4 +1,4 @@ -From c71fcf67f2672505bcdba3ec19a1e51421b00e70 Mon Sep 17 00:00:00 2001 +From e4a5cc333ba15d9aecec76562062dfa20617fa61 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 19 Sep 2016 23:16:39 -0400 Subject: [PATCH] Auto Save Improvements @@ -12,7 +12,7 @@ Re-introduce a cap per tick for auto save (Spigot disabled the vanilla cap) and Adds incremental player auto saving too diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 621c585e7..da0984a35 100644 +index 621c585e..da0984a3 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -251,4 +251,9 @@ public class PaperConfig { @@ -26,7 +26,7 @@ index 621c585e7..da0984a35 100644 + } } diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index cec9ea74c..39f8a0a2c 100644 +index cec9ea74..39f8a0a2 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -2,6 +2,7 @@ package com.destroystokyo.paper; @@ -58,10 +58,10 @@ index cec9ea74c..39f8a0a2c 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index a0b5cd56b..f98d380f6 100644 +index 8ec26b97..87730aec 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -962,11 +962,9 @@ public class Chunk { +@@ -963,11 +963,9 @@ public class Chunk { if (this.t && this.world.getTime() != this.lastSaved || this.s) { return true; } @@ -76,7 +76,7 @@ index a0b5cd56b..f98d380f6 100644 public Random a(long i) { diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index a01356ccc..08bc8c928 100644 +index 0adfcaa8..9e8f67ff 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -1,5 +1,6 @@ @@ -96,7 +96,7 @@ index a01356ccc..08bc8c928 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index ed4fc3096..299b1df9e 100644 +index b937b6d0..ef081a57 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -32,6 +32,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -108,7 +108,7 @@ index ed4fc3096..299b1df9e 100644 public final MinecraftServer server; public final PlayerInteractManager playerInteractManager; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9e43646eb..86eac80a1 100644 +index ab793307..5c09c6ff 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -119,6 +119,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs @@ -155,7 +155,7 @@ index 9e43646eb..86eac80a1 100644 this.methodProfiler.a("tallying"); // Spigot start diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 30ca137e6..953e5f901 100644 +index 30ca137e..953e5f90 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -343,6 +343,7 @@ public abstract class PlayerList { @@ -192,7 +192,7 @@ index 30ca137e6..953e5f901 100644 public void addWhitelist(GameProfile gameprofile) { this.whitelist.add(new WhiteListEntry(gameprofile)); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 3865b31cb..87a95857c 100644 +index f2ddc22d..8493dcce 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -1050,8 +1050,9 @@ public class WorldServer extends World implements IAsyncTaskHandler { @@ -215,5 +215,5 @@ index 3865b31cb..87a95857c 100644 timings.worldSaveChunks.startTiming(); // Paper chunkproviderserver.a(flag); -- -2.13.4 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0161-Option-to-remove-corrupt-tile-entities.patch b/Spigot-Server-Patches/0161-Option-to-remove-corrupt-tile-entities.patch index 9876fbf4fe..857294de4b 100644 --- a/Spigot-Server-Patches/0161-Option-to-remove-corrupt-tile-entities.patch +++ b/Spigot-Server-Patches/0161-Option-to-remove-corrupt-tile-entities.patch @@ -1,4 +1,4 @@ -From ab2977d788287170bd54ff9394882fef9816fab5 Mon Sep 17 00:00:00 2001 +From 0935daa9352d7d6e412b3033ad61566161dae70d Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Wed, 5 Oct 2016 16:27:36 -0500 Subject: [PATCH] Option to remove corrupt tile entities @@ -19,10 +19,10 @@ index 39f8a0a2..efae01b1 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index f98d380f..ed595955 100644 +index 87730aec..1d056031 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -785,11 +785,17 @@ public class Chunk { +@@ -786,11 +786,17 @@ public class Chunk { "Chunk coordinates: " + (this.locX * 16) + "," + (this.locZ * 16)); e.printStackTrace(); ServerInternalException.reportInternalException(e); @@ -41,5 +41,5 @@ index f98d380f..ed595955 100644 if (this.j) { TileEntity tileentity = (TileEntity) this.tileEntities.remove(blockposition); -- -2.13.1.windows.2 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0187-Activation-Range-Improvements.patch b/Spigot-Server-Patches/0187-Activation-Range-Improvements.patch index f8ce9525ed..ba73cf1390 100644 --- a/Spigot-Server-Patches/0187-Activation-Range-Improvements.patch +++ b/Spigot-Server-Patches/0187-Activation-Range-Improvements.patch @@ -1,4 +1,4 @@ -From 33f96c9d29daf8d704163555175bceb3bddb6d69 Mon Sep 17 00:00:00 2001 +From 3271414d04333646dc6cb277c20b6db84ee420f6 Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 27 Dec 2016 22:38:06 -0500 Subject: [PATCH] Activation Range Improvements @@ -6,7 +6,7 @@ Subject: [PATCH] Activation Range Improvements Fixes and adds new Immunities to improve gameplay behavior diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java -index 0c82c6f5b..9659a45ef 100644 +index 0c82c6f5..9659a45e 100644 --- a/src/main/java/net/minecraft/server/EntityCreature.java +++ b/src/main/java/net/minecraft/server/EntityCreature.java @@ -10,6 +10,7 @@ public abstract class EntityCreature extends EntityInsentient { @@ -18,7 +18,7 @@ index 0c82c6f5b..9659a45ef 100644 private float b; private final float c; diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 3086a36f9..b437ebf26 100644 +index 20aac1f3..650e549b 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -73,7 +73,7 @@ public abstract class EntityLiving extends Entity { @@ -31,7 +31,7 @@ index 3086a36f9..b437ebf26 100644 protected int ticksFarFromPlayer; protected float aW; diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java -index dbda68dd0..af49b7273 100644 +index dbda68dd..af49b727 100644 --- a/src/main/java/net/minecraft/server/EntityLlama.java +++ b/src/main/java/net/minecraft/server/EntityLlama.java @@ -363,6 +363,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn @@ -43,7 +43,7 @@ index dbda68dd0..af49b7273 100644 return this.bL != null; } diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java -index 83d9c43f3..1cb6652c2 100644 +index 83d9c43f..1cb6652c 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoal.java +++ b/src/main/java/net/minecraft/server/PathfinderGoal.java @@ -18,7 +18,10 @@ public abstract class PathfinderGoal { @@ -59,7 +59,7 @@ index 83d9c43f3..1cb6652c2 100644 public void e() {} diff --git a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java -index e5b5e9887..e3781f3a8 100644 +index e5b5e988..e3781f3a 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java @@ -2,12 +2,21 @@ package net.minecraft.server; @@ -96,7 +96,7 @@ index e5b5e9887..e3781f3a8 100644 } } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 47865c027..b08564618 100644 +index 47865c02..b0856461 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -20,6 +20,7 @@ import net.minecraft.server.EntityFireball; @@ -141,5 +141,5 @@ index 47865c027..b08564618 100644 { EntityAnimal animal = (EntityAnimal) entity; -- -2.14.2 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0236-Anti-Xray.patch b/Spigot-Server-Patches/0236-Anti-Xray.patch index 539a3ca1d4..fdc12da8bc 100644 --- a/Spigot-Server-Patches/0236-Anti-Xray.patch +++ b/Spigot-Server-Patches/0236-Anti-Xray.patch @@ -1,4 +1,4 @@ -From 12b129d5b07628e21299a3ed82829426c2c34c92 Mon Sep 17 00:00:00 2001 +From 7414470453c5c5cf82c7d966a4ffa2ceabe7d5e2 Mon Sep 17 00:00:00 2001 From: stonar96 Date: Thu, 21 Sep 2017 00:38:47 +0200 Subject: [PATCH] Anti-Xray @@ -993,7 +993,7 @@ index 00000000..8ea2beb5 + } +} diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index e6e54965..33018fa3 100644 +index 1d056031..d1066d82 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -129,7 +129,7 @@ public class Chunk { @@ -1014,7 +1014,7 @@ index e6e54965..33018fa3 100644 this.sections[j >> 4] = chunksection; flag = j >= i1; } -@@ -581,7 +581,7 @@ public class Chunk { +@@ -582,7 +582,7 @@ public class Chunk { ChunkSection chunksection = this.sections[k >> 4]; if (chunksection == Chunk.a) { @@ -1477,7 +1477,7 @@ index 48a008e0..045adbd3 100644 } else { this.a((Packet) (new PacketPlayOutMultiBlockChange(this.dirtyCount, this.dirtyBlocks, this.chunk))); diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java -index a1689c06..b1826332 100644 +index a49b5c81..5ec7f581 100644 --- a/src/main/java/net/minecraft/server/PlayerInteractManager.java +++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java @@ -200,6 +200,8 @@ public class PlayerInteractManager { @@ -1502,7 +1502,7 @@ index 8860a012..fa0d66d6 100644 return this.a.size(); } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index f690aaa1..e193f86f 100644 +index 00513d02..592e5b3b 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -35,6 +35,8 @@ import org.bukkit.generator.ChunkGenerator; @@ -1579,5 +1579,5 @@ index 9942f0c7..2da6edc6 100644 } } -- -2.14.1.windows.1 +2.15.1.windows.2 diff --git a/Spigot-Server-Patches/0256-Don-t-blindly-send-unlit-chunks-when-lighting-update.patch b/Spigot-Server-Patches/0256-Don-t-blindly-send-unlit-chunks-when-lighting-update.patch index 3968b242c9..8f27ee3d9c 100644 --- a/Spigot-Server-Patches/0256-Don-t-blindly-send-unlit-chunks-when-lighting-update.patch +++ b/Spigot-Server-Patches/0256-Don-t-blindly-send-unlit-chunks-when-lighting-update.patch @@ -1,4 +1,4 @@ -From 055189fd7e43d4c4bec00f501fb3d66fcc192e0c Mon Sep 17 00:00:00 2001 +From 2153af4f9929cba896d12b8c3561f75ca8f7ea5d Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Mon, 18 Dec 2017 07:26:56 +0000 Subject: [PATCH] Don't blindly send unlit chunks when lighting updates are @@ -18,7 +18,7 @@ only send chunks which are actually ready to be sent, otherwise, we will always send chunks. diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 33018fa3d..4b1b236a7 100644 +index d1066d82..001fca42 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -39,7 +39,7 @@ public class Chunk { @@ -30,7 +30,7 @@ index 33018fa3d..4b1b236a7 100644 private boolean s; private boolean t; private long lastSaved; -@@ -1135,7 +1135,11 @@ public class Chunk { +@@ -1136,7 +1136,11 @@ public class Chunk { * We cannot unfortunately do this lighting stage during chunk gen as it appears to put a lot more noticeable load on the server, than when it is done at play time. * For now at least we will simply send all chunks, in accordance with pre 1.7 behaviour. */ @@ -44,5 +44,5 @@ index 33018fa3d..4b1b236a7 100644 } -- -2.15.1 +2.15.1.windows.2