From fd5c98a9efa46ae493a7b0b51171337df8d6213e Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 6 May 2020 05:22:03 -0400 Subject: [PATCH] Optimize Network Manager to not need synchronization Removes synchronization from sending packets Makes normal packet sends no longer need to be wrapped and queued like it use to work. Adds more packet queue immunities on top of keep alive to let the following scenarios go out without delay: - Keep Alive - Chat - Kick - All of the packets during the Player Joined World event Hoping that latter one helps join timeout issues more too for slow connections. Removes processing packet queue off of main thread - for the few cases where it is allowed, order is not necessary nor should it even be happening concurrently in first place (handshaking/login/status) Ensures packets sent asynchronously are dispatched on main thread This helps ensure safety for ProtocolLib as packet listeners are commonly accessing world state. This will allow you to schedule a packet to be sent async, but itll be dispatched sync for packet listeners to process. This should solve some deadlock risks This may provide a decent performance improvement because thread synchronization incurs a cache reset so by avoiding ever entering a synchronized block, we get to avoid that, and packet sending is a really hot activity. --- ...ftMagicNumbers.isSupportedApiVersion.patch | 2 +- Spigot-Server-Patches/Add-Heightmap-API.patch | 4 +- .../Add-LivingEntity-getTargetEntity.patch | 10 +- ...PlayerAttackEntityCooldownResetEvent.patch | 2 +- .../Add-ThrownEggHatchEvent.patch | 2 +- .../Add-effect-to-block-break-naturally.patch | 2 +- .../Add-tick-times-API-and-mspt-command.patch | 8 +- .../Allow-Saving-of-Oversized-Chunks.patch | 6 +- ...allbacks-to-schedule-for-Callback-Ex.patch | 2 +- ...ow-overriding-the-java-version-check.patch | 2 +- .../Allow-sleeping-players-to-float.patch | 2 +- Spigot-Server-Patches/Anti-Xray.patch | 67 +---- .../Async-command-map-building.patch | 2 +- ...opper-searches-if-there-are-no-items.patch | 4 +- .../Backport-fix-for-MC-167561.patch | 2 +- ...-more-tolerant-of-invalid-attributes.patch | 2 +- ...get-gravity-in-void.-Fixes-MC-167279.patch | 6 +- .../Broadcast-join-message-to-console.patch | 2 +- ...oggleEvent-when-whitelist-is-toggled.patch | 2 +- ...eptions-from-dispenser-entity-spawns.patch | 2 +- .../Chunk-debug-command.patch | 12 +- .../ChunkMapDistance-CME.patch | 2 +- ...-Region-Files-Direct-Memory-on-close.patch | 2 +- ...le-Keep-Spawn-Loaded-range-per-world.patch | 12 +- ...d-Player-s-shouldn-t-be-able-to-move.patch | 2 +- ...ions-until-after-entity-ticking-is-d.patch | 4 +- ...if-we-have-a-custom-Bukkit-generator.patch | 2 +- ...low-bees-to-load-chunks-for-beehives.patch | 2 +- ...layer-is-attempted-to-be-removed-fro.patch | 2 +- ...t-fire-BlockFade-on-worldgen-threads.patch | 2 +- ...Chunks-from-Hoppers-and-other-things.patch | 2 +- ...ks-when-attempting-to-unload-a-chunk.patch | 2 +- ...move-existing-players-to-world-spawn.patch | 4 +- ...-entity-collision-code-if-not-needed.patch | 2 +- .../Don-t-tick-dead-players.patch | 2 +- .../Duplicate-UUID-Resolve-Option.patch | 10 +- ...re-Entity-is-never-double-registered.patch | 4 +- .../Entity-Activation-Range-2.0.patch | 26 +- Spigot-Server-Patches/Entity-Jump-API.patch | 6 +- .../Entity-getEntitySpawnReason.patch | 8 +- .../Expose-MinecraftServer-isRunning.patch | 2 +- .../Expose-game-version.patch | 2 +- .../Expose-the-internal-current-tick.patch | 2 +- .../Fire-event-on-GS4-query.patch | 6 +- ...or-when-player-hand-set-to-empty-typ.patch | 4 +- ...l-to-changed-postToMainThread-method.patch | 2 +- ...-Chunk-Post-Processing-deadlock-risk.patch | 4 +- ...isPrimaryThread-and-MinecraftServer-.patch | 4 +- ...g-Broken-behavior-of-PlayerJoinEvent.patch | 6 +- Spigot-Server-Patches/Fix-MC-158900.patch | 2 +- Spigot-Server-Patches/Fix-MC-161754.patch | 2 +- .../Fix-World-isChunkGenerated-calls.patch | 18 +- ...ator-behavior-for-EntityPhanton-goal.patch | 2 +- ...h-entity-loss-due-to-unloaded-chunks.patch | 2 +- .../Fix-items-not-falling-correctly.patch | 2 +- ...x-items-vanishing-through-end-portal.patch | 2 +- ...k-in-stack-not-having-effects-when-d.patch | 2 +- .../Fix-nether-portal-creation.patch | 2 +- ...m-duplication-issues-and-teleport-is.patch | 6 +- ...x-some-generation-concurrency-issues.patch | 6 +- ...n-item-frames-are-modified-MC-123450.patch | 4 +- .../Fix-spawn-radius-being-treated-as-0.patch | 2 +- ...hanging-entities-that-are-not-ItemFr.patch | 2 +- ...-sneak-when-changing-worlds-MC-10657.patch | 4 +- ...ering-entities-from-unloading-chunks.patch | 2 +- ...Crash-support-and-Improve-Async-Shut.patch | 22 +- ...rializing-mismatching-chunk-coordina.patch | 4 +- ...-Signs-in-Chunks-creating-large-pack.patch | 137 ---------- ...le-Oversized-Tile-Entities-in-chunks.patch | 55 ++++ .../Implement-Brigadier-Mojang-API.patch | 8 +- .../Implement-CraftBlockSoundGroup.patch | 8 +- .../Implement-Mob-Goal-API.patch | 22 +- .../Implement-Player-Client-Options-API.patch | 10 +- .../Implement-PlayerPostRespawnEvent.patch | 2 +- ...s-and-setters-for-EntityItem-owner-a.patch | 2 +- .../Lag-compensate-eating.patch | 2 +- ...Load-Chunks-for-Login-Asynchronously.patch | 10 +- ...ead-in-DataPaletteBlock-lock-failure.patch | 4 +- ...tityAreaEffectCloud-from-going-negat.patch | 2 +- ...0-Fix-Whitelist-On-Off-inconsistency.patch | 4 +- .../Make-the-GUI-graph-fancier.patch | 16 +- ...-being-ticked-when-notifying-navigat.patch | 2 +- ...asks-Speed-up-processing-of-chunk-lo.patch | 10 +- .../Mob-Spawner-API-Enhancements.patch | 4 +- ...pawn-point-if-spawn-in-unloaded-worl.patch | 2 +- ...No-Tick-view-distance-implementation.patch | 4 +- .../Optimise-ArraySetSorted-removeIf.patch | 2 +- ...timise-IEntityAccess-getPlayerByUUID.patch | 4 +- ...imise-entity-hard-collision-checking.patch | 10 +- ...e-getChunkAt-calls-for-loaded-chunks.patch | 4 +- .../Optimize-Captured-TileEntity-Lookup.patch | 2 +- ...oviderServer-s-chunk-level-checking-.patch | 2 +- ...on-Chunk-lookup-and-avoid-loading-fa.patch | 2 +- ...-Manager-and-add-advanced-packet-sup.patch | 236 ++++++++++++++++++ .../Optimize-Pathfinding.patch | 2 +- ...hunkMap-memory-use-for-visibleChunks.patch | 10 +- .../Optimize-Voxel-Shape-Merging.patch | 4 +- ...mize-call-to-getFluid-for-explosions.patch | 2 +- ...list-iteration-requiring-entities-be.patch | 8 +- ...-isOutsideRange-to-use-distance-maps.patch | 10 +- ...layer-View-Distance-API-placeholders.patch | 6 +- ...ce-improvement-for-Chunk.getEntities.patch | 2 +- .../PlayerDeathEvent-getItemsToKeep.patch | 2 +- ...layerDeathEvent-shouldDropExperience.patch | 2 +- .../PlayerLaunchProjectileEvent.patch | 16 +- ...-Villager-AI-optimizations-DROP-1.16.patch | 2 +- ...-PlayerChunkMap-adds-crashing-server.patch | 4 +- ...oading-chunks-checking-hive-position.patch | 2 +- ...revent-consuming-the-wrong-itemstack.patch | 2 +- ...vent-opening-inventories-when-frozen.patch | 4 +- ...nk-loads-when-villagers-try-to-find-.patch | 2 +- .../Prevent-teleporting-dead-entities.patch | 2 +- .../Reduce-Either-Optional-allocation.patch | 2 +- ...e-memory-footprint-of-NBTTagCompound.patch | 2 +- Spigot-Server-Patches/Reduce-sync-loads.patch | 10 +- ...nnections-shouldn-t-hold-up-shutdown.patch | 2 +- .../Remove-streams-from-MinecraftKey.patch | 2 +- .../Remove-streams-from-Mob-AI-System.patch | 6 +- .../Remove-streams-from-PairedQueue.patch | 2 +- ...-teleport-command-to-valid-locations.patch | 2 +- .../Server-Tick-Events.patch | 2 +- ...st-tick-at-start-of-drowning-process.patch | 2 +- ...-per-thread-native-byte-buffer-cache.patch | 2 +- ...ate-location-if-we-failed-to-read-it.patch | 2 +- ...te-operations-for-updating-light-dat.patch | 8 +- .../Sync-position-on-teleportation.patch | 2 +- .../Tracking-Range-Improvements.patch | 4 +- ...ity-Metadata-for-all-tracked-players.patch | 4 +- ...Status-cache-when-saving-protochunks.patch | 2 +- ...tance-map-to-optimise-entity-tracker.patch | 8 +- ...etChunkIfLoadedImmediately-in-places.patch | 6 +- ...ength-when-serialising-BungeeCord-te.patch | 2 +- ...PickItem-Packet-and-kick-for-invalid.patch | 2 +- ...ripwire-hook-placement-before-update.patch | 2 +- .../Villager-Restocks-API.patch | 4 +- .../add-hand-to-BlockMultiPlaceEvent.patch | 2 +- ...-for-pickupDelay-breaks-picking-up-i.patch | 2 +- .../improve-CraftWorld-isChunkLoaded.patch | 2 +- .../incremental-chunk-saving.patch | 14 +- .../offset-item-frame-ticking.patch | 2 +- ...assanger-entities-once-from-spawners.patch | 2 +- 141 files changed, 604 insertions(+), 505 deletions(-) delete mode 100644 Spigot-Server-Patches/Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch create mode 100644 Spigot-Server-Patches/Handle-Oversized-Tile-Entities-in-chunks.patch create mode 100644 Spigot-Server-Patches/Optimize-Network-Manager-and-add-advanced-packet-sup.patch diff --git a/Spigot-Server-Patches/Add-CraftMagicNumbers.isSupportedApiVersion.patch b/Spigot-Server-Patches/Add-CraftMagicNumbers.isSupportedApiVersion.patch index fb6fde6a7f..d06e4f9a7a 100644 --- a/Spigot-Server-Patches/Add-CraftMagicNumbers.isSupportedApiVersion.patch +++ b/Spigot-Server-Patches/Add-CraftMagicNumbers.isSupportedApiVersion.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add CraftMagicNumbers.isSupportedApiVersion() diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index b1e1b59d45..770375ed42 100644 +index b1e1b59d451..770375ed420 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -0,0 +0,0 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/Spigot-Server-Patches/Add-Heightmap-API.patch b/Spigot-Server-Patches/Add-Heightmap-API.patch index c28019707d..a9118e0851 100644 --- a/Spigot-Server-Patches/Add-Heightmap-API.patch +++ b/Spigot-Server-Patches/Add-Heightmap-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add Heightmap API diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index f797d737a3..983bc1c7d9 100644 +index f797d737a37..983bc1c7d9c 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -20,7 +20,7 @@ index f797d737a3..983bc1c7d9 100644 if (i >= -30000000 && j >= -30000000 && i < 30000000 && j < 30000000) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index db31b17b87..0d5731429a 100644 +index db31b17b870..0d5731429ab 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -0,0 +0,0 @@ public class CraftWorld implements World { diff --git a/Spigot-Server-Patches/Add-LivingEntity-getTargetEntity.patch b/Spigot-Server-Patches/Add-LivingEntity-getTargetEntity.patch index da31a70850..e0911b2c1b 100644 --- a/Spigot-Server-Patches/Add-LivingEntity-getTargetEntity.patch +++ b/Spigot-Server-Patches/Add-LivingEntity-getTargetEntity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add LivingEntity#getTargetEntity diff --git a/src/main/java/net/minecraft/server/AxisAlignedBB.java b/src/main/java/net/minecraft/server/AxisAlignedBB.java -index f427953a83..3fdb52007a 100644 +index f427953a83c..3fdb52007a2 100644 --- a/src/main/java/net/minecraft/server/AxisAlignedBB.java +++ b/src/main/java/net/minecraft/server/AxisAlignedBB.java @@ -0,0 +0,0 @@ public class AxisAlignedBB { @@ -46,7 +46,7 @@ index f427953a83..3fdb52007a 100644 double[] adouble = new double[]{1.0D}; double d0 = vec3d1.x - vec3d.x; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 3fc3b76436..3a1d97c290 100644 +index 3fc3b76436c..3a1d97c290c 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -66,7 +66,7 @@ index 3fc3b76436..3a1d97c290 100644 return 0.0F; } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index c7c248f63f..aecd5011cb 100644 +index c7c248f63f8..aecd5011cbe 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { @@ -108,7 +108,7 @@ index c7c248f63f..aecd5011cb 100644 public int getShieldBlockingDelay() { diff --git a/src/main/java/net/minecraft/server/IEntitySelector.java b/src/main/java/net/minecraft/server/IEntitySelector.java -index c1f462d9d3..498f381099 100644 +index c1f462d9d3e..498f381099b 100644 --- a/src/main/java/net/minecraft/server/IEntitySelector.java +++ b/src/main/java/net/minecraft/server/IEntitySelector.java @@ -0,0 +0,0 @@ public final class IEntitySelector { @@ -120,7 +120,7 @@ index c1f462d9d3..498f381099 100644 return !entity.isSpectator(); }; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 9e082d4514..7d101d9630 100644 +index 9e082d4514e..7d101d96308 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -0,0 +0,0 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/Spigot-Server-Patches/Add-PlayerAttackEntityCooldownResetEvent.patch b/Spigot-Server-Patches/Add-PlayerAttackEntityCooldownResetEvent.patch index 42d9f0ea38..0c17e67fea 100644 --- a/Spigot-Server-Patches/Add-PlayerAttackEntityCooldownResetEvent.patch +++ b/Spigot-Server-Patches/Add-PlayerAttackEntityCooldownResetEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerAttackEntityCooldownResetEvent diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 2c81344a65..3fc2360a10 100644 +index 2c81344a65b..3fc2360a103 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { diff --git a/Spigot-Server-Patches/Add-ThrownEggHatchEvent.patch b/Spigot-Server-Patches/Add-ThrownEggHatchEvent.patch index 7148743cdb..7f25dac7fe 100644 --- a/Spigot-Server-Patches/Add-ThrownEggHatchEvent.patch +++ b/Spigot-Server-Patches/Add-ThrownEggHatchEvent.patch @@ -7,7 +7,7 @@ Adds a new event similar to PlayerEggThrowEvent, but without the Player requirem (dispensers can throw eggs to hatch them, too). diff --git a/src/main/java/net/minecraft/server/EntityEgg.java b/src/main/java/net/minecraft/server/EntityEgg.java -index 970f9109d9..bdd82d052a 100644 +index 970f9109d9b..bdd82d052a2 100644 --- a/src/main/java/net/minecraft/server/EntityEgg.java +++ b/src/main/java/net/minecraft/server/EntityEgg.java @@ -0,0 +0,0 @@ public class EntityEgg extends EntityProjectileThrowable { diff --git a/Spigot-Server-Patches/Add-effect-to-block-break-naturally.patch b/Spigot-Server-Patches/Add-effect-to-block-break-naturally.patch index cf2e1b05a9..a100d371d0 100644 --- a/Spigot-Server-Patches/Add-effect-to-block-break-naturally.patch +++ b/Spigot-Server-Patches/Add-effect-to-block-break-naturally.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add effect to block break naturally diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index db446c25c4..01c524cc01 100644 +index db446c25c41..01c524cc017 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -0,0 +0,0 @@ public class CraftBlock implements Block { diff --git a/Spigot-Server-Patches/Add-tick-times-API-and-mspt-command.patch b/Spigot-Server-Patches/Add-tick-times-API-and-mspt-command.patch index e6eb0e91cd..22f9ca28e2 100644 --- a/Spigot-Server-Patches/Add-tick-times-API-and-mspt-command.patch +++ b/Spigot-Server-Patches/Add-tick-times-API-and-mspt-command.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add tick times API and /mspt command diff --git a/src/main/java/com/destroystokyo/paper/MSPTCommand.java b/src/main/java/com/destroystokyo/paper/MSPTCommand.java new file mode 100644 -index 0000000000..d0211d4f39 +index 00000000000..d0211d4f39f --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/MSPTCommand.java @@ -0,0 +0,0 @@ @@ -75,7 +75,7 @@ index 0000000000..d0211d4f39 + } +} diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 9f1662ece5..e0d7832c3a 100644 +index 9f1662ece53..e0d7832c3a0 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -0,0 +0,0 @@ public class PaperConfig { @@ -87,7 +87,7 @@ index 9f1662ece5..e0d7832c3a 100644 version = getInt("config-version", 20); set("config-version", 20); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3c25436f15..5f57a9e1c8 100644 +index 3c25436f158..5f57a9e1c8d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant> { - - public void sendPacket(Packet packet, @Nullable GenericFutureListener> genericfuturelistener) { - // Paper start - handle oversized packets better -+ // Special case keepalive, allow it to go out of queue order -+ if (packet instanceof PacketPlayOutKeepAlive && this.isConnected()) { -+ this.dispatchPacket(packet, genericfuturelistener); -+ return; -+ } - // write the packets to the queue, then flush - antixray hooks there already - java.util.List extraPackets = InnerUtil.buildExtraPackets(packet); - boolean hasExtraPackets = extraPackets != null && !extraPackets.isEmpty(); -@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler> { - - } - -- private void sendPacketQueue() { this.o(); } // Paper - OBFHELPER -- private void o() { -+ // Paper start - Async-Anti-Xray - Stop dispatching further packets and return false if the peeked packet is a chunk packet which is not ready -+ private boolean sendPacketQueue() { return this.o(); } // OBFHELPER // void -> boolean -+ private boolean o() { // void -> boolean - if (this.channel != null && this.channel.isOpen()) { - Queue queue = this.packetQueue; - - synchronized (this.packetQueue) { -- NetworkManager.QueuedPacket networkmanager_queuedpacket; -- -- while ((networkmanager_queuedpacket = (NetworkManager.QueuedPacket) this.packetQueue.poll()) != null) { -- this.b(networkmanager_queuedpacket.a, networkmanager_queuedpacket.b); -+ while (!this.packetQueue.isEmpty()) { -+ NetworkManager.QueuedPacket networkmanager_queuedpacket = (NetworkManager.QueuedPacket) queue.peek(); // poll -> peek -+ -+ if (networkmanager_queuedpacket != null) { // Fix NPE (Spigot bug caused by handleDisconnection()) -+ if (networkmanager_queuedpacket.getPacket() instanceof PacketPlayOutMapChunk && !((PacketPlayOutMapChunk) networkmanager_queuedpacket.getPacket()).isReady()) { // Check if the peeked packet is a chunk packet which is not ready -+ return false; // Return false if the peeked packet is a chunk packet which is not ready -+ } else { -+ queue.poll(); // poll here -+ this.dispatchPacket(networkmanager_queuedpacket.getPacket(), networkmanager_queuedpacket.getGenericFutureListener()); // dispatch the packet -+ } -+ } - } - - } - } -+ -+ return true; // Return true if all packets were dispatched - } -+ // Paper end - - public void a() { - this.o(); diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java -index 23223f3f452..0d485064cac 100644 +index 23223f3f452..9b608d73869 100644 --- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java @@ -0,0 +0,0 @@ @@ -1330,18 +1275,18 @@ index 23223f3f452..0d485064cac 100644 + } + // Paper start - Async-Anti-Xray - Getter and Setter for the ready flag ++ @Override + public boolean isReady() { + return this.ready; - } - ++ } ++ + public void setReady(boolean ready) { + this.ready = ready; -+ } + } + // Paper end -+ + @Override public void a(PacketDataSerializer packetdataserializer) throws IOException { - this.a = packetdataserializer.readInt(); @@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet { return bytebuf; } diff --git a/Spigot-Server-Patches/Async-command-map-building.patch b/Spigot-Server-Patches/Async-command-map-building.patch index 8b19882821..c2c9e41a25 100644 --- a/Spigot-Server-Patches/Async-command-map-building.patch +++ b/Spigot-Server-Patches/Async-command-map-building.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Async command map building diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java -index 37b1a7947c..2414b0a552 100644 +index 37b1a7947c2..2414b0a552e 100644 --- a/src/main/java/net/minecraft/server/CommandDispatcher.java +++ b/src/main/java/net/minecraft/server/CommandDispatcher.java @@ -0,0 +0,0 @@ public class CommandDispatcher { diff --git a/Spigot-Server-Patches/Avoid-hopper-searches-if-there-are-no-items.patch b/Spigot-Server-Patches/Avoid-hopper-searches-if-there-are-no-items.patch index 3716bafb73..f2622251ae 100644 --- a/Spigot-Server-Patches/Avoid-hopper-searches-if-there-are-no-items.patch +++ b/Spigot-Server-Patches/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 472d3a4c03..42eede6781 100644 +index 2604fe9756e..a2a0ca3394c 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess { @@ -100,7 +100,7 @@ index 472d3a4c03..42eede6781 100644 T t0 = (T) iterator.next(); // CraftBukkit - decompile error if (t0.shouldBeRemoved) continue; // Paper diff --git a/src/main/java/net/minecraft/server/IEntitySelector.java b/src/main/java/net/minecraft/server/IEntitySelector.java -index 498f381099..a2d1ef3602 100644 +index 498f381099b..a2d1ef3602a 100644 --- a/src/main/java/net/minecraft/server/IEntitySelector.java +++ b/src/main/java/net/minecraft/server/IEntitySelector.java @@ -0,0 +0,0 @@ public final class IEntitySelector { diff --git a/Spigot-Server-Patches/Backport-fix-for-MC-167561.patch b/Spigot-Server-Patches/Backport-fix-for-MC-167561.patch index 0b72c44fd1..e840151aea 100644 --- a/Spigot-Server-Patches/Backport-fix-for-MC-167561.patch +++ b/Spigot-Server-Patches/Backport-fix-for-MC-167561.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Backport fix for MC-167561 diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index db15d5e0a2..eec1e26b6e 100644 +index db15d5e0a23..eec1e26b6eb 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -0,0 +0,0 @@ public class EntityWolf extends EntityTameableAnimal { diff --git a/Spigot-Server-Patches/Be-more-tolerant-of-invalid-attributes.patch b/Spigot-Server-Patches/Be-more-tolerant-of-invalid-attributes.patch index 3be6adfa72..8d0bbd9216 100644 --- a/Spigot-Server-Patches/Be-more-tolerant-of-invalid-attributes.patch +++ b/Spigot-Server-Patches/Be-more-tolerant-of-invalid-attributes.patch @@ -11,7 +11,7 @@ In a more perfect world the API would expose some way to interact with these att particularly flexible in this area. Perhaps this is an area for future expansion at a later time. diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java -index 77e584b129..007d28b16c 100644 +index 77e584b129a..007d28b16ce 100644 --- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java +++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java @@ -0,0 +0,0 @@ public class CraftAttributeMap implements Attributable { diff --git a/Spigot-Server-Patches/Bees-get-gravity-in-void.-Fixes-MC-167279.patch b/Spigot-Server-Patches/Bees-get-gravity-in-void.-Fixes-MC-167279.patch index d6b4025e42..9250465a0b 100644 --- a/Spigot-Server-Patches/Bees-get-gravity-in-void.-Fixes-MC-167279.patch +++ b/Spigot-Server-Patches/Bees-get-gravity-in-void.-Fixes-MC-167279.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bees get gravity in void. Fixes MC-167279 diff --git a/src/main/java/net/minecraft/server/ControllerMove.java b/src/main/java/net/minecraft/server/ControllerMove.java -index 7e3671dae6..a5c4cbb67f 100644 +index 7e3671dae61..a5c4cbb67f0 100644 --- a/src/main/java/net/minecraft/server/ControllerMove.java +++ b/src/main/java/net/minecraft/server/ControllerMove.java @@ -0,0 +0,0 @@ package net.minecraft.server; @@ -18,7 +18,7 @@ index 7e3671dae6..a5c4cbb67f 100644 protected double c; protected double d; diff --git a/src/main/java/net/minecraft/server/ControllerMoveFlying.java b/src/main/java/net/minecraft/server/ControllerMoveFlying.java -index 2b6ac2eeb0..0496c0c5db 100644 +index 2b6ac2eeb0f..0496c0c5dbb 100644 --- a/src/main/java/net/minecraft/server/ControllerMoveFlying.java +++ b/src/main/java/net/minecraft/server/ControllerMoveFlying.java @@ -0,0 +0,0 @@ public class ControllerMoveFlying extends ControllerMove { @@ -31,7 +31,7 @@ index 2b6ac2eeb0..0496c0c5db 100644 this.h = ControllerMove.Operation.WAIT; this.a.setNoGravity(true); diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java -index 73e0162578..c7d79efdf6 100644 +index 73e01625784..c7d79efdf6e 100644 --- a/src/main/java/net/minecraft/server/EntityBee.java +++ b/src/main/java/net/minecraft/server/EntityBee.java @@ -0,0 +0,0 @@ public class EntityBee extends EntityAnimal implements EntityBird { diff --git a/Spigot-Server-Patches/Broadcast-join-message-to-console.patch b/Spigot-Server-Patches/Broadcast-join-message-to-console.patch index 1f42cd0ec9..8d5f7ddf05 100644 --- a/Spigot-Server-Patches/Broadcast-join-message-to-console.patch +++ b/Spigot-Server-Patches/Broadcast-join-message-to-console.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Broadcast join message to console diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 160476fa29..7403be0b25 100644 +index 62891d2dc6f..e79a4d9ff80 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { diff --git a/Spigot-Server-Patches/Call-WhitelistToggleEvent-when-whitelist-is-toggled.patch b/Spigot-Server-Patches/Call-WhitelistToggleEvent-when-whitelist-is-toggled.patch index f3959be5ea..d5244d18db 100644 --- a/Spigot-Server-Patches/Call-WhitelistToggleEvent-when-whitelist-is-toggled.patch +++ b/Spigot-Server-Patches/Call-WhitelistToggleEvent-when-whitelist-is-toggled.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Call WhitelistToggleEvent when whitelist is toggled diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index f71c9f4a88..e9908cd01f 100644 +index b30b1f68787..faea0b31ddc 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { diff --git a/Spigot-Server-Patches/Catch-exceptions-from-dispenser-entity-spawns.patch b/Spigot-Server-Patches/Catch-exceptions-from-dispenser-entity-spawns.patch index d428698c73..432e27d3ee 100644 --- a/Spigot-Server-Patches/Catch-exceptions-from-dispenser-entity-spawns.patch +++ b/Spigot-Server-Patches/Catch-exceptions-from-dispenser-entity-spawns.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Catch exceptions from dispenser entity spawns diff --git a/src/main/java/net/minecraft/server/IDispenseBehavior.java b/src/main/java/net/minecraft/server/IDispenseBehavior.java -index 5a8c4dc6ba..b6b7e3c6c9 100644 +index 5a8c4dc6ba3..b6b7e3c6c97 100644 --- a/src/main/java/net/minecraft/server/IDispenseBehavior.java +++ b/src/main/java/net/minecraft/server/IDispenseBehavior.java @@ -0,0 +0,0 @@ public interface IDispenseBehavior { diff --git a/Spigot-Server-Patches/Chunk-debug-command.patch b/Spigot-Server-Patches/Chunk-debug-command.patch index debb36ab5d..7ef0458113 100644 --- a/Spigot-Server-Patches/Chunk-debug-command.patch +++ b/Spigot-Server-Patches/Chunk-debug-command.patch @@ -32,7 +32,7 @@ https://bugs.mojang.com/browse/MC-141484?focusedCommentId=528273&page=com.atlass https://bugs.mojang.com/browse/MC-141484?focusedCommentId=528577&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-528577 diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java -index 5acad8e44f..af81098784 100644 +index 5acad8e44f0..af810987846 100644 --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java @@ -0,0 +0,0 @@ public class PaperCommand extends Command { @@ -185,7 +185,7 @@ index 5acad8e44f..af81098784 100644 * Ported from MinecraftForge - author: LexManos - License: LGPLv2.1 */ diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 8c6550433c..e6d08756f7 100644 +index 8c6550433c2..e6d08756f76 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ import org.apache.logging.log4j.Logger; @@ -198,7 +198,7 @@ index 8c6550433c..e6d08756f7 100644 public final ChunkGenerator chunkGenerator; private final WorldServer world; diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java -index 3342278bcd..2dcecc1bbd 100644 +index 3342278bcd4..2dcecc1bbd0 100644 --- a/src/main/java/net/minecraft/server/MCUtil.java +++ b/src/main/java/net/minecraft/server/MCUtil.java @@ -0,0 +0,0 @@ import com.destroystokyo.paper.block.TargetBlockInfo; @@ -399,7 +399,7 @@ index 3342278bcd..2dcecc1bbd 100644 + } } diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java -index 6e9f402fb0..a640cb3845 100644 +index 6e9f402fb0f..a640cb3845a 100644 --- a/src/main/java/net/minecraft/server/PlayerChunk.java +++ b/src/main/java/net/minecraft/server/PlayerChunk.java @@ -0,0 +0,0 @@ public class PlayerChunk { @@ -412,7 +412,7 @@ index 6e9f402fb0..a640cb3845 100644 private int dirtyCount; private int r; diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 3c237b259e..6122d19ccf 100644 +index 1d255ce3833..34f470779fa 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -434,7 +434,7 @@ index 3c237b259e..6122d19ccf 100644 private final DefinedStructureManager definedStructureManager; private final File w; diff --git a/src/main/java/net/minecraft/server/Ticket.java b/src/main/java/net/minecraft/server/Ticket.java -index 77bb6b092a..7a8397815a 100644 +index 77bb6b092a0..7a8397815a5 100644 --- a/src/main/java/net/minecraft/server/Ticket.java +++ b/src/main/java/net/minecraft/server/Ticket.java @@ -0,0 +0,0 @@ public final class Ticket implements Comparable> { diff --git a/Spigot-Server-Patches/ChunkMapDistance-CME.patch b/Spigot-Server-Patches/ChunkMapDistance-CME.patch index 5ff24ec812..2a401c12c4 100644 --- a/Spigot-Server-Patches/ChunkMapDistance-CME.patch +++ b/Spigot-Server-Patches/ChunkMapDistance-CME.patch @@ -5,7 +5,7 @@ Subject: [PATCH] ChunkMapDistance CME diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index ae66129777..0244768f76 100644 +index ae661297774..0244768f76d 100644 --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java +++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java @@ -0,0 +0,0 @@ public abstract class ChunkMapDistance { diff --git a/Spigot-Server-Patches/Cleanup-Region-Files-Direct-Memory-on-close.patch b/Spigot-Server-Patches/Cleanup-Region-Files-Direct-Memory-on-close.patch index b2dcfaa6ff..cb7436bb42 100644 --- a/Spigot-Server-Patches/Cleanup-Region-Files-Direct-Memory-on-close.patch +++ b/Spigot-Server-Patches/Cleanup-Region-Files-Direct-Memory-on-close.patch @@ -10,7 +10,7 @@ Finalizers have no guarantee on when they will be ran, and since this is old generation memory, it might be a while before its called. diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index df728e2c0a..20927d55c6 100644 +index df728e2c0a2..20927d55c67 100644 --- a/src/main/java/net/minecraft/server/RegionFile.java +++ b/src/main/java/net/minecraft/server/RegionFile.java @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { diff --git a/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch b/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch index 1d34dc3c26..1c23d15190 100644 --- a/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch +++ b/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable Keep Spawn Loaded range per world This lets you disable it for some worlds and lower it for others. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 572679e4d1..071e5e7f72 100644 +index 572679e4d1c..071e5e7f729 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -0,0 +0,0 @@ public class PaperWorldConfig { @@ -21,7 +21,7 @@ index 572679e4d1..071e5e7f72 100644 + } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 45882ee30f..0ee1d8e486 100644 +index 45882ee30f5..0ee1d8e4869 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant, PlayerChunk.Failure>> completablefuture = this.a(chunkcoordintpair, 1, (i) -> { diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 6da2392915..081df240f3 100644 +index 6da2392915e..081df240f30 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ package net.minecraft.server; diff --git a/Spigot-Server-Patches/Ensure-Entity-is-never-double-registered.patch b/Spigot-Server-Patches/Ensure-Entity-is-never-double-registered.patch index 9c4a133582..9ea9a3e632 100644 --- a/Spigot-Server-Patches/Ensure-Entity-is-never-double-registered.patch +++ b/Spigot-Server-Patches/Ensure-Entity-is-never-double-registered.patch @@ -11,7 +11,7 @@ Vs behavior of non ticking of just overwriting state. We will now simply log a warning when this happens instead of crashing the server. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 00df89d650..0dbe2dce11 100644 +index 00df89d6509..0dbe2dce111 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -23,7 +23,7 @@ index 00df89d650..0dbe2dce11 100644 private boolean locked = false; @Override diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 5173731dc5..3fc25183ca 100644 +index 5173731dc55..3fc25183ca4 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/Entity-Activation-Range-2.0.patch b/Spigot-Server-Patches/Entity-Activation-Range-2.0.patch index 613ac2f5de..4a60e21c96 100644 --- a/Spigot-Server-Patches/Entity-Activation-Range-2.0.patch +++ b/Spigot-Server-Patches/Entity-Activation-Range-2.0.patch @@ -14,7 +14,7 @@ Adds flying monsters to control ghast and phantoms Adds villagers as separate config diff --git a/src/main/java/net/minecraft/server/BehaviorController.java b/src/main/java/net/minecraft/server/BehaviorController.java -index a1883eba63..7c6e687707 100644 +index a1883eba63e..7c6e687707c 100644 --- a/src/main/java/net/minecraft/server/BehaviorController.java +++ b/src/main/java/net/minecraft/server/BehaviorController.java @@ -0,0 +0,0 @@ public class BehaviorController implements MinecraftSeri @@ -26,7 +26,7 @@ index a1883eba63..7c6e687707 100644 return this.g.contains(activity); } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index fd6dad8437..067420f195 100644 +index fd6dad8437b..067420f1955 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -68,7 +68,7 @@ index fd6dad8437..067420f195 100644 // Paper start return this.pushedByWater(); diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java -index b40c8d2f83..4eda130750 100644 +index b40c8d2f83a..4eda130750f 100644 --- a/src/main/java/net/minecraft/server/EntityCreature.java +++ b/src/main/java/net/minecraft/server/EntityCreature.java @@ -0,0 +0,0 @@ import org.bukkit.event.entity.EntityUnleashEvent; @@ -80,7 +80,7 @@ index b40c8d2f83..4eda130750 100644 protected EntityCreature(EntityTypes entitytypes, World world) { super(entitytypes, world); diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index 6d53254f83..5aca7a9131 100644 +index 6d53254f838..5aca7a91317 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving { @@ -111,7 +111,7 @@ index 6d53254f83..5aca7a9131 100644 if (this.isPassenger() && this.getVehicle() instanceof EntityInsentient) { EntityInsentient entityinsentient = (EntityInsentient) this.getVehicle(); diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 252b3c5929..38f666bb11 100644 +index 252b3c59294..38f666bb115 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { @@ -124,7 +124,7 @@ index 252b3c5929..38f666bb11 100644 public float ba; public float bb; diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java -index 6d4d41c88c..193dbfc5f6 100644 +index 6d4d41c88c2..193dbfc5f68 100644 --- a/src/main/java/net/minecraft/server/EntityLlama.java +++ b/src/main/java/net/minecraft/server/EntityLlama.java @@ -0,0 +0,0 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn @@ -136,7 +136,7 @@ index 6d4d41c88c..193dbfc5f6 100644 return this.bJ != null; } diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java -index f22f12eeb0..bdb90a3466 100644 +index f22f12eeb0b..bdb90a34663 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoal.java +++ b/src/main/java/net/minecraft/server/PathfinderGoal.java @@ -0,0 +0,0 @@ public abstract class PathfinderGoal { @@ -152,7 +152,7 @@ index f22f12eeb0..bdb90a3466 100644 public void e() {} diff --git a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java -index 41fb166ce0..e93129f0b2 100644 +index 41fb166ce0a..e93129f0b28 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java @@ -0,0 +0,0 @@ import java.util.EnumSet; @@ -193,7 +193,7 @@ index 41fb166ce0..e93129f0b2 100644 } } diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -index 44bb18c594..935136771e 100644 +index 44bb18c5945..935136771e7 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java @@ -0,0 +0,0 @@ public class PathfinderGoalSelector { @@ -237,7 +237,7 @@ index 44bb18c594..935136771e 100644 this.d.stream().filter((pathfindergoalwrapped) -> { return pathfindergoalwrapped.j() == pathfindergoal; diff --git a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java -index 5a8c60ad90..29657fed75 100644 +index 5a8c60ad909..29657fed751 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java @@ -0,0 +0,0 @@ public class PathfinderGoalWrapped extends PathfinderGoal { @@ -249,7 +249,7 @@ index 5a8c60ad90..29657fed75 100644 return this.c; } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 9e161746f2..228e6e9ab9 100644 +index 9e161746f2a..228e6e9ab99 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -266,7 +266,7 @@ index 9e161746f2..228e6e9ab9 100644 public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 92601c581c..d873b8cf3a 100644 +index 92601c581cf..d873b8cf3ae 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -0,0 +0,0 @@ package org.spigotmc; @@ -653,7 +653,7 @@ index 92601c581c..d873b8cf3a 100644 isActive = false; } diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index 5e932a5d97..9d706626bf 100644 +index 5e932a5d979..9d706626bf2 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -0,0 +0,0 @@ public class SpigotWorldConfig diff --git a/Spigot-Server-Patches/Entity-Jump-API.patch b/Spigot-Server-Patches/Entity-Jump-API.patch index 4269e568f4..caca1dc762 100644 --- a/Spigot-Server-Patches/Entity-Jump-API.patch +++ b/Spigot-Server-Patches/Entity-Jump-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity Jump API diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 38f666bb11..253e35826f 100644 +index 38f666bb115..253e35826f6 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { @@ -20,7 +20,7 @@ index 38f666bb11..253e35826f 100644 } else { this.jumpTicks = 0; diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java -index cd41c80f19..f50ed19080 100644 +index cd41c80f191..f50ed190802 100644 --- a/src/main/java/net/minecraft/server/EntityPanda.java +++ b/src/main/java/net/minecraft/server/EntityPanda.java @@ -0,0 +0,0 @@ public class EntityPanda extends EntityAnimal { @@ -34,7 +34,7 @@ index cd41c80f19..f50ed19080 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 7d101d9630..245bd116d1 100644 +index 7d101d96308..245bd116d14 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -0,0 +0,0 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/Spigot-Server-Patches/Entity-getEntitySpawnReason.patch b/Spigot-Server-Patches/Entity-getEntitySpawnReason.patch index 7032e24205..bbb4910b8b 100644 --- a/Spigot-Server-Patches/Entity-getEntitySpawnReason.patch +++ b/Spigot-Server-Patches/Entity-getEntitySpawnReason.patch @@ -10,7 +10,7 @@ persistenting Living Entity, SPAWNER for spawners, or DEFAULT since data was not stored. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 3a1d97c290..030c9992eb 100644 +index 3a1d97c290c..030c9992ebe 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -59,7 +59,7 @@ index 3a1d97c290..030c9992eb 100644 } catch (Throwable throwable) { diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index e9908cd01f..7745e70d2d 100644 +index faea0b31ddc..faecf793416 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { @@ -72,7 +72,7 @@ index e9908cd01f..7745e70d2d 100644 }); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index a75034079b..955003d5f8 100644 +index a75034079b0..955003d5f83 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ public class WorldServer extends World { @@ -84,7 +84,7 @@ index a75034079b..955003d5f8 100644 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 bc2df82a5f..ff60568ce4 100644 +index bc2df82a5f4..ff60568ce43 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -0,0 +0,0 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/Spigot-Server-Patches/Expose-MinecraftServer-isRunning.patch b/Spigot-Server-Patches/Expose-MinecraftServer-isRunning.patch index e7360b9c54..d3dc02ac51 100644 --- a/Spigot-Server-Patches/Expose-MinecraftServer-isRunning.patch +++ b/Spigot-Server-Patches/Expose-MinecraftServer-isRunning.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Expose MinecraftServer#isRunning This allows for plugins to detect if the server is actually turning off in onDisable rather than just plugins reloading. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4a41003203..b627180729 100644 +index 4a41003203b..b627180729a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ public final class CraftServer implements Server { diff --git a/Spigot-Server-Patches/Expose-game-version.patch b/Spigot-Server-Patches/Expose-game-version.patch index a8b9950ac6..94998d1b04 100644 --- a/Spigot-Server-Patches/Expose-game-version.patch +++ b/Spigot-Server-Patches/Expose-game-version.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Expose game version diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f49193d9d7..1647c09756 100644 +index f49193d9d7c..1647c09756e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ public final class CraftServer implements Server { diff --git a/Spigot-Server-Patches/Expose-the-internal-current-tick.patch b/Spigot-Server-Patches/Expose-the-internal-current-tick.patch index 40c8d87643..b9a2e77b43 100644 --- a/Spigot-Server-Patches/Expose-the-internal-current-tick.patch +++ b/Spigot-Server-Patches/Expose-the-internal-current-tick.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Expose the internal current tick diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 14cc12d772..e8d3528d51 100644 +index 14cc12d772f..e8d3528d515 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ public final class CraftServer implements Server { diff --git a/Spigot-Server-Patches/Fire-event-on-GS4-query.patch b/Spigot-Server-Patches/Fire-event-on-GS4-query.patch index 898b35fdcd..5f324854d9 100644 --- a/Spigot-Server-Patches/Fire-event-on-GS4-query.patch +++ b/Spigot-Server-Patches/Fire-event-on-GS4-query.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire event on GS4 query diff --git a/src/main/java/net/minecraft/server/RemoteConnectionThread.java b/src/main/java/net/minecraft/server/RemoteConnectionThread.java -index 66bfbcf02b..d821ef9a75 100644 +index 66bfbcf02b5..d821ef9a757 100644 --- a/src/main/java/net/minecraft/server/RemoteConnectionThread.java +++ b/src/main/java/net/minecraft/server/RemoteConnectionThread.java @@ -0,0 +0,0 @@ public abstract class RemoteConnectionThread implements Runnable { @@ -26,7 +26,7 @@ index 66bfbcf02b..d821ef9a75 100644 return this.b.getPlayerCount(); } diff --git a/src/main/java/net/minecraft/server/RemoteStatusListener.java b/src/main/java/net/minecraft/server/RemoteStatusListener.java -index f4f4e31d3c..d502593847 100644 +index f4f4e31d3c2..d5025938473 100644 --- a/src/main/java/net/minecraft/server/RemoteStatusListener.java +++ b/src/main/java/net/minecraft/server/RemoteStatusListener.java @@ -0,0 +0,0 @@ public class RemoteStatusListener extends RemoteConnectionThread { @@ -184,7 +184,7 @@ index f4f4e31d3c..d502593847 100644 } } diff --git a/src/main/java/net/minecraft/server/RemoteStatusReply.java b/src/main/java/net/minecraft/server/RemoteStatusReply.java -index 848b5c3f0e..73efea7e13 100644 +index 848b5c3f0e0..73efea7e135 100644 --- a/src/main/java/net/minecraft/server/RemoteStatusReply.java +++ b/src/main/java/net/minecraft/server/RemoteStatusReply.java @@ -0,0 +0,0 @@ public class RemoteStatusReply { diff --git a/Spigot-Server-Patches/Fix-AssertionError-when-player-hand-set-to-empty-typ.patch b/Spigot-Server-Patches/Fix-AssertionError-when-player-hand-set-to-empty-typ.patch index 21b9b624e1..0f0e5d52ef 100644 --- a/Spigot-Server-Patches/Fix-AssertionError-when-player-hand-set-to-empty-typ.patch +++ b/Spigot-Server-Patches/Fix-AssertionError-when-player-hand-set-to-empty-typ.patch @@ -7,7 +7,7 @@ Fixes an AssertionError when setting the player's item in hand to null or a new Fixes GH-2718 diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 24594aa0e9..aada8d3b08 100644 +index 24594aa0e9b..aada8d3b08b 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { @@ -19,7 +19,7 @@ index 24594aa0e9..aada8d3b08 100644 if (enumhand == EnumHand.MAIN_HAND) { return this.getEquipment(EnumItemSlot.MAINHAND); diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index f00653dfe7..71d045ee00 100644 +index f00653dfe7a..71d045ee00d 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/Spigot-Server-Patches/Fix-CB-call-to-changed-postToMainThread-method.patch b/Spigot-Server-Patches/Fix-CB-call-to-changed-postToMainThread-method.patch index d450e31ca2..d7b8526716 100644 --- a/Spigot-Server-Patches/Fix-CB-call-to-changed-postToMainThread-method.patch +++ b/Spigot-Server-Patches/Fix-CB-call-to-changed-postToMainThread-method.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix CB call to changed postToMainThread method diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index f496006f3c..65c171cec3 100644 +index f496006f3cc..65c171cec3c 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/Spigot-Server-Patches/Fix-Chunk-Post-Processing-deadlock-risk.patch b/Spigot-Server-Patches/Fix-Chunk-Post-Processing-deadlock-risk.patch index c50cd9a7cb..429645455f 100644 --- a/Spigot-Server-Patches/Fix-Chunk-Post-Processing-deadlock-risk.patch +++ b/Spigot-Server-Patches/Fix-Chunk-Post-Processing-deadlock-risk.patch @@ -25,7 +25,7 @@ This successfully fixed a reoccurring and highly reproduceable crash for heightmaps. diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index c2e4e4f6f1..78a8a3cc68 100644 +index c2e4e4f6f18..78a8a3cc68f 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ public class ChunkProviderServer extends IChunkProvider { @@ -37,7 +37,7 @@ index c2e4e4f6f1..78a8a3cc68 100644 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 22550f74df..cc400a9a84 100644 +index 6c178492b75..79133dd40c4 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { diff --git a/Spigot-Server-Patches/Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch b/Spigot-Server-Patches/Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch index b09fd45f92..a856a942d0 100644 --- a/Spigot-Server-Patches/Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch +++ b/Spigot-Server-Patches/Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch @@ -16,7 +16,7 @@ handling that should have been handled synchronously will be handled synchronously when the server gets shut down. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 249eaf56bc..45882ee30f 100644 +index 249eaf56bc0..45882ee30f5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant> getStatusFutureUnchecked(ChunkStatus chunkstatus) { diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 4f5b516144..1d517fd1ae 100644 +index 4f5b5161448..1d517fd1aea 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -201,7 +201,7 @@ index 4f5b516144..1d517fd1ae 100644 // Spigot start return isOutsideOfRange(chunkcoordintpair, false); diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index 6b543f89d4..d37abf2cf3 100644 +index 6b543f89d4e..d37abf2cf30 100644 --- a/src/main/java/net/minecraft/server/RegionFile.java +++ b/src/main/java/net/minecraft/server/RegionFile.java @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { @@ -250,7 +250,7 @@ index 6b543f89d4..d37abf2cf3 100644 this.c(); } finally { diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java -index 942b7d3239..2f8af42e2a 100644 +index 942b7d32393..2f8af42e2aa 100644 --- a/src/main/java/net/minecraft/server/RegionFileCache.java +++ b/src/main/java/net/minecraft/server/RegionFileCache.java @@ -0,0 +0,0 @@ public final class RegionFileCache implements AutoCloseable { @@ -280,7 +280,7 @@ index 942b7d3239..2f8af42e2a 100644 throwable = throwable1; throw throwable1; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 8f8c18c5a4..50467656df 100644 +index 8f8c18c5a4f..50467656df0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -0,0 +0,0 @@ import java.util.Objects; diff --git a/Spigot-Server-Patches/Fix-comparator-behavior-for-EntityPhanton-goal.patch b/Spigot-Server-Patches/Fix-comparator-behavior-for-EntityPhanton-goal.patch index e0347ef023..28ad2cd5c7 100644 --- a/Spigot-Server-Patches/Fix-comparator-behavior-for-EntityPhanton-goal.patch +++ b/Spigot-Server-Patches/Fix-comparator-behavior-for-EntityPhanton-goal.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix comparator behavior for EntityPhanton goal diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 82323bf4ac..90eeddb1af 100644 +index 82323bf4acc..90eeddb1af5 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -0,0 +0,0 @@ public class EntityPhantom extends EntityFlying implements IMonster { diff --git a/Spigot-Server-Patches/Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch b/Spigot-Server-Patches/Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch index 5e6db19d33..4edf9c7467 100644 --- a/Spigot-Server-Patches/Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch +++ b/Spigot-Server-Patches/Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch @@ -19,7 +19,7 @@ This change ensures the chunks are always loaded when entities are added to the world, or a valid entity moves between chunks. diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 955003d5f8..6da2392915 100644 +index 955003d5f83..6da2392915e 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/Fix-items-not-falling-correctly.patch b/Spigot-Server-Patches/Fix-items-not-falling-correctly.patch index ca8e35d047..02ddf672d5 100644 --- a/Spigot-Server-Patches/Fix-items-not-falling-correctly.patch +++ b/Spigot-Server-Patches/Fix-items-not-falling-correctly.patch @@ -15,7 +15,7 @@ This patch resolves the conflict by offsetting checking an item's move method from Spigot's entity activation range check. diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java -index 507627a29f..2926fbb957 100644 +index 507627a29f6..2926fbb9570 100644 --- a/src/main/java/net/minecraft/server/EntityItem.java +++ b/src/main/java/net/minecraft/server/EntityItem.java @@ -0,0 +0,0 @@ public class EntityItem extends Entity { diff --git a/Spigot-Server-Patches/Fix-items-vanishing-through-end-portal.patch b/Spigot-Server-Patches/Fix-items-vanishing-through-end-portal.patch index bad4361fdb..f3c1545be6 100644 --- a/Spigot-Server-Patches/Fix-items-vanishing-through-end-portal.patch +++ b/Spigot-Server-Patches/Fix-items-vanishing-through-end-portal.patch @@ -13,7 +13,7 @@ Quickly loading the exact world spawn chunk before searching the heightmap resolves the issue without having to load all spawn chunks. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 067420f195..599bcabd14 100644 +index 067420f1955..599bcabd14a 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke diff --git a/Spigot-Server-Patches/Fix-last-firework-in-stack-not-having-effects-when-d.patch b/Spigot-Server-Patches/Fix-last-firework-in-stack-not-having-effects-when-d.patch index d0e3cb48e7..ef099d426f 100644 --- a/Spigot-Server-Patches/Fix-last-firework-in-stack-not-having-effects-when-d.patch +++ b/Spigot-Server-Patches/Fix-last-firework-in-stack-not-having-effects-when-d.patch @@ -9,7 +9,7 @@ dispensed. The resulting item would have size == 0 and therefore be convertered to air, hence why the effects disappeared. diff --git a/src/main/java/net/minecraft/server/IDispenseBehavior.java b/src/main/java/net/minecraft/server/IDispenseBehavior.java -index b6b7e3c6c9..3af686c7f1 100644 +index b6b7e3c6c97..3af686c7f1e 100644 --- a/src/main/java/net/minecraft/server/IDispenseBehavior.java +++ b/src/main/java/net/minecraft/server/IDispenseBehavior.java @@ -0,0 +0,0 @@ public interface IDispenseBehavior { diff --git a/Spigot-Server-Patches/Fix-nether-portal-creation.patch b/Spigot-Server-Patches/Fix-nether-portal-creation.patch index 2a4c8a61fd..fa15b84655 100644 --- a/Spigot-Server-Patches/Fix-nether-portal-creation.patch +++ b/Spigot-Server-Patches/Fix-nether-portal-creation.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix nether portal creation diff --git a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java -index 60330f753f..c22dbbfbe8 100644 +index 60330f753fc..c22dbbfbe8b 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java +++ b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java @@ -0,0 +0,0 @@ public class BlockStateListPopulator extends DummyGeneratorAccess { diff --git a/Spigot-Server-Patches/Fix-numerous-item-duplication-issues-and-teleport-is.patch b/Spigot-Server-Patches/Fix-numerous-item-duplication-issues-and-teleport-is.patch index 91131e3c58..be23765e8d 100644 --- a/Spigot-Server-Patches/Fix-numerous-item-duplication-issues-and-teleport-is.patch +++ b/Spigot-Server-Patches/Fix-numerous-item-duplication-issues-and-teleport-is.patch @@ -16,7 +16,7 @@ So even if something NEW comes up, it would be impossible to drop the same item twice because the source was destroyed. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 9bb5a4bcf1..14ba037c1d 100644 +index 9bb5a4bcf1e..14ba037c1dc 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -57,7 +57,7 @@ index 9bb5a4bcf1..14ba037c1d 100644 public float a(Explosion explosion, IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata, Fluid fluid, float f) { diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index 8ad131e4fc..d35a0b2d94 100644 +index 8ad131e4fc2..d35a0b2d94e 100644 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java @@ -0,0 +0,0 @@ public class EntityArmorStand extends EntityLiving { @@ -79,7 +79,7 @@ index 8ad131e4fc..d35a0b2d94 100644 } } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c3f7e46121..73b271f6f3 100644 +index c3f7e461210..73b271f6f3e 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -0,0 +0,0 @@ public class CraftEventFactory { diff --git a/Spigot-Server-Patches/Fix-some-generation-concurrency-issues.patch b/Spigot-Server-Patches/Fix-some-generation-concurrency-issues.patch index 52e645ed3e..b0fed903a8 100644 --- a/Spigot-Server-Patches/Fix-some-generation-concurrency-issues.patch +++ b/Spigot-Server-Patches/Fix-some-generation-concurrency-issues.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix some generation concurrency issues diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 983bc1c7d9..8cf3c10274 100644 +index 983bc1c7d9c..8cf3c10274b 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -33,7 +33,7 @@ index 983bc1c7d9..8cf3c10274 100644 public CraftWorld getWorld() { return this.world; diff --git a/src/main/java/net/minecraft/server/WorldGenFeatureStateProviderWeighted.java b/src/main/java/net/minecraft/server/WorldGenFeatureStateProviderWeighted.java -index 22e14fe1e9..e2af6d43b2 100644 +index 22e14fe1e98..e2af6d43b2e 100644 --- a/src/main/java/net/minecraft/server/WorldGenFeatureStateProviderWeighted.java +++ b/src/main/java/net/minecraft/server/WorldGenFeatureStateProviderWeighted.java @@ -0,0 +0,0 @@ public class WorldGenFeatureStateProviderWeighted extends WorldGenFeatureStatePr @@ -59,7 +59,7 @@ index 22e14fe1e9..e2af6d43b2 100644 builder.put(dynamicops.createString("type"), dynamicops.createString(IRegistry.t.getKey(this.a).toString())).put(dynamicops.createString("entries"), this.b.a(dynamicops, (iblockdata) -> { diff --git a/src/main/java/net/minecraft/server/WorldGenStronghold.java b/src/main/java/net/minecraft/server/WorldGenStronghold.java -index fc4348b602..44be7169ff 100644 +index fc4348b6024..44be7169ffd 100644 --- a/src/main/java/net/minecraft/server/WorldGenStronghold.java +++ b/src/main/java/net/minecraft/server/WorldGenStronghold.java @@ -0,0 +0,0 @@ import javax.annotation.Nullable; diff --git a/Spigot-Server-Patches/Fix-sounds-when-item-frames-are-modified-MC-123450.patch b/Spigot-Server-Patches/Fix-sounds-when-item-frames-are-modified-MC-123450.patch index 004961cdcc..a062a04f64 100644 --- a/Spigot-Server-Patches/Fix-sounds-when-item-frames-are-modified-MC-123450.patch +++ b/Spigot-Server-Patches/Fix-sounds-when-item-frames-are-modified-MC-123450.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Fix sounds when item frames are modified (MC-123450) This also fixes the adding sound playing when the item frame direction is changed. diff --git a/src/main/java/net/minecraft/server/EntityItemFrame.java b/src/main/java/net/minecraft/server/EntityItemFrame.java -index 9b1e07452f..f8a2f32f1d 100644 +index 9b1e07452f9..f8a2f32f1d9 100644 --- a/src/main/java/net/minecraft/server/EntityItemFrame.java +++ b/src/main/java/net/minecraft/server/EntityItemFrame.java @@ -0,0 +0,0 @@ public class EntityItemFrame extends EntityHanging { @@ -19,7 +19,7 @@ index 9b1e07452f..f8a2f32f1d 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java -index 2873ff9d1f..a3613edcbb 100644 +index 2873ff9d1f0..a3613edcbb5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java @@ -0,0 +0,0 @@ public class CraftItemFrame extends CraftHanging implements ItemFrame { diff --git a/Spigot-Server-Patches/Fix-spawn-radius-being-treated-as-0.patch b/Spigot-Server-Patches/Fix-spawn-radius-being-treated-as-0.patch index 61cfcbee21..294345ed0e 100644 --- a/Spigot-Server-Patches/Fix-spawn-radius-being-treated-as-0.patch +++ b/Spigot-Server-Patches/Fix-spawn-radius-being-treated-as-0.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix spawn radius being treated as 0 diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index bb10857cf3..b9d1747ab2 100644 +index bb10857cf37..b9d1747ab2a 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/Spigot-Server-Patches/Fix-spawning-of-hanging-entities-that-are-not-ItemFr.patch b/Spigot-Server-Patches/Fix-spawning-of-hanging-entities-that-are-not-ItemFr.patch index 8611b09db0..dae16697de 100644 --- a/Spigot-Server-Patches/Fix-spawning-of-hanging-entities-that-are-not-ItemFr.patch +++ b/Spigot-Server-Patches/Fix-spawning-of-hanging-entities-that-are-not-ItemFr.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Fix spawning of hanging entities that are not ItemFrames and diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index d3ac0ffe46..07ebd78acc 100644 +index d3ac0ffe468..07ebd78acc7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -0,0 +0,0 @@ public class CraftWorld implements World { diff --git a/Spigot-Server-Patches/Fix-stuck-in-sneak-when-changing-worlds-MC-10657.patch b/Spigot-Server-Patches/Fix-stuck-in-sneak-when-changing-worlds-MC-10657.patch index 6595e0c0f8..6b92329e13 100644 --- a/Spigot-Server-Patches/Fix-stuck-in-sneak-when-changing-worlds-MC-10657.patch +++ b/Spigot-Server-Patches/Fix-stuck-in-sneak-when-changing-worlds-MC-10657.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in sneak when changing worlds (MC-10657) diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index fcd887ce30..bb10857cf3 100644 +index fcd887ce30d..bb10857cf37 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -18,7 +18,7 @@ index fcd887ce30..bb10857cf3 100644 PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver.getWorld()); this.world.getServer().getPluginManager().callEvent(changeEvent); diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 0ccfd8de0f..01345a62b7 100644 +index b45911cf819..909d86e14c7 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { diff --git a/Spigot-Server-Patches/Fix-unregistering-entities-from-unloading-chunks.patch b/Spigot-Server-Patches/Fix-unregistering-entities-from-unloading-chunks.patch index c8a5863cf1..a788aa5b13 100644 --- a/Spigot-Server-Patches/Fix-unregistering-entities-from-unloading-chunks.patch +++ b/Spigot-Server-Patches/Fix-unregistering-entities-from-unloading-chunks.patch @@ -15,7 +15,7 @@ Combine that with a buggy detail of the previous implementation of the Dupe UUID patch, then this was the likely source of the "Ghost entities" diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 3fc25183ca..9fbe8fa1b2 100644 +index 3fc25183ca4..9fbe8fa1b2b 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch b/Spigot-Server-Patches/Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch index b9f63e68d6..b4406a0ea4 100644 --- a/Spigot-Server-Patches/Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch +++ b/Spigot-Server-Patches/Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch @@ -36,7 +36,7 @@ We have to ensure Thread Death propagates correctly though to stop main complete This is to ensure that if main isn't truely stuck, it's not manipulating state we are trying to save. diff --git a/src/main/java/net/minecraft/server/CrashReport.java b/src/main/java/net/minecraft/server/CrashReport.java -index 3de19c998b..c7dc8787cc 100644 +index 3de19c998b7..c7dc8787cc3 100644 --- a/src/main/java/net/minecraft/server/CrashReport.java +++ b/src/main/java/net/minecraft/server/CrashReport.java @@ -0,0 +0,0 @@ public class CrashReport { @@ -48,7 +48,7 @@ index 3de19c998b..c7dc8787cc 100644 throwable = throwable.getCause(); } diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 1ef7890da5..e62ca0543f 100644 +index 1ef7890da59..e62ca0543f1 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer @@ -61,7 +61,7 @@ index 1ef7890da5..e62ca0543f 100644 @Override diff --git a/src/main/java/net/minecraft/server/IAsyncTaskHandler.java b/src/main/java/net/minecraft/server/IAsyncTaskHandler.java -index cfe43e882e..2632c7c3ec 100644 +index cfe43e882e5..2632c7c3ec7 100644 --- a/src/main/java/net/minecraft/server/IAsyncTaskHandler.java +++ b/src/main/java/net/minecraft/server/IAsyncTaskHandler.java @@ -0,0 +0,0 @@ public abstract class IAsyncTaskHandler implements Mailbox 0 && new File( split[0] ).isFile() ) diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 5bdcdcf9e8..fe4b8caf28 100644 +index 5bdcdcf9e85..fe4b8caf28b 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java @@ -0,0 +0,0 @@ public class WatchdogThread extends Thread diff --git a/Spigot-Server-Patches/Guard-against-serializing-mismatching-chunk-coordina.patch b/Spigot-Server-Patches/Guard-against-serializing-mismatching-chunk-coordina.patch index d23ae1dc24..45bebb36e0 100644 --- a/Spigot-Server-Patches/Guard-against-serializing-mismatching-chunk-coordina.patch +++ b/Spigot-Server-Patches/Guard-against-serializing-mismatching-chunk-coordina.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Guard against serializing mismatching chunk coordinate Should help if something dumb happens diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -index 7389aba1a4..938c747dcc 100644 +index 34cd09a503b..fa893b14bce 100644 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java @@ -0,0 +0,0 @@ public class ChunkRegionLoader { @@ -35,7 +35,7 @@ index 7389aba1a4..938c747dcc 100644 if (!Objects.equals(chunkcoordintpair, chunkcoordintpair1)) { ChunkRegionLoader.LOGGER.error("Chunk file at {} is in the wrong location; relocating. (Expected {}, got {})", chunkcoordintpair, chunkcoordintpair, chunkcoordintpair1); diff --git a/src/main/java/net/minecraft/server/IChunkLoader.java b/src/main/java/net/minecraft/server/IChunkLoader.java -index 134c76065b..25c8b131fe 100644 +index 134c76065bf..25c8b131fec 100644 --- a/src/main/java/net/minecraft/server/IChunkLoader.java +++ b/src/main/java/net/minecraft/server/IChunkLoader.java @@ -0,0 +0,0 @@ public class IChunkLoader extends RegionFileCache implements AutoCloseable { diff --git a/Spigot-Server-Patches/Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch b/Spigot-Server-Patches/Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch deleted file mode 100644 index 6b3a14cae8..0000000000 --- a/Spigot-Server-Patches/Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Aikar -Date: Sat, 2 Mar 2019 14:55:01 -0500 -Subject: [PATCH] Handle Excessive Signs in Chunks creating large packets - -Also adds a limit to stop sending Sign and other data to client after -a significant amount have been sent. - -Use -DPaper.excessiveTELimit=750 to configure that limit, or -1 -to disable the limit and let your players be abused. - -With further contributions from - -Co-Authored-by: Spottedleaf - -diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java -index b1dededc15..e966b6edcc 100644 ---- a/src/main/java/net/minecraft/server/NetworkManager.java -+++ b/src/main/java/net/minecraft/server/NetworkManager.java -@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler> { - NetworkManager.LOGGER.debug("Set listener of {} to {}", this, packetlistener); - this.packetListener = packetlistener; - } -+ // Paper start -+ private static class InnerUtil { // Attempt to hide these methods from ProtocolLib so it doesn't accidently pick them up. -+ private static java.util.List buildExtraPackets(Packet packet) { -+ java.util.List extra = packet.getExtraPackets(); -+ if (extra == null || extra.isEmpty()) { -+ return null; -+ } -+ java.util.List ret = new java.util.ArrayList<>(1 + extra.size()); -+ buildExtraPackets0(extra, ret); -+ return ret; -+ } -+ -+ private static void buildExtraPackets0(java.util.List extraPackets, java.util.List into) { -+ for (Packet extra : extraPackets) { -+ into.add(extra); -+ java.util.List extraExtra = extra.getExtraPackets(); -+ if (extraExtra != null && !extraExtra.isEmpty()) { -+ buildExtraPackets0(extraExtra, into); -+ } -+ } -+ } -+ } -+ // Paper end - - public void sendPacket(Packet packet) { - this.sendPacket(packet, (GenericFutureListener) null); - } - - public void sendPacket(Packet packet, @Nullable GenericFutureListener> genericfuturelistener) { -- if (this.isConnected()) { -- this.o(); -- this.b(packet, genericfuturelistener); -- } else { -+ // Paper start - handle oversized packets better -+ // write the packets to the queue, then flush - antixray hooks there already -+ java.util.List extraPackets = InnerUtil.buildExtraPackets(packet); -+ boolean hasExtraPackets = extraPackets != null && !extraPackets.isEmpty(); -+ if (!hasExtraPackets) { - this.packetQueue.add(new NetworkManager.QueuedPacket(packet, genericfuturelistener)); -- } -+ } else { -+ java.util.List packets = new java.util.ArrayList<>(1 + extraPackets.size()); -+ packets.add(new NetworkManager.QueuedPacket(packet, null)); // delay the future listener until the end of the extra packets - -+ for (int i = 0, len = extraPackets.size(); i < len;) { -+ Packet extra = extraPackets.get(i); -+ boolean end = ++i == len; -+ packets.add(new NetworkManager.QueuedPacket(extra, end ? genericfuturelistener : null)); // append listener to the end -+ } -+ -+ this.packetQueue.addAll(packets); // atomic -+ } -+ this.sendPacketQueue(); // ensure only one flush call is made -+ // Paper end - } - - private void dispatchPacket(Packet packet, @Nullable GenericFutureListener> genericFutureListener) { this.b(packet, genericFutureListener); } // Paper - OBFHELPER -diff --git a/src/main/java/net/minecraft/server/Packet.java b/src/main/java/net/minecraft/server/Packet.java -index 2d8e6a2f4a..8d0965a053 100644 ---- a/src/main/java/net/minecraft/server/Packet.java -+++ b/src/main/java/net/minecraft/server/Packet.java -@@ -0,0 +0,0 @@ public interface Packet { - void a(T t0); - - // Paper start -+ default java.util.List getExtraPackets() { return null; } - default boolean packetTooLarge(NetworkManager manager) { - return false; - } -diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java -index a0b87f89df..23223f3f45 100644 ---- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java -+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java -@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet { - - public PacketPlayOutMapChunk() {} - -+ // Paper start -+ private final java.util.List extraPackets = new java.util.ArrayList<>(); -+ private static final int TE_LIMIT = Integer.getInteger("Paper.excessiveTELimit", 750); -+ -+ @Override -+ public java.util.List getExtraPackets() { -+ return extraPackets; -+ } -+ // Paper end - public PacketPlayOutMapChunk(Chunk chunk, int i) { - ChunkCoordIntPair chunkcoordintpair = chunk.getPos(); - -@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet { - this.c = this.a(new PacketDataSerializer(this.j()), chunk, i); - this.g = Lists.newArrayList(); - iterator = chunk.getTileEntities().entrySet().iterator(); -+ int totalTileEntities = 0; // Paper - - while (iterator.hasNext()) { - entry = (Entry) iterator.next(); -@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet { - int j = blockposition.getY() >> 4; - - if (this.f() || (i & 1 << j) != 0) { -+ // Paper start - improve oversized chunk data packet handling -+ if (++totalTileEntities > TE_LIMIT) { -+ PacketPlayOutTileEntityData updatePacket = tileentity.getUpdatePacket(); -+ if (updatePacket != null) { -+ this.extraPackets.add(updatePacket); -+ continue; -+ } -+ } -+ // Paper end - NBTTagCompound nbttagcompound = tileentity.b(); - if (tileentity instanceof TileEntitySkull) { TileEntitySkull.sanitizeTileEntityUUID(nbttagcompound); } // Paper - --- \ No newline at end of file diff --git a/Spigot-Server-Patches/Handle-Oversized-Tile-Entities-in-chunks.patch b/Spigot-Server-Patches/Handle-Oversized-Tile-Entities-in-chunks.patch new file mode 100644 index 0000000000..1b4069ed07 --- /dev/null +++ b/Spigot-Server-Patches/Handle-Oversized-Tile-Entities-in-chunks.patch @@ -0,0 +1,55 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Wed, 6 May 2020 05:00:57 -0400 +Subject: [PATCH] Handle Oversized Tile Entities in chunks + +Splits out Extra Packets if too many TE's are encountered to prevent +creating too large of a packet to sed. + +Co authored by Spottedleaf + +diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java +index a0b87f89df7..23223f3f452 100644 +--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java ++++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java +@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet { + + public PacketPlayOutMapChunk() {} + ++ // Paper start ++ private final java.util.List extraPackets = new java.util.ArrayList<>(); ++ private static final int TE_LIMIT = Integer.getInteger("Paper.excessiveTELimit", 750); ++ ++ @Override ++ public java.util.List getExtraPackets() { ++ return extraPackets; ++ } ++ // Paper end + public PacketPlayOutMapChunk(Chunk chunk, int i) { + ChunkCoordIntPair chunkcoordintpair = chunk.getPos(); + +@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet { + this.c = this.a(new PacketDataSerializer(this.j()), chunk, i); + this.g = Lists.newArrayList(); + iterator = chunk.getTileEntities().entrySet().iterator(); ++ int totalTileEntities = 0; // Paper + + while (iterator.hasNext()) { + entry = (Entry) iterator.next(); +@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet { + int j = blockposition.getY() >> 4; + + if (this.f() || (i & 1 << j) != 0) { ++ // Paper start - improve oversized chunk data packet handling ++ if (++totalTileEntities > TE_LIMIT) { ++ PacketPlayOutTileEntityData updatePacket = tileentity.getUpdatePacket(); ++ if (updatePacket != null) { ++ this.extraPackets.add(updatePacket); ++ continue; ++ } ++ } ++ // Paper end + NBTTagCompound nbttagcompound = tileentity.b(); + if (tileentity instanceof TileEntitySkull) { TileEntitySkull.sanitizeTileEntityUUID(nbttagcompound); } // Paper + +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Implement-Brigadier-Mojang-API.patch b/Spigot-Server-Patches/Implement-Brigadier-Mojang-API.patch index 4cd0868bd9..00eb6b2070 100644 --- a/Spigot-Server-Patches/Implement-Brigadier-Mojang-API.patch +++ b/Spigot-Server-Patches/Implement-Brigadier-Mojang-API.patch @@ -10,7 +10,7 @@ Adds CommandRegisteredEvent - Allows manipulating the CommandNode to add more children/metadata for the client diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java -index 2414b0a552..2d512aa4f9 100644 +index 2414b0a552e..2d512aa4f9a 100644 --- a/src/main/java/net/minecraft/server/CommandDispatcher.java +++ b/src/main/java/net/minecraft/server/CommandDispatcher.java @@ -0,0 +0,0 @@ public class CommandDispatcher { @@ -30,7 +30,7 @@ index 2414b0a552..2d512aa4f9 100644 event.getPlayer().getServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/server/CommandListenerWrapper.java b/src/main/java/net/minecraft/server/CommandListenerWrapper.java -index 0b23a0548d..c988c929f1 100644 +index 0b23a0548d5..c988c929f10 100644 --- a/src/main/java/net/minecraft/server/CommandListenerWrapper.java +++ b/src/main/java/net/minecraft/server/CommandListenerWrapper.java @@ -0,0 +0,0 @@ import java.util.function.BinaryOperator; @@ -69,7 +69,7 @@ index 0b23a0548d..c988c929f1 100644 public boolean hasPermission(int i) { // CraftBukkit start diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 38ec22f4c0..a180df220e 100644 +index 38ec22f4c03..a180df220e4 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -101,7 +101,7 @@ index 38ec22f4c0..a180df220e 100644 // Paper end - async tab completion diff --git a/src/main/java/org/bukkit/craftbukkit/command/BukkitCommandWrapper.java b/src/main/java/org/bukkit/craftbukkit/command/BukkitCommandWrapper.java -index 5f33c9e52a..e16ecdea7d 100644 +index 5f33c9e52ac..e16ecdea7d2 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/BukkitCommandWrapper.java +++ b/src/main/java/org/bukkit/craftbukkit/command/BukkitCommandWrapper.java @@ -0,0 +0,0 @@ import net.minecraft.server.CommandListenerWrapper; diff --git a/Spigot-Server-Patches/Implement-CraftBlockSoundGroup.patch b/Spigot-Server-Patches/Implement-CraftBlockSoundGroup.patch index f0c928fc6f..c66bd49904 100644 --- a/Spigot-Server-Patches/Implement-CraftBlockSoundGroup.patch +++ b/Spigot-Server-Patches/Implement-CraftBlockSoundGroup.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Implement CraftBlockSoundGroup diff --git a/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java b/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java new file mode 100644 -index 0000000000..99f99330d0 +index 00000000000..99f99330d01 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java @@ -0,0 +0,0 @@ @@ -49,7 +49,7 @@ index 0000000000..99f99330d0 + } +} diff --git a/src/main/java/net/minecraft/server/IBlockData.java b/src/main/java/net/minecraft/server/IBlockData.java -index c1ff62aa52..de43881653 100644 +index c1ff62aa525..de43881653f 100644 --- a/src/main/java/net/minecraft/server/IBlockData.java +++ b/src/main/java/net/minecraft/server/IBlockData.java @@ -0,0 +0,0 @@ public class IBlockData extends BlockDataAbstract implements @@ -61,7 +61,7 @@ index c1ff62aa52..de43881653 100644 return this.getBlock().getStepSound(this); } diff --git a/src/main/java/net/minecraft/server/SoundEffectType.java b/src/main/java/net/minecraft/server/SoundEffectType.java -index b774d2d8d9..0184bf3fc9 100644 +index b774d2d8d90..0184bf3fc9e 100644 --- a/src/main/java/net/minecraft/server/SoundEffectType.java +++ b/src/main/java/net/minecraft/server/SoundEffectType.java @@ -0,0 +0,0 @@ public class SoundEffectType { @@ -96,7 +96,7 @@ index b774d2d8d9..0184bf3fc9 100644 return this.D; } diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index ef81c1d3a9..db446c25c4 100644 +index ef81c1d3a96..db446c25c41 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -0,0 +0,0 @@ public class CraftBlock implements Block { diff --git a/Spigot-Server-Patches/Implement-Mob-Goal-API.patch b/Spigot-Server-Patches/Implement-Mob-Goal-API.patch index b4f6947c38..b7ef36680c 100644 --- a/Spigot-Server-Patches/Implement-Mob-Goal-API.patch +++ b/Spigot-Server-Patches/Implement-Mob-Goal-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement Mob Goal API diff --git a/pom.xml b/pom.xml -index bc8438ae1a..0c0051f7f2 100644 +index bc8438ae1ae..0c0051f7f2a 100644 --- a/pom.xml +++ b/pom.xml @@ -0,0 +0,0 @@ @@ -24,7 +24,7 @@ index bc8438ae1a..0c0051f7f2 100644 diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java new file mode 100644 -index 0000000000..d6ee941078 +index 00000000000..d6ee9410786 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -0,0 +0,0 @@ @@ -359,7 +359,7 @@ index 0000000000..d6ee941078 +} diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java new file mode 100644 -index 0000000000..8e4dc2708d +index 00000000000..8e4dc2708d7 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java @@ -0,0 +0,0 @@ @@ -417,7 +417,7 @@ index 0000000000..8e4dc2708d +} diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java new file mode 100644 -index 0000000000..d9df0236e8 +index 00000000000..d9df0236e82 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java @@ -0,0 +0,0 @@ @@ -659,7 +659,7 @@ index 0000000000..d9df0236e8 +} diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java new file mode 100644 -index 0000000000..263e8c65b9 +index 00000000000..263e8c65b9e --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java @@ -0,0 +0,0 @@ @@ -727,7 +727,7 @@ index 0000000000..263e8c65b9 + } +} diff --git a/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java b/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java -index 9df0006c1a..b3329c6fcd 100644 +index 9df0006c1a2..b3329c6fcd6 100644 --- a/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java +++ b/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java @@ -0,0 +0,0 @@ public final class OptimizedSmallEnumSet> { @@ -740,7 +740,7 @@ index 9df0006c1a..b3329c6fcd 100644 + } } diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java -index 93009d83f0..2dfbecf390 100644 +index 93009d83f07..2dfbecf3905 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoal.java +++ b/src/main/java/net/minecraft/server/PathfinderGoal.java @@ -0,0 +0,0 @@ public abstract class PathfinderGoal { @@ -776,7 +776,7 @@ index 93009d83f0..2dfbecf390 100644 this.goalTypes.clear(); this.goalTypes.addAllUnchecked(enumset); diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -index 84d2abbcb9..a68fc11ec6 100644 +index 84d2abbcb90..a68fc11ec66 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java @@ -0,0 +0,0 @@ public class PathfinderGoalSelector { @@ -815,7 +815,7 @@ index 84d2abbcb9..a68fc11ec6 100644 return this.d.stream().filter(PathfinderGoalWrapped::g); } diff --git a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java -index 1b800c558f..dee4e2beac 100644 +index 1b800c558f0..dee4e2beacb 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java @@ -0,0 +0,0 @@ import javax.annotation.Nullable; @@ -830,7 +830,7 @@ index 1b800c558f..dee4e2beac 100644 public PathfinderGoalWrapped(int i, PathfinderGoal pathfindergoal) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1647c09756..b89f99a66f 100644 +index 1647c09756e..b89f99a66fe 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ public final class CraftServer implements Server { @@ -847,7 +847,7 @@ index 1647c09756..b89f99a66f 100644 } diff --git a/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java b/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java new file mode 100644 -index 0000000000..83d34761d9 +index 00000000000..83d34761d91 --- /dev/null +++ b/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java @@ -0,0 +0,0 @@ diff --git a/Spigot-Server-Patches/Implement-Player-Client-Options-API.patch b/Spigot-Server-Patches/Implement-Player-Client-Options-API.patch index 7f3d557ba9..2988f7adc8 100644 --- a/Spigot-Server-Patches/Implement-Player-Client-Options-API.patch +++ b/Spigot-Server-Patches/Implement-Player-Client-Options-API.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Implement Player Client Options API diff --git a/src/main/java/com/destroystokyo/paper/PaperSkinParts.java b/src/main/java/com/destroystokyo/paper/PaperSkinParts.java new file mode 100644 -index 0000000000..b6f4400df3 +index 00000000000..b6f4400df3d --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/PaperSkinParts.java @@ -0,0 +0,0 @@ @@ -85,7 +85,7 @@ index 0000000000..b6f4400df3 + } +} diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index c4d4334305..7df24be46e 100644 +index c4d43343050..7df24be46e4 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving { @@ -98,7 +98,7 @@ index c4d4334305..7df24be46e 100644 protected static final DataWatcherObject bs = DataWatcher.a(EntityHuman.class, DataWatcherRegistry.p); protected static final DataWatcherObject bt = DataWatcher.a(EntityHuman.class, DataWatcherRegistry.p); diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index f453ccdb02..bf2ba0548d 100644 +index f453ccdb020..bf2ba0548d9 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -0,0 +0,0 @@ package net.minecraft.server; @@ -127,7 +127,7 @@ index f453ccdb02..bf2ba0548d 100644 if (getMainHand() != packetplayinsettings.getMainHand()) { PlayerChangedMainHandEvent event = new PlayerChangedMainHandEvent(getBukkitEntity(), getMainHand() == EnumMainHand.LEFT ? MainHand.LEFT : MainHand.RIGHT); diff --git a/src/main/java/net/minecraft/server/PacketPlayInSettings.java b/src/main/java/net/minecraft/server/PacketPlayInSettings.java -index 8faebf9efe..4da6371381 100644 +index 8faebf9efed..4da63713819 100644 --- a/src/main/java/net/minecraft/server/PacketPlayInSettings.java +++ b/src/main/java/net/minecraft/server/PacketPlayInSettings.java @@ -0,0 +0,0 @@ public class PacketPlayInSettings implements Packet { @@ -154,7 +154,7 @@ index 8faebf9efe..4da6371381 100644 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 6672feaf51..dcbda5b35a 100644 +index 6672feaf519..dcbda5b35ab 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -0,0 +0,0 @@ diff --git a/Spigot-Server-Patches/Implement-PlayerPostRespawnEvent.patch b/Spigot-Server-Patches/Implement-PlayerPostRespawnEvent.patch index 10f759a809..3487276628 100644 --- a/Spigot-Server-Patches/Implement-PlayerPostRespawnEvent.patch +++ b/Spigot-Server-Patches/Implement-PlayerPostRespawnEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement PlayerPostRespawnEvent diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 7745e70d2d..765ebe2ccf 100644 +index faecf793416..b8302de65a7 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { diff --git a/Spigot-Server-Patches/Implement-getters-and-setters-for-EntityItem-owner-a.patch b/Spigot-Server-Patches/Implement-getters-and-setters-for-EntityItem-owner-a.patch index 463c540b3d..ae2be51677 100644 --- a/Spigot-Server-Patches/Implement-getters-and-setters-for-EntityItem-owner-a.patch +++ b/Spigot-Server-Patches/Implement-getters-and-setters-for-EntityItem-owner-a.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Implement getters and setters for EntityItem owner and diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index 3f552b5905..cb756b1ba0 100644 +index 3f552b5905e..cb756b1ba04 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -0,0 +0,0 @@ import org.bukkit.entity.EntityType; diff --git a/Spigot-Server-Patches/Lag-compensate-eating.patch b/Spigot-Server-Patches/Lag-compensate-eating.patch index 05f2022b0b..d2eac71e0e 100644 --- a/Spigot-Server-Patches/Lag-compensate-eating.patch +++ b/Spigot-Server-Patches/Lag-compensate-eating.patch @@ -7,7 +7,7 @@ When the server is lagging, players will wait longer when eating. Change to also use a time check instead if it passes. diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index aada8d3b08..252b3c5929 100644 +index aada8d3b08b..252b3c59294 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { diff --git a/Spigot-Server-Patches/Load-Chunks-for-Login-Asynchronously.patch b/Spigot-Server-Patches/Load-Chunks-for-Login-Asynchronously.patch index e9e1c226b9..57011b9949 100644 --- a/Spigot-Server-Patches/Load-Chunks-for-Login-Asynchronously.patch +++ b/Spigot-Server-Patches/Load-Chunks-for-Login-Asynchronously.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Load Chunks for Login Asynchronously diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 324fd07bce..01330045c0 100644 +index 324fd07bcee..01330045c0f 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -18,7 +18,7 @@ index 324fd07bce..01330045c0 100644 public void setPositionRotation(BlockPosition blockposition, float f, float f1) { diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 45df816980..48bbaec4b6 100644 +index 45df816980c..48bbaec4b64 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -38,7 +38,7 @@ index 45df816980..48bbaec4b6 100644 // CraftBukkit end public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java -index f1222fcb2b..28f48f2252 100644 +index f1222fcb2bd..28f48f22522 100644 --- a/src/main/java/net/minecraft/server/LoginListener.java +++ b/src/main/java/net/minecraft/server/LoginListener.java @@ -0,0 +0,0 @@ public class LoginListener implements PacketLoginInListener { @@ -60,7 +60,7 @@ index f1222fcb2b..28f48f2252 100644 if (entityplayer != null) { this.g = LoginListener.EnumProtocolState.DELAY_ACCEPT; diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 2e81f3a1d9..8800a8fcf9 100644 +index 2e81f3a1d93..8800a8fcf9a 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -90,7 +90,7 @@ index 2e81f3a1d9..8800a8fcf9 100644 this.player.lastX = this.player.locX(); this.player.lastY = this.player.locY(); diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index ec45c30dd3..edf9df8c8a 100644 +index 6a4e4f93eb3..61c7f5f9528 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { diff --git a/Spigot-Server-Patches/Log-other-thread-in-DataPaletteBlock-lock-failure.patch b/Spigot-Server-Patches/Log-other-thread-in-DataPaletteBlock-lock-failure.patch index a9b2795606..6a4b9708ea 100644 --- a/Spigot-Server-Patches/Log-other-thread-in-DataPaletteBlock-lock-failure.patch +++ b/Spigot-Server-Patches/Log-other-thread-in-DataPaletteBlock-lock-failure.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Log other thread in DataPaletteBlock lock failure diff --git a/src/main/java/com/destroystokyo/paper/util/ReentrantLockWithGetOwner.java b/src/main/java/com/destroystokyo/paper/util/ReentrantLockWithGetOwner.java new file mode 100644 -index 0000000000..a3b174618d +index 00000000000..a3b174618d4 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/util/ReentrantLockWithGetOwner.java @@ -0,0 +0,0 @@ @@ -22,7 +22,7 @@ index 0000000000..a3b174618d + } +} diff --git a/src/main/java/net/minecraft/server/DataPaletteBlock.java b/src/main/java/net/minecraft/server/DataPaletteBlock.java -index d5f5a51872..2c1d1b1a55 100644 +index d5f5a51872d..2c1d1b1a556 100644 --- a/src/main/java/net/minecraft/server/DataPaletteBlock.java +++ b/src/main/java/net/minecraft/server/DataPaletteBlock.java @@ -0,0 +0,0 @@ public class DataPaletteBlock implements DataPaletteExpandable { diff --git a/Spigot-Server-Patches/MC-114618-Fix-EntityAreaEffectCloud-from-going-negat.patch b/Spigot-Server-Patches/MC-114618-Fix-EntityAreaEffectCloud-from-going-negat.patch index a77c1bfbc5..aaaaba9b31 100644 --- a/Spigot-Server-Patches/MC-114618-Fix-EntityAreaEffectCloud-from-going-negat.patch +++ b/Spigot-Server-Patches/MC-114618-Fix-EntityAreaEffectCloud-from-going-negat.patch @@ -6,7 +6,7 @@ Subject: [PATCH] MC-114618 - Fix EntityAreaEffectCloud from going negative diff --git a/src/main/java/net/minecraft/server/EntityAreaEffectCloud.java b/src/main/java/net/minecraft/server/EntityAreaEffectCloud.java -index e8f3e55fd3..44289c2301 100644 +index e8f3e55fd3f..44289c23013 100644 --- a/src/main/java/net/minecraft/server/EntityAreaEffectCloud.java +++ b/src/main/java/net/minecraft/server/EntityAreaEffectCloud.java @@ -0,0 +0,0 @@ public class EntityAreaEffectCloud extends Entity { diff --git a/Spigot-Server-Patches/MC-145260-Fix-Whitelist-On-Off-inconsistency.patch b/Spigot-Server-Patches/MC-145260-Fix-Whitelist-On-Off-inconsistency.patch index 9e206e8e3e..5d145c57af 100644 --- a/Spigot-Server-Patches/MC-145260-Fix-Whitelist-On-Off-inconsistency.patch +++ b/Spigot-Server-Patches/MC-145260-Fix-Whitelist-On-Off-inconsistency.patch @@ -11,7 +11,7 @@ everything to the Whitelist object. https://github.com/PaperMC/Paper/issues/1880 diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java -index 8570e38f42..c97be42dd7 100644 +index 8570e38f42e..c97be42dd7b 100644 --- a/src/main/java/net/minecraft/server/JsonList.java +++ b/src/main/java/net/minecraft/server/JsonList.java @@ -0,0 +0,0 @@ public class JsonList> { @@ -23,7 +23,7 @@ index 8570e38f42..c97be42dd7 100644 this.e = flag; } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index e148940ab3..f71c9f4a88 100644 +index e917d37382d..b30b1f68787 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { diff --git a/Spigot-Server-Patches/Make-the-GUI-graph-fancier.patch b/Spigot-Server-Patches/Make-the-GUI-graph-fancier.patch index 35f54b8b45..003196d592 100644 --- a/Spigot-Server-Patches/Make-the-GUI-graph-fancier.patch +++ b/Spigot-Server-Patches/Make-the-GUI-graph-fancier.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Make the GUI graph fancier diff --git a/src/main/java/com/destroystokyo/paper/gui/GraphColor.java b/src/main/java/com/destroystokyo/paper/gui/GraphColor.java new file mode 100644 -index 0000000000..a4e641fdcc +index 00000000000..a4e641fdccc --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/gui/GraphColor.java @@ -0,0 +0,0 @@ @@ -56,7 +56,7 @@ index 0000000000..a4e641fdcc +} diff --git a/src/main/java/com/destroystokyo/paper/gui/GraphData.java b/src/main/java/com/destroystokyo/paper/gui/GraphData.java new file mode 100644 -index 0000000000..186fc72296 +index 00000000000..186fc722965 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/gui/GraphData.java @@ -0,0 +0,0 @@ @@ -109,7 +109,7 @@ index 0000000000..186fc72296 +} diff --git a/src/main/java/com/destroystokyo/paper/gui/GuiStatsComponent.java b/src/main/java/com/destroystokyo/paper/gui/GuiStatsComponent.java new file mode 100644 -index 0000000000..0f29ad583e +index 00000000000..0f29ad583e7 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/gui/GuiStatsComponent.java @@ -0,0 +0,0 @@ @@ -156,7 +156,7 @@ index 0000000000..0f29ad583e +} diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java new file mode 100644 -index 0000000000..e463a86a6a +index 00000000000..e463a86a6ad --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java @@ -0,0 +0,0 @@ @@ -236,7 +236,7 @@ index 0000000000..e463a86a6a +} diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMGraph.java b/src/main/java/com/destroystokyo/paper/gui/RAMGraph.java new file mode 100644 -index 0000000000..c3e54da4ab +index 00000000000..c3e54da4ab6 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/gui/RAMGraph.java @@ -0,0 +0,0 @@ @@ -385,7 +385,7 @@ index 0000000000..c3e54da4ab + } +} diff --git a/src/main/java/net/minecraft/server/GuiStatsComponent.java b/src/main/java/net/minecraft/server/GuiStatsComponent.java -index c21db8e6b7..7b6e935257 100644 +index c21db8e6b79..7b6e9352578 100644 --- a/src/main/java/net/minecraft/server/GuiStatsComponent.java +++ b/src/main/java/net/minecraft/server/GuiStatsComponent.java @@ -0,0 +0,0 @@ import javax.swing.Timer; @@ -398,7 +398,7 @@ index c21db8e6b7..7b6e935257 100644 }); private final int[] b = new int[256]; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 63db74993c..d1f82eff21 100644 +index 63db74993c1..d1f82eff218 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant +Date: Wed, 6 May 2020 04:53:35 -0400 +Subject: [PATCH] Optimize Network Manager and add advanced packet support + +Adds ability for 1 packet to bundle other packets to follow it +adds ability for a packet to delay sending more packets until a state is ready. + +Removes synchronization from sending packets +Removes processing packet queue off of main thread + - for the few cases where it is allowed, order is not necessary nor + should it even be happening concurrently in first place (handshaking/login/status) + +Ensures packets sent asynchronously are dispatched on main thread + +This helps ensure safety for ProtocolLib as packet listeners +are commonly accessing world state. This will allow you to schedule +a packet to be sent async, but itll be dispatched sync for packet +listeners to process. + +This should solve some deadlock risks + +Part of this commit was authored by: Spottedleaf + +diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java +index b1dededc15c..b529c888249 100644 +--- a/src/main/java/net/minecraft/server/NetworkManager.java ++++ b/src/main/java/net/minecraft/server/NetworkManager.java +@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler> { + public int protocolVersion; + public java.net.InetSocketAddress virtualHost; + private static boolean enableExplicitFlush = Boolean.getBoolean("paper.explicit-flush"); ++ // Optimize network ++ boolean isPending = true; ++ boolean queueImmunity = false; ++ EnumProtocol protocol; + // Paper end + + public NetworkManager(EnumProtocolDirection enumprotocoldirection) { +@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler> { + } + + public void setProtocol(EnumProtocol enumprotocol) { ++ protocol = enumprotocol; // Paper + this.channel.attr(NetworkManager.c).set(enumprotocol); + this.channel.config().setAutoRead(true); + NetworkManager.LOGGER.debug("Enabled auto read"); +@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler> { + NetworkManager.LOGGER.debug("Set listener of {} to {}", this, packetlistener); + this.packetListener = packetlistener; + } ++ // Paper start ++ private static class InnerUtil { // Attempt to hide these methods from ProtocolLib so it doesn't accidently pick them up. ++ private static java.util.List buildExtraPackets(Packet packet) { ++ java.util.List extra = packet.getExtraPackets(); ++ if (extra == null || extra.isEmpty()) { ++ return null; ++ } ++ java.util.List ret = new java.util.ArrayList<>(1 + extra.size()); ++ buildExtraPackets0(extra, ret); ++ return ret; ++ } ++ ++ private static void buildExtraPackets0(java.util.List extraPackets, java.util.List into) { ++ for (Packet extra : extraPackets) { ++ into.add(extra); ++ java.util.List extraExtra = extra.getExtraPackets(); ++ if (extraExtra != null && !extraExtra.isEmpty()) { ++ buildExtraPackets0(extraExtra, into); ++ } ++ } ++ } ++ } ++ // Paper end + + public void sendPacket(Packet packet) { + this.sendPacket(packet, (GenericFutureListener) null); + } + ++ // Paper start ++ private boolean canSendImmediate(Packet packet) { ++ return isPending || protocol == EnumProtocol.HANDSHAKING || protocol == EnumProtocol.STATUS || queueImmunity || ++ packet instanceof PacketPlayOutKeepAlive || ++ packet instanceof PacketPlayOutChat || ++ packet instanceof PacketPlayOutTabComplete; ++ } ++ // Paper end + public void sendPacket(Packet packet, @Nullable GenericFutureListener> genericfuturelistener) { +- if (this.isConnected()) { +- this.o(); +- this.b(packet, genericfuturelistener); +- } else { +- this.packetQueue.add(new NetworkManager.QueuedPacket(packet, genericfuturelistener)); ++ // Paper start - handle oversized packets better ++ boolean connected = this.isConnected(); ++ if (!connected && !preparing) return; // Do nothing ++ if (connected && (canSendImmediate(packet) || ( ++ MCUtil.isMainThread() && packet.isReady() && this.packetQueue.isEmpty() && ++ (packet.getExtraPackets() == null || packet.getExtraPackets().isEmpty()) ++ ))) { ++ this.dispatchPacket(packet, genericfuturelistener); ++ return; + } ++ // write the packets to the queue, then flush - antixray hooks there already ++ java.util.List extraPackets = InnerUtil.buildExtraPackets(packet); ++ boolean hasExtraPackets = extraPackets != null && !extraPackets.isEmpty(); ++ if (!hasExtraPackets) { ++ this.packetQueue.add(new NetworkManager.QueuedPacket(packet, genericfuturelistener)); ++ } else { ++ java.util.List packets = new java.util.ArrayList<>(1 + extraPackets.size()); ++ packets.add(new NetworkManager.QueuedPacket(packet, null)); // delay the future listener until the end of the extra packets + ++ for (int i = 0, len = extraPackets.size(); i < len;) { ++ Packet extra = extraPackets.get(i); ++ boolean end = ++i == len; ++ packets.add(new NetworkManager.QueuedPacket(extra, end ? genericfuturelistener : null)); // append listener to the end ++ } ++ ++ this.packetQueue.addAll(packets); // atomic ++ } ++ this.sendPacketQueue(); ++ // Paper end + } + + private void dispatchPacket(Packet packet, @Nullable GenericFutureListener> genericFutureListener) { this.b(packet, genericFutureListener); } // Paper - OBFHELPER +@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler> { + + } + +- private void sendPacketQueue() { this.o(); } // Paper - OBFHELPER +- private void o() { +- if (this.channel != null && this.channel.isOpen()) { +- Queue queue = this.packetQueue; +- ++ // Paper start - rewrite this to be safer on ++ private boolean sendPacketQueue() { return this.o(); } // OBFHELPER // void -> boolean ++ private boolean o() { // void -> boolean ++ if (!isConnected()) { ++ return true; ++ } ++ if (MCUtil.isMainThread()) { ++ return processQueue(); ++ } else if (isPending) { ++ // Should only happen during login/status stages + synchronized (this.packetQueue) { +- NetworkManager.QueuedPacket networkmanager_queuedpacket; +- +- while ((networkmanager_queuedpacket = (NetworkManager.QueuedPacket) this.packetQueue.poll()) != null) { +- this.b(networkmanager_queuedpacket.a, networkmanager_queuedpacket.b); +- } ++ return this.processQueue(); ++ } ++ } ++ return false; ++ } ++ private boolean processQueue() { ++ if (this.packetQueue.isEmpty()) return true; ++ // If we are on main, we are safe here in that nothing else should be processing queue off main anymore ++ // But if we are not on main due to login/status, the parent is synchronized on packetQueue ++ java.util.Iterator iterator = this.packetQueue.iterator(); ++ while (iterator.hasNext()) { ++ NetworkManager.QueuedPacket queued = iterator.next(); // poll -> peek ++ ++ // Fix NPE (Spigot bug caused by handleDisconnection()) ++ if (queued == null) { ++ return true; ++ } + ++ Packet packet = queued.getPacket(); ++ if (!packet.isReady()) { ++ return false; ++ } else { ++ iterator.remove(); ++ this.dispatchPacket(packet, queued.getGenericFutureListener()); + } + } ++ return true; + } ++ // Paper end + + public void a() { + this.o(); +@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler> { + public void close(IChatBaseComponent ichatbasecomponent) { + // Spigot Start + this.preparing = false; ++ this.packetQueue.clear(); // Paper - just incase its closed before we ever get to the main thread to do this + // Spigot End + if (this.channel.isOpen()) { + this.channel.close(); // We can't wait as this may be called from an event loop. +diff --git a/src/main/java/net/minecraft/server/Packet.java b/src/main/java/net/minecraft/server/Packet.java +index 2d8e6a2f4a0..45142ed9d24 100644 +--- a/src/main/java/net/minecraft/server/Packet.java ++++ b/src/main/java/net/minecraft/server/Packet.java +@@ -0,0 +0,0 @@ public interface Packet { + void a(T t0); + + // Paper start ++ default boolean isReady() { return true; } ++ default java.util.List getExtraPackets() { return null; } + default boolean packetTooLarge(NetworkManager manager) { + return false; + } +diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java +index e148940ab37..e917d37382d 100644 +--- a/src/main/java/net/minecraft/server/PlayerList.java ++++ b/src/main/java/net/minecraft/server/PlayerList.java +@@ -0,0 +0,0 @@ public abstract class PlayerList { + + // CraftBukkit - getType() + // Spigot - view distance ++ networkmanager.queueImmunity = true; // Paper + playerconnection.sendPacket(new PacketPlayOutLogin(entityplayer.getId(), entityplayer.playerInteractManager.getGameMode(), WorldData.c(worlddata.getSeed()), worlddata.isHardcore(), worldserver.worldProvider.getDimensionManager().getType(), this.getMaxPlayers(), worlddata.getType(), worldserver.spigotConfig.viewDistance, flag1, !flag)); + entityplayer.getBukkitEntity().sendSupportedChannels(); // CraftBukkit + playerconnection.sendPacket(new PacketPlayOutCustomPayload(PacketPlayOutCustomPayload.a, (new PacketDataSerializer(Unpooled.buffer())).a(this.getServer().getServerModName()))); +@@ -0,0 +0,0 @@ public abstract class PlayerList { + playerconnection.sendPacket(new PacketPlayOutRecipeUpdate(this.server.getCraftingManager().b())); + playerconnection.sendPacket(new PacketPlayOutTags(this.server.getTagRegistry())); + playerconnection.sendPacket(new PacketPlayOutEntityStatus(entityplayer, (byte) (worldserver.getGameRules().getBoolean(GameRules.REDUCED_DEBUG_INFO) ? 22 : 23))); // Paper - fix this rule not being initialized on the client ++ networkmanager.queueImmunity = false; // Paper + this.d(entityplayer); + entityplayer.getStatisticManager().c(); + entityplayer.B().a(entityplayer); +diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java +index 37a22ba6f7a..06cd29bb9a5 100644 +--- a/src/main/java/net/minecraft/server/ServerConnection.java ++++ b/src/main/java/net/minecraft/server/ServerConnection.java +@@ -0,0 +0,0 @@ public class ServerConnection { + NetworkManager manager = null; + while ((manager = pending.poll()) != null) { + connectedChannels.add(manager); ++ manager.isPending = false; + } + } + // Paper end +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Optimize-Pathfinding.patch b/Spigot-Server-Patches/Optimize-Pathfinding.patch index db082f9ace..43e7adbcd3 100644 --- a/Spigot-Server-Patches/Optimize-Pathfinding.patch +++ b/Spigot-Server-Patches/Optimize-Pathfinding.patch @@ -7,7 +7,7 @@ Prevents pathfinding from spamming failures for things such as arrow attacks. diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java -index f06764973f..dc32107ec3 100644 +index f06764973fe..dc32107ec32 100644 --- a/src/main/java/net/minecraft/server/NavigationAbstract.java +++ b/src/main/java/net/minecraft/server/NavigationAbstract.java @@ -0,0 +0,0 @@ public abstract class NavigationAbstract { diff --git a/Spigot-Server-Patches/Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch b/Spigot-Server-Patches/Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch index 353c4f4ba7..d74e3e5150 100644 --- a/Spigot-Server-Patches/Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch +++ b/Spigot-Server-Patches/Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch @@ -13,7 +13,7 @@ This should result in siginificant memory use reduction and improved GC behavior diff --git a/src/main/java/com/destroystokyo/paper/util/map/Long2ObjectLinkedOpenHashMapFastCopy.java b/src/main/java/com/destroystokyo/paper/util/map/Long2ObjectLinkedOpenHashMapFastCopy.java new file mode 100644 -index 0000000000..e0ad725b2e +index 00000000000..e0ad725b2e6 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/util/map/Long2ObjectLinkedOpenHashMapFastCopy.java @@ -0,0 +0,0 @@ @@ -50,7 +50,7 @@ index 0000000000..e0ad725b2e + } +} diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index ca1b5b3b09..c457e3b772 100644 +index ca1b5b3b094..c457e3b772e 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ public class ChunkProviderServer extends IChunkProvider { @@ -63,7 +63,7 @@ index ca1b5b3b09..c457e3b772 100644 if (optional.isPresent()) { diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java -index d9941b38ca..71ab65e00f 100644 +index d9941b38ca0..71ab65e00fe 100644 --- a/src/main/java/net/minecraft/server/MCUtil.java +++ b/src/main/java/net/minecraft/server/MCUtil.java @@ -0,0 +0,0 @@ public final class MCUtil { @@ -76,7 +76,7 @@ index d9941b38ca..71ab65e00f 100644 List allChunks = new ArrayList<>(visibleChunks.values()); List players = world.players; diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index e22ef19534..db5a35598d 100644 +index 4beae504c87..00f26ae23da 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -213,7 +213,7 @@ index e22ef19534..db5a35598d 100644 while (objectbidirectionaliterator.hasNext()) { Entry entry = (Entry) objectbidirectionaliterator.next(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 07ebd78acc..b70c0fd977 100644 +index 07ebd78acc7..b70c0fd977c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -0,0 +0,0 @@ import net.minecraft.server.GameRules; diff --git a/Spigot-Server-Patches/Optimize-Voxel-Shape-Merging.patch b/Spigot-Server-Patches/Optimize-Voxel-Shape-Merging.patch index 90403cea33..294c05ed3a 100644 --- a/Spigot-Server-Patches/Optimize-Voxel-Shape-Merging.patch +++ b/Spigot-Server-Patches/Optimize-Voxel-Shape-Merging.patch @@ -30,7 +30,7 @@ Additionally, this lets us avoid even allocating new objects for this too, furth reducing memory usage. diff --git a/src/main/java/net/minecraft/server/VoxelShapeMergerList.java b/src/main/java/net/minecraft/server/VoxelShapeMergerList.java -index 71d2ae2a9c..232b002377 100644 +index 71d2ae2a9c5..232b0023773 100644 --- a/src/main/java/net/minecraft/server/VoxelShapeMergerList.java +++ b/src/main/java/net/minecraft/server/VoxelShapeMergerList.java @@ -0,0 +0,0 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; @@ -75,7 +75,7 @@ index 71d2ae2a9c..232b002377 100644 this.b = new IntArrayList(i1); this.c = new IntArrayList(i1); diff --git a/src/main/java/net/minecraft/server/VoxelShapes.java b/src/main/java/net/minecraft/server/VoxelShapes.java -index 08c83c62df..bb3a1a97df 100644 +index 08c83c62dfe..bb3a1a97df9 100644 --- a/src/main/java/net/minecraft/server/VoxelShapes.java +++ b/src/main/java/net/minecraft/server/VoxelShapes.java @@ -0,0 +0,0 @@ public final class VoxelShapes { diff --git a/Spigot-Server-Patches/Optimize-call-to-getFluid-for-explosions.patch b/Spigot-Server-Patches/Optimize-call-to-getFluid-for-explosions.patch index 4300f61585..c815fb67e9 100644 --- a/Spigot-Server-Patches/Optimize-call-to-getFluid-for-explosions.patch +++ b/Spigot-Server-Patches/Optimize-call-to-getFluid-for-explosions.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Optimize call to getFluid for explosions diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java -index d99d2defe9..a353f3d5fa 100644 +index d99d2defe99..a353f3d5fa5 100644 --- a/src/main/java/net/minecraft/server/Explosion.java +++ b/src/main/java/net/minecraft/server/Explosion.java @@ -0,0 +0,0 @@ public class Explosion { diff --git a/Spigot-Server-Patches/Optimize-entity-list-iteration-requiring-entities-be.patch b/Spigot-Server-Patches/Optimize-entity-list-iteration-requiring-entities-be.patch index f72a43f2a3..af67205b2e 100644 --- a/Spigot-Server-Patches/Optimize-entity-list-iteration-requiring-entities-be.patch +++ b/Spigot-Server-Patches/Optimize-entity-list-iteration-requiring-entities-be.patch @@ -7,7 +7,7 @@ Subject: [PATCH] Optimize entity list iteration requiring entities be in We retain a list of loaded entities specifically for this usage diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 00dd21205d..53d3acccd3 100644 +index 750fb07756f..69bfece7d43 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess { @@ -27,7 +27,7 @@ index 00dd21205d..53d3acccd3 100644 // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index b3785775ec..d9b3aa285a 100644 +index b3785775ecd..d9b3aa285a7 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ public class WorldServer extends World { @@ -104,7 +104,7 @@ index b3785775ec..d9b3aa285a 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index ac257d50de..995f706678 100644 +index ac257d50dea..995f706678f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -0,0 +0,0 @@ public class CraftWorld implements World { @@ -184,7 +184,7 @@ index ac257d50de..995f706678 100644 } break; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index ff60568ce4..f377112161 100644 +index ff60568ce43..f3771121617 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -0,0 +0,0 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/Spigot-Server-Patches/Optimize-isOutsideRange-to-use-distance-maps.patch b/Spigot-Server-Patches/Optimize-isOutsideRange-to-use-distance-maps.patch index eaa19e8f28..22ac57d4f7 100644 --- a/Spigot-Server-Patches/Optimize-isOutsideRange-to-use-distance-maps.patch +++ b/Spigot-Server-Patches/Optimize-isOutsideRange-to-use-distance-maps.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize isOutsideRange to use distance maps Use a distance map to find the players in range quickly diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index 279c7a85fb..7cd4e29123 100644 +index 279c7a85fb5..7cd4e291235 100644 --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java +++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java @@ -0,0 +0,0 @@ public abstract class ChunkMapDistance { @@ -77,7 +77,7 @@ index 279c7a85fb..7cd4e29123 100644 public String c() { diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 78a8a3cc68..e2abda1bc3 100644 +index 78a8a3cc68f..e2abda1bc37 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ public class ChunkProviderServer extends IChunkProvider { @@ -148,7 +148,7 @@ index 78a8a3cc68..e2abda1bc3 100644 this.world.timings.mobSpawn.startTiming(); // Spigot EnumCreatureType[] aenumcreaturetype1 = aenumcreaturetype; diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 48bbaec4b6..6e8179b465 100644 +index 48bbaec4b64..6e8179b4651 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -161,7 +161,7 @@ index 48bbaec4b6..6e8179b465 100644 super((World) worldserver, gameprofile); playerinteractmanager.player = this; diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java -index 568fbbd5f2..8742d13499 100644 +index 4b341c81fc9..bae9371a1e2 100644 --- a/src/main/java/net/minecraft/server/PlayerChunk.java +++ b/src/main/java/net/minecraft/server/PlayerChunk.java @@ -0,0 +0,0 @@ public class PlayerChunk { @@ -192,7 +192,7 @@ index 568fbbd5f2..8742d13499 100644 // Paper start diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index a780cf5b45..099e612171 100644 +index d460bc62b8d..4317d9b98e4 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { diff --git a/Spigot-Server-Patches/Per-Player-View-Distance-API-placeholders.patch b/Spigot-Server-Patches/Per-Player-View-Distance-API-placeholders.patch index 57f074f5c7..89383b265e 100644 --- a/Spigot-Server-Patches/Per-Player-View-Distance-API-placeholders.patch +++ b/Spigot-Server-Patches/Per-Player-View-Distance-API-placeholders.patch @@ -7,7 +7,7 @@ I hope to look at this more in-depth soon. It appears doable. However this should not block the update. diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java -index 6a4ccaeb0f..5bf99e0028 100644 +index 6a4ccaeb0fe..5bf99e0028b 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -0,0 +0,0 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { @@ -23,7 +23,7 @@ index 6a4ccaeb0f..5bf99e0028 100644 double deltaX = this.locX() - player.locX(); double deltaZ = this.locZ() - player.locZ(); diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java -index 2e95069c19..2f466af4d5 100644 +index 2e95069c190..2f466af4d56 100644 --- a/src/main/java/net/minecraft/server/EntityWither.java +++ b/src/main/java/net/minecraft/server/EntityWither.java @@ -0,0 +0,0 @@ public class EntityWither extends EntityMonster implements IRangedEntity { @@ -39,7 +39,7 @@ index 2e95069c19..2f466af4d5 100644 double deltaX = this.locX() - player.locX(); double deltaZ = this.locZ() - player.locZ(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 6e3bcfe2cd..6672feaf51 100644 +index 6e3bcfe2cd7..6672feaf519 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/Spigot-Server-Patches/Performance-improvement-for-Chunk.getEntities.patch b/Spigot-Server-Patches/Performance-improvement-for-Chunk.getEntities.patch index 758bffa9d1..6d554ae621 100644 --- a/Spigot-Server-Patches/Performance-improvement-for-Chunk.getEntities.patch +++ b/Spigot-Server-Patches/Performance-improvement-for-Chunk.getEntities.patch @@ -10,7 +10,7 @@ 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 a53bb7295c..3de9b1c594 100644 +index 47f1b970b9b..39ef95cbbb1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java @@ -0,0 +0,0 @@ public class CraftChunk implements Chunk { diff --git a/Spigot-Server-Patches/PlayerDeathEvent-getItemsToKeep.patch b/Spigot-Server-Patches/PlayerDeathEvent-getItemsToKeep.patch index b1f716bdc6..f9f9893b16 100644 --- a/Spigot-Server-Patches/PlayerDeathEvent-getItemsToKeep.patch +++ b/Spigot-Server-Patches/PlayerDeathEvent-getItemsToKeep.patch @@ -8,7 +8,7 @@ Exposes a mutable array on items a player should keep on death Example Usage: https://gist.github.com/aikar/5bb202de6057a051a950ce1f29feb0b4 diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 17c9c90359..f375c9507c 100644 +index 17c9c90359f..f375c9507c0 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/Spigot-Server-Patches/PlayerDeathEvent-shouldDropExperience.patch b/Spigot-Server-Patches/PlayerDeathEvent-shouldDropExperience.patch index 15dc7a752b..0f49ca0153 100644 --- a/Spigot-Server-Patches/PlayerDeathEvent-shouldDropExperience.patch +++ b/Spigot-Server-Patches/PlayerDeathEvent-shouldDropExperience.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerDeathEvent#shouldDropExperience diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index b9d1747ab2..cf837bdb3b 100644 +index b9d1747ab2a..cf837bdb3b2 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/Spigot-Server-Patches/PlayerLaunchProjectileEvent.patch b/Spigot-Server-Patches/PlayerLaunchProjectileEvent.patch index 4492d38537..fda22396b7 100644 --- a/Spigot-Server-Patches/PlayerLaunchProjectileEvent.patch +++ b/Spigot-Server-Patches/PlayerLaunchProjectileEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerLaunchProjectileEvent diff --git a/src/main/java/net/minecraft/server/InteractionResultWrapper.java b/src/main/java/net/minecraft/server/InteractionResultWrapper.java -index 5cab47a282..886babdcda 100644 +index 5cab47a2821..886babdcda0 100644 --- a/src/main/java/net/minecraft/server/InteractionResultWrapper.java +++ b/src/main/java/net/minecraft/server/InteractionResultWrapper.java @@ -0,0 +0,0 @@ public class InteractionResultWrapper { @@ -17,7 +17,7 @@ index 5cab47a282..886babdcda 100644 return this.a; } diff --git a/src/main/java/net/minecraft/server/ItemEgg.java b/src/main/java/net/minecraft/server/ItemEgg.java -index 6fccd70a03..16f1b734e0 100644 +index 6fccd70a034..16f1b734e01 100644 --- a/src/main/java/net/minecraft/server/ItemEgg.java +++ b/src/main/java/net/minecraft/server/ItemEgg.java @@ -0,0 +0,0 @@ public class ItemEgg extends Item { @@ -61,7 +61,7 @@ index 6fccd70a03..16f1b734e0 100644 return InteractionResultWrapper.success(itemstack); } diff --git a/src/main/java/net/minecraft/server/ItemEnderPearl.java b/src/main/java/net/minecraft/server/ItemEnderPearl.java -index cab869e8e9..b57e9f7e72 100644 +index cab869e8e9b..b57e9f7e72b 100644 --- a/src/main/java/net/minecraft/server/ItemEnderPearl.java +++ b/src/main/java/net/minecraft/server/ItemEnderPearl.java @@ -0,0 +0,0 @@ public class ItemEnderPearl extends Item { @@ -113,7 +113,7 @@ index cab869e8e9..b57e9f7e72 100644 return InteractionResultWrapper.success(itemstack); } diff --git a/src/main/java/net/minecraft/server/ItemExpBottle.java b/src/main/java/net/minecraft/server/ItemExpBottle.java -index 071688b3ab..1d575af526 100644 +index 071688b3ab4..1d575af5269 100644 --- a/src/main/java/net/minecraft/server/ItemExpBottle.java +++ b/src/main/java/net/minecraft/server/ItemExpBottle.java @@ -0,0 +0,0 @@ public class ItemExpBottle extends Item { @@ -158,7 +158,7 @@ index 071688b3ab..1d575af526 100644 return InteractionResultWrapper.success(itemstack); } diff --git a/src/main/java/net/minecraft/server/ItemLingeringPotion.java b/src/main/java/net/minecraft/server/ItemLingeringPotion.java -index c19b678cfb..7672e31fc0 100644 +index c19b678cfb2..7672e31fc0c 100644 --- a/src/main/java/net/minecraft/server/ItemLingeringPotion.java +++ b/src/main/java/net/minecraft/server/ItemLingeringPotion.java @@ -0,0 +0,0 @@ public class ItemLingeringPotion extends ItemPotionThrowable { @@ -176,7 +176,7 @@ index c19b678cfb..7672e31fc0 100644 } } diff --git a/src/main/java/net/minecraft/server/ItemPotionThrowable.java b/src/main/java/net/minecraft/server/ItemPotionThrowable.java -index 5d1f118c51..d1beab1ab7 100644 +index 5d1f118c513..d1beab1ab72 100644 --- a/src/main/java/net/minecraft/server/ItemPotionThrowable.java +++ b/src/main/java/net/minecraft/server/ItemPotionThrowable.java @@ -0,0 +0,0 @@ public class ItemPotionThrowable extends ItemPotion { @@ -213,7 +213,7 @@ index 5d1f118c51..d1beab1ab7 100644 return InteractionResultWrapper.success(itemstack); } diff --git a/src/main/java/net/minecraft/server/ItemSnowball.java b/src/main/java/net/minecraft/server/ItemSnowball.java -index 56ec508959..e6044e654b 100644 +index 56ec5089596..e6044e654b7 100644 --- a/src/main/java/net/minecraft/server/ItemSnowball.java +++ b/src/main/java/net/minecraft/server/ItemSnowball.java @@ -0,0 +0,0 @@ public class ItemSnowball extends Item { @@ -251,7 +251,7 @@ index 56ec508959..e6044e654b 100644 /* if (!entityhuman.abilities.canInstantlyBuild) { diff --git a/src/main/java/net/minecraft/server/ItemSplashPotion.java b/src/main/java/net/minecraft/server/ItemSplashPotion.java -index 18bd846cee..e71e933fff 100644 +index 18bd846ceec..e71e933fffb 100644 --- a/src/main/java/net/minecraft/server/ItemSplashPotion.java +++ b/src/main/java/net/minecraft/server/ItemSplashPotion.java @@ -0,0 +0,0 @@ public class ItemSplashPotion extends ItemPotionThrowable { diff --git a/Spigot-Server-Patches/Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch b/Spigot-Server-Patches/Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch index 81c40672a6..7d3e127b3a 100644 --- a/Spigot-Server-Patches/Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch +++ b/Spigot-Server-Patches/Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Port 20w15a Villager AI optimizations - DROP 1.16 diff --git a/src/main/java/net/minecraft/server/BehaviorController.java b/src/main/java/net/minecraft/server/BehaviorController.java -index 7c6e687707..396b64ea0f 100644 +index 7c6e687707c..396b64ea0fc 100644 --- a/src/main/java/net/minecraft/server/BehaviorController.java +++ b/src/main/java/net/minecraft/server/BehaviorController.java @@ -0,0 +0,0 @@ public class BehaviorController implements MinecraftSeri diff --git a/Spigot-Server-Patches/Prevent-Double-PlayerChunkMap-adds-crashing-server.patch b/Spigot-Server-Patches/Prevent-Double-PlayerChunkMap-adds-crashing-server.patch index 3da3146acf..7a4f974896 100644 --- a/Spigot-Server-Patches/Prevent-Double-PlayerChunkMap-adds-crashing-server.patch +++ b/Spigot-Server-Patches/Prevent-Double-PlayerChunkMap-adds-crashing-server.patch @@ -7,7 +7,7 @@ Suspected case would be around the technique used in .stopRiding Stack will identify any causer of this and warn instead of crashing. diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 73bfebb837..e22ef19534 100644 +index 6eb05591317..4beae504c87 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -26,7 +26,7 @@ index 73bfebb837..e22ef19534 100644 if (!(entity instanceof EntityLightning)) { EntityTypes entitytypes = entity.getEntityType(); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 9fbe8fa1b2..2a7a47c670 100644 +index 9fbe8fa1b2b..2a7a47c6707 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/Prevent-bees-loading-chunks-checking-hive-position.patch b/Spigot-Server-Patches/Prevent-bees-loading-chunks-checking-hive-position.patch index 6650b1cfe5..876d8cfb8c 100644 --- a/Spigot-Server-Patches/Prevent-bees-loading-chunks-checking-hive-position.patch +++ b/Spigot-Server-Patches/Prevent-bees-loading-chunks-checking-hive-position.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent bees loading chunks checking hive position diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java -index b39599654e..73e0162578 100644 +index b39599654e3..73e01625784 100644 --- a/src/main/java/net/minecraft/server/EntityBee.java +++ b/src/main/java/net/minecraft/server/EntityBee.java @@ -0,0 +0,0 @@ public class EntityBee extends EntityAnimal implements EntityBird { diff --git a/Spigot-Server-Patches/Prevent-consuming-the-wrong-itemstack.patch b/Spigot-Server-Patches/Prevent-consuming-the-wrong-itemstack.patch index d6b6942f48..c3b35d6e42 100644 --- a/Spigot-Server-Patches/Prevent-consuming-the-wrong-itemstack.patch +++ b/Spigot-Server-Patches/Prevent-consuming-the-wrong-itemstack.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent consuming the wrong itemstack diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index aecd5011cb..24594aa0e9 100644 +index aecd5011cbe..24594aa0e9b 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { diff --git a/Spigot-Server-Patches/Prevent-opening-inventories-when-frozen.patch b/Spigot-Server-Patches/Prevent-opening-inventories-when-frozen.patch index 4e37ab2758..ae88a47d0e 100644 --- a/Spigot-Server-Patches/Prevent-opening-inventories-when-frozen.patch +++ b/Spigot-Server-Patches/Prevent-opening-inventories-when-frozen.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent opening inventories when frozen diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index d51af68a92..f453ccdb02 100644 +index d51af68a920..f453ccdb020 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -36,7 +36,7 @@ index d51af68a92..f453ccdb02 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index a6d75c0e07..a5e9fc90ff 100644 +index a6d75c0e07a..a5e9fc90ffa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java @@ -0,0 +0,0 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { diff --git a/Spigot-Server-Patches/Prevent-sync-chunk-loads-when-villagers-try-to-find-.patch b/Spigot-Server-Patches/Prevent-sync-chunk-loads-when-villagers-try-to-find-.patch index e69d7c09bc..2edb94d0f3 100644 --- a/Spigot-Server-Patches/Prevent-sync-chunk-loads-when-villagers-try-to-find-.patch +++ b/Spigot-Server-Patches/Prevent-sync-chunk-loads-when-villagers-try-to-find-.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent sync chunk loads when villagers try to find beds diff --git a/src/main/java/net/minecraft/server/BehaviorSleep.java b/src/main/java/net/minecraft/server/BehaviorSleep.java -index fa575dde19..dfe0f66500 100644 +index fa575dde192..dfe0f66500a 100644 --- a/src/main/java/net/minecraft/server/BehaviorSleep.java +++ b/src/main/java/net/minecraft/server/BehaviorSleep.java @@ -0,0 +0,0 @@ public class BehaviorSleep extends Behavior { diff --git a/Spigot-Server-Patches/Prevent-teleporting-dead-entities.patch b/Spigot-Server-Patches/Prevent-teleporting-dead-entities.patch index 1a754b0d70..62225b6252 100644 --- a/Spigot-Server-Patches/Prevent-teleporting-dead-entities.patch +++ b/Spigot-Server-Patches/Prevent-teleporting-dead-entities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent teleporting dead entities diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 71d045ee00..2e81f3a1d9 100644 +index 71d045ee00d..2e81f3a1d93 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/Spigot-Server-Patches/Reduce-Either-Optional-allocation.patch b/Spigot-Server-Patches/Reduce-Either-Optional-allocation.patch index 9ab2b6c6c9..5072bdf5ec 100644 --- a/Spigot-Server-Patches/Reduce-Either-Optional-allocation.patch +++ b/Spigot-Server-Patches/Reduce-Either-Optional-allocation.patch @@ -7,7 +7,7 @@ In order to get chunk values, we shouldn't need to create an optional each time. diff --git a/src/main/java/com/mojang/datafixers/util/Either.java b/src/main/java/com/mojang/datafixers/util/Either.java -index a90adac7bd..3f65fe7102 100644 +index a90adac7bd7..3f65fe71024 100644 --- a/src/main/java/com/mojang/datafixers/util/Either.java +++ b/src/main/java/com/mojang/datafixers/util/Either.java @@ -0,0 +0,0 @@ public abstract class Either implements App, L> { diff --git a/Spigot-Server-Patches/Reduce-memory-footprint-of-NBTTagCompound.patch b/Spigot-Server-Patches/Reduce-memory-footprint-of-NBTTagCompound.patch index f64c62050a..69b435ca31 100644 --- a/Spigot-Server-Patches/Reduce-memory-footprint-of-NBTTagCompound.patch +++ b/Spigot-Server-Patches/Reduce-memory-footprint-of-NBTTagCompound.patch @@ -8,7 +8,7 @@ is important because we clone chunk data after reading it for safety. So, reduce the impact of the clone on GC. diff --git a/src/main/java/net/minecraft/server/NBTTagCompound.java b/src/main/java/net/minecraft/server/NBTTagCompound.java -index 98deaba12c..02a2ed1baa 100644 +index 98deaba12ce..02a2ed1baa3 100644 --- a/src/main/java/net/minecraft/server/NBTTagCompound.java +++ b/src/main/java/net/minecraft/server/NBTTagCompound.java @@ -0,0 +0,0 @@ public class NBTTagCompound implements NBTBase { diff --git a/Spigot-Server-Patches/Reduce-sync-loads.patch b/Spigot-Server-Patches/Reduce-sync-loads.patch index d81df32969..18bae65ad0 100644 --- a/Spigot-Server-Patches/Reduce-sync-loads.patch +++ b/Spigot-Server-Patches/Reduce-sync-loads.patch @@ -11,7 +11,7 @@ it must be enabled by setting the startup flag -Dpaper.debug-sync-loads=true To get a debug log for sync loads, the command is /paper syncloadinfo diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java -index af81098784..ddb60e9a48 100644 +index af810987846..ddb60e9a48e 100644 --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java @@ -0,0 +0,0 @@ @@ -108,7 +108,7 @@ index af81098784..ddb60e9a48 100644 if (args.length < 2 || args[1].equals("*")) { diff --git a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java new file mode 100644 -index 0000000000..59aec10329 +index 00000000000..59aec103295 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java @@ -0,0 +0,0 @@ @@ -285,7 +285,7 @@ index 0000000000..59aec10329 + } +} diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 259af7095c..ea1117dc86 100644 +index 259af7095c4..ea1117dc86e 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ public class ChunkProviderServer extends IChunkProvider { @@ -297,7 +297,7 @@ index 259af7095c..ea1117dc86 100644 this.serverThreadQueue.awaitTasks(completablefuture::isDone); com.destroystokyo.paper.io.chunk.ChunkTaskManager.popChunkWait(); // Paper - async chunk debug diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 311685180f..568e04faa3 100644 +index 311685180fe..568e04faa31 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -328,7 +328,7 @@ index 311685180f..568e04faa3 100644 if (chunk != null) { chunk.a(oclass, axisalignedbb, list, predicate); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 3db0ad0a46..5f2c425129 100644 +index c0476f69e4a..2fa1b86adf8 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/Remote-Connections-shouldn-t-hold-up-shutdown.patch b/Spigot-Server-Patches/Remote-Connections-shouldn-t-hold-up-shutdown.patch index d6d21d91df..faf29d3ce4 100644 --- a/Spigot-Server-Patches/Remote-Connections-shouldn-t-hold-up-shutdown.patch +++ b/Spigot-Server-Patches/Remote-Connections-shouldn-t-hold-up-shutdown.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Remote Connections shouldn't hold up shutdown Bugs in the connection logic appears to leave stale connections even, preventing shutdown diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 349a0ea213..1ef7890da5 100644 +index 349a0ea213f..1ef7890da59 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer diff --git a/Spigot-Server-Patches/Remove-streams-from-MinecraftKey.patch b/Spigot-Server-Patches/Remove-streams-from-MinecraftKey.patch index e8db3cb9a1..95d70f858f 100644 --- a/Spigot-Server-Patches/Remove-streams-from-MinecraftKey.patch +++ b/Spigot-Server-Patches/Remove-streams-from-MinecraftKey.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Remove streams from MinecraftKey They produce a lot of garbage. diff --git a/src/main/java/net/minecraft/server/MinecraftKey.java b/src/main/java/net/minecraft/server/MinecraftKey.java -index 2b271d3e50..b1beebf0ed 100644 +index 2b271d3e509..b1beebf0ed5 100644 --- a/src/main/java/net/minecraft/server/MinecraftKey.java +++ b/src/main/java/net/minecraft/server/MinecraftKey.java @@ -0,0 +0,0 @@ public class MinecraftKey implements Comparable { diff --git a/Spigot-Server-Patches/Remove-streams-from-Mob-AI-System.patch b/Spigot-Server-Patches/Remove-streams-from-Mob-AI-System.patch index 9a05497cbb..84ed4474b5 100644 --- a/Spigot-Server-Patches/Remove-streams-from-Mob-AI-System.patch +++ b/Spigot-Server-Patches/Remove-streams-from-Mob-AI-System.patch @@ -10,7 +10,7 @@ Also optimise the stream.anyMatch statement to move to a bitset where we can replace the call with a single bitwise operation. diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java -index bdb90a3466..93009d83f0 100644 +index bdb90a34663..93009d83f07 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoal.java +++ b/src/main/java/net/minecraft/server/PathfinderGoal.java @@ -0,0 +0,0 @@ @@ -53,7 +53,7 @@ index bdb90a3466..93009d83f0 100644 public static enum Type { diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -index 935136771e..84d2abbcb9 100644 +index 935136771e7..84d2abbcb90 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java @@ -0,0 +0,0 @@ @@ -232,7 +232,7 @@ index 935136771e..84d2abbcb9 100644 public void a(PathfinderGoal.Type pathfindergoal_type, boolean flag) { diff --git a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java -index 29657fed75..1b800c558f 100644 +index 29657fed751..1b800c558f0 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java @@ -0,0 +0,0 @@ public class PathfinderGoalWrapped extends PathfinderGoal { diff --git a/Spigot-Server-Patches/Remove-streams-from-PairedQueue.patch b/Spigot-Server-Patches/Remove-streams-from-PairedQueue.patch index 4ca6c01720..9cb6f896d8 100644 --- a/Spigot-Server-Patches/Remove-streams-from-PairedQueue.patch +++ b/Spigot-Server-Patches/Remove-streams-from-PairedQueue.patch @@ -7,7 +7,7 @@ We shouldn't be doing stream calls just to see if the queue is empty. This creates loads of garbage thanks to how often it's called. diff --git a/src/main/java/net/minecraft/server/PairedQueue.java b/src/main/java/net/minecraft/server/PairedQueue.java -index 85bb22e4b7..2369afb4f3 100644 +index 85bb22e4b73..2369afb4f37 100644 --- a/src/main/java/net/minecraft/server/PairedQueue.java +++ b/src/main/java/net/minecraft/server/PairedQueue.java @@ -0,0 +0,0 @@ public interface PairedQueue { diff --git a/Spigot-Server-Patches/Restrict-vanilla-teleport-command-to-valid-locations.patch b/Spigot-Server-Patches/Restrict-vanilla-teleport-command-to-valid-locations.patch index 43590a883d..dcca1d737c 100644 --- a/Spigot-Server-Patches/Restrict-vanilla-teleport-command-to-valid-locations.patch +++ b/Spigot-Server-Patches/Restrict-vanilla-teleport-command-to-valid-locations.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Restrict vanilla teleport command to valid locations Fixes GH-3165 diff --git a/src/main/java/net/minecraft/server/CommandTeleport.java b/src/main/java/net/minecraft/server/CommandTeleport.java -index 3060b4f68b..79016b5870 100644 +index 3060b4f68b1..79016b58707 100644 --- a/src/main/java/net/minecraft/server/CommandTeleport.java +++ b/src/main/java/net/minecraft/server/CommandTeleport.java @@ -0,0 +0,0 @@ public class CommandTeleport { diff --git a/Spigot-Server-Patches/Server-Tick-Events.patch b/Spigot-Server-Patches/Server-Tick-Events.patch index 16a5709083..12b49e60f0 100644 --- a/Spigot-Server-Patches/Server-Tick-Events.patch +++ b/Spigot-Server-Patches/Server-Tick-Events.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Server Tick Events Fires event at start and end of a server tick diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3d9cc2ce67..249eaf56bc 100644 +index 3d9cc2ce67b..249eaf56bc0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant extends CraftBlockState diff --git a/Spigot-Server-Patches/Stop-copy-on-write-operations-for-updating-light-dat.patch b/Spigot-Server-Patches/Stop-copy-on-write-operations-for-updating-light-dat.patch index ba333a2259..26cabee932 100644 --- a/Spigot-Server-Patches/Stop-copy-on-write-operations-for-updating-light-dat.patch +++ b/Spigot-Server-Patches/Stop-copy-on-write-operations-for-updating-light-dat.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Stop copy-on-write operations for updating light data Causes huge memory allocations + gc issues diff --git a/src/main/java/net/minecraft/server/LightEngineStorage.java b/src/main/java/net/minecraft/server/LightEngineStorage.java -index a3f919816e..88277d23c3 100644 +index a3f919816eb..88277d23c36 100644 --- a/src/main/java/net/minecraft/server/LightEngineStorage.java +++ b/src/main/java/net/minecraft/server/LightEngineStorage.java @@ -0,0 +0,0 @@ public abstract class LightEngineStorage> e @@ -63,7 +63,7 @@ index a3f919816e..88277d23c3 100644 } diff --git a/src/main/java/net/minecraft/server/LightEngineStorageArray.java b/src/main/java/net/minecraft/server/LightEngineStorageArray.java -index b978723a66..278aec8846 100644 +index b978723a66d..278aec8846d 100644 --- a/src/main/java/net/minecraft/server/LightEngineStorageArray.java +++ b/src/main/java/net/minecraft/server/LightEngineStorageArray.java @@ -0,0 +0,0 @@ public abstract class LightEngineStorageArray i) { i = j; diff --git a/src/main/java/org/spigotmc/TrackingRange.java b/src/main/java/org/spigotmc/TrackingRange.java -index 6f8e6c1d07..765bdaf9b5 100644 +index 6f8e6c1d079..765bdaf9b52 100644 --- a/src/main/java/org/spigotmc/TrackingRange.java +++ b/src/main/java/org/spigotmc/TrackingRange.java @@ -0,0 +0,0 @@ diff --git a/Spigot-Server-Patches/Update-entity-Metadata-for-all-tracked-players.patch b/Spigot-Server-Patches/Update-entity-Metadata-for-all-tracked-players.patch index ca71a0d455..dc0d541476 100644 --- a/Spigot-Server-Patches/Update-entity-Metadata-for-all-tracked-players.patch +++ b/Spigot-Server-Patches/Update-entity-Metadata-for-all-tracked-players.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Update entity Metadata for all tracked players diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index 3ff7a7b4a8..3a88c9a670 100644 +index 3ff7a7b4a85..3a88c9a6706 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -0,0 +0,0 @@ public class EntityTrackerEntry { @@ -22,7 +22,7 @@ index 3ff7a7b4a8..3a88c9a670 100644 this.f.accept(packet); if (this.tracker instanceof EntityPlayer) { diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 94d3d602cc..f496006f3c 100644 +index 94d3d602ccd..f496006f3cc 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/Spigot-Server-Patches/Use-ChunkStatus-cache-when-saving-protochunks.patch b/Spigot-Server-Patches/Use-ChunkStatus-cache-when-saving-protochunks.patch index f8a9c5be0d..7c4822676f 100644 --- a/Spigot-Server-Patches/Use-ChunkStatus-cache-when-saving-protochunks.patch +++ b/Spigot-Server-Patches/Use-ChunkStatus-cache-when-saving-protochunks.patch @@ -7,7 +7,7 @@ The cache should contain the chunk status when saving. If not it will load it. diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 1d517fd1ae..9171785ad5 100644 +index 1d517fd1aea..9171785ad54 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { diff --git a/Spigot-Server-Patches/Use-distance-map-to-optimise-entity-tracker.patch b/Spigot-Server-Patches/Use-distance-map-to-optimise-entity-tracker.patch index 10947d2784..4cc606a600 100644 --- a/Spigot-Server-Patches/Use-distance-map-to-optimise-entity-tracker.patch +++ b/Spigot-Server-Patches/Use-distance-map-to-optimise-entity-tracker.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use distance map to optimise entity tracker Use the distance map to find candidate players for tracking. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 14ba037c1d..8820e4b650 100644 +index 14ba037c1dc..8820e4b6506 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -32,7 +32,7 @@ index 14ba037c1d..8820e4b650 100644 this.id = Entity.entityCount.incrementAndGet(); this.passengers = Lists.newArrayList(); diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index 3a88c9a670..6d3b34ead9 100644 +index 3a88c9a6706..6d3b34ead9c 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -0,0 +0,0 @@ public class EntityTrackerEntry { @@ -44,7 +44,7 @@ index 3a88c9a670..6d3b34ead9 100644 List list = this.tracker.getPassengers(); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index e08a3bd96c..a780cf5b45 100644 +index bdf835397aa..d460bc62b8d 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -328,7 +328,7 @@ index e08a3bd96c..a780cf5b45 100644 } } diff --git a/src/main/java/org/spigotmc/TrackingRange.java b/src/main/java/org/spigotmc/TrackingRange.java -index 765bdaf9b5..43b5ed8e39 100644 +index 765bdaf9b52..43b5ed8e396 100644 --- a/src/main/java/org/spigotmc/TrackingRange.java +++ b/src/main/java/org/spigotmc/TrackingRange.java @@ -0,0 +0,0 @@ public class TrackingRange diff --git a/Spigot-Server-Patches/Use-getChunkIfLoadedImmediately-in-places.patch b/Spigot-Server-Patches/Use-getChunkIfLoadedImmediately-in-places.patch index 3627fe1d58..ba176d97ae 100644 --- a/Spigot-Server-Patches/Use-getChunkIfLoadedImmediately-in-places.patch +++ b/Spigot-Server-Patches/Use-getChunkIfLoadedImmediately-in-places.patch @@ -8,7 +8,7 @@ ticket level 33 (yes getChunkIfLoaded will actually perform a chunk load in that case). diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 65c171cec3..f00653dfe7 100644 +index 65c171cec3c..f00653dfe7a 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -21,7 +21,7 @@ index 65c171cec3..f00653dfe7 100644 return; } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 0bde171743..311685180f 100644 +index 0bde1717431..311685180fe 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -69,7 +69,7 @@ index 0bde171743..311685180f 100644 if (chunk != null) { chunk.a(oclass, axisalignedbb, list, predicate); diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index f86404f83a..92601c581c 100644 +index f86404f83ae..92601c581cf 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -0,0 +0,0 @@ public class ActivationRange diff --git a/Spigot-Server-Patches/Use-proper-max-length-when-serialising-BungeeCord-te.patch b/Spigot-Server-Patches/Use-proper-max-length-when-serialising-BungeeCord-te.patch index ecdb4f728c..d57d7d9dc4 100644 --- a/Spigot-Server-Patches/Use-proper-max-length-when-serialising-BungeeCord-te.patch +++ b/Spigot-Server-Patches/Use-proper-max-length-when-serialising-BungeeCord-te.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use proper max length when serialising BungeeCord text diff --git a/src/main/java/net/minecraft/server/PacketPlayOutChat.java b/src/main/java/net/minecraft/server/PacketPlayOutChat.java -index 0ab611564e..f7b2095bb7 100644 +index 0ab611564ed..f7b2095bb75 100644 --- a/src/main/java/net/minecraft/server/PacketPlayOutChat.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutChat.java @@ -0,0 +0,0 @@ package net.minecraft.server; diff --git a/Spigot-Server-Patches/Validate-PickItem-Packet-and-kick-for-invalid.patch b/Spigot-Server-Patches/Validate-PickItem-Packet-and-kick-for-invalid.patch index 7b1a6819f2..d8649b5f56 100644 --- a/Spigot-Server-Patches/Validate-PickItem-Packet-and-kick-for-invalid.patch +++ b/Spigot-Server-Patches/Validate-PickItem-Packet-and-kick-for-invalid.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Validate PickItem Packet and kick for invalid diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index a180df220e..02bda8bee4 100644 +index a180df220e4..02bda8bee46 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/Spigot-Server-Patches/Validate-tripwire-hook-placement-before-update.patch b/Spigot-Server-Patches/Validate-tripwire-hook-placement-before-update.patch index 74cd6786de..2013b8d9cb 100644 --- a/Spigot-Server-Patches/Validate-tripwire-hook-placement-before-update.patch +++ b/Spigot-Server-Patches/Validate-tripwire-hook-placement-before-update.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Validate tripwire hook placement before update diff --git a/src/main/java/net/minecraft/server/BlockTripwireHook.java b/src/main/java/net/minecraft/server/BlockTripwireHook.java -index 1b9d889af6..a5e6e94fe0 100644 +index 1b9d889af6b..a5e6e94fe0d 100644 --- a/src/main/java/net/minecraft/server/BlockTripwireHook.java +++ b/src/main/java/net/minecraft/server/BlockTripwireHook.java @@ -0,0 +0,0 @@ public class BlockTripwireHook extends Block { diff --git a/Spigot-Server-Patches/Villager-Restocks-API.patch b/Spigot-Server-Patches/Villager-Restocks-API.patch index 5016d82f04..63554df499 100644 --- a/Spigot-Server-Patches/Villager-Restocks-API.patch +++ b/Spigot-Server-Patches/Villager-Restocks-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Villager Restocks API diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 6e0020ae0b..ef2ee68cd6 100644 +index 6e0020ae0b4..ef2ee68cd67 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -23,7 +23,7 @@ index 6e0020ae0b..ef2ee68cd6 100644 + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index fe726e7884..a8384081c0 100644 +index fe726e7884c..a8384081c03 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java @@ -0,0 +0,0 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { diff --git a/Spigot-Server-Patches/add-hand-to-BlockMultiPlaceEvent.patch b/Spigot-Server-Patches/add-hand-to-BlockMultiPlaceEvent.patch index 88afc02640..b054a200fc 100644 --- a/Spigot-Server-Patches/add-hand-to-BlockMultiPlaceEvent.patch +++ b/Spigot-Server-Patches/add-hand-to-BlockMultiPlaceEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] add hand to BlockMultiPlaceEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index fcf2b190aa..c3f7e46121 100644 +index fcf2b190aaf..c3f7e461210 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -0,0 +0,0 @@ public class CraftEventFactory { diff --git a/Spigot-Server-Patches/don-t-go-below-0-for-pickupDelay-breaks-picking-up-i.patch b/Spigot-Server-Patches/don-t-go-below-0-for-pickupDelay-breaks-picking-up-i.patch index 2d9fa8c976..0435ae2ed6 100644 --- a/Spigot-Server-Patches/don-t-go-below-0-for-pickupDelay-breaks-picking-up-i.patch +++ b/Spigot-Server-Patches/don-t-go-below-0-for-pickupDelay-breaks-picking-up-i.patch @@ -6,7 +6,7 @@ Subject: [PATCH] don't go below 0 for pickupDelay, breaks picking up items vanilla checks for == 0 diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java -index e5c9bac88a..ef2cf6565b 100644 +index e5c9bac88a5..ef2cf6565b5 100644 --- a/src/main/java/net/minecraft/server/EntityItem.java +++ b/src/main/java/net/minecraft/server/EntityItem.java @@ -0,0 +0,0 @@ public class EntityItem extends Entity { diff --git a/Spigot-Server-Patches/improve-CraftWorld-isChunkLoaded.patch b/Spigot-Server-Patches/improve-CraftWorld-isChunkLoaded.patch index dcc9881eeb..ddefaede85 100644 --- a/Spigot-Server-Patches/improve-CraftWorld-isChunkLoaded.patch +++ b/Spigot-Server-Patches/improve-CraftWorld-isChunkLoaded.patch @@ -9,7 +9,7 @@ waiting for the execution queue to get to our request; We can just query the chunk status and get a response now, vs having to wait diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 0d5731429a..5ea7b0b25a 100644 +index 0d5731429ab..5ea7b0b25ae 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -0,0 +0,0 @@ public class CraftWorld implements World { diff --git a/Spigot-Server-Patches/incremental-chunk-saving.patch b/Spigot-Server-Patches/incremental-chunk-saving.patch index 496ee32c71..7cd8a3f3cd 100644 --- a/Spigot-Server-Patches/incremental-chunk-saving.patch +++ b/Spigot-Server-Patches/incremental-chunk-saving.patch @@ -5,7 +5,7 @@ Subject: [PATCH] incremental chunk saving diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 071e5e7f72..4867615215 100644 +index 071e5e7f729..48676152152 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -0,0 +0,0 @@ public class PaperWorldConfig { @@ -29,7 +29,7 @@ index 071e5e7f72..4867615215 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 165cb994e8..af0d6aff4d 100644 +index 165cb994e84..af0d6aff4de 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess { @@ -42,7 +42,7 @@ index 165cb994e8..af0d6aff4d 100644 private long inhabitedTime; @Nullable diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index e6d08756f7..6713b7667a 100644 +index e6d08756f76..6713b7667ae 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ public class ChunkProviderServer extends IChunkProvider { @@ -62,7 +62,7 @@ index e6d08756f7..6713b7667a 100644 public void close() throws IOException { // CraftBukkit start diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0ee1d8e486..7ecf781263 100644 +index 0ee1d8e4869..7ecf7812631 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant 100) { // Spigot diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java -index a640cb3845..3d255b1964 100644 +index a640cb3845a..3d255b19647 100644 --- a/src/main/java/net/minecraft/server/PlayerChunk.java +++ b/src/main/java/net/minecraft/server/PlayerChunk.java @@ -0,0 +0,0 @@ public class PlayerChunk { @@ -175,7 +175,7 @@ index a640cb3845..3d255b1964 100644 public void a(ProtoChunkExtension protochunkextension) { for (int i = 0; i < this.statusFutures.length(); ++i) { diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 34f470779f..4f5b516144 100644 +index 34f470779fa..4f5b5161448 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -261,7 +261,7 @@ index 34f470779f..4f5b516144 100644 return PlayerChunk.getChunkState(playerchunk.getTicketLevel()); }); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index ce506e0e12..ad5e538b24 100644 +index ce506e0e129..ad5e538b249 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/offset-item-frame-ticking.patch b/Spigot-Server-Patches/offset-item-frame-ticking.patch index 3df7282462..3cf5a9ff1b 100644 --- a/Spigot-Server-Patches/offset-item-frame-ticking.patch +++ b/Spigot-Server-Patches/offset-item-frame-ticking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] offset item frame ticking diff --git a/src/main/java/net/minecraft/server/EntityHanging.java b/src/main/java/net/minecraft/server/EntityHanging.java -index 21dbc9b2ab..ef9c4717c3 100644 +index 21dbc9b2ab7..ef9c4717c31 100644 --- a/src/main/java/net/minecraft/server/EntityHanging.java +++ b/src/main/java/net/minecraft/server/EntityHanging.java @@ -0,0 +0,0 @@ public abstract class EntityHanging extends Entity { diff --git a/Spigot-Server-Patches/only-add-passanger-entities-once-from-spawners.patch b/Spigot-Server-Patches/only-add-passanger-entities-once-from-spawners.patch index 1fb77bc128..1ba0ca5241 100644 --- a/Spigot-Server-Patches/only-add-passanger-entities-once-from-spawners.patch +++ b/Spigot-Server-Patches/only-add-passanger-entities-once-from-spawners.patch @@ -5,7 +5,7 @@ Subject: [PATCH] only add passanger entities once from spawners diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java -index 41001b02a6..df494d37be 100644 +index 41001b02a65..df494d37be6 100644 --- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java @@ -0,0 +0,0 @@ public abstract class MobSpawnerAbstract {