From 23826a3f66a58e099c3d8dbe0eeff2df81c3cdc3 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sat, 17 Oct 2020 09:18:39 +0100 Subject: [PATCH] Updated Upstream (Bukkit/CraftBukkit/Spigot) Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 01e22e09 Misc maven build updates 746f5324 #556: Allow sending messages from specific UUIDs 92b99cde #501: Add PersistentDataHolder to Chunk CraftBukkit Changes: 4ef13f94 Misc maven build updates 04639f5a #759: Allow sending messages from specific UUIDs 77c894a2 #672: Add PersistentDataHolder to Chunk Spigot Changes: 57bbdd8e Rebuild patches --- Spigot-API-Patches/0004-Timings-v2.patch | 25 ++++++++++++++++--- ...t-sendMessage-methods-to-CommandSend.patch | 4 +-- ...vide-Chunk-Coordinates-as-a-Long-API.patch | 4 +-- ...ile-Entities-from-a-chunk-without-sn.patch | 4 +-- Spigot-Server-Patches/0004-MC-Utils.patch | 20 +++++++-------- ...to-current-Chunk-for-Entity-and-Bloc.patch | 10 ++++---- ...ts-for-each-Entity-Block-Entity-Type.patch | 6 ++--- Spigot-Server-Patches/0009-Timings-v2.patch | 20 +++++++-------- .../0020-Player-affects-spawning-API.patch | 4 +-- ...ve-invalid-mob-spawner-tile-entities.patch | 4 +-- ...024-Only-refresh-abilities-if-needed.patch | 4 +-- .../0025-Entity-Origin-API.patch | 4 +-- .../0048-Player-Tab-List-and-Title-APIs.patch | 4 +-- ...ble-inter-world-teleportation-safety.patch | 4 +-- .../0054-Add-exception-reporting-event.patch | 6 ++--- .../0058-Complete-resource-pack-API.patch | 4 +-- ...th-absorb-values-and-repair-bad-data.patch | 4 +-- ...Location-getType-and-getBlockData-fo.patch | 6 ++--- ...74-Configurable-Chunk-Inhabited-Time.patch | 4 +-- ...nd-for-setting-passengers-on-players.patch | 4 +-- ...91-Implement-PlayerLocaleChangeEvent.patch | 6 ++--- ...tion-to-remove-corrupt-tile-entities.patch | 4 +-- .../0131-String-based-Action-Bar-API.patch | 4 +-- .../0156-Entity-fromMobSpawner.patch | 4 +-- ...4-Ability-to-apply-mending-to-XP-API.patch | 4 +-- .../0200-Player.setPlayerProfile-API.patch | 8 +++--- ...06-Flag-to-disable-the-channel-limit.patch | 4 +-- .../0234-InventoryCloseEvent-Reason-API.patch | 4 +-- ...-anytime-entities-change-to-guarante.patch | 6 ++--- ...dd-some-Debug-to-Chunk-Entity-slices.patch | 8 +++--- ...revent-Saving-Bad-entities-to-chunks.patch | 8 +++--- ...ead-Entities-in-entityList-iteration.patch | 8 +++--- ...ile-Entities-from-a-chunk-without-sn.patch | 6 ++--- ...e-attack-cooldown-methods-for-Player.patch | 4 +-- .../0280-Improve-death-events.patch | 8 +++--- ...-replace-OfflinePlayer-getLastPlayed.patch | 12 ++++----- ...-remove-from-being-called-on-Players.patch | 4 +-- .../0338-Entity-getEntitySpawnReason.patch | 6 ++--- ...layer-View-Distance-API-placeholders.patch | 4 +-- .../0352-Duplicate-UUID-Resolve-Option.patch | 4 +-- ...360-Fix-World-isChunkGenerated-calls.patch | 4 +-- Spigot-Server-Patches/0364-Anti-Xray.patch | 16 ++++++------ ...opper-searches-if-there-are-no-items.patch | 10 ++++---- ...70-Asynchronous-chunk-IO-and-loading.patch | 20 +++++++-------- ...ce-improvement-for-Chunk.getEntities.patch | 4 +-- .../0409-Optimise-random-block-ticking.patch | 4 +-- .../0418-Optimise-Chunk-getFluid.patch | 6 ++--- ...-Implement-Player-Client-Options-API.patch | 4 +-- ...No-Tick-view-distance-implementation.patch | 6 ++--- ...ze-NibbleArray-to-use-pooled-buffers.patch | 8 +++--- ...n-for-console-having-all-permissions.patch | 4 +-- ...ound-for-Client-Lag-Spikes-MC-162253.patch | 4 +-- ...k-Priority-Urgency-System-for-Chunks.patch | 4 +-- ...on-Full-Status-Chunk-NBT-Memory-Leak.patch | 24 ++++++++++++++---- .../0523-Add-entity-liquid-API.patch | 4 +-- .../0550-Brand-support.patch | 4 +-- .../0560-Brand-support.patch | 4 +-- .../0580-Entity-isTicking.patch | 4 +-- work/Bukkit | 2 +- work/CraftBukkit | 2 +- work/Spigot | 2 +- 61 files changed, 216 insertions(+), 185 deletions(-) diff --git a/Spigot-API-Patches/0004-Timings-v2.patch b/Spigot-API-Patches/0004-Timings-v2.patch index 6d3bc3bca..c581854b5 100644 --- a/Spigot-API-Patches/0004-Timings-v2.patch +++ b/Spigot-API-Patches/0004-Timings-v2.patch @@ -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() { diff --git a/Spigot-API-Patches/0019-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch b/Spigot-API-Patches/0019-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch index d0f09691a..4c2e4087a 100644 --- a/Spigot-API-Patches/0019-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch +++ b/Spigot-API-Patches/0019-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch @@ -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 diff --git a/Spigot-API-Patches/0131-Provide-Chunk-Coordinates-as-a-Long-API.patch b/Spigot-API-Patches/0131-Provide-Chunk-Coordinates-as-a-Long-API.patch index f715f2f13..86216abbb 100644 --- a/Spigot-API-Patches/0131-Provide-Chunk-Coordinates-as-a-Long-API.patch +++ b/Spigot-API-Patches/0131-Provide-Chunk-Coordinates-as-a-Long-API.patch @@ -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(); diff --git a/Spigot-API-Patches/0134-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch b/Spigot-API-Patches/0134-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch index 51eec85e9..5c106c16a 100644 --- a/Spigot-API-Patches/0134-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch +++ b/Spigot-API-Patches/0134-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch @@ -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(); diff --git a/Spigot-Server-Patches/0004-MC-Utils.patch b/Spigot-Server-Patches/0004-MC-Utils.patch index 1d871c21e..b422c1e2c 100644 --- a/Spigot-Server-Patches/0004-MC-Utils.patch +++ b/Spigot-Server-Patches/0004-MC-Utils.patch @@ -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 { diff --git a/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch b/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch index 2473f1000..957f8eac4 100644 --- a/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch +++ b/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch @@ -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; diff --git a/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch b/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch index 465d0b689..9c7b09930 100644 --- a/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch +++ b/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch @@ -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; } diff --git a/Spigot-Server-Patches/0009-Timings-v2.patch b/Spigot-Server-Patches/0009-Timings-v2.patch index 7f891ec0b..b6ae55f49 100644 --- a/Spigot-Server-Patches/0009-Timings-v2.patch +++ b/Spigot-Server-Patches/0009-Timings-v2.patch @@ -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 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); } diff --git a/Spigot-Server-Patches/0020-Player-affects-spawning-API.patch b/Spigot-Server-Patches/0020-Player-affects-spawning-API.patch index 36b45f852..09373b950 100644 --- a/Spigot-Server-Patches/0020-Player-affects-spawning-API.patch +++ b/Spigot-Server-Patches/0020-Player-affects-spawning-API.patch @@ -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; diff --git a/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch b/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch index f7eecaa07..4cf4d23de 100644 --- a/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch +++ b/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch @@ -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 diff --git a/Spigot-Server-Patches/0024-Only-refresh-abilities-if-needed.patch b/Spigot-Server-Patches/0024-Only-refresh-abilities-if-needed.patch index c6efe54a7..44d2fbced 100644 --- a/Spigot-Server-Patches/0024-Only-refresh-abilities-if-needed.patch +++ b/Spigot-Server-Patches/0024-Only-refresh-abilities-if-needed.patch @@ -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) { diff --git a/Spigot-Server-Patches/0025-Entity-Origin-API.patch b/Spigot-Server-Patches/0025-Entity-Origin-API.patch index c84a32f2a..fd4587634 100644 --- a/Spigot-Server-Patches/0025-Entity-Origin-API.patch +++ b/Spigot-Server-Patches/0025-Entity-Origin-API.patch @@ -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 diff --git a/Spigot-Server-Patches/0048-Player-Tab-List-and-Title-APIs.patch b/Spigot-Server-Patches/0048-Player-Tab-List-and-Title-APIs.patch index 279b01033..2f2a8c278 100644 --- a/Spigot-Server-Patches/0048-Player-Tab-List-and-Title-APIs.patch +++ b/Spigot-Server-Patches/0048-Player-Tab-List-and-Title-APIs.patch @@ -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 { } } diff --git a/Spigot-Server-Patches/0053-Configurable-inter-world-teleportation-safety.patch b/Spigot-Server-Patches/0053-Configurable-inter-world-teleportation-safety.patch index dd0f9e871..2cb3fc58b 100644 --- a/Spigot-Server-Patches/0053-Configurable-inter-world-teleportation-safety.patch +++ b/Spigot-Server-Patches/0053-Configurable-inter-world-teleportation-safety.patch @@ -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 { diff --git a/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch b/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch index 6a0a88a9d..c1d129af6 100644 --- a/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch +++ b/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch @@ -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 @@ diff --git a/Spigot-Server-Patches/0058-Complete-resource-pack-API.patch b/Spigot-Server-Patches/0058-Complete-resource-pack-API.patch index 0ee18f4c2..d7189f640 100644 --- a/Spigot-Server-Patches/0058-Complete-resource-pack-API.patch +++ b/Spigot-Server-Patches/0058-Complete-resource-pack-API.patch @@ -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; } diff --git a/Spigot-Server-Patches/0067-handle-NaN-health-absorb-values-and-repair-bad-data.patch b/Spigot-Server-Patches/0067-handle-NaN-health-absorb-values-and-repair-bad-data.patch index 3ce2e9fd6..df7980d23 100644 --- a/Spigot-Server-Patches/0067-handle-NaN-health-absorb-values-and-repair-bad-data.patch +++ b/Spigot-Server-Patches/0067-handle-NaN-health-absorb-values-and-repair-bad-data.patch @@ -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) { diff --git a/Spigot-Server-Patches/0071-Optimize-isValidLocation-getType-and-getBlockData-fo.patch b/Spigot-Server-Patches/0071-Optimize-isValidLocation-getType-and-getBlockData-fo.patch index d1f7e566a..189053824 100644 --- a/Spigot-Server-Patches/0071-Optimize-isValidLocation-getType-and-getBlockData-fo.patch +++ b/Spigot-Server-Patches/0071-Optimize-isValidLocation-getType-and-getBlockData-fo.patch @@ -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 { diff --git a/Spigot-Server-Patches/0074-Configurable-Chunk-Inhabited-Time.patch b/Spigot-Server-Patches/0074-Configurable-Chunk-Inhabited-Time.patch index 072c434fb..8f9737a21 100644 --- a/Spigot-Server-Patches/0074-Configurable-Chunk-Inhabited-Time.patch +++ b/Spigot-Server-Patches/0074-Configurable-Chunk-Inhabited-Time.patch @@ -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() { diff --git a/Spigot-Server-Patches/0084-Workaround-for-setting-passengers-on-players.patch b/Spigot-Server-Patches/0084-Workaround-for-setting-passengers-on-players.patch index 9e4211a79..8225a2427 100644 --- a/Spigot-Server-Patches/0084-Workaround-for-setting-passengers-on-players.patch +++ b/Spigot-Server-Patches/0084-Workaround-for-setting-passengers-on-players.patch @@ -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; } diff --git a/Spigot-Server-Patches/0091-Implement-PlayerLocaleChangeEvent.patch b/Spigot-Server-Patches/0091-Implement-PlayerLocaleChangeEvent.patch index d24361b5e..850a4fc7b 100644 --- a/Spigot-Server-Patches/0091-Implement-PlayerLocaleChangeEvent.patch +++ b/Spigot-Server-Patches/0091-Implement-PlayerLocaleChangeEvent.patch @@ -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() { diff --git a/Spigot-Server-Patches/0115-Option-to-remove-corrupt-tile-entities.patch b/Spigot-Server-Patches/0115-Option-to-remove-corrupt-tile-entities.patch index b9daea394..b0227b052 100644 --- a/Spigot-Server-Patches/0115-Option-to-remove-corrupt-tile-entities.patch +++ b/Spigot-Server-Patches/0115-Option-to-remove-corrupt-tile-entities.patch @@ -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); diff --git a/Spigot-Server-Patches/0131-String-based-Action-Bar-API.patch b/Spigot-Server-Patches/0131-String-based-Action-Bar-API.patch index 415e1fff2..95420d0f5 100644 --- a/Spigot-Server-Patches/0131-String-based-Action-Bar-API.patch +++ b/Spigot-Server-Patches/0131-String-based-Action-Bar-API.patch @@ -18,10 +18,10 @@ index bdfd17362518ff2398cf9e1743a7a4f0c7a0e966..cc14e4b4609fa7013df666181c0e02a5 public static Collector, ?, Map> 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 diff --git a/Spigot-Server-Patches/0156-Entity-fromMobSpawner.patch b/Spigot-Server-Patches/0156-Entity-fromMobSpawner.patch index a0891da9c..9d4ea1455 100644 --- a/Spigot-Server-Patches/0156-Entity-fromMobSpawner.patch +++ b/Spigot-Server-Patches/0156-Entity-fromMobSpawner.patch @@ -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(); } diff --git a/Spigot-Server-Patches/0184-Ability-to-apply-mending-to-XP-API.patch b/Spigot-Server-Patches/0184-Ability-to-apply-mending-to-XP-API.patch index 9feda7042..955b3c02a 100644 --- a/Spigot-Server-Patches/0184-Ability-to-apply-mending-to-XP-API.patch +++ b/Spigot-Server-Patches/0184-Ability-to-apply-mending-to-XP-API.patch @@ -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()); } diff --git a/Spigot-Server-Patches/0200-Player.setPlayerProfile-API.patch b/Spigot-Server-Patches/0200-Player.setPlayerProfile-API.patch index d6b11617a..60d4218c0 100644 --- a/Spigot-Server-Patches/0200-Player.setPlayerProfile-API.patch +++ b/Spigot-Server-Patches/0200-Player.setPlayerProfile-API.patch @@ -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()); } } diff --git a/Spigot-Server-Patches/0206-Flag-to-disable-the-channel-limit.patch b/Spigot-Server-Patches/0206-Flag-to-disable-the-channel-limit.patch index c5f31512b..be64e678d 100644 --- a/Spigot-Server-Patches/0206-Flag-to-disable-the-channel-limit.patch +++ b/Spigot-Server-Patches/0206-Flag-to-disable-the-channel-limit.patch @@ -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) { diff --git a/Spigot-Server-Patches/0234-InventoryCloseEvent-Reason-API.patch b/Spigot-Server-Patches/0234-InventoryCloseEvent-Reason-API.patch index c79feef5b..4656e6eff 100644 --- a/Spigot-Server-Patches/0234-InventoryCloseEvent-Reason-API.patch +++ b/Spigot-Server-Patches/0234-InventoryCloseEvent-Reason-API.patch @@ -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) { diff --git a/Spigot-Server-Patches/0249-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch b/Spigot-Server-Patches/0249-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch index eba8fb9bb..594ebda66 100644 --- a/Spigot-Server-Patches/0249-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch +++ b/Spigot-Server-Patches/0249-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch @@ -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()); diff --git a/Spigot-Server-Patches/0250-Add-some-Debug-to-Chunk-Entity-slices.patch b/Spigot-Server-Patches/0250-Add-some-Debug-to-Chunk-Entity-slices.patch index 4f797af4b..79858a731 100644 --- a/Spigot-Server-Patches/0250-Add-some-Debug-to-Chunk-Entity-slices.patch +++ b/Spigot-Server-Patches/0250-Add-some-Debug-to-Chunk-Entity-slices.patch @@ -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); diff --git a/Spigot-Server-Patches/0252-Prevent-Saving-Bad-entities-to-chunks.patch b/Spigot-Server-Patches/0252-Prevent-Saving-Bad-entities-to-chunks.patch index dd6780e4d..f34041882 100644 --- a/Spigot-Server-Patches/0252-Prevent-Saving-Bad-entities-to-chunks.patch +++ b/Spigot-Server-Patches/0252-Prevent-Saving-Bad-entities-to-chunks.patch @@ -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; } diff --git a/Spigot-Server-Patches/0254-Ignore-Dead-Entities-in-entityList-iteration.patch b/Spigot-Server-Patches/0254-Ignore-Dead-Entities-in-entityList-iteration.patch index 603942f11..2d3089f0c 100644 --- a/Spigot-Server-Patches/0254-Ignore-Dead-Entities-in-entityList-iteration.patch +++ b/Spigot-Server-Patches/0254-Ignore-Dead-Entities-in-entityList-iteration.patch @@ -23,10 +23,10 @@ index 9cb2f3b31921870ddba044840e99eb04babe26bb..f0a836db74ad3e20778d3863223bc9a3 MutablePair> 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 diff --git a/Spigot-Server-Patches/0266-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch b/Spigot-Server-Patches/0266-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch index 32a24fd88..4a8814832 100644 --- a/Spigot-Server-Patches/0266-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch +++ b/Spigot-Server-Patches/0266-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch @@ -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; diff --git a/Spigot-Server-Patches/0279-Expose-attack-cooldown-methods-for-Player.patch b/Spigot-Server-Patches/0279-Expose-attack-cooldown-methods-for-Player.patch index ad405aae6..1ade6d313 100644 --- a/Spigot-Server-Patches/0279-Expose-attack-cooldown-methods-for-Player.patch +++ b/Spigot-Server-Patches/0279-Expose-attack-cooldown-methods-for-Player.patch @@ -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); } diff --git a/Spigot-Server-Patches/0280-Improve-death-events.patch b/Spigot-Server-Patches/0280-Improve-death-events.patch index b3dc8ccff..09acd7301 100644 --- a/Spigot-Server-Patches/0280-Improve-death-events.patch +++ b/Spigot-Server-Patches/0280-Improve-death-events.patch @@ -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 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 { diff --git a/Spigot-Server-Patches/0320-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch b/Spigot-Server-Patches/0320-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch index b98c37786..f498afa77 100644 --- a/Spigot-Server-Patches/0320-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch +++ b/Spigot-Server-Patches/0320-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch @@ -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()); diff --git a/Spigot-Server-Patches/0324-Block-Entity-remove-from-being-called-on-Players.patch b/Spigot-Server-Patches/0324-Block-Entity-remove-from-being-called-on-Players.patch index 9133d1130..7d3b0bcc5 100644 --- a/Spigot-Server-Patches/0324-Block-Entity-remove-from-being-called-on-Players.patch +++ b/Spigot-Server-Patches/0324-Block-Entity-remove-from-being-called-on-Players.patch @@ -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(); } diff --git a/Spigot-Server-Patches/0338-Entity-getEntitySpawnReason.patch b/Spigot-Server-Patches/0338-Entity-getEntitySpawnReason.patch index 6536ff432..12569eca3 100644 --- a/Spigot-Server-Patches/0338-Entity-getEntitySpawnReason.patch +++ b/Spigot-Server-Patches/0338-Entity-getEntitySpawnReason.patch @@ -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; } diff --git a/Spigot-Server-Patches/0347-Per-Player-View-Distance-API-placeholders.patch b/Spigot-Server-Patches/0347-Per-Player-View-Distance-API-placeholders.patch index 95ded0998..b331808b8 100644 --- a/Spigot-Server-Patches/0347-Per-Player-View-Distance-API-placeholders.patch +++ b/Spigot-Server-Patches/0347-Per-Player-View-Distance-API-placeholders.patch @@ -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(); } } diff --git a/Spigot-Server-Patches/0352-Duplicate-UUID-Resolve-Option.patch b/Spigot-Server-Patches/0352-Duplicate-UUID-Resolve-Option.patch index 5c94afa22..6cb1a0f1f 100644 --- a/Spigot-Server-Patches/0352-Duplicate-UUID-Resolve-Option.patch +++ b/Spigot-Server-Patches/0352-Duplicate-UUID-Resolve-Option.patch @@ -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; diff --git a/Spigot-Server-Patches/0360-Fix-World-isChunkGenerated-calls.patch b/Spigot-Server-Patches/0360-Fix-World-isChunkGenerated-calls.patch index 96712fe8d..0633c0a06 100644 --- a/Spigot-Server-Patches/0360-Fix-World-isChunkGenerated-calls.patch +++ b/Spigot-Server-Patches/0360-Fix-World-isChunkGenerated-calls.patch @@ -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 diff --git a/Spigot-Server-Patches/0364-Anti-Xray.patch b/Spigot-Server-Patches/0364-Anti-Xray.patch index 6534f0f72..0fd8f4561 100644 --- a/Spigot-Server-Patches/0364-Anti-Xray.patch +++ b/Spigot-Server-Patches/0364-Anti-Xray.patch @@ -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"); diff --git a/Spigot-Server-Patches/0369-Avoid-hopper-searches-if-there-are-no-items.patch b/Spigot-Server-Patches/0369-Avoid-hopper-searches-if-there-are-no-items.patch index 76068ef39..b85922eb9 100644 --- a/Spigot-Server-Patches/0369-Avoid-hopper-searches-if-there-are-no-items.patch +++ b/Spigot-Server-Patches/0369-Avoid-hopper-searches-if-there-are-no-items.patch @@ -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 ticklist, TickList ticklist1, long i, @Nullable ChunkSection[] achunksection, @Nullable Consumer 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); diff --git a/Spigot-Server-Patches/0370-Asynchronous-chunk-IO-and-loading.patch b/Spigot-Server-Patches/0370-Asynchronous-chunk-IO-and-loading.patch index 3a5d56f1d..59884380f 100644 --- a/Spigot-Server-Patches/0370-Asynchronous-chunk-IO-and-loading.patch +++ b/Spigot-Server-Patches/0370-Asynchronous-chunk-IO-and-loading.patch @@ -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 { diff --git a/Spigot-Server-Patches/0381-Performance-improvement-for-Chunk.getEntities.patch b/Spigot-Server-Patches/0381-Performance-improvement-for-Chunk.getEntities.patch index 1a29e821a..c5bcf0e77 100644 --- a/Spigot-Server-Patches/0381-Performance-improvement-for-Chunk.getEntities.patch +++ b/Spigot-Server-Patches/0381-Performance-improvement-for-Chunk.getEntities.patch @@ -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++) { diff --git a/Spigot-Server-Patches/0409-Optimise-random-block-ticking.patch b/Spigot-Server-Patches/0409-Optimise-random-block-ticking.patch index 487b0293f..64bbc0bf2 100644 --- a/Spigot-Server-Patches/0409-Optimise-random-block-ticking.patch +++ b/Spigot-Server-Patches/0409-Optimise-random-block-ticking.patch @@ -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 } diff --git a/Spigot-Server-Patches/0418-Optimise-Chunk-getFluid.patch b/Spigot-Server-Patches/0418-Optimise-Chunk-getFluid.patch index d1429a76d..3df0d133c 100644 --- a/Spigot-Server-Patches/0418-Optimise-Chunk-getFluid.patch +++ b/Spigot-Server-Patches/0418-Optimise-Chunk-getFluid.patch @@ -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); } diff --git a/Spigot-Server-Patches/0449-Implement-Player-Client-Options-API.patch b/Spigot-Server-Patches/0449-Implement-Player-Client-Options-API.patch index a305f3fa3..258768e6d 100644 --- a/Spigot-Server-Patches/0449-Implement-Player-Client-Options-API.patch +++ b/Spigot-Server-Patches/0449-Implement-Player-Client-Options-API.patch @@ -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 } diff --git a/Spigot-Server-Patches/0471-No-Tick-view-distance-implementation.patch b/Spigot-Server-Patches/0471-No-Tick-view-distance-implementation.patch index 932abf17b..12929771e 100644 --- a/Spigot-Server-Patches/0471-No-Tick-view-distance-implementation.patch +++ b/Spigot-Server-Patches/0471-No-Tick-view-distance-implementation.patch @@ -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) { diff --git a/Spigot-Server-Patches/0481-Optimize-NibbleArray-to-use-pooled-buffers.patch b/Spigot-Server-Patches/0481-Optimize-NibbleArray-to-use-pooled-buffers.patch index 10babb419..1b8124866 100644 --- a/Spigot-Server-Patches/0481-Optimize-NibbleArray-to-use-pooled-buffers.patch +++ b/Spigot-Server-Patches/0481-Optimize-NibbleArray-to-use-pooled-buffers.patch @@ -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]; diff --git a/Spigot-Server-Patches/0485-Add-option-for-console-having-all-permissions.patch b/Spigot-Server-Patches/0485-Add-option-for-console-having-all-permissions.patch index 0eba836a8..8dbbd4967 100644 --- a/Spigot-Server-Patches/0485-Add-option-for-console-having-all-permissions.patch +++ b/Spigot-Server-Patches/0485-Add-option-for-console-having-all-permissions.patch @@ -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(); } diff --git a/Spigot-Server-Patches/0486-Workaround-for-Client-Lag-Spikes-MC-162253.patch b/Spigot-Server-Patches/0486-Workaround-for-Client-Lag-Spikes-MC-162253.patch index cee63e8ec..09d8e94be 100644 --- a/Spigot-Server-Patches/0486-Workaround-for-Client-Lag-Spikes-MC-162253.patch +++ b/Spigot-Server-Patches/0486-Workaround-for-Client-Lag-Spikes-MC-162253.patch @@ -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(); diff --git a/Spigot-Server-Patches/0487-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch b/Spigot-Server-Patches/0487-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch index 8d74995c2..5ba804b09 100644 --- a/Spigot-Server-Patches/0487-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch +++ b/Spigot-Server-Patches/0487-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch @@ -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."); } diff --git a/Spigot-Server-Patches/0488-Fix-Non-Full-Status-Chunk-NBT-Memory-Leak.patch b/Spigot-Server-Patches/0488-Fix-Non-Full-Status-Chunk-NBT-Memory-Leak.patch index 11f5e50be..a193ebdc2 100644 --- a/Spigot-Server-Patches/0488-Fix-Non-Full-Status-Chunk-NBT-Memory-Leak.patch +++ b/Spigot-Server-Patches/0488-Fix-Non-Full-Status-Chunk-NBT-Memory-Leak.patch @@ -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..9e7f63d53727c126023da01613c01d97e32d7a75 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 createLoadEntitiesConsumer(NBTTagCompound nbt) { -+ return (chunk) -> loadEntities(nbt, chunk); ++ return (chunk) -> { ++ loadEntities(nbt, chunk); ++ // CraftBukkit start - load chunk persistent data from nbt ++ NBTTagCompound persistentBase = nbt.getCompound("BukkitValues"); ++ if (persistentBase != null) { ++ chunk.persistentDataContainer.putAll(nbt); ++ } ++ // CraftBukkit end ++ }; + } + // Paper end diff --git a/Spigot-Server-Patches/0523-Add-entity-liquid-API.patch b/Spigot-Server-Patches/0523-Add-entity-liquid-API.patch index 31f98d959..fa6f3e4fe 100644 --- a/Spigot-Server-Patches/0523-Add-entity-liquid-API.patch +++ b/Spigot-Server-Patches/0523-Add-entity-liquid-API.patch @@ -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; } diff --git a/Spigot-Server-Patches/0550-Brand-support.patch b/Spigot-Server-Patches/0550-Brand-support.patch index bf1ff7e1b..326868031 100644 --- a/Spigot-Server-Patches/0550-Brand-support.patch +++ b/Spigot-Server-Patches/0550-Brand-support.patch @@ -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 }; diff --git a/Spigot-Server-Patches/0560-Brand-support.patch b/Spigot-Server-Patches/0560-Brand-support.patch index ca109b544..120781781 100644 --- a/Spigot-Server-Patches/0560-Brand-support.patch +++ b/Spigot-Server-Patches/0560-Brand-support.patch @@ -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() { diff --git a/Spigot-Server-Patches/0580-Entity-isTicking.patch b/Spigot-Server-Patches/0580-Entity-isTicking.patch index cae363afe..c9b1ea1c4 100644 --- a/Spigot-Server-Patches/0580-Entity-isTicking.patch +++ b/Spigot-Server-Patches/0580-Entity-isTicking.patch @@ -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(); } diff --git a/work/Bukkit b/work/Bukkit index 9165c3c0b..01e22e097 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 9165c3c0b0e34aefce111933495e1c3efb000d4b +Subproject commit 01e22e09726e700776739ec0662acd30e7844cec diff --git a/work/CraftBukkit b/work/CraftBukkit index 055870c4b..4ef13f94d 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 055870c4bca477067f9113deb1090228cccf67c6 +Subproject commit 4ef13f94d6a4042e0dadd622666a50cee7468d26 diff --git a/work/Spigot b/work/Spigot index 988b41197..57bbdd8eb 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 988b41197dad25f715bf535ec725af7c0c1a1627 +Subproject commit 57bbdd8eb797a51960cf9a47f764b68f97d4f18c