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 9a88a5c104..d29aab6d29 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 extends PersistentDataHolder { +@@ -0,0 +0,0 @@ public interface Chunk { @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 a68defc19a..1d681b447c 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 extends PersistentDataHolder { +@@ -0,0 +0,0 @@ public interface Chunk { */ int getZ(); diff --git a/Spigot-API-Patches/Timings-v2.patch b/Spigot-API-Patches/Timings-v2.patch index aafb76df79..955c6b5a30 100644 --- a/Spigot-API-Patches/Timings-v2.patch +++ b/Spigot-API-Patches/Timings-v2.patch @@ -1891,8 +1891,6 @@ 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; + @@ -2944,10 +2942,7 @@ 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 @@ -2961,18 +2956,6 @@ 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 3754e7364c..91a430ce52 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 { - // CraftBukkit end + loadEntities(nbttagcompound1, chunk); }); } 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 e720c44b26..869df43206 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; // CraftBukkit - decompile errors + int finalI = i; ChunkSection chunksection = (ChunkSection) Arrays.stream(achunksection).filter((chunksection1) -> { - return chunksection1 != null && chunksection1.getYPosition() >> 4 == finalI; // CraftBukkit - decompile errors + return chunksection1 != null && chunksection1.getYPosition() >> 4 == finalI; }).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 34725955aa..6935859af7 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,15 +25,9 @@ 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", "BukkitValues")) // Paper - move CB Chunk PDC into here ++ createLoadEntitiesConsumer(new SafeNBTCopy(nbttagcompound1, "TileEntities", "Entities")) + );// Paper end } else { ProtoChunk protochunk = new ProtoChunk(chunkcoordintpair, chunkconverter, achunksection, protochunkticklist, protochunkticklist1, worldserver); // Paper - Anti-Xray - Add parameter @@ -70,15 +64,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + } + private static java.util.function.Consumer createLoadEntitiesConsumer(NBTTagCompound nbt) { -+ 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 -+ }; ++ return (chunk) -> loadEntities(nbt, chunk); + } + // Paper end diff --git a/Spigot-Server-Patches/MC-Utils.patch b/Spigot-Server-Patches/MC-Utils.patch index 44e0aadf89..47f6f32c1e 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 final org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer(DATA_TYPE_REGISTRY); + public boolean needsDecoration; // CraftBukkit end + // Paper start diff --git a/work/Bukkit b/work/Bukkit index 01e22e0972..9165c3c0b0 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 01e22e09726e700776739ec0662acd30e7844cec +Subproject commit 9165c3c0b0e34aefce111933495e1c3efb000d4b diff --git a/work/CraftBukkit b/work/CraftBukkit index 4ef13f94d6..055870c4bc 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 4ef13f94d6a4042e0dadd622666a50cee7468d26 +Subproject commit 055870c4bca477067f9113deb1090228cccf67c6 diff --git a/work/Spigot b/work/Spigot index 57bbdd8eb7..988b41197d 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 57bbdd8eb797a51960cf9a47f764b68f97d4f18c +Subproject commit 988b41197dad25f715bf535ec725af7c0c1a1627