Updated Upstream (Bukkit/CraftBukkit/Spigot) (#4659)

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

Co-authored-by: Shane Freeder <theboyetronic@gmail.com>
This commit is contained in:
Mariell 2020-10-17 12:39:45 +02:00 committed by GitHub
parent fa990d26af
commit 595734a57e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
61 changed files with 216 additions and 185 deletions

View file

@ -1876,10 +1876,10 @@ index 0000000000000000000000000000000000000000..ef824d701c97cad8b31e76ad98c94fc4
+}
diff --git a/src/main/java/co/aikar/timings/TimingsReportListener.java b/src/main/java/co/aikar/timings/TimingsReportListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf3e059fe06aae361b2ded451914ed19b5e970c5
index 0000000000000000000000000000000000000000..ef58a6c00f444bd498a2d8fc4e457236f393954f
--- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingsReportListener.java
@@ -0,0 +1,75 @@
@@ -0,0 +1,77 @@
+package co.aikar.timings;
+
+import com.google.common.collect.Lists;
@ -1891,6 +1891,8 @@ index 0000000000000000000000000000000000000000..bf3e059fe06aae361b2ded451914ed19
+import org.bukkit.command.RemoteConsoleCommandSender;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
@ -2927,10 +2929,10 @@ index d6c8938b1e13b63116b7b0e074ea8ef5997f8dc3..a6ad94ef98a1df1d2842635d850bc990
}
diff --git a/src/main/java/org/bukkit/command/MessageCommandSender.java b/src/main/java/org/bukkit/command/MessageCommandSender.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca1893e9fb41baae0d103f1a925e33f3dfa273be
index 0000000000000000000000000000000000000000..a7ef1f51c2b96617a32e6e7b1723e8770ba8a6a8
--- /dev/null
+++ b/src/main/java/org/bukkit/command/MessageCommandSender.java
@@ -0,0 +1,114 @@
@@ -0,0 +1,129 @@
+package org.bukkit.command;
+
+import org.apache.commons.lang.NotImplementedException;
@ -2942,7 +2944,10 @@ index 0000000000000000000000000000000000000000..ca1893e9fb41baae0d103f1a925e33f3
+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..ca1893e9fb41baae0d103f1a925e33f3
+ }
+ }
+
+ @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

