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
This commit is contained in:
Shane Freeder 2020-10-17 09:18:39 +01:00
parent 2c440dbc39
commit d833a4aeef
10 changed files with 42 additions and 11 deletions

View file

@ -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();

View file

@ -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();

View file

@ -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() {

View file

@ -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);

View file

@ -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));

View file

@ -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<Chunk> 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

View file

@ -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

@ -1 +1 @@
Subproject commit 9165c3c0b0e34aefce111933495e1c3efb000d4b
Subproject commit 01e22e09726e700776739ec0662acd30e7844cec

@ -1 +1 @@
Subproject commit 055870c4bca477067f9113deb1090228cccf67c6
Subproject commit 4ef13f94d6a4042e0dadd622666a50cee7468d26

@ -1 +1 @@
Subproject commit 988b41197dad25f715bf535ec725af7c0c1a1627
Subproject commit 57bbdd8eb797a51960cf9a47f764b68f97d4f18c