From d833a4aeef4e31b24174dd3b13c928e2d12a8617 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sat, 17 Oct 2020 09:18:39 +0100 Subject: [PATCH] Updated Upstream (Bukkit/CraftBukkit/Spigot) Upstream has released updates that appears 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: 01e22e09 Misc maven build updates 746f5324 #556: Allow sending messages from specific UUIDs 92b99cde #501: Add PersistentDataHolder to Chunk CraftBukkit Changes: 4ef13f94 Misc maven build updates 04639f5a #759: Allow sending messages from specific UUIDs 77c894a2 #672: Add PersistentDataHolder to Chunk Spigot Changes: 57bbdd8e Rebuild patches --- ...Tile-Entities-from-a-chunk-without-sn.patch | 2 +- ...ovide-Chunk-Coordinates-as-a-Long-API.patch | 2 +- Spigot-API-Patches/Timings-v2.patch | 17 +++++++++++++++++ Spigot-Server-Patches/Anti-Xray.patch | 2 +- .../Asynchronous-chunk-IO-and-loading.patch | 4 ++-- ...Non-Full-Status-Chunk-NBT-Memory-Leak.patch | 18 ++++++++++++++++-- Spigot-Server-Patches/MC-Utils.patch | 2 +- work/Bukkit | 2 +- work/CraftBukkit | 2 +- work/Spigot | 2 +- 10 files changed, 42 insertions(+), 11 deletions(-) diff --git a/Spigot-API-Patches/Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch b/Spigot-API-Patches/Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch index d29aab6d29..9a88a5c104 100644 --- a/Spigot-API-Patches/Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch +++ b/Spigot-API-Patches/Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chun index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/Chunk.java +++ b/src/main/java/org/bukkit/Chunk.java -@@ -0,0 +0,0 @@ public interface Chunk { +@@ -0,0 +0,0 @@ public interface Chunk extends PersistentDataHolder { @NotNull Entity[] getEntities(); diff --git a/Spigot-API-Patches/Provide-Chunk-Coordinates-as-a-Long-API.patch b/Spigot-API-Patches/Provide-Chunk-Coordinates-as-a-Long-API.patch index 1d681b447c..a68defc19a 100644 --- a/Spigot-API-Patches/Provide-Chunk-Coordinates-as-a-Long-API.patch +++ b/Spigot-API-Patches/Provide-Chunk-Coordinates-as-a-Long-API.patch @@ -10,7 +10,7 @@ diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chun index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/Chunk.java +++ b/src/main/java/org/bukkit/Chunk.java -@@ -0,0 +0,0 @@ public interface Chunk { +@@ -0,0 +0,0 @@ public interface Chunk extends PersistentDataHolder { */ int getZ(); diff --git a/Spigot-API-Patches/Timings-v2.patch b/Spigot-API-Patches/Timings-v2.patch index 955c6b5a30..aafb76df79 100644 --- a/Spigot-API-Patches/Timings-v2.patch +++ b/Spigot-API-Patches/Timings-v2.patch @@ -1891,6 +1891,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +import org.bukkit.command.RemoteConsoleCommandSender; + +import java.util.List; ++import java.util.UUID; ++ +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + @@ -2942,7 +2944,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +import org.bukkit.plugin.Plugin; + +import java.util.Set; ++import java.util.UUID; ++ +import org.jetbrains.annotations.NotNull; ++import org.jetbrains.annotations.Nullable; + +/** + * For when all you care about is just messaging @@ -2956,6 +2961,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + } + ++ @Override ++ default void sendMessage(@Nullable UUID sender, @NotNull String message) { ++ sendMessage(message); ++ } ++ ++ @Override ++ default void sendMessage(@Nullable UUID sender, @NotNull String[] messages) { ++ for (String message : messages) { ++ sendMessage(message); ++ } ++ } ++ + @NotNull + @Override + default Server getServer() { diff --git a/Spigot-Server-Patches/Anti-Xray.patch b/Spigot-Server-Patches/Anti-Xray.patch index 91a430ce52..3754e7364c 100644 --- a/Spigot-Server-Patches/Anti-Xray.patch +++ b/Spigot-Server-Patches/Anti-Xray.patch @@ -1014,7 +1014,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 chunksection.getBlocks().a(nbttagcompound2.getList("Palette", 10), nbttagcompound2.getLongArray("BlockStates")); chunksection.recalcBlockCounts(); @@ -0,0 +0,0 @@ public class ChunkRegionLoader { - loadEntities(nbttagcompound1, chunk); + // CraftBukkit end }); } else { - ProtoChunk protochunk = new ProtoChunk(chunkcoordintpair, chunkconverter, achunksection, protochunkticklist, protochunkticklist1); diff --git a/Spigot-Server-Patches/Asynchronous-chunk-IO-and-loading.patch b/Spigot-Server-Patches/Asynchronous-chunk-IO-and-loading.patch index 869df43206..e720c44b26 100644 --- a/Spigot-Server-Patches/Asynchronous-chunk-IO-and-loading.patch +++ b/Spigot-Server-Patches/Asynchronous-chunk-IO-and-loading.patch @@ -2688,9 +2688,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - for (int i = -1; i < 17; ++i) { + for (int i = -1; i < 17; ++i) { // Paper - conflict on loop parameter change - int finalI = i; + int finalI = i; // CraftBukkit - decompile errors ChunkSection chunksection = (ChunkSection) Arrays.stream(achunksection).filter((chunksection1) -> { - return chunksection1 != null && chunksection1.getYPosition() >> 4 == finalI; + return chunksection1 != null && chunksection1.getYPosition() >> 4 == finalI; // CraftBukkit - decompile errors }).findFirst().orElse(Chunk.a); - NibbleArray nibblearray = lightenginethreaded.a(EnumSkyBlock.BLOCK).a(SectionPosition.a(chunkcoordintpair, i)); - NibbleArray nibblearray1 = lightenginethreaded.a(EnumSkyBlock.SKY).a(SectionPosition.a(chunkcoordintpair, i)); diff --git a/Spigot-Server-Patches/Fix-Non-Full-Status-Chunk-NBT-Memory-Leak.patch b/Spigot-Server-Patches/Fix-Non-Full-Status-Chunk-NBT-Memory-Leak.patch index 6935859af7..34725955aa 100644 --- a/Spigot-Server-Patches/Fix-Non-Full-Status-Chunk-NBT-Memory-Leak.patch +++ b/Spigot-Server-Patches/Fix-Non-Full-Status-Chunk-NBT-Memory-Leak.patch @@ -25,9 +25,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - object = new Chunk(worldserver.getMinecraftWorld(), chunkcoordintpair, biomestorage, chunkconverter, (TickList) object1, (TickList) object2, j, achunksection, (chunk) -> { - loadEntities(nbttagcompound1, chunk); +- // CraftBukkit start - load chunk persistent data from nbt +- NBTTagCompound persistentBase = nbttagcompound1.getCompound("BukkitValues"); +- if (persistentBase != null) { +- chunk.persistentDataContainer.putAll(nbttagcompound1); +- } +- // CraftBukkit end - }); + object = new Chunk(worldserver.getMinecraftWorld(), chunkcoordintpair, biomestorage, chunkconverter, (TickList) object1, (TickList) object2, j, achunksection, // Paper start - fix massive nbt memory leak due to lambda. move lambda into a container method to not leak scope. Only clone needed NBT keys. -+ createLoadEntitiesConsumer(new SafeNBTCopy(nbttagcompound1, "TileEntities", "Entities")) ++ createLoadEntitiesConsumer(new SafeNBTCopy(nbttagcompound1, "TileEntities", "Entities", "BukkitValues")) // Paper - move CB Chunk PDC into here + );// Paper end } else { ProtoChunk protochunk = new ProtoChunk(chunkcoordintpair, chunkconverter, achunksection, protochunkticklist, protochunkticklist1, worldserver); // Paper - Anti-Xray - Add parameter @@ -64,7 +70,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + } + private static java.util.function.Consumer createLoadEntitiesConsumer(NBTTagCompound nbt) { -+ return (chunk) -> loadEntities(nbt, chunk); ++ return (chunk) -> { ++ loadEntities(nbt, chunk); ++ // CraftBukkit start - load chunk persistent data from nbt ++ NBTTagCompound persistentBase = nbt.getCompound("BukkitValues"); ++ if (persistentBase != null) { ++ chunk.persistentDataContainer.putAll(nbt); ++ } ++ // CraftBukkit end ++ }; + } + // Paper end diff --git a/Spigot-Server-Patches/MC-Utils.patch b/Spigot-Server-Patches/MC-Utils.patch index 47f6f32c1e..44e0aadf89 100644 --- a/Spigot-Server-Patches/MC-Utils.patch +++ b/Spigot-Server-Patches/MC-Utils.patch @@ -2442,7 +2442,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 HeightMap.Type[] aheightmap_type = HeightMap.Type.values(); int j = aheightmap_type.length; @@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess { - public boolean needsDecoration; + public final org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer(DATA_TYPE_REGISTRY); // CraftBukkit end + // Paper start diff --git a/work/Bukkit b/work/Bukkit index 9165c3c0b0..01e22e0972 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 9165c3c0b0e34aefce111933495e1c3efb000d4b +Subproject commit 01e22e09726e700776739ec0662acd30e7844cec diff --git a/work/CraftBukkit b/work/CraftBukkit index 055870c4bc..4ef13f94d6 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 055870c4bca477067f9113deb1090228cccf67c6 +Subproject commit 4ef13f94d6a4042e0dadd622666a50cee7468d26 diff --git a/work/Spigot b/work/Spigot index 988b41197d..57bbdd8eb7 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 988b41197dad25f715bf535ec725af7c0c1a1627 +Subproject commit 57bbdd8eb797a51960cf9a47f764b68f97d4f18c