@ -5,10 +5,10 @@ Subject: [PATCH] Add BaseComponent sendMessage methods to CommandSender
diff --git a/src/main/java/org/bukkit/command/CommandSender.java b/src/main/java/org/bukkit/command/CommandSender.java
index a9020ecc744514067374bd2b1751251add4d9a78..d3b3a8bf94dac370ea254875e4d4a30894a70c67 100644
index fe6b162fe55cddf3f9be40fa4cd42e5060ac85ad..cab682f741da6bbf7463b457ce1674accce6f5f2 100644
--- a/src/main/java/org/bukkit/command/CommandSender.java
+++ b/src/main/java/org/bukkit/command/CommandSender.java
@@ -61,4 +61,30 @@ public interface CommandSender extends Permissible {
@@ -79,4 +79,30 @@ public interface CommandSender extends Permissible {
@NotNull
Spigot spigot();
// Spigot end

View file

@ -7,10 +7,10 @@ Allows you to easily access the chunks X/z as a long, and a method
to look up by the long key too.
diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chunk.java
index 95e485eea693e7648e63d198c8591d89e02e6755..0bbef14a9fc2a3ec03b4db59c8d8e1eedc0ad1c1 100644
index beac1439c71fb28f1a3baecf56157237e12ccfd5..fa576096e908f8fbdbef53e1bd91215ac9e73ed6 100644
--- a/src/main/java/org/bukkit/Chunk.java
+++ b/src/main/java/org/bukkit/Chunk.java
@@ -27,6 +27,32 @@ public interface Chunk {
@@ -28,6 +28,32 @@ public interface Chunk extends PersistentDataHolder {
*/
int getZ();

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Ability to get Tile Entities from a chunk without snapshots
diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chunk.java
index 0bbef14a9fc2a3ec03b4db59c8d8e1eedc0ad1c1..11b691cf59b4a72493c91055fd8c46d7681b4527 100644
index fa576096e908f8fbdbef53e1bd91215ac9e73ed6..b4ef6297f78d1f0c216e718024a21e6aa07cd1c6 100644
--- a/src/main/java/org/bukkit/Chunk.java
+++ b/src/main/java/org/bukkit/Chunk.java
@@ -102,13 +102,26 @@ public interface Chunk {
@@ -103,13 +103,26 @@ public interface Chunk extends PersistentDataHolder {
@NotNull
Entity[] getEntities();

View file

@ -2411,7 +2411,7 @@ index 1b2f415e3ed7f6dca12d13cd098cb4ec3af54020..64e8088d394ddcda59d0209883b778ab
@Override
public BlockPosition immutableCopy() {
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index ea09e7a742f8e28dfd3db3736422326aff0912f6..3b3e94cff2c6def318864bb5b7baefcf9de2cae7 100644
index 22281e509e65bf179c041b33238f217fb7c856ad..157eccc8e45566db527c7d46d3b3d235c802c8f7 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -26,7 +26,7 @@ public class Chunk implements IChunkAccess {
@ -2441,8 +2441,8 @@ index ea09e7a742f8e28dfd3db3736422326aff0912f6..3b3e94cff2c6def318864bb5b7baefcf
this.i = chunkconverter;
HeightMap.Type[] aheightmap_type = HeightMap.Type.values();
int j = aheightmap_type.length;
@@ -109,6 +109,110 @@ public class Chunk implements IChunkAccess {
public boolean needsDecoration;
@@ -112,6 +112,110 @@ public class Chunk implements IChunkAccess {
public final org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer(DATA_TYPE_REGISTRY);
// CraftBukkit end
+ // Paper start
@ -2552,7 +2552,7 @@ index ea09e7a742f8e28dfd3db3736422326aff0912f6..3b3e94cff2c6def318864bb5b7baefcf
public Chunk(World world, ProtoChunk protochunk) {
this(world, protochunk.getPos(), protochunk.getBiomeIndex(), protochunk.p(), protochunk.n(), protochunk.o(), protochunk.getInhabitedTime(), protochunk.getSections(), (Consumer) null);
Iterator iterator = protochunk.y().iterator();
@@ -214,6 +318,18 @@ public class Chunk implements IChunkAccess {
@@ -217,6 +321,18 @@ public class Chunk implements IChunkAccess {
}
}
@ -2571,7 +2571,7 @@ index ea09e7a742f8e28dfd3db3736422326aff0912f6..3b3e94cff2c6def318864bb5b7baefcf
@Override
public Fluid getFluid(BlockPosition blockposition) {
return this.a(blockposition.getX(), blockposition.getY(), blockposition.getZ());
@@ -353,6 +469,7 @@ public class Chunk implements IChunkAccess {
@@ -356,6 +472,7 @@ public class Chunk implements IChunkAccess {
entity.chunkX = this.loc.x;
entity.chunkY = k;
entity.chunkZ = this.loc.z;
@ -2579,7 +2579,7 @@ index ea09e7a742f8e28dfd3db3736422326aff0912f6..3b3e94cff2c6def318864bb5b7baefcf
this.entitySlices[k].add(entity);
}
@@ -375,6 +492,7 @@ public class Chunk implements IChunkAccess {
@@ -378,6 +495,7 @@ public class Chunk implements IChunkAccess {
}
this.entitySlices[i].remove(entity);
@ -2587,7 +2587,7 @@ index ea09e7a742f8e28dfd3db3736422326aff0912f6..3b3e94cff2c6def318864bb5b7baefcf
}
@Override
@@ -396,6 +514,7 @@ public class Chunk implements IChunkAccess {
@@ -399,6 +517,7 @@ public class Chunk implements IChunkAccess {
return this.a(blockposition, Chunk.EnumTileEntityState.CHECK);
}
@ -2595,7 +2595,7 @@ index ea09e7a742f8e28dfd3db3736422326aff0912f6..3b3e94cff2c6def318864bb5b7baefcf
@Nullable
public TileEntity a(BlockPosition blockposition, Chunk.EnumTileEntityState chunk_enumtileentitystate) {
// CraftBukkit start
@@ -507,7 +626,25 @@ public class Chunk implements IChunkAccess {
@@ -510,7 +629,25 @@ public class Chunk implements IChunkAccess {
// CraftBukkit start
public void loadCallback() {
@ -2621,7 +2621,7 @@ index ea09e7a742f8e28dfd3db3736422326aff0912f6..3b3e94cff2c6def318864bb5b7baefcf
if (server != null) {
/*
* If it's a new world, the first few chunks are generated inside
@@ -546,6 +683,22 @@ public class Chunk implements IChunkAccess {
@@ -549,6 +686,22 @@ public class Chunk implements IChunkAccess {
server.getPluginManager().callEvent(unloadEvent);
// note: saving can be prevented, but not forced if no saving is actually required
this.mustNotSave = !unloadEvent.isSaveChunk();
@ -3133,7 +3133,7 @@ index 07c48d777a71a979fb1f0063eef2e613e448d2eb..8a5d6869c269369d45cfe4e61853c442
super(entitytypes, world);
this.f = 5;
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 24d16bbeb8d7e971591c182149bdd8fbed7778a5..ec885c22279b237974ef461285ba59e0033800d9 100644
index 8fc44b87ba16f6d25471c26310702c5b4651989a..2b86d99420b59d67b1afec45d9a02003613d40a6 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -93,6 +93,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {

View file

@ -8,7 +8,7 @@ This enables us a fast reference to the entities current chunk instead
of having to look it up by hashmap lookups.
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 3b3e94cff2c6def318864bb5b7baefcf9de2cae7..6bd9457ad5c9fb1c0f12ff345b531be0673e866e 100644
index 157eccc8e45566db527c7d46d3b3d235c802c8f7..e46ed143a52eab4af15cc76606992c3bf68156c3 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -56,11 +56,36 @@ public class Chunk implements IChunkAccess {
@ -49,7 +49,7 @@ index 3b3e94cff2c6def318864bb5b7baefcf9de2cae7..6bd9457ad5c9fb1c0f12ff345b531be0
this.l = Maps.newHashMap();
this.m = Maps.newHashMap();
this.n = new ShortList[16];
@@ -466,6 +491,7 @@ public class Chunk implements IChunkAccess {
@@ -469,6 +494,7 @@ public class Chunk implements IChunkAccess {
}
entity.inChunk = true;
@ -57,7 +57,7 @@ index 3b3e94cff2c6def318864bb5b7baefcf9de2cae7..6bd9457ad5c9fb1c0f12ff345b531be0
entity.chunkX = this.loc.x;
entity.chunkY = k;
entity.chunkZ = this.loc.z;
@@ -478,6 +504,7 @@ public class Chunk implements IChunkAccess {
@@ -481,6 +507,7 @@ public class Chunk implements IChunkAccess {
((HeightMap) this.heightMap.get(heightmap_type)).a(along);
}
@ -65,7 +65,7 @@ index 3b3e94cff2c6def318864bb5b7baefcf9de2cae7..6bd9457ad5c9fb1c0f12ff345b531be0
public void b(Entity entity) {
this.a(entity, entity.chunkY);
}
@@ -491,7 +518,12 @@ public class Chunk implements IChunkAccess {
@@ -494,7 +521,12 @@ public class Chunk implements IChunkAccess {
i = this.entitySlices.length - 1;
}
@ -137,7 +137,7 @@ index cfbca7cfde3160e888e14c5bb3bc48267f1cb599..67fdd560f8136d83a13f75e265d5f5dd
@Nullable
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index fc23f2c4dc3ece5fd944de72b62b1a1ede3e7e45..66878c53bfb71392bf07d2c41a2edf1bc8f7af79 100644
index 82f9b1ad68012c6ea72337108bb3363a0f3a1f46..c4d7430cfe037ed65b49d2cc9c3d95002368fdc1 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -143,6 +143,7 @@ import net.minecraft.server.EntityZombieHusk;

View file

@ -6,7 +6,7 @@ Subject: [PATCH] Store counts for each Entity/Block Entity Type
Opens door for future patches to optimize performance
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 6bd9457ad5c9fb1c0f12ff345b531be0673e866e..e6855287102be620856935df32b5df9bcf6bb88e 100644
index e46ed143a52eab4af15cc76606992c3bf68156c3..18e18e6cabe94a23ebfc9f9d8279837105f1d976 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -57,15 +57,19 @@ public class Chunk implements IChunkAccess {
@ -37,7 +37,7 @@ index 6bd9457ad5c9fb1c0f12ff345b531be0673e866e..e6855287102be620856935df32b5df9b
}
return removed;
}
@@ -490,6 +495,7 @@ public class Chunk implements IChunkAccess {
@@ -493,6 +498,7 @@ public class Chunk implements IChunkAccess {
k = this.entitySlices.length - 1;
}
@ -45,7 +45,7 @@ index 6bd9457ad5c9fb1c0f12ff345b531be0673e866e..e6855287102be620856935df32b5df9b
entity.inChunk = true;
entity.setCurrentChunk(this); // Paper
entity.chunkX = this.loc.x;
@@ -523,6 +529,7 @@ public class Chunk implements IChunkAccess {
@@ -526,6 +532,7 @@ public class Chunk implements IChunkAccess {
if (!this.entitySlices[i].remove(entity)) {
return;
}

View file

@ -667,7 +667,7 @@ index 0000000000000000000000000000000000000000..944fd203e9f39d6c6fc9e270940c76c9
+ }
+}
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index b367bb8ea184489f433f8acc798466c38816ae62..a62f4bbb973b9cb6d1ee53f56a0897d70ae176af 100644
index 357856e5abcbc91452fa5b09643522f04843f71d..4479f74daef573bcbb6757186440bf47a3aef912 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -14,12 +14,15 @@ import java.util.concurrent.TimeUnit;
@ -735,10 +735,10 @@ index 871b79cb2c63525c430c257f00b2cf70157aa476..d847326b0099a0c05a085d5d62de6304
private String name;
@Nullable
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index e6855287102be620856935df32b5df9bcf6bb88e..baa3783a0c16e9a7eaec9d38e1fe6bfed9710aa1 100644
index 18e18e6cabe94a23ebfc9f9d8279837105f1d976..30d760ab30ed70ec2e4c37f2e8dbe80006c51f1b 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -693,6 +693,7 @@ public class Chunk implements IChunkAccess {
@@ -696,6 +696,7 @@ public class Chunk implements IChunkAccess {
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration));
if (this.needsDecoration) {
@ -746,7 +746,7 @@ index e6855287102be620856935df32b5df9bcf6bb88e..baa3783a0c16e9a7eaec9d38e1fe6bfe
this.needsDecoration = false;
java.util.Random random = new java.util.Random();
random.setSeed(world.getSeed());
@@ -712,6 +713,7 @@ public class Chunk implements IChunkAccess {
@@ -715,6 +716,7 @@ public class Chunk implements IChunkAccess {
}
}
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk));
@ -846,7 +846,7 @@ index 1ca6d656cd2c7bbf12df6368ad7d953765d03e36..042031d2b7cb2f56d422145ffa7589fa
private void a(long i, Consumer<Chunk> consumer) {
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index a9b40a74fb2080ccb9958f074d424c8b8ed97239..f30071fe5c1f33386829cc61d8c6976a39eff24f 100644
index 7d9161b9e3996098d0f257661e39036e82d3f88a..52621ab74c8af1ab0c38e8df28cb7dc7153096a3 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -1,5 +1,6 @@
@ -856,7 +856,7 @@ index a9b40a74fb2080ccb9958f074d424c8b8ed97239..f30071fe5c1f33386829cc61d8c6976a
import com.google.common.collect.Maps;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongSet;
@@ -392,7 +393,6 @@ public class ChunkRegionLoader {
@@ -404,7 +405,6 @@ public class ChunkRegionLoader {
private static void loadEntities(NBTTagCompound nbttagcompound, Chunk chunk) {
NBTTagList nbttaglist = nbttagcompound.getList("Entities", 10);
World world = chunk.getWorld();
@ -864,7 +864,7 @@ index a9b40a74fb2080ccb9958f074d424c8b8ed97239..f30071fe5c1f33386829cc61d8c6976a
for (int i = 0; i < nbttaglist.size(); ++i) {
NBTTagCompound nbttagcompound1 = nbttaglist.getCompound(i);
@@ -404,8 +404,6 @@ public class ChunkRegionLoader {
@@ -416,8 +416,6 @@ public class ChunkRegionLoader {
chunk.d(true);
}
@ -873,7 +873,7 @@ index a9b40a74fb2080ccb9958f074d424c8b8ed97239..f30071fe5c1f33386829cc61d8c6976a
NBTTagList nbttaglist1 = nbttagcompound.getList("TileEntities", 10);
for (int j = 0; j < nbttaglist1.size(); ++j) {
@@ -423,8 +421,6 @@ public class ChunkRegionLoader {
@@ -435,8 +433,6 @@ public class ChunkRegionLoader {
}
}
}
@ -2012,10 +2012,10 @@ index 7f435847ac1d13756ce233e7d5ae13f9dc17c443..00000000000000000000000000000000
- }
-}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 1bde861afb6ff3d339bda0996e9eaa502cce5e70..495470f9c397e80b9e6e8e3c9360b0d659b916ed 100644
index 68da8e3981dda2c04031d8033776abb845dc109e..4f8745ce03eef96597963f5c2e08055f51686755 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1774,6 +1774,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1797,6 +1797,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
packet.components = components;
getHandle().playerConnection.sendPacket(packet);
}

View file

@ -131,10 +131,10 @@ index 90af43930f9141b0c7f51bb3d887d7b9c4d935eb..1741ec5e241f8ae7a3c30a9021d14cb0
public void c() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 495470f9c397e80b9e6e8e3c9360b0d659b916ed..11f80c6f58e611f33ad8bbd09aa8bf90c7933426 100644
index 4f8745ce03eef96597963f5c2e08055f51686755..ae7fd1cfdf2a5c222959ca8694b98a77b69e7885 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1686,7 +1686,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1709,7 +1709,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getLocale() {
return getHandle().locale;

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Remove invalid mob spawner tile entities
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index baa3783a0c16e9a7eaec9d38e1fe6bfed9710aa1..dbaa56f4f8c1093935a981c14bc1cb79c991579c 100644
index 30d760ab30ed70ec2e4c37f2e8dbe80006c51f1b..4c051667028ebed6b6f57d4e7d7acbad850c1052 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -608,6 +608,10 @@ public class Chunk implements IChunkAccess {
@@ -611,6 +611,10 @@ public class Chunk implements IChunkAccess {
}
// CraftBukkit start

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Only refresh abilities if needed
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 11f80c6f58e611f33ad8bbd09aa8bf90c7933426..b491e10b95d2235e2495e491596d23614be23d50 100644
index ae7fd1cfdf2a5c222959ca8694b98a77b69e7885..8e53988ab9639a7f9c2b21c7a66f3c4a2edeb2cf 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1366,12 +1366,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1389,12 +1389,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setFlying(boolean value) {

View file

@ -117,10 +117,10 @@ index a807933d65a22dc1b15eda4dee819af72006fff3..25a4bd5a216798d01da33e54da4ab0e2
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 66878c53bfb71392bf07d2c41a2edf1bc8f7af79..10f96056700c88cc8e83477877788e3443cecefd 100644
index c4d7430cfe037ed65b49d2cc9c3d95002368fdc1..cee519adaad3f784640bb4d91b53b107054c5e58 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1022,4 +1022,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -1032,4 +1032,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return spigot;
}
// Spigot end

View file

@ -52,7 +52,7 @@ index 3a6e780007bc1b1fa799166daa01d3a9e15c7ab0..535056c64ef866e645b1bfbd149b50c5
if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index b491e10b95d2235e2495e491596d23614be23d50..7c89694da8bb0ee10b5294d8ecf83842c9030c20 100644
index 8e53988ab9639a7f9c2b21c7a66f3c4a2edeb2cf..671cab3efd94b81b0d71af3e096ffe9108d36258 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1,5 +1,6 @@
@ -62,7 +62,7 @@ index b491e10b95d2235e2495e491596d23614be23d50..7c89694da8bb0ee10b5294d8ecf83842
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import com.google.common.io.BaseEncoding;
@@ -215,6 +216,96 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -238,6 +239,96 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}

View file

@ -30,10 +30,10 @@ index cd47a4ca069df26969de3051c2aac80540093818..abbf59bb91021821876a8960e8f77fac
+ }
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 7c89694da8bb0ee10b5294d8ecf83842c9030c20..3698080b147301b41014ea75c677af042a38c6a3 100644
index 671cab3efd94b81b0d71af3e096ffe9108d36258..2cc50f8d91c4ea8632ad72fce6aa585916ca8dd7 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -760,7 +760,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -783,7 +783,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (fromWorld == toWorld) {
entity.playerConnection.teleport(to);
} else {

View file

@ -49,7 +49,7 @@ index 0000000000000000000000000000000000000000..f699ce18ca044f813e194ef2786b7ea8
+ }
+}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index dbaa56f4f8c1093935a981c14bc1cb79c991579c..330492e918efa42717ef2208947e8be927df5398 100644
index 4c051667028ebed6b6f57d4e7d7acbad850c1052..399641433a874cb6426a6092722036446df32eb6 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -1,5 +1,6 @@
@ -59,7 +59,7 @@ index dbaa56f4f8c1093935a981c14bc1cb79c991579c..330492e918efa42717ef2208947e8be9
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
@@ -613,10 +614,15 @@ public class Chunk implements IChunkAccess {
@@ -616,10 +617,15 @@ public class Chunk implements IChunkAccess {
this.tileEntities.remove(blockposition);
// Paper end
} else {
@ -187,7 +187,7 @@ index 1844a6504acc420bdfaaf8f045c569e970d055db..d6aadbda5c5a17976659f57ee04cf9b9
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index f0f099c28dcbfa2914fc86e87c52d70b68883ebe..8d8da7885df69fd98f2b4715e4b6b4aa992bde27 100644
index c628b3f8a927d8ddba1c14c2dc60ae4fc517b56f..8ae490f5dbf9afc467f82fd7ea863bc9e247203b 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1,5 +1,10 @@

View file

@ -22,7 +22,7 @@ index 7493d7ce48a9c5875bce01252b4d958ab3b9ec7d..535e24a54a22f59b165e5043653eef5c
// CraftBukkit end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 3698080b147301b41014ea75c677af042a38c6a3..4140fef9aeb3a67c8a0e543c54b3df66ba50eb0b 100644
index 2cc50f8d91c4ea8632ad72fce6aa585916ca8dd7..65ba8b130328b681b67a01b06353ea382d004be6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -138,6 +138,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -36,7 +36,7 @@ index 3698080b147301b41014ea75c677af042a38c6a3..4140fef9aeb3a67c8a0e543c54b3df66
public CraftPlayer(CraftServer server, EntityPlayer entity) {
super(server, entity);
@@ -1790,6 +1794,32 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1813,6 +1817,32 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean getAffectsSpawning() {
return this.getHandle().affectsSpawning;
}

View file

@ -44,10 +44,10 @@ index a69eadd57a2ccb30eaa5f997feebf0cbb2300065..e9a67693f36345da1ef657a584f99692
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4140fef9aeb3a67c8a0e543c54b3df66ba50eb0b..90f04e16956e18f48a45d45f09d4f37eabc65478 100644
index 65ba8b130328b681b67a01b06353ea382d004be6..eb86e8ff8c483b77d91a948411aaf167f6261091 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1607,6 +1607,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1630,6 +1630,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setRealHealth(double health) {

View file

@ -33,10 +33,10 @@ index f6a5ebd4c7ec045c8dd6841831f8fcc0b32d964e..63a9ce32fb8b98695e104f7d820cd9b1
this.a = i;
this.b = j;
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 330492e918efa42717ef2208947e8be927df5398..8d13c2fab572428d61777699d5463f0678d9ad7c 100644
index 399641433a874cb6426a6092722036446df32eb6..560d61183f28b0271739548e8b784fdaf97e8a11 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -308,12 +308,27 @@ public class Chunk implements IChunkAccess {
@@ -311,12 +311,27 @@ public class Chunk implements IChunkAccess {
return this.sections;
}
@ -192,7 +192,7 @@ index 065eeed71075bb8f4069cb172ea7fca54793ddc0..09da0cc8f02c504191dfec8be93e6cf6
@Override
public Fluid getFluid(BlockPosition blockposition) {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index ca073af1c88721a856ad5a1878db24f3d94135e6..3b4ac43dbad865e1f99a20e4b8860797d060903f 100644
index 884e166826a73e0210f3c215d68cdf1a4bd00355..5f867e28ec349b4ff1ac1d9398c7bd6263cbf9c0 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -187,7 +187,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {

View file

@ -30,10 +30,10 @@ index 92d1dffbf436a21943b4a6aa0fabf54f064e6046..725958efab3dd05e04b7b18e16923076
+ }
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 8d13c2fab572428d61777699d5463f0678d9ad7c..72f7d415907b7e8478b3ca4a0fd6c3897ce70d40 100644
index 560d61183f28b0271739548e8b784fdaf97e8a11..f02d4726747a0992e851730c21c9423f706aa27a 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -977,7 +977,7 @@ public class Chunk implements IChunkAccess {
@@ -980,7 +980,7 @@ public class Chunk implements IChunkAccess {
@Override
public long getInhabitedTime() {

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Workaround for setting passengers on players
SPIGOT-1915 & GH-114
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 90f04e16956e18f48a45d45f09d4f37eabc65478..81beabd053c024b0fc4d0948b94a8ff789cb1ba6 100644
index eb86e8ff8c483b77d91a948411aaf167f6261091..9aca1c0198f4d9e0b8b632aead499aaed240b091 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -769,6 +769,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -792,6 +792,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return true;
}

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Implement PlayerLocaleChangeEvent
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 863f779453bb028d6452292663fd1e41ab434165..ed29b3cdbc0137f81d586207d4082a02d8ef73b5 100644
index 4799bf67f0ca74cf5573ce0a553903f75b7711b7..4849a44ebbddcdd17a84cb0db3c47ea420f2bf05 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1540,16 +1540,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -29,10 +29,10 @@ index 863f779453bb028d6452292663fd1e41ab434165..ed29b3cdbc0137f81d586207d4082a02
this.locale = packetplayinsettings.locale;
this.clientViewDistance = packetplayinsettings.viewDistance;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 81beabd053c024b0fc4d0948b94a8ff789cb1ba6..da264f118fca10bc7ff758e702c11f9d4885d2c2 100644
index 9aca1c0198f4d9e0b8b632aead499aaed240b091..4148b53d08d7bde1c13d9cdca4330f1313b33409 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1793,8 +1793,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1816,8 +1816,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getLocale() {

View file

@ -19,10 +19,10 @@ index ac76bdd7e1d91b0d242539c4495948cdfbb622e0..6cb717a63f52d757b0b323408d2fc0c3
+ }
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 72f7d415907b7e8478b3ca4a0fd6c3897ce70d40..e33711fc14323777c86a485dee20ebaeb3989614 100644
index f02d4726747a0992e851730c21c9423f706aa27a..45d7a06ea51ccc2264a7c3d1518d0b37d089c531 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -637,6 +637,12 @@ public class Chunk implements IChunkAccess {
@@ -640,6 +640,12 @@ public class Chunk implements IChunkAccess {
"Chunk coordinates: " + (this.loc.x * 16) + "," + (this.loc.z * 16));
e.printStackTrace();
ServerInternalException.reportInternalException(e);

View file

@ -18,10 +18,10 @@ index bdfd17362518ff2398cf9e1743a7a4f0c7a0e966..cc14e4b4609fa7013df666181c0e02a5
public static <K, V> Collector<Entry<? extends K, ? extends V>, ?, Map<K, V>> a() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index da264f118fca10bc7ff758e702c11f9d4885d2c2..6ca7a7a3267d3c8477c8333dea9ac2bbad230056 100644
index 4148b53d08d7bde1c13d9cdca4330f1313b33409..207fb61243d87620b65720d4cb558c6234f92c92 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -221,6 +221,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -244,6 +244,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// Paper start

View file

@ -49,10 +49,10 @@ index 259713339217660e8b81a9500f57c6995ea59dde..8eb20c6b9a88d5d4056f91df1f496d3d
if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, blockposition).isCancelled()) {
Entity vehicle = entity.getVehicle();
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index e7125c8a3a4b8374e3a5ea37dc097d383ba8bdc3..1d3e4d5c88368f89f8b6da40788592362df8c87f 100644
index 833ea97631563c7e4f35a232c5f3f371e6eff689..80dfa39fdf736225c3c1ad4bf510c250c0e87dba 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1060,5 +1060,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -1070,5 +1070,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
Location origin = getHandle().origin;
return origin == null ? null : origin.clone();
}

View file

@ -42,10 +42,10 @@ index e2370b8cf76d6f06cbdaba009feaf5df98b36da4..a2eaea4bd847ebe0b3dc35c95c4c29d6
return i * 2;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 6eb02d0a69a0375ba099f776636de765612911e5..cbeac436e57a68270b2681ddf564d84c167398bd 100644
index abc0466a2d6a059a401f57d93cd4e9465de14461..0ab5915d447b7a23deccb54763f54d09e83cf88e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1075,8 +1075,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1098,8 +1098,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return GameMode.getByValue(getHandle().playerInteractManager.getGameMode().getId());
}

View file

@ -48,10 +48,10 @@ index 230dcda34707b822790ace75957174f937821898..a3555dd251af5dd4b320428aadaffe70
uniqueId = i.getId();
// Paper end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index cbeac436e57a68270b2681ddf564d84c167398bd..4bcf2ed3dd2a5d51e4490d4156978c8fff0df2b0 100644
index 0ab5915d447b7a23deccb54763f54d09e83cf88e..1721f3c937450eacfcb48df482535e6cf1f24fe3 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1233,8 +1233,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1256,8 +1256,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
hiddenPlayers.put(player.getUniqueId(), hidingPlugins);
// Remove this player from the hidden player's EntityTrackerEntry
@ -66,7 +66,7 @@ index cbeac436e57a68270b2681ddf564d84c167398bd..4bcf2ed3dd2a5d51e4490d4156978c8f
PlayerChunkMap.EntityTracker entry = tracker.trackedEntities.get(other.getId());
if (entry != null) {
entry.clear(getHandle());
@@ -1275,8 +1280,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1298,8 +1303,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
hiddenPlayers.remove(player.getUniqueId());
@ -81,7 +81,7 @@ index cbeac436e57a68270b2681ddf564d84c167398bd..4bcf2ed3dd2a5d51e4490d4156978c8f
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, other));
@@ -1285,6 +1295,50 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1308,6 +1318,50 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
entry.updatePlayer(getHandle());
}
}

View file

@ -9,7 +9,7 @@ e.g. servers which allow and support the usage of mod packs.
provide an optional flag to disable this check, at your own risk.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4bcf2ed3dd2a5d51e4490d4156978c8fff0df2b0..23889ce169baf956cfb39f1ec21a8369f80c5555 100644
index 1721f3c937450eacfcb48df482535e6cf1f24fe3..df1896d447295123dbf7f8c8dea163be7849132f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -141,6 +141,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -20,7 +20,7 @@ index 4bcf2ed3dd2a5d51e4490d4156978c8fff0df2b0..23889ce169baf956cfb39f1ec21a8369
// Paper end
public CraftPlayer(CraftServer server, EntityPlayer entity) {
@@ -1501,7 +1502,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1524,7 +1525,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void addChannel(String channel) {

View file

@ -180,10 +180,10 @@ index a1c318aa6501d9d0bdd53dc1fb8a99b7a782b4ce..ebcd2d043b3e6cf90b62eda1ea7a2d8c
@Override
public boolean isBlocking() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 23889ce169baf956cfb39f1ec21a8369f80c5555..25175230583bbd6fcfc864dcbae4111dcc0d3b33 100644
index df1896d447295123dbf7f8c8dea163be7849132f..18f0d23e38abb9c3e326a727cc4b4e040adb432d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -790,7 +790,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -813,7 +813,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Close any foreign inventory
if (getHandle().activeContainer != getHandle().defaultContainer) {

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Mark chunk dirty anytime entities change to guarantee it
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index e33711fc14323777c86a485dee20ebaeb3989614..bc249e399befa84cdf07cc58cd0072bb9cb5cced 100644
index 45d7a06ea51ccc2264a7c3d1518d0b37d089c531..edacc6da62593c94392f460cb6839ed5f8067dd4 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -519,6 +519,7 @@ public class Chunk implements IChunkAccess {
@@ -522,6 +522,7 @@ public class Chunk implements IChunkAccess {
entity.chunkZ = this.loc.z;
this.entities.add(entity); // Paper - per chunk entity list
this.entitySlices[k].add(entity);
@ -17,7 +17,7 @@ index e33711fc14323777c86a485dee20ebaeb3989614..bc249e399befa84cdf07cc58cd0072bb
}
@Override
@@ -546,6 +547,7 @@ public class Chunk implements IChunkAccess {
@@ -549,6 +550,7 @@ public class Chunk implements IChunkAccess {
return;
}
entityCounts.decrement(entity.getMinecraftKeyString());

View file

@ -9,10 +9,10 @@ This should hopefully avoid duplicate entities ever being created
if the entity was to end up in 2 different chunk slices
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index bc249e399befa84cdf07cc58cd0072bb9cb5cced..3b3cae92513a85ba842d403c68f5a1fb8fde785d 100644
index edacc6da62593c94392f460cb6839ed5f8067dd4..18d55cea6258c7b59b79aec1bcdf358944d5b527 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -510,6 +510,25 @@ public class Chunk implements IChunkAccess {
@@ -513,6 +513,25 @@ public class Chunk implements IChunkAccess {
if (k >= this.entitySlices.length) {
k = this.entitySlices.length - 1;
}
@ -38,7 +38,7 @@ index bc249e399befa84cdf07cc58cd0072bb9cb5cced..3b3cae92513a85ba842d403c68f5a1fb
if (!entity.inChunk || entity.getCurrentChunk() != this) entityCounts.increment(entity.getMinecraftKeyString()); // Paper
entity.inChunk = true;
@@ -519,6 +538,7 @@ public class Chunk implements IChunkAccess {
@@ -522,6 +541,7 @@ public class Chunk implements IChunkAccess {
entity.chunkZ = this.loc.z;
this.entities.add(entity); // Paper - per chunk entity list
this.entitySlices[k].add(entity);
@ -46,7 +46,7 @@ index bc249e399befa84cdf07cc58cd0072bb9cb5cced..3b3cae92513a85ba842d403c68f5a1fb
this.markDirty(); // Paper
}
@@ -543,6 +563,10 @@ public class Chunk implements IChunkAccess {
@@ -546,6 +566,10 @@ public class Chunk implements IChunkAccess {
// Paper start
if (entity.currentChunk != null && entity.currentChunk.get() == this) entity.setCurrentChunk(null);

View file

@ -18,10 +18,10 @@ an invalid entity.
This should reduce log occurrences of dupe uuid messages.
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index f30071fe5c1f33386829cc61d8c6976a39eff24f..1e28061dd83a4bf2daab38aee84ddba3329b28dc 100644
index 52621ab74c8af1ab0c38e8df28cb7dc7153096a3..8affcbbb0a970acc83531f7308734552727b00c5 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -301,6 +301,7 @@ public class ChunkRegionLoader {
@@ -307,6 +307,7 @@ public class ChunkRegionLoader {
nbttagcompound1.set("TileEntities", nbttaglist1);
NBTTagList nbttaglist2 = new NBTTagList();
@ -29,7 +29,7 @@ index f30071fe5c1f33386829cc61d8c6976a39eff24f..1e28061dd83a4bf2daab38aee84ddba3
if (ichunkaccess.getChunkStatus().getType() == ChunkStatus.Type.LEVELCHUNK) {
Chunk chunk = (Chunk) ichunkaccess;
@@ -312,13 +313,28 @@ public class ChunkRegionLoader {
@@ -324,13 +325,28 @@ public class ChunkRegionLoader {
while (iterator1.hasNext()) {
Entity entity = (Entity) iterator1.next();
NBTTagCompound nbttagcompound4 = new NBTTagCompound();
@ -59,7 +59,7 @@ index f30071fe5c1f33386829cc61d8c6976a39eff24f..1e28061dd83a4bf2daab38aee84ddba3
} else {
ProtoChunk protochunk = (ProtoChunk) ichunkaccess;
@@ -377,6 +393,19 @@ public class ChunkRegionLoader {
@@ -389,6 +405,19 @@ public class ChunkRegionLoader {
nbttagcompound1.set("Structures", a(chunkcoordintpair, ichunkaccess.h(), ichunkaccess.v()));
return nbttagcompound;
}

View file

@ -23,10 +23,10 @@ index 9cb2f3b31921870ddba044840e99eb04babe26bb..f0a836db74ad3e20778d3863223bc9a3
MutablePair<Integer, Map<ChunkCoordIntPair, Integer>> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap()));
ChunkCoordIntPair chunk = new ChunkCoordIntPair(e.chunkX, e.chunkZ);
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 3b3cae92513a85ba842d403c68f5a1fb8fde785d..5ee581d1634f44a98756c5d11def9c3d46fd53e9 100644
index 18d55cea6258c7b59b79aec1bcdf358944d5b527..6154f7a7973168cbe294bc0f40894f05bf20513e 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -818,6 +818,7 @@ public class Chunk implements IChunkAccess {
@@ -821,6 +821,7 @@ public class Chunk implements IChunkAccess {
for (int i1 = 0; i1 < l; ++i1) {
Entity entity1 = (Entity) list1.get(i1);
@ -34,7 +34,7 @@ index 3b3cae92513a85ba842d403c68f5a1fb8fde785d..5ee581d1634f44a98756c5d11def9c3d
if (entity1.getBoundingBox().c(axisalignedbb) && entity1 != entity) {
if (predicate == null || predicate.test(entity1)) {
@@ -854,6 +855,7 @@ public class Chunk implements IChunkAccess {
@@ -857,6 +858,7 @@ public class Chunk implements IChunkAccess {
while (iterator.hasNext()) {
T entity = (T) iterator.next(); // CraftBukkit - decompile error
@ -42,7 +42,7 @@ index 3b3cae92513a85ba842d403c68f5a1fb8fde785d..5ee581d1634f44a98756c5d11def9c3d
if ((entitytypes == null || entity.getEntityType() == entitytypes) && entity.getBoundingBox().c(axisalignedbb) && predicate.test(entity)) {
list.add(entity);
@@ -875,6 +877,7 @@ public class Chunk implements IChunkAccess {
@@ -878,6 +880,7 @@ public class Chunk implements IChunkAccess {
while (iterator.hasNext()) {
T t0 = (T) iterator.next(); // CraftBukkit - decompile error

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Ability to get Tile Entities from a chunk without snapshots
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index eaa60f89bf57f348a6be287b2478b33ca2320d07..3d18a95c9ce9e2fbe142b522d41045992002f715 100644
index 1a312a868f6a65e7d4a53406825e9efd96d98607..4aeae5ef72c2d929c86b4f9575f2c162710f99f0 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -129,9 +129,16 @@ public class CraftChunk implements Chunk {
@@ -130,9 +130,16 @@ public class CraftChunk implements Chunk {
@Override
public BlockState[] getTileEntities() {
@ -25,7 +25,7 @@ index eaa60f89bf57f348a6be287b2478b33ca2320d07..3d18a95c9ce9e2fbe142b522d4104599
int index = 0;
net.minecraft.server.Chunk chunk = getHandle();
@@ -143,7 +150,7 @@ public class CraftChunk implements Chunk {
@@ -144,7 +151,7 @@ public class CraftChunk implements Chunk {
}
BlockPosition position = (BlockPosition) obj;

View file

@ -17,10 +17,10 @@ index cc20b73a993d021789840ed2ee7ba1fc8310dc5a..a6265c71973b67a0b49a41e2163a6f48
return (float) (1.0D / this.b(GenericAttributes.ATTACK_SPEED) * 20.0D);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 25175230583bbd6fcfc864dcbae4111dcc0d3b33..b90b35c08cdc9bb44aaf9f4824289fd0824c937f 100644
index 18f0d23e38abb9c3e326a727cc4b4e040adb432d..982b8a7028385d38ff0bd88aabd94801ae258037 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1970,6 +1970,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1993,6 +1993,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
getInventory().setItemInMainHand(hand);
}

View file

@ -274,7 +274,7 @@ index f193c2778d0f04973546256d648692398b932dca..c54641d984bdd04067f9dba66322b01b
return this.isBaby() ? (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.5F : (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F;
}
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 7ac4e006c76373d2aedb37adf22bbb3044f9e65b..246de149254a6303b36ba1e2441499497c09bc5b 100644
index daeb5a6e005a4b85b5f3ac581c0e7cb6ea64b2c8..db7435c6923235fad63bdf531eca4a95c1b63dc9 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -82,6 +82,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -352,10 +352,10 @@ index 9a2e6bedfc50fba10f37c01d825f80415bfb69d3..a4afe638515471159d505a5e402a9342
this.minecraftKey = minecraftKey;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index b90b35c08cdc9bb44aaf9f4824289fd0824c937f..28a04cb8a90ad82b86f658ad17675ab58f7e8d41 100644
index 982b8a7028385d38ff0bd88aabd94801ae258037..6c3b9df31e9c44f7171cf08014561e4b095133b1 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1761,7 +1761,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1784,7 +1784,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void sendHealthUpdate() {
@ -373,7 +373,7 @@ index b90b35c08cdc9bb44aaf9f4824289fd0824c937f..28a04cb8a90ad82b86f658ad17675ab5
public void injectScaledMaxHealth(Collection<AttributeModifiable> collection, boolean force) {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 95f01296b1a7763f33ec17ab4e11d85549ca95c0..460f473b0158f2392261a55db12fa735969de470 100644
index 78f3af7de270750734f6d8d1522e0d755408e17e..4d82634cc4f1f4ef16cb027c7edfc8b7638311b5 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -791,9 +791,16 @@ public class CraftEventFactory {

View file

@ -16,7 +16,7 @@ intent to remove) and replace it with two new methods, clearly named and
documented as to their purpose.
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 0bc51dd94d87b469022183c5a4f94cebe9f1a950..71604e01fe6d7dc5d8c500c10ae8b54075848b4f 100644
index e69fd9985ea99c46ac20bf5cabd961eeccdbc7c1..32b2d592f2e2e736ab46a08ecbad89bc3adc3f2b 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -82,6 +82,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -28,7 +28,7 @@ index 0bc51dd94d87b469022183c5a4f94cebe9f1a950..71604e01fe6d7dc5d8c500c10ae8b540
public boolean queueHealthUpdatePacket = false;
public net.minecraft.server.PacketPlayOutUpdateHealth queuedHealthUpdatePacket;
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index bc31e882e77f5b8657107db1e3a830df4cf561e1..9a56f83e12c65cafe3d1fb00379b78e5ea59b3f1 100644
index 9a552465a262238614a6ee2a7e9118f9866d2441..3af77481c1f4671602058be8f34504b302e20c9c 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -97,6 +97,7 @@ public abstract class PlayerList {
@ -106,7 +106,7 @@ index 00333548b470435aa89fb0f4b29047eb1461e992..5770d4183c1b9ab6119a25930283c023
public Location getBedSpawnLocation() {
NBTTagCompound data = getData();
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 28a04cb8a90ad82b86f658ad17675ab58f7e8d41..806c621c6dfec93b7d0e46471dc2757998c90486 100644
index 6c3b9df31e9c44f7171cf08014561e4b095133b1..16c0aafcb2f0dc9e44e6f68f410236b3283050e5 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -142,6 +142,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -117,7 +117,7 @@ index 28a04cb8a90ad82b86f658ad17675ab58f7e8d41..806c621c6dfec93b7d0e46471dc27579
// Paper end
public CraftPlayer(CraftServer server, EntityPlayer entity) {
@@ -1405,6 +1406,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1428,6 +1429,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.firstPlayed = firstPlayed;
}
@ -136,7 +136,7 @@ index 28a04cb8a90ad82b86f658ad17675ab58f7e8d41..806c621c6dfec93b7d0e46471dc27579
public void readExtraData(NBTTagCompound nbttagcompound) {
hasPlayedBefore = true;
if (nbttagcompound.hasKey("bukkit")) {
@@ -1427,6 +1440,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1450,6 +1463,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setExtraData(NBTTagCompound nbttagcompound) {
@ -145,7 +145,7 @@ index 28a04cb8a90ad82b86f658ad17675ab58f7e8d41..806c621c6dfec93b7d0e46471dc27579
if (!nbttagcompound.hasKey("bukkit")) {
nbttagcompound.set("bukkit", new NBTTagCompound());
}
@@ -1441,6 +1456,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1464,6 +1479,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
data.setLong("firstPlayed", getFirstPlayed());
data.setLong("lastPlayed", System.currentTimeMillis());
data.setString("lastKnownName", handle.getName());

View file

@ -12,10 +12,10 @@ Player we will look at limiting the scope of this change. It appears to
be unintentional in the few cases we've seen so far.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 806c621c6dfec93b7d0e46471dc2757998c90486..d43ada6dccb45060ea37acf7a2a8ea6a4d74ab18 100644
index 16c0aafcb2f0dc9e44e6f68f410236b3283050e5..af7838a654978e86b4d2f2ff80c04da245ff1a41 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2015,6 +2015,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2038,6 +2038,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void resetCooldown() {
getHandle().resetAttackCooldown();
}

View file

@ -71,7 +71,7 @@ index 1aecc84479b00a019a5b68f5e726d1c2965ae0f7..c3a5db97fd85b31c6b4bce93527b9d0e
// Spigot Start
if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, blockposition).isCancelled()) {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index cb04de23dd8b506ebfd07d60acd082d6b7e14528..fbed3c1012c5b6fe61598ae6fae64edc2ad2e490 100644
index 19d8497d691e0ec6f4451298dcf4b4831062d5ed..5b2cecba3569a35ba259427747a8d39f51d1c8cb 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -262,7 +262,7 @@ public abstract class PlayerList {
@ -96,10 +96,10 @@ index d6c86ce6a6a23ac8e889b0a9e7b8b7b8513ba5d1..21c0450d10e34ba066325af1b1bf7732
if (entity.valid) {
MinecraftServer.LOGGER.error("Attempted Double World add on " + entity, new Throwable());
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index d55383d8fb471fe3441dbbc8e9344b42f1d7465b..a479ca88dcf60866650c236e885dd55f47915858 100644
index 61cadd53ca0125585da7fa33bfb8a82908f35cd2..423e6c3d4dc0266b70eae2dfa0aca6d4cc5442c5 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1066,5 +1066,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -1076,5 +1076,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
public boolean fromMobSpawner() {
return getHandle().spawnedViaMobSpawner;
}

View file

@ -40,10 +40,10 @@ index dd4d12f4e3ab5385b85504bde962adce2981dfb5..1511212cbfbece279d9f66473bd6b5bc
double deltaZ = this.locZ() - player.locZ();
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 16edb26f9e66e26e5f26b83301613cd1486c7700..748b1c12ccee67a35232cf7a48e68ef7f34147c7 100644
index af7838a654978e86b4d2f2ff80c04da245ff1a41..b5088ad2eeef0a3fae0acb3dfea7605b9a861c73 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2024,6 +2024,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2047,6 +2047,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
super.remove();
}
}

View file

@ -81,10 +81,10 @@ index 15e1f9f65280043853544d3bf796f991df2482de..21910dfd1a533e923a8a73e92fea2568
+ }
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 5ee581d1634f44a98756c5d11def9c3d46fd53e9..8e3244fc5c6e5fff22857637b4ab5944d6b1e165 100644
index 6154f7a7973168cbe294bc0f40894f05bf20513e..0f8745ede62894f8d88fc8985e34b32acee5c698 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -499,6 +499,7 @@ public class Chunk implements IChunkAccess {
@@ -502,6 +502,7 @@ public class Chunk implements IChunkAccess {
if (i != this.loc.x || j != this.loc.z) {
Chunk.LOGGER.warn("Wrong location! ({}, {}) should be ({}, {}), {}", i, j, this.loc.x, this.loc.z, entity);
entity.dead = true;

View file

@ -43,10 +43,10 @@ index db6b52850f10d212b3db81dcf86c622e610f02b2..3bfd225db6945cb431238a9a980fb6d1
@Nullable
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 1e28061dd83a4bf2daab38aee84ddba3329b28dc..ff859311abb0eeaedb9c9d9cf7a9e858f4e12978 100644
index 8affcbbb0a970acc83531f7308734552727b00c5..c8aec9380ffb4e27ee41ff478ab984d92a5837b4 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -407,6 +407,17 @@ public class ChunkRegionLoader {
@@ -419,6 +419,17 @@ public class ChunkRegionLoader {
}
// Paper end

View file

@ -975,10 +975,10 @@ index 0000000000000000000000000000000000000000..333763936897befda5bb6c077944d266
+ }
+}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 62758052546fac25fc90a9d26e5081d92eeba8b5..8dea2c50529478cf8473a53b7f760546812aa7ff 100644
index 71efd1efab43d5aeabba2ad385016b616f4e4849..4ff3eff58fa8007eca7eec22ef53d23705a98ed9 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -423,7 +423,7 @@ public class Chunk implements IChunkAccess {
@@ -426,7 +426,7 @@ public class Chunk implements IChunkAccess {
return null;
}
@ -1001,7 +1001,7 @@ index ed22ff28ea6c0978ec0d9d1ecf7baa3f422ed677..d2286f1549de563332c3e4181b9ada30
// Paper start
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index ff859311abb0eeaedb9c9d9cf7a9e858f4e12978..95bc46e8d9c9f75147cfdeaf464ec3ca2e491b1c 100644
index c8aec9380ffb4e27ee41ff478ab984d92a5837b4..4036970f4831f49eb0f35e3c11743623ac2eabb5 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -58,7 +58,7 @@ public class ChunkRegionLoader {
@ -1013,8 +1013,8 @@ index ff859311abb0eeaedb9c9d9cf7a9e858f4e12978..95bc46e8d9c9f75147cfdeaf464ec3ca
chunksection.getBlocks().a(nbttagcompound2.getList("Palette", 10), nbttagcompound2.getLongArray("BlockStates"));
chunksection.recalcBlockCounts();
@@ -116,7 +116,7 @@ public class ChunkRegionLoader {
loadEntities(nbttagcompound1, chunk);
@@ -122,7 +122,7 @@ public class ChunkRegionLoader {
// CraftBukkit end
});
} else {
- ProtoChunk protochunk = new ProtoChunk(chunkcoordintpair, chunkconverter, achunksection, protochunkticklist, protochunkticklist1);
@ -1427,10 +1427,10 @@ index e89b512613e77d1f11acc9dfa5fb5d69c824305f..f4a4902ed161c7fab5c625135f11ff2b
convertable = convertable_conversionsession;
uuid = WorldUUID.getUUID(convertable_conversionsession.folder.toFile());
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index 3d18a95c9ce9e2fbe142b522d41045992002f715..ddad3440d364ebe98f6fabf00e90766b4ea4a5c2 100644
index 4aeae5ef72c2d929c86b4f9575f2c162710f99f0..d40ef8353b2c025309144b4123d6a7dff04a9c62 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -41,7 +41,7 @@ public class CraftChunk implements Chunk {
@@ -42,7 +42,7 @@ public class CraftChunk implements Chunk {
private final WorldServer worldServer;
private final int x;
private final int z;
@ -1439,7 +1439,7 @@ index 3d18a95c9ce9e2fbe142b522d41045992002f715..ddad3440d364ebe98f6fabf00e90766b
private static final byte[] emptyLight = new byte[2048];
public CraftChunk(net.minecraft.server.Chunk chunk) {
@@ -263,7 +263,7 @@ public class CraftChunk implements Chunk {
@@ -264,7 +264,7 @@ public class CraftChunk implements Chunk {
NBTTagCompound data = new NBTTagCompound();
cs[i].getBlocks().a(data, "Palette", "BlockStates");

View file

@ -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 8dea2c50529478cf8473a53b7f760546812aa7ff..a6cd89e0850c11ab6dd7f77842583c456c7f93dd 100644
index 4ff3eff58fa8007eca7eec22ef53d23705a98ed9..211e4353e88ad703c7f6aa8e416e6a50909bb3d7 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -85,6 +85,10 @@ public class Chunk implements IChunkAccess {
@ -28,7 +28,7 @@ index 8dea2c50529478cf8473a53b7f760546812aa7ff..a6cd89e0850c11ab6dd7f77842583c45
// Paper end
public Chunk(World world, ChunkCoordIntPair chunkcoordintpair, BiomeStorage biomestorage, ChunkConverter chunkconverter, TickList<Block> ticklist, TickList<FluidType> ticklist1, long i, @Nullable ChunkSection[] achunksection, @Nullable Consumer<Chunk> consumer) {
@@ -539,6 +543,13 @@ public class Chunk implements IChunkAccess {
@@ -542,6 +546,13 @@ public class Chunk implements IChunkAccess {
entity.chunkZ = this.loc.z;
this.entities.add(entity); // Paper - per chunk entity list
this.entitySlices[k].add(entity);
@ -42,7 +42,7 @@ index 8dea2c50529478cf8473a53b7f760546812aa7ff..a6cd89e0850c11ab6dd7f77842583c45
entity.entitySlice = this.entitySlices[k]; // Paper
this.markDirty(); // Paper
}
@@ -571,6 +582,11 @@ public class Chunk implements IChunkAccess {
@@ -574,6 +585,11 @@ public class Chunk implements IChunkAccess {
if (!this.entitySlices[i].remove(entity)) {
return;
}
@ -54,7 +54,7 @@ index 8dea2c50529478cf8473a53b7f760546812aa7ff..a6cd89e0850c11ab6dd7f77842583c45
entityCounts.decrement(entity.getMinecraftKeyString());
this.markDirty(); // Paper
// Paper end
@@ -854,6 +870,14 @@ public class Chunk implements IChunkAccess {
@@ -857,6 +873,14 @@ public class Chunk implements IChunkAccess {
for (int k = i; k <= j; ++k) {
Iterator iterator = this.entitySlices[k].iterator(); // Spigot
@ -69,7 +69,7 @@ index 8dea2c50529478cf8473a53b7f760546812aa7ff..a6cd89e0850c11ab6dd7f77842583c45
while (iterator.hasNext()) {
T entity = (T) iterator.next(); // CraftBukkit - decompile error
if (entity.shouldBeRemoved) continue; // Paper
@@ -873,9 +897,29 @@ public class Chunk implements IChunkAccess {
@@ -876,9 +900,29 @@ public class Chunk implements IChunkAccess {
i = MathHelper.clamp(i, 0, this.entitySlices.length - 1);
j = MathHelper.clamp(j, 0, this.entitySlices.length - 1);

View file

@ -2495,7 +2495,7 @@ index b49420bdbdd00148fc5f9a21d3f4953457b2cdc6..032464901e02392df4966c68cce8d06f
} finally {
playerChunkMap.callbackExecutor.run();
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 95bc46e8d9c9f75147cfdeaf464ec3ca2e491b1c..61aef3c14dff6bda603175883f9cb1b9a2c82428 100644
index 4036970f4831f49eb0f35e3c11743623ac2eabb5..5612f2f4d3cd76192868ff300f6affb7c6cb1c64 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
@ -2579,7 +2579,7 @@ index 95bc46e8d9c9f75147cfdeaf464ec3ca2e491b1c..61aef3c14dff6bda603175883f9cb1b9
}
}
}
@@ -178,7 +215,7 @@ public class ChunkRegionLoader {
@@ -184,7 +221,7 @@ public class ChunkRegionLoader {
}
if (chunkstatus_type == ChunkStatus.Type.LEVELCHUNK) {
@ -2588,7 +2588,7 @@ index 95bc46e8d9c9f75147cfdeaf464ec3ca2e491b1c..61aef3c14dff6bda603175883f9cb1b9
} else {
ProtoChunk protochunk1 = (ProtoChunk) object;
@@ -217,11 +254,83 @@ public class ChunkRegionLoader {
@@ -223,11 +260,83 @@ public class ChunkRegionLoader {
protochunk1.a(worldgenstage_features, BitSet.valueOf(nbttagcompound5.getByteArray(s1)));
}
@ -2673,7 +2673,7 @@ index 95bc46e8d9c9f75147cfdeaf464ec3ca2e491b1c..61aef3c14dff6bda603175883f9cb1b9
ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos();
NBTTagCompound nbttagcompound = new NBTTagCompound();
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
@@ -230,7 +339,7 @@ public class ChunkRegionLoader {
@@ -236,7 +345,7 @@ public class ChunkRegionLoader {
nbttagcompound.set("Level", nbttagcompound1);
nbttagcompound1.setInt("xPos", chunkcoordintpair.x);
nbttagcompound1.setInt("zPos", chunkcoordintpair.z);
@ -2682,15 +2682,15 @@ index 95bc46e8d9c9f75147cfdeaf464ec3ca2e491b1c..61aef3c14dff6bda603175883f9cb1b9
nbttagcompound1.setLong("InhabitedTime", ichunkaccess.getInhabitedTime());
nbttagcompound1.setString("Status", ichunkaccess.getChunkStatus().d());
ChunkConverter chunkconverter = ichunkaccess.p();
@@ -246,14 +355,22 @@ public class ChunkRegionLoader {
@@ -252,14 +361,22 @@ public class ChunkRegionLoader {
NBTTagCompound nbttagcompound2;
- 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));
@ -2709,7 +2709,7 @@ index 95bc46e8d9c9f75147cfdeaf464ec3ca2e491b1c..61aef3c14dff6bda603175883f9cb1b9
if (chunksection != Chunk.a || nibblearray != null || nibblearray1 != null) {
nbttagcompound2 = new NBTTagCompound();
nbttagcompound2.setByte("Y", (byte) (i & 255));
@@ -314,7 +431,7 @@ public class ChunkRegionLoader {
@@ -326,7 +443,7 @@ public class ChunkRegionLoader {
Entity entity = (Entity) iterator1.next();
NBTTagCompound nbttagcompound4 = new NBTTagCompound();
// Paper start
@ -2718,7 +2718,7 @@ index 95bc46e8d9c9f75147cfdeaf464ec3ca2e491b1c..61aef3c14dff6bda603175883f9cb1b9
toUpdate.add(entity);
continue;
}
@@ -357,24 +474,32 @@ public class ChunkRegionLoader {
@@ -369,24 +486,32 @@ public class ChunkRegionLoader {
}
nbttagcompound1.set("Entities", nbttaglist2);
@ -4094,7 +4094,7 @@ index e741d1f966869b057652a93a1ef1785ad152f303..204ad44454732345be78c5c428dfb178
// Spigot start
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index a479ca88dcf60866650c236e885dd55f47915858..26376c995102753fcd298b1eea6e195bae238d65 100644
index 423e6c3d4dc0266b70eae2dfa0aca6d4cc5442c5..fb6fa1d15dc7d189a38e2cc78d9c7d24cf0af752 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -501,6 +501,28 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {

View file

@ -10,10 +10,10 @@ operation. This patch will reduce the load of plugins which for example
implement custom moblimits and depend on Chunk.getEntities().
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index ddad3440d364ebe98f6fabf00e90766b4ea4a5c2..2a08a3170fcef666cb3096511d8a592e575c9734 100644
index d40ef8353b2c025309144b4123d6a7dff04a9c62..26210b233bb40565326cf25f568dca0984ce7313 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -114,14 +114,14 @@ public class CraftChunk implements Chunk {
@@ -115,14 +115,14 @@ public class CraftChunk implements Chunk {
Entity[] entities = new Entity[count];
for (int i = 0; i < 16; i++) {

View file

@ -83,10 +83,10 @@ index f068436960c96b0df427bcdf337a4dcc6a9f66f5..253423acc3c3697a5e47136f34da9261
return this.d(baseblockposition.getX(), baseblockposition.getY(), baseblockposition.getZ());
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index a6cd89e0850c11ab6dd7f77842583c456c7f93dd..20c3e425f4299318c49128f3d330b889a0c1c52a 100644
index 211e4353e88ad703c7f6aa8e416e6a50909bb3d7..98401f36f768f36f98007c52c998252e25b07d47 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -593,8 +593,8 @@ public class Chunk implements IChunkAccess {
@@ -596,8 +596,8 @@ public class Chunk implements IChunkAccess {
this.entities.remove(entity); // Paper
}

View file

@ -8,10 +8,10 @@ faster on its own, however removing the try catch makes it
easier to inline due to code size
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 20c3e425f4299318c49128f3d330b889a0c1c52a..eebd014f9c0f4285f16d9ffac79e604854a6926c 100644
index 98401f36f768f36f98007c52c998252e25b07d47..0bdd463a35d4b45fd6e50ab35046f1783600d3ee 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -386,17 +386,20 @@ public class Chunk implements IChunkAccess {
@@ -389,17 +389,20 @@ public class Chunk implements IChunkAccess {
}
public Fluid a(int i, int j, int k) {
@ -39,7 +39,7 @@ index 20c3e425f4299318c49128f3d330b889a0c1c52a..eebd014f9c0f4285f16d9ffac79e6048
CrashReport crashreport = CrashReport.a(throwable, "Getting fluid state");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Block being got");
@@ -405,6 +408,7 @@ public class Chunk implements IChunkAccess {
@@ -408,6 +411,7 @@ public class Chunk implements IChunkAccess {
});
throw new ReportedException(crashreport);
}

View file

@ -149,7 +149,7 @@ index dbc3552d50c4129e1844c8a379ab5ba396645f52..87ec3987d4b6de836016e91ef90383e3
return this.e;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 748b1c12ccee67a35232cf7a48e68ef7f34147c7..e905aa4d668f51f0e0d2d140fcac54e5038aebfe 100644
index b5088ad2eeef0a3fae0acb3dfea7605b9a861c73..3c24c1cc5045fbf794e605a5dd5473d8bf8e6542 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1,5 +1,8 @@
@ -161,7 +161,7 @@ index 748b1c12ccee67a35232cf7a48e68ef7f34147c7..e905aa4d668f51f0e0d2d140fcac54e5
import com.destroystokyo.paper.Title;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
@@ -2034,6 +2037,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2057,6 +2060,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setViewDistance(int viewDistance) {
throw new NotImplementedException("Per-Player View Distance APIs need further understanding to properly implement (There are per world view distances though!)"); // TODO
}

View file

@ -23,7 +23,7 @@ index c9164dfdb27ddf3709129c8aec54903a1df121ff..e33e889c291d37a821a4fbd40d9aac7b
}));
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
index a6dcc3606dd1f8aa963d4f09cad93d918d555339..ab9170c8440dbd30639c2d451b58583fef13220e 100644
index a8ab4bcd55d7705542c87079bb9c27db1b381fe0..e884456fac00a81d251f75fb9eea98092dc96408 100644
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
@@ -620,4 +620,9 @@ public class PaperWorldConfig {
@ -37,10 +37,10 @@ index a6dcc3606dd1f8aa963d4f09cad93d918d555339..ab9170c8440dbd30639c2d451b58583f
+ }
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index eebd014f9c0f4285f16d9ffac79e604854a6926c..6ac8670c76eaf0c1292c6e88c63eaf6b18c9fbb8 100644
index 0bdd463a35d4b45fd6e50ab35046f1783600d3ee..b7bfdab0e8ba47cd78bff77efabc6a2a1936157b 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -198,7 +198,51 @@ public class Chunk implements IChunkAccess {
@@ -201,7 +201,51 @@ public class Chunk implements IChunkAccess {
}
protected void onNeighbourChange(final long bitsetBefore, final long bitsetAfter) {

View file

@ -9,10 +9,10 @@ an object pool for these.
Uses lots of advanced new capabilities of the Paper codebase :)
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 937bd0daf84f6b5f382dea73e20f2fd6ad903000..3d06c87b64c209526bee2ea11b58d30fe9b1d062 100644
index 2582eef2ff24afec14268ee0dbfaba63822b83c1..f18cb4aedc4a6536bf45db591b6d2b64cefce676 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -386,11 +386,11 @@ public class ChunkRegionLoader {
@@ -392,11 +392,11 @@ public class ChunkRegionLoader {
}
if (nibblearray != null && !nibblearray.c()) {
@ -353,10 +353,10 @@ index 6b70df646c6a690ab9437ead96c5ff097e4e12d2..a22f0cccecc85b4e4fe4603bcfa213f1
this.d &= ~(1 << k);
if (nibblearray != null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index 2a08a3170fcef666cb3096511d8a592e575c9734..d2c45157a27c24651c72fd8ab9a0950dec097b84 100644
index 26210b233bb40565326cf25f568dca0984ce7313..42b47634437135a9e9b608283f3ce81c98ca181a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -274,14 +274,14 @@ public class CraftChunk implements Chunk {
@@ -275,14 +275,14 @@ public class CraftChunk implements Chunk {
sectionSkyLights[i] = emptyLight;
} else {
sectionSkyLights[i] = new byte[2048];

View file

@ -19,10 +19,10 @@ index e750aedfad992635019d1abd7c880f4829b1e41d..d393e37f50e2815da6b486ff0c3e277f
+
}
diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java
index bfd21a07280a79d279388c785c78fb8fe731102a..e67da10f9bfbb8125d8fbf34695997ecfebcc484 100644
index 089fe4a3458ed3106fa214f89a7004a5d3c6bb95..64d1ebf8db91cbf8c1430c80aa089aac49d6163b 100644
--- a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java
+++ b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java
@@ -74,4 +74,16 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co
@@ -80,4 +80,16 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co
public boolean isConversing() {
return conversationTracker.isConversing();
}

View file

@ -12,10 +12,10 @@ to the client, so that it doesn't attempt to calculate them.
This mitigates the frametime impact to a minimum (but it's still there).
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 6ac8670c76eaf0c1292c6e88c63eaf6b18c9fbb8..299d7d7a55532930e2d4340a6cfe77a5fd8a0a0c 100644
index b7bfdab0e8ba47cd78bff77efabc6a2a1936157b..083da88c1dd78b8ecdc8329c94430189cecb9d95 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -230,7 +230,7 @@ public class Chunk implements IChunkAccess {
@@ -233,7 +233,7 @@ public class Chunk implements IChunkAccess {
// broadcast
Object[] backingSet = inRange.getBackingSet();

View file

@ -1237,10 +1237,10 @@ index f35dda50fd9015a793708d214c648d75f9f87e2b..ae1f9dde6887988ca682f53cba316ce5
net.minecraft.server.Chunk chunk = (net.minecraft.server.Chunk) either.left().orElse(null);
return CompletableFuture.completedFuture(chunk == null ? null : chunk.getBukkitChunk());
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index e905aa4d668f51f0e0d2d140fcac54e5038aebfe..0c45159eb7747d943dc45efc60f5dc7d72b8f022 100644
index 3c24c1cc5045fbf794e605a5dd5473d8bf8e6542..453cae339656a52a6d42bc712de546b340a5e91c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -743,6 +743,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -766,6 +766,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
throw new UnsupportedOperationException("Cannot set rotation of players. Consider teleporting instead.");
}

View file

@ -16,23 +16,29 @@ We further improve it by making a copy of the nbt tag with only the memory
it needs, so that we dont have to hold a copy to the entire compound.
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 3d06c87b64c209526bee2ea11b58d30fe9b1d062..335bb1dcb7285edabb6c5e7ec6ba4d6d40c60dcb 100644
index f18cb4aedc4a6536bf45db591b6d2b64cefce676..fd75bca8d42b2b70e6fe71d6e1b8402eb56e507a 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -156,9 +156,9 @@ public class ChunkRegionLoader {
@@ -156,15 +156,9 @@ public class ChunkRegionLoader {
object2 = protochunkticklist1;
}
- 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
@@ -264,6 +264,37 @@ public class ChunkRegionLoader {
@@ -270,6 +264,45 @@ public class ChunkRegionLoader {
return new InProgressChunkHolder(protochunk1, tasksToExecuteOnMain); // Paper - Async chunk loading
}
}
@ -64,7 +70,15 @@ index 3d06c87b64c209526bee2ea11b58d30fe9b1d062..335bb1dcb7285edabb6c5e7ec6ba4d6d
+ }
+ }
+ 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
+ NBTBase persistentBase = nbt.get("BukkitValues"); // Paper - use NBTBase & #get
+ if (persistentBase instanceof NBTTagCompound) { // Paper - instanceof to check nullability & type; previous was if(true)
+ chunk.persistentDataContainer.putAll((NBTTagCompound) persistentBase); // Paper
+ }
+ // CraftBukkit end
+ };
+ }
+ // Paper end

View file

@ -40,10 +40,10 @@ index d903460c32213fa2d5362671efc9e96b142daf9a..3e6ccdd5b54dbe51d4ee9ec979cbc2d0
return !this.justCreated && this.M.getDouble(TagsFluid.LAVA) > 0.0D;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 26376c995102753fcd298b1eea6e195bae238d65..b1fdc5737d332c6210d57793468da1eda8f8b9d2 100644
index fb6fa1d15dc7d189a38e2cc78d9c7d24cf0af752..e3026d54cb6b6e8fe9164a1bc7d5500c62ba7211 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1093,5 +1093,33 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -1103,5 +1103,33 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
public org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason getEntitySpawnReason() {
return getHandle().spawnReason;
}

View file

@ -65,10 +65,10 @@ index 45cf34c35af9d2ae9a60ff81af5bea3495d4621f..16664a446192c77903ff1f10989c7afa
return (!this.player.joining && !this.networkManager.isConnected()) || this.processedDisconnect; // Paper
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 0c45159eb7747d943dc45efc60f5dc7d72b8f022..da32f4affd381b08bd50e5882abffa58575737dd 100644
index 453cae339656a52a6d42bc712de546b340a5e91c..bdfd9f84209dec8ee312f72075c9e71c30cbbdec 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2143,6 +2143,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2166,6 +2166,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
};

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Brand support
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index da32f4affd381b08bd50e5882abffa58575737dd..7e91e95941039cce630ed3eb88e1919e1d08c091 100644
index bdfd9f84209dec8ee312f72075c9e71c30cbbdec..fb1852ea6bf6997771a3522079bf3a32ebca357c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2146,7 +2146,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2169,7 +2169,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper start - brand support
@Override
public String getClientBrandName() {

View file

@ -19,10 +19,10 @@ index ebdbbeb1b55b428dde3ab1c9691cb153c6c2fe76..28e2d3f0a5e2ab084175bf0bba88816f
// Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 6ceb2d50c59b63a337364605f8a5280d905f2662..6f59f8d4541451573eb50a1a3190788c51490502 100644
index c08fe368409137c33501aaca369e99a0924f0339..0f419d3e0621c71d43f85aa852bc3fc5405f1cf6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1121,5 +1121,9 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -1131,5 +1131,9 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
public boolean isInLava() {
return getHandle().isInLava();
}

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

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

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