From 20e500fadcb0619982424eb06dde74390818bc10 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Tue, 16 Feb 2021 17:08:29 +0000 Subject: [PATCH] Updated Upstream (Bukkit/CraftBukkit) Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 1e843b72 #510: Add NamespacedKey#fromString() to fetch from user input a4d18241 #581: Add methods to modify despawn delay for wandering villagers CraftBukkit Changes: 0cd8f19f #802: Add methods to modify despawn delay for wandering villagers d5c5d998 SPIGOT-6362: ConcurrentModificationException: null --> Server Crash 8c7d69fe SPIGOT-5228: Entities that are removed during chunk unloads are not properly removed from the chunk. --- ...for-CanPlaceOn-and-CanDestroy-NBT-values.patch | 2 +- ...gistering-entities-from-unloading-chunks.patch | 2 +- Spigot-Server-Patches/MC-Utils.patch | 15 ++++++++------- work/Bukkit | 2 +- work/CraftBukkit | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Spigot-API-Patches/Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch b/Spigot-API-Patches/Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch index 2bf73155be..8f49dc6c6f 100644 --- a/Spigot-API-Patches/Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch +++ b/Spigot-API-Patches/Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch @@ -202,7 +202,7 @@ diff --git a/src/main/java/org/bukkit/NamespacedKey.java b/src/main/java/org/buk index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/NamespacedKey.java +++ b/src/main/java/org/bukkit/NamespacedKey.java -@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull; +@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable; * underscores, hyphens, and forward slashes. * */ diff --git a/Spigot-Server-Patches/Fix-unregistering-entities-from-unloading-chunks.patch b/Spigot-Server-Patches/Fix-unregistering-entities-from-unloading-chunks.patch index e753c5fa81..18e9b12652 100644 --- a/Spigot-Server-Patches/Fix-unregistering-entities-from-unloading-chunks.patch +++ b/Spigot-Server-Patches/Fix-unregistering-entities-from-unloading-chunks.patch @@ -22,7 +22,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private void removeEntityFromChunk(Entity entity) { -- IChunkAccess ichunkaccess = this.getChunkAt(entity.chunkX, entity.chunkZ, ChunkStatus.FULL, false); +- IChunkAccess ichunkaccess = chunkProvider.getChunkUnchecked(entity.chunkX, entity.chunkZ); // CraftBukkit - SPIGOT-5228: getChunkAt won't find the entity's chunk if it has already been unloaded (i.e. if it switched to state INACCESSIBLE). + Chunk ichunkaccess = entity.getCurrentChunk(); // Paper - getChunkAt(x,z,full,false) is broken by CraftBukkit as it won't return an unloading chunk. Use our current chunk reference as this points to what chunk they need to be removed from anyways - if (ichunkaccess instanceof Chunk) { diff --git a/Spigot-Server-Patches/MC-Utils.patch b/Spigot-Server-Patches/MC-Utils.patch index 0ff68181ac..1a91cb496d 100644 --- a/Spigot-Server-Patches/MC-Utils.patch +++ b/Spigot-Server-Patches/MC-Utils.patch @@ -3993,24 +3993,25 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + public final boolean isEntityTickingReady() { + return this.isEntityTickingReady; - } - ++ } ++ + public final boolean isTickingReady() { + return this.isTickingReady; + } + + public final boolean isFullChunkReady() { + return this.isFullChunkReady; -+ } + } + // Paper end -+ + // CraftBukkit start - public Chunk getFullChunk() { + public final Chunk getFullChunk() { // Paper - final for inline if (!getChunkState(this.oldTicketLevel).isAtLeast(PlayerChunk.State.BORDER)) return null; // note: using oldTicketLevel for isLoaded checks - CompletableFuture> statusFuture = this.getStatusFutureUnchecked(ChunkStatus.FULL); - Either either = (Either) statusFuture.getNow(null); - return either == null ? null : (Chunk) either.left().orElse(null); + return this.getFullChunkUnchecked(); + } +@@ -0,0 +0,0 @@ public class PlayerChunk { + return (either == null) ? null : (Chunk) either.left().orElse(null); } // CraftBukkit end + // Paper start - "real" get full chunk immediately diff --git a/work/Bukkit b/work/Bukkit index 5b289e6914..1e843b72bb 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 5b289e69146fd76766ce7f973821b05792d9a695 +Subproject commit 1e843b72bbd67b7b5ec785eae260fb00a5b64292 diff --git a/work/CraftBukkit b/work/CraftBukkit index d97d91871d..0cd8f19fb9 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit d97d91871d7b2003591d9a9d59ee9c2306d3178a +Subproject commit 0cd8f19fb90f92c9fef7a3d7896bb77e8c4785da