From e6c3d60574c04d139a623c81467c8a3e0e2ff2db Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Mon, 5 Aug 2019 09:35:40 -0700 Subject: [PATCH] Updated Upstream (Bukkit/CraftBukkit/Spigot) (#2415) * fixup patch and rebuild * Updated Upstream (Bukkit/CraftBukkit/Spigot) Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: bde198c9 SPIGOT-5246: PlayerQuitEvent.get/setQuitMessage() is incorrectly marked as NotNull 24ad5a79 SPIGOT-5240: Vector.angle not valid for angles very close to each other a143db9a SPIGOT-5231: ShotAtAngle API for Fireworks 10db5c3d SPIGOT-5226: Update Javadoc of PlayerDeathEvent CraftBukkit Changes: 1ec1b05e SPIGOT-5245: Unneeded cast to WorldNBTStorage in CraftWorld#getWorldFolder e5e8eec2 SPIGOT-5241: setAttributeModifiers does not work on untouched stack 803eaa31 SPIGOT-5231: ShotAtAngle API for Fireworks 7881d2ae SPIGOT-5237: Horses, pigs do not drop their inventory 06efc9ec Don't accept connections until all plugins have enabled da62a66a SPIGOT-5225: World handle isn't closed if world is unloaded without saving 104b3831 SPIGOT-5222: Cannot get Long values from Entity memory f0b3fe43 SPIGOT-5220: Server CPU usage reaches 100% when stdin is null Spigot Changes: e5b1b5db SPIGOT-5235: Destroy expired area effect clouds / fireworks that are inactive cbcc8e87 Make region files more reliable to write to 8887c5f4 Remove redundant late-bind option dac29063 Rebuild patches * Preserve old flush on save flag for reliable regionfiles Originally this patch was in paper * Fix some issues with the death event - Entities potentially entering a glitched state to the client where they appear to be falling over - Donkeys losing their chest if the event was cancelled (only an issue since the upstream merge) - Some wither death logic running for an entity killed by a wither --- Spigot-API-Patches/Fireworks-API-s.patch | 6 +- ...tually-Limit-Natural-Spawns-To-Limit.patch | 2 +- .../Add-ArmorStand-Item-Meta.patch | 2 +- ...dd-Early-Warning-Feature-to-WatchDog.patch | 10 +- Spigot-Server-Patches/Add-Heightmap-API.patch | 2 +- .../Add-LivingEntity-getTargetEntity.patch | 4 +- .../Add-PlayerArmorChangeEvent.patch | 2 +- ...n-option-to-prevent-player-names-fro.patch | 2 +- .../Add-exception-reporting-event.patch | 8 +- ...-ray-tracing-methods-to-LivingEntity.patch | 4 +- ...setting-for-proxy-online-mode-status.patch | 6 +- ...d-version-history-to-version-command.patch | 2 +- .../Allow-Reloading-of-Command-Aliases.patch | 2 +- ...llow-Reloading-of-Custom-Permissions.patch | 2 +- .../Allow-Saving-of-Oversized-Chunks.patch | 6 +- ...Allow-disabling-armour-stand-ticking.patch | 8 +- ...ts-to-fire-only-after-the-server-plu.patch | 70 ------ Spigot-Server-Patches/Anti-Xray.patch | 42 ++-- .../Async-Chunk-placeholder.patch | 2 +- .../AsyncTabCompleteEvent.patch | 2 +- ...blocking-on-Network-Manager-creation.patch | 2 +- .../Basic-PlayerProfile-API.patch | 4 +- .../Cap-Entity-Collisions.patch | 2 +- .../Chunk-Save-Reattempt.patch | 4 +- .../Chunk-debug-command.patch | 6 +- ...le-Keep-Spawn-Loaded-range-per-world.patch | 4 +- .../Configurable-Player-Collision.patch | 4 +- ...gurable-projectile-relative-velocity.patch | 2 +- .../Custom-replacement-for-eaten-items.patch | 2 +- ...tect-and-repair-corrupt-Region-Files.patch | 14 +- .../Expose-server-CommandMap.patch | 2 +- Spigot-Server-Patches/Firework-API-s.patch | 17 +- ...l-to-changed-postToMainThread-method.patch | 2 +- ...isPrimaryThread-and-MinecraftServer-.patch | 4 +- .../Fix-World-isChunkGenerated-calls.patch | 22 +- ...x-some-generation-concurrency-issues.patch | 6 +- ...n-item-frames-are-modified-MC-123450.patch | 4 +- .../Further-improve-server-tick-loop.patch | 6 +- .../Handle-Item-Meta-Inconsistencies.patch | 6 +- ...n-prefixes-using-Log4J-configuration.patch | 4 +- ...plement-EntityKnockbackByEntityEvent.patch | 2 +- ...-for-CanPlaceOn-and-CanDestroy-NBT-v.patch | 2 +- ...nt-extended-PaperServerListPingEvent.patch | 14 +- .../Improve-death-events.patch | 72 ++++-- ...ivingEntity-Hand-Raised-Item-Use-API.patch | 4 +- ...tityAreaEffectCloud-from-going-negat.patch | 2 +- ...gion-files-more-reliable-to-write-to.patch | 212 ------------------ ...e-shield-blocking-delay-configurable.patch | 4 +- ...ault-permission-message-configurable.patch | 2 +- ...-being-ticked-when-notifying-navigat.patch | 2 +- ...al-Spawned-mobs-towards-natural-spaw.patch | 4 +- ...ckPhysicsEvent-if-a-plugin-has-a-lis.patch | 2 +- Spigot-Server-Patches/Optimize-Hoppers.patch | 2 +- .../Optimize-Server-World-Map.patch | 4 +- .../Optimize-TileEntity-Ticking.patch | 7 +- .../Optimize-UserCache-Thread-Safe.patch | 4 +- .../Optimize-World-Time-Updates.patch | 2 +- .../Optimize-explosions.patch | 2 +- .../Paper-config-files.patch | 4 +- ...layer-View-Distance-API-placeholders.patch | 2 +- ...sh-on-save-flag-for-reliable-regionf.patch | 21 ++ ...le-async-calls-to-restart-the-server.patch | 6 +- ...uce-IO-ops-opening-a-new-region-file.patch | 8 +- .../Server-Tick-Events.patch | 2 +- ...ient-crashes-server-lists-and-Mojang.patch | 4 +- Spigot-Server-Patches/Timings-v2.patch | 10 +- ...Status-cache-when-saving-protochunks.patch | 2 +- ...ams-to-redirect-System.out-err-to-lo.patch | 4 +- ...oleAppender-for-console-improvements.patch | 6 +- .../Use-a-Queue-for-Queueing-Commands.patch | 2 +- ...etChunkIfLoadedImmediately-in-places.patch | 2 +- .../fixup-Optimize-TileEntity-Ticking.patch | 20 -- ...entity-dismount-during-teleportation.patch | 8 +- .../getPlayerUniqueId-API.patch | 2 +- ...th-absorb-values-and-repair-bad-data.patch | 4 +- .../improve-CraftWorld-isChunkLoaded.patch | 2 +- .../incremental-chunk-saving.patch | 14 +- .../offset-item-frame-ticking.patch | 2 +- ...-possibility-for-getServer-singleton.patch | 2 +- work/Bukkit | 2 +- work/CraftBukkit | 2 +- work/Spigot | 2 +- 82 files changed, 268 insertions(+), 509 deletions(-) delete mode 100644 Spigot-Server-Patches/Allow-login-events-to-fire-only-after-the-server-plu.patch delete mode 100644 Spigot-Server-Patches/Make-region-files-more-reliable-to-write-to.patch create mode 100644 Spigot-Server-Patches/Preserve-old-flush-on-save-flag-for-reliable-regionf.patch delete mode 100644 Spigot-Server-Patches/fixup-Optimize-TileEntity-Ticking.patch diff --git a/Spigot-API-Patches/Fireworks-API-s.patch b/Spigot-API-Patches/Fireworks-API-s.patch index 18357b30d9..1004bc6235 100644 --- a/Spigot-API-Patches/Fireworks-API-s.patch +++ b/Spigot-API-Patches/Fireworks-API-s.patch @@ -7,7 +7,7 @@ Get the Entity being boosted Get the firework launcher diff --git a/src/main/java/org/bukkit/entity/Firework.java b/src/main/java/org/bukkit/entity/Firework.java -index 1c55f0338..7df26cf7f 100644 +index d6ea16ec4..a6250043e 100644 --- a/src/main/java/org/bukkit/entity/Firework.java +++ b/src/main/java/org/bukkit/entity/Firework.java @@ -0,0 +0,0 @@ package org.bukkit.entity; @@ -21,9 +21,9 @@ index 1c55f0338..7df26cf7f 100644 /** @@ -0,0 +0,0 @@ public interface Firework extends Entity { - * remaining fuse. + * @param shotAtAngle */ - void detonate(); + void setShotAtAngle(boolean shotAtAngle); + + // Paper start + @Nullable diff --git a/Spigot-Server-Patches/Actually-Limit-Natural-Spawns-To-Limit.patch b/Spigot-Server-Patches/Actually-Limit-Natural-Spawns-To-Limit.patch index e5c2b2156f..f7732e37b5 100644 --- a/Spigot-Server-Patches/Actually-Limit-Natural-Spawns-To-Limit.patch +++ b/Spigot-Server-Patches/Actually-Limit-Natural-Spawns-To-Limit.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Actually-Limit-Natural-Spawns-To-Limit diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index a58cfc14bb..26216fe72c 100644 +index 0ce2d6d0fb..d30da20435 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 { diff --git a/Spigot-Server-Patches/Add-ArmorStand-Item-Meta.patch b/Spigot-Server-Patches/Add-ArmorStand-Item-Meta.patch index a6647b87a0..b9d78a175c 100644 --- a/Spigot-Server-Patches/Add-ArmorStand-Item-Meta.patch +++ b/Spigot-Server-Patches/Add-ArmorStand-Item-Meta.patch @@ -267,7 +267,7 @@ index f700522840..3723faccac 100644 + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index b0682e5299..704a7d91e3 100644 +index 084c958899..195b2e8f9a 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { diff --git a/Spigot-Server-Patches/Add-Early-Warning-Feature-to-WatchDog.patch b/Spigot-Server-Patches/Add-Early-Warning-Feature-to-WatchDog.patch index 263a9f5714..5df32b5ea0 100644 --- a/Spigot-Server-Patches/Add-Early-Warning-Feature-to-WatchDog.patch +++ b/Spigot-Server-Patches/Add-Early-Warning-Feature-to-WatchDog.patch @@ -9,7 +9,7 @@ thread dumps at an interval until the point of crash. This will help diagnose what was going on in that time before the crash. diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 207e5d3e2..a13c8c68b 100644 +index 207e5d3e23..a13c8c68b6 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -0,0 +0,0 @@ import org.bukkit.configuration.file.YamlConfiguration; @@ -36,7 +36,7 @@ index 207e5d3e2..a13c8c68b 100644 public static int tabSpamLimit = 500; private static void tabSpamLimiters() { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 46b3fcf07..e99e698c4 100644 +index 37353b29da..2acb71fa8a 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= -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 a08366d360..d5ef409efb 100644 +index 6bf7eded56..0d4e38d0f4 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 0e8abbcba3..34d02b29e5 100644 --- a/Spigot-Server-Patches/Add-LivingEntity-getTargetEntity.patch +++ b/Spigot-Server-Patches/Add-LivingEntity-getTargetEntity.patch @@ -66,7 +66,7 @@ index 75da085969..046e7e031c 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 192a9a86d1..251afcc1bb 100644 +index d23968a7c9..31d14b19b1 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 { @@ -120,7 +120,7 @@ index 9bf1919451..56488b78dd 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 d5c4115a85..c4aa1945ff 100644 +index 408028131b..e0de3820f3 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-PlayerArmorChangeEvent.patch b/Spigot-Server-Patches/Add-PlayerArmorChangeEvent.patch index 84ea3acc77..7bb2bce09a 100644 --- a/Spigot-Server-Patches/Add-PlayerArmorChangeEvent.patch +++ b/Spigot-Server-Patches/Add-PlayerArmorChangeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerArmorChangeEvent diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index efc7617957..72adeb7271 100644 +index 46dfb3c498..74c1f7c447 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ diff --git a/Spigot-Server-Patches/Add-configuration-option-to-prevent-player-names-fro.patch b/Spigot-Server-Patches/Add-configuration-option-to-prevent-player-names-fro.patch index 95d85f25f8..d8005ca551 100644 --- a/Spigot-Server-Patches/Add-configuration-option-to-prevent-player-names-fro.patch +++ b/Spigot-Server-Patches/Add-configuration-option-to-prevent-player-names-fro.patch @@ -20,7 +20,7 @@ index b5a50afd24..11d2a1013b 100644 + } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9ccf6a6891..f762ff1d2e 100644 +index ca6158dc73..8e6f23d278 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/Add-exception-reporting-event.patch b/Spigot-Server-Patches/Add-exception-reporting-event.patch index cd904b4034..8ffdbc7bed 100644 --- a/Spigot-Server-Patches/Add-exception-reporting-event.patch +++ b/Spigot-Server-Patches/Add-exception-reporting-event.patch @@ -80,7 +80,7 @@ index 46635a5308..6c13ae3bae 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 25e0163c60..4e60de0b6e 100644 +index e51e3b74cc..0ce2d6d0fb 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ import java.util.function.BooleanSupplier; @@ -121,7 +121,7 @@ index 2cb0962ff1..21a8ed3231 100644 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index e2ab4b1bfb..14b0875eee 100644 +index 89694d3faf..7a681bda7c 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 { @@ -141,7 +141,7 @@ index e2ab4b1bfb..14b0875eee 100644 } } diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index d4a9af975d..88b5aa3a51 100644 +index 8b17dde509..d6cecfc09b 100644 --- a/src/main/java/net/minecraft/server/RegionFile.java +++ b/src/main/java/net/minecraft/server/RegionFile.java @@ -0,0 +0,0 @@ @@ -160,7 +160,7 @@ index d4a9af975d..88b5aa3a51 100644 } } @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - this.b(chunkcoordintpair, (int) (SystemUtils.getTimeMillis() / 1000L)); + // this.b(chunkcoordintpair, (int) (SystemUtils.getTimeMillis() / 1000L)); // Spigot - move this into writeChunk } catch (IOException ioexception) { ioexception.printStackTrace(); + ServerInternalException.reportInternalException(ioexception); // Paper diff --git a/Spigot-Server-Patches/Add-ray-tracing-methods-to-LivingEntity.patch b/Spigot-Server-Patches/Add-ray-tracing-methods-to-LivingEntity.patch index 2991c4c8d7..423958aced 100644 --- a/Spigot-Server-Patches/Add-ray-tracing-methods-to-LivingEntity.patch +++ b/Spigot-Server-Patches/Add-ray-tracing-methods-to-LivingEntity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add ray tracing methods to LivingEntity diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 2cbcd1e17b..6ed473c656 100644 +index dbf42f882f..b09712ca91 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 { @@ -33,7 +33,7 @@ index 2cbcd1e17b..6ed473c656 100644 public int getShieldBlockingDelay() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 8dea7d36b6..d5c4115a85 100644 +index 0610d0d5c0..408028131b 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-setting-for-proxy-online-mode-status.patch b/Spigot-Server-Patches/Add-setting-for-proxy-online-mode-status.patch index 0e320ddbc2..2fd96bbaea 100644 --- a/Spigot-Server-Patches/Add-setting-for-proxy-online-mode-status.patch +++ b/Spigot-Server-Patches/Add-setting-for-proxy-online-mode-status.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add setting for proxy online mode status diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index cbfe12734..1daa2e453 100644 +index cbfe12734d..1daa2e4535 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -0,0 +0,0 @@ import org.bukkit.configuration.InvalidConfigurationException; @@ -31,7 +31,7 @@ index cbfe12734..1daa2e453 100644 + } } diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java -index 21a8ed323..0794aff5b 100644 +index 21a8ed3231..0794aff5b7 100644 --- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java +++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java @@ -0,0 +0,0 @@ public class NameReferencingFileConverter { @@ -45,7 +45,7 @@ index 21a8ed323..0794aff5b 100644 } else { String[] astring1 = astring; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index facd9c8ad..0d9e98914 100644 +index 6f6b0bea39..893d3e5c4c 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/Add-version-history-to-version-command.patch b/Spigot-Server-Patches/Add-version-history-to-version-command.patch index 5441d17be0..f0accdac76 100644 --- a/Spigot-Server-Patches/Add-version-history-to-version-command.patch +++ b/Spigot-Server-Patches/Add-version-history-to-version-command.patch @@ -192,7 +192,7 @@ index 0000000000..aac3f66cb2 + } +} diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index c7ea4ec4fe..6e1509c2c1 100644 +index ce3ca4830e..895049287c 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/Allow-Reloading-of-Command-Aliases.patch b/Spigot-Server-Patches/Allow-Reloading-of-Command-Aliases.patch index a220ab8076..7e4ad70690 100644 --- a/Spigot-Server-Patches/Allow-Reloading-of-Command-Aliases.patch +++ b/Spigot-Server-Patches/Allow-Reloading-of-Command-Aliases.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow Reloading of Command Aliases Reload the aliases stored in commands.yml diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 0d9e98914..9b4e957d6 100644 +index 893d3e5c4c..ca6158dc73 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/Allow-Reloading-of-Custom-Permissions.patch b/Spigot-Server-Patches/Allow-Reloading-of-Custom-Permissions.patch index 282e2edfc3..702bc1650a 100644 --- a/Spigot-Server-Patches/Allow-Reloading-of-Custom-Permissions.patch +++ b/Spigot-Server-Patches/Allow-Reloading-of-Custom-Permissions.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow Reloading of Custom Permissions https://github.com/PaperMC/Paper/issues/49 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index adcb6fd1f3..20bd804bce 100644 +index 4a43da08a5..8b8e85b711 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/Allow-Saving-of-Oversized-Chunks.patch b/Spigot-Server-Patches/Allow-Saving-of-Oversized-Chunks.patch index d1b6756911..4654aabe9c 100644 --- a/Spigot-Server-Patches/Allow-Saving-of-Oversized-Chunks.patch +++ b/Spigot-Server-Patches/Allow-Saving-of-Oversized-Chunks.patch @@ -64,7 +64,7 @@ index b7c94fe238..80eea5dfbd 100644 public NBTTagList() {} diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index e68f901943..ed2ccebb23 100644 +index 17648c1c04..86ae53fed3 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 { @@ -75,7 +75,7 @@ index e68f901943..ed2ccebb23 100644 + final File file; // Paper - private -> package // Spigot end private static final byte[] a = new byte[4096]; - private final RandomAccessFile b; private RandomAccessFile getDataFile() { return this.b; } // Paper - OBFHELPER + private final RandomAccessFile b; private RandomAccessFile getDataFile() { return this.b; } // Paper - OBFHELPER // PAIL dataFile @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { public RegionFile(File file) throws IOException { @@ -102,7 +102,7 @@ index e68f901943..ed2ccebb23 100644 // Spigot end this.e.set((k >> 8) + l, false); @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - if (offsets[j] != 0) this.timestamps[j] = k; // Paper - don't set timestamp if it got 0'd above due to corruption + if (this.offsets[j] != 0) this.timestamps[j] = k; // Paper - don't set timestamp if it got 0'd above due to corruption } - this.file = file; // Spigot diff --git a/Spigot-Server-Patches/Allow-disabling-armour-stand-ticking.patch b/Spigot-Server-Patches/Allow-disabling-armour-stand-ticking.patch index a94fdf5d7a..74845fd861 100644 --- a/Spigot-Server-Patches/Allow-disabling-armour-stand-ticking.patch +++ b/Spigot-Server-Patches/Allow-disabling-armour-stand-ticking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow disabling armour stand ticking diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 09607fb44..5832c3e86 100644 +index 09607fb447..5832c3e868 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 { @@ -20,7 +20,7 @@ index 09607fb44..5832c3e86 100644 + } } diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index 9e7b4f6fe..627925e3b 100644 +index 9e7b4f6feb..627925e3ba 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 { @@ -140,7 +140,7 @@ index 9e7b4f6fe..627925e3b 100644 public Vector3f r() { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 29eace446..2f293aa83 100644 +index e1972f7935..dbf42f882f 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 { @@ -256,7 +256,7 @@ index 29eace446..2f293aa83 100644 float f2 = MathHelper.g(f - this.aK); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java -index 9f5c3b92e..07ce93f17 100644 +index 9f5c3b92e3..07ce93f17c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java @@ -0,0 +0,0 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand { diff --git a/Spigot-Server-Patches/Allow-login-events-to-fire-only-after-the-server-plu.patch b/Spigot-Server-Patches/Allow-login-events-to-fire-only-after-the-server-plu.patch deleted file mode 100644 index afbdb246c8..0000000000 --- a/Spigot-Server-Patches/Allow-login-events-to-fire-only-after-the-server-plu.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Spottedleaf -Date: Sun, 31 Mar 2019 22:02:24 -0700 -Subject: [PATCH] Allow login events to fire only after the server plugins are - enabled - -Event threads will simply block until they're ready to accept. - -diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java -index a8773037e5..c09e1edfd4 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 { - } - } - -+ // Paper start - Delay async prelogin until plugins are ready -+ private static volatile Object blockingLogins = new Object(); -+ -+ public static void checkStartupAndBlock() { -+ final Object lock = LoginListener.blockingLogins; -+ if (lock != null) { -+ synchronized (lock) { -+ for (;;) { -+ if (LoginListener.blockingLogins == null) { -+ return; -+ } -+ try { -+ lock.wait(); -+ } catch (final InterruptedException ignore) {// handled by the if statement above -+ Thread.currentThread().interrupt(); -+ } -+ } -+ } -+ } -+ } -+ -+ public static void allowLogins() { -+ final Object lock = LoginListener.blockingLogins; -+ synchronized (lock) { -+ LoginListener.blockingLogins = null; -+ lock.notifyAll(); -+ } -+ } -+ // Paper end -+ - // Spigot start - public class LoginHandler { - -@@ -0,0 +0,0 @@ public class LoginListener implements PacketLoginInListener { - return; - } - // Paper end -+ LoginListener.checkStartupAndBlock(); // Paper - Delay async login events until plugins are ready - String playerName = i.getName(); - java.net.InetAddress address = ((java.net.InetSocketAddress) networkManager.getSocketAddress()).getAddress(); - java.util.UUID uniqueId = i.getId(); -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 05c23a2d98..b2a9fe30d5 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> { @@ -1455,7 +1455,7 @@ index e156804f7..96a785af2 100644 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 ef71a1feb..483317608 100644 +index ef71a1feb3..483317608c 100644 --- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java @@ -0,0 +0,0 @@ @@ -1548,7 +1548,7 @@ index ef71a1feb..483317608 100644 } diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java -index 98590e233..af934ef8b 100644 +index 98590e233a..af934ef8bc 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 { @@ -1573,7 +1573,7 @@ index 98590e233..af934ef8b 100644 this.a(new PacketPlayOutMultiBlockChange(this.dirtyCount, this.dirtyBlocks, chunk), false); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index fbbd4d5dd..fd0d2b6e6 100644 +index fbbd4d5dd0..fd0d2b6e67 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 { @@ -1595,7 +1595,7 @@ index fbbd4d5dd..fd0d2b6e6 100644 } diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java -index 1c79890e3..e5e9de542 100644 +index 1c79890e3f..e5e9de542b 100644 --- a/src/main/java/net/minecraft/server/PlayerInteractManager.java +++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java @@ -0,0 +0,0 @@ public class PlayerInteractManager { @@ -1608,7 +1608,7 @@ index 1c79890e3..e5e9de542 100644 public void a(BlockPosition blockposition, PacketPlayInBlockDig.EnumPlayerDigType packetplayinblockdig_enumplayerdigtype) { diff --git a/src/main/java/net/minecraft/server/ProtoChunk.java b/src/main/java/net/minecraft/server/ProtoChunk.java -index 6bdd7dda0..7bad12eb0 100644 +index 6bdd7dda04..7bad12eb00 100644 --- a/src/main/java/net/minecraft/server/ProtoChunk.java +++ b/src/main/java/net/minecraft/server/ProtoChunk.java @@ -0,0 +0,0 @@ public class ProtoChunk implements IChunkAccess { @@ -1651,7 +1651,7 @@ index 6bdd7dda0..7bad12eb0 100644 return this.j[i]; diff --git a/src/main/java/net/minecraft/server/TicketType.java b/src/main/java/net/minecraft/server/TicketType.java -index 157ca6a7e..9c114d2d3 100644 +index 157ca6a7e6..9c114d2d37 100644 --- a/src/main/java/net/minecraft/server/TicketType.java +++ b/src/main/java/net/minecraft/server/TicketType.java @@ -0,0 +0,0 @@ public class TicketType { @@ -1663,7 +1663,7 @@ index 157ca6a7e..9c114d2d3 100644 public static TicketType a(String s, Comparator comparator) { return new TicketType<>(s, comparator, 0L); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 10c149fae..ab98c7b79 100644 +index 10c149faec..ab98c7b796 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ package net.minecraft.server; @@ -1700,7 +1700,7 @@ index 10c149fae..ab98c7b79 100644 if (iblockdata1 == null) { // CraftBukkit start - remove blockstate if failed diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java -index 7772d5900..4570ed999 100644 +index 7772d59005..4570ed9991 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java @@ -0,0 +0,0 @@ public final class CraftChunkData implements ChunkGenerator.ChunkData { diff --git a/Spigot-Server-Patches/Async-Chunk-placeholder.patch b/Spigot-Server-Patches/Async-Chunk-placeholder.patch index b082ae2bfc..74e6a16f6b 100644 --- a/Spigot-Server-Patches/Async-Chunk-placeholder.patch +++ b/Spigot-Server-Patches/Async-Chunk-placeholder.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Async Chunk placeholder Until we figure out Mojang's ticket system. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index d114c471e..20c370cf2 100644 +index 0d4e38d0f4..74f7b046ac 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/AsyncTabCompleteEvent.patch b/Spigot-Server-Patches/AsyncTabCompleteEvent.patch index a2c95fb7bb..c472de0e3c 100644 --- a/Spigot-Server-Patches/AsyncTabCompleteEvent.patch +++ b/Spigot-Server-Patches/AsyncTabCompleteEvent.patch @@ -72,7 +72,7 @@ index 1d140b3fe7..6008613fae 100644 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9f29be85c2..66d4dccedd 100644 +index 308ae2e157..3938adf7c7 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/Avoid-blocking-on-Network-Manager-creation.patch b/Spigot-Server-Patches/Avoid-blocking-on-Network-Manager-creation.patch index 451e0fb8d3..5ec8cd7362 100644 --- a/Spigot-Server-Patches/Avoid-blocking-on-Network-Manager-creation.patch +++ b/Spigot-Server-Patches/Avoid-blocking-on-Network-Manager-creation.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Avoid blocking on Network Manager creation Per Paper issue 294 diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java -index 42c654a1d..e7ed6af9c 100644 +index 7de96ae69d..379c79272b 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 { diff --git a/Spigot-Server-Patches/Basic-PlayerProfile-API.patch b/Spigot-Server-Patches/Basic-PlayerProfile-API.patch index 3724db7dc0..d6ddd12b29 100644 --- a/Spigot-Server-Patches/Basic-PlayerProfile-API.patch +++ b/Spigot-Server-Patches/Basic-PlayerProfile-API.patch @@ -429,7 +429,7 @@ index 1f6a126329..6d278a0da5 100644 * Calculates distance between 2 entities * @param e1 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6c2b050da3..22d653cfcd 100644 +index 8fcffc9fa3..32a9e54d0a 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 - License: LGPLv2.1 */ diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 21032fa943..220cd197fa 100644 +index d30da20435..cb78e14a05 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; @@ -412,7 +412,7 @@ index 7407c1a564..14a176d61d 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 8470bf693d..60bd3a63e7 100644 +index 67d011745f..493770bf68 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 8470bf693d..60bd3a63e7 100644 private final DefinedStructureManager definedStructureManager; private final File x; diff --git a/src/main/java/net/minecraft/server/Ticket.java b/src/main/java/net/minecraft/server/Ticket.java -index c23a366b2c..e53cbd418b 100644 +index 0430ca5353..badbe6c19d 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/Configurable-Keep-Spawn-Loaded-range-per-world.patch b/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch index c4188800b3..8d71c8bbdc 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 @@ -21,7 +21,7 @@ index d8bb13693d..de11a91af6 100644 + } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 51be3f9adf..380c3663a6 100644 +index c70ab3caf0..c58f6f50d3 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 e; ++ private final int[] c = new int[1024]; private final int[] offsets = c; // Paper - OBFHELPER ++ private final int[] d = new int[1024]; private final int[] timestamps = d; // Paper - OBFHELPER + private final List e; // PAIL freeSectors public RegionFile(File file) throws IOException { this.b = new RandomAccessFile(file, "rw"); @@ -52,13 +52,13 @@ index 4e6288e8bb..e68f901943 100644 for (j = 0; j < 1024; ++j) { k = headerAsInts.get(); // Paper - this.d[j] = k; -+ if (offsets[j] != 0) this.timestamps[j] = k; // Paper - don't set timestamp if it got 0'd above due to corruption ++ if (this.offsets[j] != 0) this.timestamps[j] = k; // Paper - don't set timestamp if it got 0'd above due to corruption } this.file = file; // Spigot @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - this.b.close(); } + // Spigot end + // Paper start + public synchronized void deleteChunk(int j1) { diff --git a/Spigot-Server-Patches/Expose-server-CommandMap.patch b/Spigot-Server-Patches/Expose-server-CommandMap.patch index 9bb36b6dcd..2e38675f27 100644 --- a/Spigot-Server-Patches/Expose-server-CommandMap.patch +++ b/Spigot-Server-Patches/Expose-server-CommandMap.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Expose server CommandMap diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 58428bfbf7..84cb33c317 100644 +index 145178ebc0..a21067c279 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/Firework-API-s.patch b/Spigot-Server-Patches/Firework-API-s.patch index c2cee70af1..72c51889c9 100644 --- a/Spigot-Server-Patches/Firework-API-s.patch +++ b/Spigot-Server-Patches/Firework-API-s.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Firework API's diff --git a/src/main/java/net/minecraft/server/EntityFireworks.java b/src/main/java/net/minecraft/server/EntityFireworks.java -index 020562cd3..aaae9b376 100644 +index fd3897c056..3cf3b1c174 100644 --- a/src/main/java/net/minecraft/server/EntityFireworks.java +++ b/src/main/java/net/minecraft/server/EntityFireworks.java @@ -0,0 +0,0 @@ package net.minecraft.server; @@ -18,7 +18,7 @@ index 020562cd3..aaae9b376 100644 public class EntityFireworks extends Entity implements IProjectile { @@ -0,0 +0,0 @@ public class EntityFireworks extends Entity implements IProjectile { - private static final DataWatcherObject d = DataWatcher.a(EntityFireworks.class, DataWatcherRegistry.i); + public static final DataWatcherObject d = DataWatcher.a(EntityFireworks.class, DataWatcherRegistry.i); // PAIL private int ticksFlown; public int expectedLifespan; - private EntityLiving ridingEntity; @@ -53,7 +53,7 @@ index 020562cd3..aaae9b376 100644 @Override diff --git a/src/main/java/net/minecraft/server/ItemCrossbow.java b/src/main/java/net/minecraft/server/ItemCrossbow.java -index 28d7fdeef..874d9f500 100644 +index 28d7fdeef8..874d9f500e 100644 --- a/src/main/java/net/minecraft/server/ItemCrossbow.java +++ b/src/main/java/net/minecraft/server/ItemCrossbow.java @@ -0,0 +0,0 @@ public class ItemCrossbow extends ItemProjectileWeapon { @@ -65,7 +65,7 @@ index 28d7fdeef..874d9f500 100644 object = a(world, entityliving, itemstack, itemstack1); if (flag || f3 != 0.0F) { diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java -index 37caa79cb..aea46ffae 100644 +index 37caa79cba..aea46ffae5 100644 --- a/src/main/java/net/minecraft/server/ItemFireworks.java +++ b/src/main/java/net/minecraft/server/ItemFireworks.java @@ -0,0 +0,0 @@ public class ItemFireworks extends Item { @@ -90,7 +90,7 @@ index 37caa79cb..aea46ffae 100644 itemstack.subtract(1); } diff --git a/src/main/java/net/minecraft/server/NBTTagCompound.java b/src/main/java/net/minecraft/server/NBTTagCompound.java -index 3f6d2676e..b1fd18151 100644 +index 3f6d2676e7..b1fd18151b 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 { @@ -103,7 +103,7 @@ index 3f6d2676e..b1fd18151 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java -index 6b69be742..37374ae5b 100644 +index d3cbad9a5c..219a1e4c0d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java @@ -0,0 +0,0 @@ package org.bukkit.craftbukkit.entity; @@ -127,12 +127,11 @@ index 6b69be742..37374ae5b 100644 private final Random random = new Random(); @@ -0,0 +0,0 @@ public class CraftFirework extends CraftEntity implements Firework { - public void detonate() { - getHandle().expectedLifespan = 0; + public void setShotAtAngle(boolean shotAtAngle) { + getHandle().getDataWatcher().set(EntityFireworks.d, shotAtAngle); } + + // Paper start -+ + @Override + public UUID getSpawningEntity() { + return getHandle().spawningEntity; 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 1627456fa8..9f2eeb5270 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 79054b4519..8d48495eb7 100644 +index 7680b88024..4187ba05bd 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-CraftServer-isPrimaryThread-and-MinecraftServer-.patch b/Spigot-Server-Patches/Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch index d6f6934c2b..97cac59be1 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 cbc9502802..51be3f9adf 100644 +index 35c5d38c21..c70ab3caf0 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 2be6fa0f0..bdadbd436 100644 +index 2be6fa0f07..bdadbd436e 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 { @@ -187,12 +187,12 @@ index 2be6fa0f0..bdadbd436 100644 boolean isOutsideOfRange(ChunkCoordIntPair chunkcoordintpair) { // Spigot start diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index b0ec9edf6..41f1e15cb 100644 +index 86ae53fed3..e6e412b7c1 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 { - private final int[] d = new int[1024];private int[] timestamps = d; // Paper - OBFHELPER - private final List e; private List getFreeSectors() { return this.e; } // Paper - OBFHELPER + private final int[] d = new int[1024]; private final int[] timestamps = d; // Paper - OBFHELPER + private final List e; // PAIL freeSectors + // Paper start - Cache chunk status + private final ChunkStatus[] statuses = new ChunkStatus[32 * 32]; @@ -230,7 +230,7 @@ index b0ec9edf6..41f1e15cb 100644 return this.getOffset(chunkcoordintpair) != 0; } @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - this.c[j] = i; // Paper - move this to after the write + this.c[j] = i; // Spigot - move this to after the write } + private final int getChunkLocation(ChunkCoordIntPair chunkcoordintpair) { return this.f(chunkcoordintpair); } // Paper - OBFHELPER @@ -246,7 +246,7 @@ index b0ec9edf6..41f1e15cb 100644 } diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java -index 6f34d8aea..d2b328945 100644 +index 6f34d8aea0..d2b3289450 100644 --- a/src/main/java/net/minecraft/server/RegionFileCache.java +++ b/src/main/java/net/minecraft/server/RegionFileCache.java @@ -0,0 +0,0 @@ public abstract class RegionFileCache implements AutoCloseable { @@ -279,7 +279,7 @@ index 6f34d8aea..d2b328945 100644 printOversizedLog("ChunkTooLarge even after reduction. Trying in overzealous mode.", regionfile.file, chunkX, chunkZ); // Eek, major fail. We have retry logic, so reduce threshholds and fall back diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index acf151a25..a2b6c3c94 100644 +index ceb256222f..21f1530138 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-some-generation-concurrency-issues.patch b/Spigot-Server-Patches/Fix-some-generation-concurrency-issues.patch index 163ef396e1..8ff2bc67b6 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/DefinedStructureManager.java b/src/main/java/net/minecraft/server/DefinedStructureManager.java -index 8ecbd945c..fec41a142 100644 +index 8ecbd945c2..fec41a142f 100644 --- a/src/main/java/net/minecraft/server/DefinedStructureManager.java +++ b/src/main/java/net/minecraft/server/DefinedStructureManager.java @@ -0,0 +0,0 @@ import org.apache.logging.log4j.Logger; @@ -18,7 +18,7 @@ index 8ecbd945c..fec41a142 100644 private final MinecraftServer d; private final java.nio.file.Path e; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index e3b4e30e6..10c149fae 100644 +index e3b4e30e65..10c149faec 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 IIBlockAccess, GeneratorAccess, AutoClose @@ -46,7 +46,7 @@ index e3b4e30e6..10c149fae 100644 public CraftWorld getWorld() { return this.world; diff --git a/src/main/java/net/minecraft/server/WorldGenStronghold.java b/src/main/java/net/minecraft/server/WorldGenStronghold.java -index ddf726867..c2188ceef 100644 +index ddf7268676..c2188ceef1 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 f66a7c2397..a4d37ff017 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 6f6837ec4..b078435c6 100644 +index 6f6837ec4d..b078435c6f 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 6f6837ec4..b078435c6 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java -index 799036f26..9ad180d94 100644 +index 799036f268..9ad180d946 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/Further-improve-server-tick-loop.patch b/Spigot-Server-Patches/Further-improve-server-tick-loop.patch index 62aa0c6159..2c976b4153 100644 --- a/Spigot-Server-Patches/Further-improve-server-tick-loop.patch +++ b/Spigot-Server-Patches/Further-improve-server-tick-loop.patch @@ -12,7 +12,7 @@ Previous implementation did not calculate TPS correctly. Switch to a realistic rolling average and factor in std deviation as an extra reporting variable diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index cec120cf2..7bb83014b 100644 +index d7c0006605..6594138f35 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 getEnchantments(net.minecraft.server.ItemStack item) { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 4f1834014..b0682e529 100644 +index de54a67a2a..084c958899 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -0,0 +0,0 @@ import com.google.common.collect.HashMultimap; diff --git a/Spigot-Server-Patches/Handle-plugin-prefixes-using-Log4J-configuration.patch b/Spigot-Server-Patches/Handle-plugin-prefixes-using-Log4J-configuration.patch index 13d75e3abb..6068a6bb1f 100644 --- a/Spigot-Server-Patches/Handle-plugin-prefixes-using-Log4J-configuration.patch +++ b/Spigot-Server-Patches/Handle-plugin-prefixes-using-Log4J-configuration.patch @@ -15,7 +15,7 @@ This may cause additional prefixes to be disabled for plugins bypassing the plugin logger. diff --git a/pom.xml b/pom.xml -index ea6fb01249..d955106433 100644 +index a70c0ec07a..5ab1f29846 100644 --- a/pom.xml +++ b/pom.xml @@ -0,0 +0,0 @@ @@ -28,7 +28,7 @@ index ea6fb01249..d955106433 100644 org.apache.logging.log4j diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java -index fc6cb9306a..bd601333ee 100644 +index d873256c01..783aa6db1f 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java @@ -0,0 +0,0 @@ public class SpigotConfig diff --git a/Spigot-Server-Patches/Implement-EntityKnockbackByEntityEvent.patch b/Spigot-Server-Patches/Implement-EntityKnockbackByEntityEvent.patch index 53a80801d8..aa5dd0354e 100644 --- a/Spigot-Server-Patches/Implement-EntityKnockbackByEntityEvent.patch +++ b/Spigot-Server-Patches/Implement-EntityKnockbackByEntityEvent.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Implement EntityKnockbackByEntityEvent This event is called when an entity receives knockback by another entity. diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index a578dec9db..c2634f8813 100644 +index a873685e47..dfbd40a997 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/Implement-an-API-for-CanPlaceOn-and-CanDestroy-NBT-v.patch b/Spigot-Server-Patches/Implement-an-API-for-CanPlaceOn-and-CanDestroy-NBT-v.patch index e411b44a23..73fa463b4e 100644 --- a/Spigot-Server-Patches/Implement-an-API-for-CanPlaceOn-and-CanDestroy-NBT-v.patch +++ b/Spigot-Server-Patches/Implement-an-API-for-CanPlaceOn-and-CanDestroy-NBT-v.patch @@ -32,7 +32,7 @@ index 005ebec266..97d85f8451 100644 this.s = this::l; if (this.i.canRead() && this.i.peek() == '#') { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 704a7d91e3..d484292dd0 100644 +index 195b2e8f9a..1faadbd101 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -0,0 +0,0 @@ import org.bukkit.persistence.PersistentDataContainer; diff --git a/Spigot-Server-Patches/Implement-extended-PaperServerListPingEvent.patch b/Spigot-Server-Patches/Implement-extended-PaperServerListPingEvent.patch index 9630b33161..9632cde399 100644 --- a/Spigot-Server-Patches/Implement-extended-PaperServerListPingEvent.patch +++ b/Spigot-Server-Patches/Implement-extended-PaperServerListPingEvent.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Implement extended PaperServerListPingEvent diff --git a/src/main/java/com/destroystokyo/paper/network/PaperServerListPingEventImpl.java b/src/main/java/com/destroystokyo/paper/network/PaperServerListPingEventImpl.java new file mode 100644 -index 000000000..c1a8e295b +index 0000000000..c1a8e295b6 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/network/PaperServerListPingEventImpl.java @@ -0,0 +0,0 @@ @@ -43,7 +43,7 @@ index 000000000..c1a8e295b +} diff --git a/src/main/java/com/destroystokyo/paper/network/PaperStatusClient.java b/src/main/java/com/destroystokyo/paper/network/PaperStatusClient.java new file mode 100644 -index 000000000..a2a409e63 +index 0000000000..a2a409e635 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/network/PaperStatusClient.java @@ -0,0 +0,0 @@ @@ -60,7 +60,7 @@ index 000000000..a2a409e63 +} diff --git a/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java b/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java new file mode 100644 -index 000000000..a85466bc7 +index 0000000000..a85466bc7e --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java @@ -0,0 +0,0 @@ @@ -177,7 +177,7 @@ index 000000000..a85466bc7 + +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 798bf3521..46b3fcf07 100644 +index 32a9e54d0a..37353b29da 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ @@ -200,7 +200,7 @@ index 798bf3521..46b3fcf07 100644 for (int k = 0; k < agameprofile.length; ++k) { diff --git a/src/main/java/net/minecraft/server/PacketStatusListener.java b/src/main/java/net/minecraft/server/PacketStatusListener.java -index 2b08f285d..295c9ac22 100644 +index 2b08f285d1..295c9ac22d 100644 --- a/src/main/java/net/minecraft/server/PacketStatusListener.java +++ b/src/main/java/net/minecraft/server/PacketStatusListener.java @@ -0,0 +0,0 @@ public class PacketStatusListener implements PacketStatusInListener { @@ -223,7 +223,7 @@ index 2b08f285d..295c9ac22 100644 // CraftBukkit end } diff --git a/src/main/java/net/minecraft/server/ServerPing.java b/src/main/java/net/minecraft/server/ServerPing.java -index aa125a52d..ea52e89bd 100644 +index aa125a52dc..ea52e89bd9 100644 --- a/src/main/java/net/minecraft/server/ServerPing.java +++ b/src/main/java/net/minecraft/server/ServerPing.java @@ -0,0 +0,0 @@ public class ServerPing { @@ -248,7 +248,7 @@ index aa125a52d..ea52e89bd 100644 this.c = agameprofile; } diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java -index bd601333e..6c5430ff9 100644 +index 783aa6db1f..33767c85ca 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java @@ -0,0 +0,0 @@ public class SpigotConfig diff --git a/Spigot-Server-Patches/Improve-death-events.patch b/Spigot-Server-Patches/Improve-death-events.patch index 1e60967bee..eef654561c 100644 --- a/Spigot-Server-Patches/Improve-death-events.patch +++ b/Spigot-Server-Patches/Improve-death-events.patch @@ -15,7 +15,7 @@ items and experience which is otherwise only properly possible by using internal code. diff --git a/src/main/java/net/minecraft/server/CombatTracker.java b/src/main/java/net/minecraft/server/CombatTracker.java -index 84c3ea9d0..f563a7b63 100644 +index 84c3ea9d00..f563a7b630 100644 --- a/src/main/java/net/minecraft/server/CombatTracker.java +++ b/src/main/java/net/minecraft/server/CombatTracker.java @@ -0,0 +0,0 @@ public class CombatTracker { @@ -27,7 +27,7 @@ index 84c3ea9d0..f563a7b63 100644 int i = this.f ? 300 : 100; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 7811beb80..f9b097fd6 100644 +index 7811beb807..f9b097fd6f 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 @@ -47,7 +47,7 @@ index 7811beb80..f9b097fd6 100644 protected void i(double d0, double d1, double d2) { diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index 627925e3b..e516db270 100644 +index 627925e3ba..e516db2701 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 { @@ -61,7 +61,7 @@ index 627925e3b..e516db270 100644 } diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index 85231309f..1da2f013f 100644 +index 85231309fd..97059b8239 100644 --- a/src/main/java/net/minecraft/server/EntityFox.java +++ b/src/main/java/net/minecraft/server/EntityFox.java @@ -0,0 +0,0 @@ public class EntityFox extends EntityAnimal { @@ -74,7 +74,7 @@ index 85231309f..1da2f013f 100644 + ItemStack itemstack = this.getEquipment(EnumItemSlot.MAINHAND).cloneItemStack(); // Paper + + // Paper start - Cancellable death event -+ org.bukkit.event.entity.EntityDeathEvent deathEvent = super.d(damagesource); ++ org.bukkit.event.entity.EntityDeathEvent deathEvent = super.processDeath(damagesource); + + // Below is code to drop + @@ -93,8 +93,33 @@ index 85231309f..1da2f013f 100644 } public static boolean a(EntityFox entityfox, EntityLiving entityliving) { +diff --git a/src/main/java/net/minecraft/server/EntityHorseChestedAbstract.java b/src/main/java/net/minecraft/server/EntityHorseChestedAbstract.java +index 2483cfd28a..2a988366cd 100644 +--- a/src/main/java/net/minecraft/server/EntityHorseChestedAbstract.java ++++ b/src/main/java/net/minecraft/server/EntityHorseChestedAbstract.java +@@ -0,0 +0,0 @@ public abstract class EntityHorseChestedAbstract extends EntityHorseAbstract { + this.a((IMaterial) Blocks.CHEST); + } + +- this.setCarryingChest(false); ++ //this.setCarryingChest(false); // Paper - moved to post death logic + } + + } + ++ // Paper start ++ protected void postDeathDropItems(org.bukkit.event.entity.EntityDeathEvent event) { ++ if (this.isCarryingChest() && (event == null || !event.isCancelled())) { ++ this.setCarryingChest(false); ++ } ++ } ++ // Paper end ++ + @Override + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index edc25586a..37ff76486 100644 +index b09712ca91..1e53af2cce 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 { @@ -175,8 +200,19 @@ index edc25586a..37ff76486 100644 + boolean flag = false; - if (entityliving instanceof EntityWither) { +- if (entityliving instanceof EntityWither) { ++ if (this.killed && entityliving instanceof EntityWither) { + if (this.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING)) { + BlockPosition blockposition = new BlockPosition(this.locX, this.locY, this.locZ); + IBlockData iblockdata = Blocks.WITHER_ROSE.getBlockData(); @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { + } + } + ++ if (this.killed) { // Paper + this.world.broadcastEntityEffect(this, (byte) 3); + this.setPose(EntityPose.DYING); ++ } // Paper } } @@ -187,10 +223,10 @@ index edc25586a..37ff76486 100644 int i; @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { - boolean flag = this.lastDamageByPlayerTime > 0; -+ org.bukkit.event.entity.EntityDeathEvent deathEvent = null; // Paper + this.cF(); // CraftBukkit - from below // PAIL ++ org.bukkit.event.entity.EntityDeathEvent deathEvent; // Paper if (this.isDropExperience() && this.world.getGameRules().getBoolean(GameRules.DO_MOB_LOOT)) { this.a(damagesource, flag); this.dropDeathLoot(damagesource, i, flag); @@ -198,19 +234,23 @@ index edc25586a..37ff76486 100644 - CraftEventFactory.callEntityDeathEvent(this, this.drops); - this.drops = new ArrayList(); + deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops); // Paper -+ if (!deathEvent.isCancelled()) this.drops = new ArrayList(); // Paper } else { - CraftEventFactory.callEntityDeathEvent(this); + deathEvent = CraftEventFactory.callEntityDeathEvent(this); // Paper // CraftBukkit end } ++ this.postDeathDropItems(deathEvent); // Paper ++ this.drops = new ArrayList<>(); // Paper -- this.cF(); -+ if (!deathEvent.isCancelled()) this.cF();; // Paper +- // this.cF();// CraftBukkit - moved up + return deathEvent; // Paper } protected void cF() {} ++ protected void postDeathDropItems(org.bukkit.event.entity.EntityDeathEvent event) {} // Paper - method for post death logic that cannot be ran before the event is potentially cancelled + + protected void dropDeathLoot(DamageSource damagesource, int i, boolean flag) {} + @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { return SoundEffects.ENTITY_GENERIC_HURT; } @@ -233,7 +273,7 @@ index edc25586a..37ff76486 100644 return this.isBaby() ? (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.5F : (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F; } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index dcd48d8b3..d7bc6e329 100644 +index dcd48d8b3d..d7bc6e3297 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 { @@ -284,7 +324,7 @@ index dcd48d8b3..d7bc6e329 100644 } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftSound.java b/src/main/java/org/bukkit/craftbukkit/CraftSound.java -index 73cb64e09..9f317ff2e 100644 +index 73cb64e09d..9f317ff2e8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftSound.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftSound.java @@ -0,0 +0,0 @@ public enum CraftSound { @@ -311,7 +351,7 @@ index 73cb64e09..9f317ff2e 100644 this.minecraftKey = minecraftKey; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2c99a1e9d..e9458dc65 100644 +index 2c99a1e9df..e9458dc65f 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 { @@ -332,7 +372,7 @@ index 2c99a1e9d..e9458dc65 100644 public void injectScaledMaxHealth(Collection collection, boolean force) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 5309a4e30..4074100c4 100644 +index 5309a4e304..4074100c44 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/LivingEntity-Hand-Raised-Item-Use-API.patch b/Spigot-Server-Patches/LivingEntity-Hand-Raised-Item-Use-API.patch index b5d75e06bd..b4bf954fbb 100644 --- a/Spigot-Server-Patches/LivingEntity-Hand-Raised-Item-Use-API.patch +++ b/Spigot-Server-Patches/LivingEntity-Hand-Raised-Item-Use-API.patch @@ -6,7 +6,7 @@ Subject: [PATCH] LivingEntity Hand Raised/Item Use API How long an entity has raised hands to charge an attack or use an item diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index c2634f8813..b29e0c5d35 100644 +index dfbd40a997..e1972f7935 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 { @@ -32,7 +32,7 @@ index c2634f8813..b29e0c5d35 100644 return this.isHandRaised() ? this.activeItem.k() - this.dm() : 0; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 513b3fac7f..8dea7d36b6 100644 +index 06cc48a1dc..0610d0d5c0 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/MC-114618-Fix-EntityAreaEffectCloud-from-going-negat.patch b/Spigot-Server-Patches/MC-114618-Fix-EntityAreaEffectCloud-from-going-negat.patch index 60d6e72877..dd7de82d00 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 91b434aff6..8ebf85dc6b 100644 +index 3a8e105336..fe527aba52 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/Make-region-files-more-reliable-to-write-to.patch b/Spigot-Server-Patches/Make-region-files-more-reliable-to-write-to.patch deleted file mode 100644 index be93503750..0000000000 --- a/Spigot-Server-Patches/Make-region-files-more-reliable-to-write-to.patch +++ /dev/null @@ -1,212 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Spottedleaf -Date: Mon, 1 Apr 2019 18:57:32 -0700 -Subject: [PATCH] Make region files more reliable to write to - -Previously we would write to header before writing our chunk data, -which opens a window for corruption (or we would overwrite entirely). -Now the saving process has been changed to follow this chain of events: - -1. We always allocate a new space to write so we do not potentially -overwrite and corrupt the current data -2. Write the chunk data first (the order of the fields in -the chunk data isn't relevant though) -3. Flush to disk (if the launch flag is used) -4. Write to the region header last -5. Flush to disk (if the launch flag is used) -6. Then we free the previous space allocated - -With this chain of events it is impossible for a chunk write to corrupt -a region file, unless the operating system has lied and we have NOT flushed -to disk. - -However server administrators are still recommended to continue performing -regular backups. - -Note that when Mojang finally decides to change their region format -to deal with oversized chunks this patch must be changed to deal with -whatever system they decide to impose. - -If the paper.flush-on-save startup flag is set to true, then the -steps 3 and 5 will make a call to sync() on the region file's fd, -effectively flushing to disk. - -We also make use of two flushes to disk per chunk save (to ensure -ordering and ensure data has gone to disk), so this will negatively -affect save performance if the startup flag is used (especially on -HDDs). - -diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index ed2ccebb23..b0ec9edf67 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 { - private final RandomAccessFile b; private RandomAccessFile getDataFile() { return this.b; } // Paper - OBFHELPER - private final int[] c = new int[1024]; private int[] offsets = c; // Paper - OBFHELPER - private final int[] d = new int[1024];private int[] timestamps = d; // Paper - OBFHELPER -- private final List e; -+ private final List e; private List getFreeSectors() { return this.e; } // Paper - OBFHELPER - - public RegionFile(File file) throws IOException { - this.b = new RandomAccessFile(file, "rw"); -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - protected synchronized void a(ChunkCoordIntPair chunkcoordintpair, byte[] abyte, int i) { - try { - int j = this.getOffset(chunkcoordintpair); -- int k = j >> 8; -- int l = j & 255; -+ int k = j >> 8; final int oldSectorOffset = k; // Paper - store variable for later -+ int l = j & 255; final int oldSectorCount; // Paper - store variable for later - // Spigot start - if (l == 255) { - this.b.seek(k * 4096); -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - } - // Spigot end - int i1 = (i + 5) / 4096 + 1; -+ oldSectorCount = l; // Paper - store variable for later (watch out for re-assignments of l) - - if (i1 >= 256) { - // Spigot start -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - // Spigot end - } - -- if (k != 0 && l == i1) { -+ if (false && k != 0 && l == i1) { // Paper - We never want to overrite old data - this.a(k, abyte, i); - } else { - int j1; - -- for (j1 = 0; j1 < l; ++j1) { -- this.e.set(k + j1, true); -- } -+ // Paper - We do not free old sectors until we are done writing the new chunk data - - j1 = this.e.indexOf(true); - int k1 = 0; -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - - if (k1 >= i1) { - k = j1; -- this.a(chunkcoordintpair, j1 << 8 | (i1 > 255 ? 255 : i1)); // Spigot -+ //this.a(chunkcoordintpair, j1 << 8 | (i1 > 255 ? 255 : i1)); // Spigot // Paper - We only write to header after we've written chunk data - - for (l1 = 0; l1 < i1; ++l1) { - this.e.set(k + l1, false); - } - -- this.a(k, abyte, i); -+ this.writeChunk(chunkcoordintpair, j1 << 8 | (i1 > 255 ? 255 : i1), k, abyte, i); // Paper - Ensure we do not corrupt region files - } else { - this.b.seek(this.b.length()); - k = this.e.size(); -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - this.e.add(false); - } - -- this.a(k, abyte, i); -- this.a(chunkcoordintpair, k << 8 | (i1 > 255 ? 255 : i1)); // Spigot -+ this.writeChunk(chunkcoordintpair, k << 8 | (i1 > 255 ? 255 : i1), k, abyte, i); // Paper - Ensure we do not corrupt region files -+ } -+ -+ // Paper start - Now that we've written the new chunk we can free the old data -+ for (int off = 0; off < oldSectorCount; ++off) { -+ this.getFreeSectors().set(oldSectorOffset + off, true); - } -+ // Paper end - } - -- this.b(chunkcoordintpair, (int) (SystemUtils.getTimeMillis() / 1000L)); -+ // Paper - move this into writeChunkData - } catch (IOException ioexception) { - com.destroystokyo.paper.util.SneakyThrow.sneaky(ioexception); // Paper - we want the upper try/catch to retry this - } - - } - -+ private void writeChunkData(final int sectorOffset, final byte[] data, final int dataLength) throws IOException { this.a(sectorOffset, data, dataLength); } // Paper - OBFHELPER - private void a(int i, byte[] abyte, int j) throws IOException { - this.b.seek((long) (i * 4096)); -- this.b.writeInt(j + 1); -- this.b.writeByte(2); -+ this.writeIntAndByte(j + 1, (byte)2); // Paper - Avoid 4 io write calls - this.b.write(abyte, 0, j); - } - -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - return this.getOffset(chunkcoordintpair) != 0; - } - -+ private void updateChunkHeader(ChunkCoordIntPair chunkcoordintpair, final int offset) throws IOException { this.a(chunkcoordintpair, offset); } // Paper - OBFHELPER - private void a(ChunkCoordIntPair chunkcoordintpair, int i) throws IOException { - int j = this.f(chunkcoordintpair); - -- this.c[j] = i; -+ //this.c[j] = i; // Paper - move this to after the write - this.b.seek((long) (j * 4)); -- this.b.writeInt(i); -+ this.writeInt(i); // Paper - Avoid 3 io write calls -+ this.c[j] = i; // Paper - move this to after the write - } - - private int f(ChunkCoordIntPair chunkcoordintpair) { - return chunkcoordintpair.j() + chunkcoordintpair.k() * 32; - } - -+ private final void updateChunkTime(ChunkCoordIntPair chunkPos, final int time) throws IOException { this.b(chunkPos, time); } // Paper - OBFHELPER - private void b(ChunkCoordIntPair chunkcoordintpair, int i) throws IOException { - int j = this.f(chunkcoordintpair); - -- this.d[j] = i; -+ //this.d[j] = i; // Paper - move this to after the write - this.b.seek((long) (4096 + j * 4)); -- this.b.writeInt(i); -+ this.writeInt(i); // Paper - Avoid 3 io write calls -+ this.d[j] = i; // Paper - move this to after the write - } - - public void close() throws IOException { -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { - } - - // Paper start -+ private static final boolean FLUSH_ON_SAVE = Boolean.getBoolean("paper.flush-on-save"); -+ private void syncRegionFile() throws IOException { -+ if (!FLUSH_ON_SAVE) { -+ return; -+ } -+ this.getDataFile().getFD().sync(); // rethrow exception as we want to avoid corrupting a regionfile -+ } -+ -+ private final java.nio.ByteBuffer scratchBuffer = java.nio.ByteBuffer.allocate(8); -+ -+ private void writeInt(final int value) throws IOException { -+ synchronized (this.scratchBuffer) { -+ this.scratchBuffer.putInt(0, value); -+ this.getDataFile().write(this.scratchBuffer.array(), 0, 4); -+ } -+ } -+ -+ // writes v1 then v2 -+ private void writeIntAndByte(final int v1, final byte v2) throws IOException { -+ synchronized (this.scratchBuffer) { -+ this.scratchBuffer.putInt(0, v1); -+ this.scratchBuffer.put(4, v2); -+ this.getDataFile().write(this.scratchBuffer.array(), 0, 5); -+ } -+ } -+ -+ private void writeChunk(final ChunkCoordIntPair chunk, final int chunkHeaderData, -+ final int chunkOffset, final byte[] chunkData, final int chunkDataLength) throws IOException { -+ this.writeChunkData(chunkOffset, chunkData, chunkDataLength); -+ this.syncRegionFile(); // Sync is required to ensure the previous data is written successfully -+ this.updateChunkTime(chunk, (int)(SystemUtils.getTimeMillis() / 1000L)); -+ this.updateChunkHeader(chunk, chunkHeaderData); -+ this.syncRegionFile(); // Ensure header changes go through -+ } -+ - public synchronized void deleteChunk(int j1) { - backup(); - int k = offsets[j1]; --- \ No newline at end of file diff --git a/Spigot-Server-Patches/Make-shield-blocking-delay-configurable.patch b/Spigot-Server-Patches/Make-shield-blocking-delay-configurable.patch index acf3695fdd..878a540128 100644 --- a/Spigot-Server-Patches/Make-shield-blocking-delay-configurable.patch +++ b/Spigot-Server-Patches/Make-shield-blocking-delay-configurable.patch @@ -19,7 +19,7 @@ index da10550030..182ac2e7f6 100644 + } } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 72adeb7271..a578dec9db 100644 +index 74c1f7c447..a873685e47 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 { @@ -48,7 +48,7 @@ index 72adeb7271..a578dec9db 100644 + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 42cc158824..513b3fac7f 100644 +index 4cbe1ec22c..06cc48a1dc 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/Make-the-default-permission-message-configurable.patch b/Spigot-Server-Patches/Make-the-default-permission-message-configurable.patch index 93ed980613..93c726b3e7 100644 --- a/Spigot-Server-Patches/Make-the-default-permission-message-configurable.patch +++ b/Spigot-Server-Patches/Make-the-default-permission-message-configurable.patch @@ -29,7 +29,7 @@ index 8feb0efdcd..81987e4ad9 100644 private static void savePlayerData() { savePlayerData = getBoolean("settings.save-player-data", savePlayerData); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 145de4fe6e..12dbdbf1b8 100644 +index dfa78653aa..b89486beb1 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/Mark-entities-as-being-ticked-when-notifying-navigat.patch b/Spigot-Server-Patches/Mark-entities-as-being-ticked-when-notifying-navigat.patch index 4cbadc4a1c..de399e85e9 100644 --- a/Spigot-Server-Patches/Mark-entities-as-being-ticked-when-notifying-navigat.patch +++ b/Spigot-Server-Patches/Mark-entities-as-being-ticked-when-notifying-navigat.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mark entities as being ticked when notifying navigation diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 7faa5dd84..451ad4f32 100644 +index 7faa5dd84a..451ad4f32b 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/Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch b/Spigot-Server-Patches/Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch index 28e9414c88..c5fb553b48 100644 --- a/Spigot-Server-Patches/Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch +++ b/Spigot-Server-Patches/Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch @@ -17,7 +17,7 @@ This should fully solve all of the issues around it so that only natural influences natural spawns. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 929f5c303..ff520d9e8 100644 +index 929f5c3031..ff520d9e86 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 { @@ -38,7 +38,7 @@ index 929f5c303..ff520d9e8 100644 public boolean asynchronous; public EngineMode engineMode; diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 4148325a2..7faa5dd84 100644 +index 4148325a26..7faa5dd84a 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/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch b/Spigot-Server-Patches/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch index e4dacf6b03..d64acdfe49 100644 --- a/Spigot-Server-Patches/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch +++ b/Spigot-Server-Patches/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch @@ -32,7 +32,7 @@ index ef392f5fe8..227fe073fd 100644 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 980284c3e9..0740737672 100644 +index 55d10058f5..fe50d4ff71 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 0 && this.a == 0.0F) { this.a(SoundEffects.BLOCK_CHEST_OPEN); } diff --git a/Spigot-Server-Patches/Optimize-UserCache-Thread-Safe.patch b/Spigot-Server-Patches/Optimize-UserCache-Thread-Safe.patch index f517cae042..2994d24814 100644 --- a/Spigot-Server-Patches/Optimize-UserCache-Thread-Safe.patch +++ b/Spigot-Server-Patches/Optimize-UserCache-Thread-Safe.patch @@ -10,7 +10,7 @@ Additionally, move Saving of the User cache to be done async, incase the user never changed the default setting for Spigot's save on stop only. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9562fde4c..842116da7 100644 +index 17b9e9a31d..6a2933f4ff 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: Mon, 5 Aug 2019 08:24:01 -0700 +Subject: [PATCH] Preserve old flush on save flag for reliable regionfiles + +Originally this patch was in paper + +diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java +index e6e412b7c1..b4c191d538 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 { + } + + // Spigot start - Make region files reliable +- private static final boolean FLUSH_ON_SAVE = Boolean.getBoolean("spigot.flush-on-save"); ++ private static final boolean FLUSH_ON_SAVE = Boolean.getBoolean("spigot.flush-on-save") || Boolean.getBoolean("paper.flush-on-save"); // Paper - preserve old flag + private void syncRegionFile() throws IOException { + if (!FLUSH_ON_SAVE) { + return; +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Properly-handle-async-calls-to-restart-the-server.patch b/Spigot-Server-Patches/Properly-handle-async-calls-to-restart-the-server.patch index a927b59874..6a6177b1a2 100644 --- a/Spigot-Server-Patches/Properly-handle-async-calls-to-restart-the-server.patch +++ b/Spigot-Server-Patches/Properly-handle-async-calls-to-restart-the-server.patch @@ -30,7 +30,7 @@ will have plugins and worlds saving to the disk has a high potential to result in corruption/dataloss. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 842116da7..7f6c3d4f6 100644 +index 6a2933f4ff..f621350ea6 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 e; + private final List e; // PAIL freeSectors @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { this.e.set(1, false); this.b.seek(0L); diff --git a/Spigot-Server-Patches/Server-Tick-Events.patch b/Spigot-Server-Patches/Server-Tick-Events.patch index 3a75c364dd..17461e8e4d 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 7959fba8a8..d72c02680c 100644 +index aec871dd24..35c5d38c21 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 IAsyncTaskHandlerReentrantorg.ow2.asm asm diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index f8fa3f78e7..118d90242e 100644 +index 92d0aa6d66..c6eb88c34b 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/Use-TerminalConsoleAppender-for-console-improvements.patch b/Spigot-Server-Patches/Use-TerminalConsoleAppender-for-console-improvements.patch index c2d9839c18..ca8505ac45 100644 --- a/Spigot-Server-Patches/Use-TerminalConsoleAppender-for-console-improvements.patch +++ b/Spigot-Server-Patches/Use-TerminalConsoleAppender-for-console-improvements.patch @@ -143,7 +143,7 @@ index 0000000000..685deaa0e5 + +} diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index f2c65e40a1..f8fa3f78e7 100644 +index 895049287c..92d0aa6d66 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 @@ -185,7 +185,7 @@ index f2c65e40a1..f8fa3f78e7 100644 System.setOut(new PrintStream(new LoggerOutputStream(logger, Level.INFO), true)); System.setErr(new PrintStream(new LoggerOutputStream(logger, Level.WARN), true)); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 43319f1061..6c2b050da3 100644 +index f621350ea6..8fcffc9fa3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ import org.apache.commons.lang3.Validate; @@ -258,7 +258,7 @@ index d23e4e5e3d..6a77707983 100644 this.k = new GameProfileBanList(PlayerList.a); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f477f8943f..42e0f5ec86 100644 +index 8e6f23d278..4c94e85e46 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ import java.util.function.Consumer; diff --git a/Spigot-Server-Patches/Use-a-Queue-for-Queueing-Commands.patch b/Spigot-Server-Patches/Use-a-Queue-for-Queueing-Commands.patch index 99a1a69ada..7af34e0057 100644 --- a/Spigot-Server-Patches/Use-a-Queue-for-Queueing-Commands.patch +++ b/Spigot-Server-Patches/Use-a-Queue-for-Queueing-Commands.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use a Queue for Queueing Commands Lists are bad as Queues mmmkay. diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 118d90242e..6da54a64bd 100644 +index c6eb88c34b..5bc19cd081 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/Use-getChunkIfLoadedImmediately-in-places.patch b/Spigot-Server-Patches/Use-getChunkIfLoadedImmediately-in-places.patch index 57de121e5c..504ed17625 100644 --- a/Spigot-Server-Patches/Use-getChunkIfLoadedImmediately-in-places.patch +++ b/Spigot-Server-Patches/Use-getChunkIfLoadedImmediately-in-places.patch @@ -21,7 +21,7 @@ index 55c73ffcaa..e8def7f812 100644 // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 8d48495eb7..9cf6cc53f4 100644 +index 4187ba05bd..e7b8b2e992 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/fixup-Optimize-TileEntity-Ticking.patch b/Spigot-Server-Patches/fixup-Optimize-TileEntity-Ticking.patch deleted file mode 100644 index cc70f3c866..0000000000 --- a/Spigot-Server-Patches/fixup-Optimize-TileEntity-Ticking.patch +++ /dev/null @@ -1,20 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Spottedleaf -Date: Tue, 23 Jul 2019 21:11:30 -0700 -Subject: [PATCH] fixup! Optimize TileEntity Ticking - - -diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java -index 6c10f0eb89..4aa56e50e8 100644 ---- a/src/main/java/net/minecraft/server/TileEntityChest.java -+++ b/src/main/java/net/minecraft/server/TileEntityChest.java -@@ -0,0 +0,0 @@ public class TileEntityChest extends TileEntityLootable { // Paper - Remove ITic - int j = this.position.getY(); - int k = this.position.getZ(); - -- this.viewingCount = a(this.world, this, this.j, i, j, k, this.viewingCount); -+ //this.viewingCount = a(this.world, this, this.j, i, j, k, this.viewingCount); // Paper - check is faulty given our logic is called before active container set - this.b = this.a; - float f = 0.1F; - --- \ No newline at end of file diff --git a/Spigot-Server-Patches/force-entity-dismount-during-teleportation.patch b/Spigot-Server-Patches/force-entity-dismount-during-teleportation.patch index 19671bcbf7..6bb3bc23b5 100644 --- a/Spigot-Server-Patches/force-entity-dismount-during-teleportation.patch +++ b/Spigot-Server-Patches/force-entity-dismount-during-teleportation.patch @@ -20,7 +20,7 @@ this is going to be the best soultion all around. Improvements/suggestions welcome! diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 19bbcc043..75da08596 100644 +index 19bbcc043f..75da085969 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 @@ -72,7 +72,7 @@ index 19bbcc043..75da08596 100644 if (event.isCancelled()) { return false; diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 8887c24a9..5d3e48ba6 100644 +index 8887c24a9b..5d3e48ba61 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 { @@ -91,7 +91,7 @@ index 8887c24a9..5d3e48ba6 100644 } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 37ff76486..93ee1feb9 100644 +index 1e53af2cce..d23968a7c9 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 { @@ -112,7 +112,7 @@ index 37ff76486..93ee1feb9 100644 this.B(entity); } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 965f1c279..0a6fdd383 100644 +index 965f1c279b..0a6fdd383f 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/getPlayerUniqueId-API.patch b/Spigot-Server-Patches/getPlayerUniqueId-API.patch index e9b1a61056..73242d7bcc 100644 --- a/Spigot-Server-Patches/getPlayerUniqueId-API.patch +++ b/Spigot-Server-Patches/getPlayerUniqueId-API.patch @@ -9,7 +9,7 @@ In Offline Mode, will return an Offline UUID This is a more performant way to obtain a UUID for a name than loading an OfflinePlayer diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 66d4dccedd..208556355c 100644 +index 3938adf7c7..8b5765e619 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/handle-NaN-health-absorb-values-and-repair-bad-data.patch b/Spigot-Server-Patches/handle-NaN-health-absorb-values-and-repair-bad-data.patch index 02dcd3e5b3..cc7392da9a 100644 --- a/Spigot-Server-Patches/handle-NaN-health-absorb-values-and-repair-bad-data.patch +++ b/Spigot-Server-Patches/handle-NaN-health-absorb-values-and-repair-bad-data.patch @@ -5,7 +5,7 @@ Subject: [PATCH] handle NaN health/absorb values and repair bad data diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 645b7f605c..18e152b8fb 100644 +index adacb1847c..217fd0c2dd 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 { @@ -44,7 +44,7 @@ index 645b7f605c..18e152b8fb 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2e0621b889..d0d61fd290 100644 +index b6a93c4f4c..427f392f9a 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/improve-CraftWorld-isChunkLoaded.patch b/Spigot-Server-Patches/improve-CraftWorld-isChunkLoaded.patch index 4b3a2246b7..a5d533e78c 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 cbe9d5628e..9857914325 100644 +index 74f7b046ac..f613ae1da4 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 80b81cd215..4dd675047e 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 de11a91af..4d3c6c6b4 100644 +index de11a91af6..4d3c6c6b47 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 de11a91af..4d3c6c6b4 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index ee8f80174..2003522d9 100644 +index ee8f801745..2003522d96 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 ee8f80174..2003522d9 100644 private long t; @Nullable diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 9765eaf24..5fabfe87c 100644 +index cb78e14a05..ca5963b11a 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 { @@ -60,9 +60,9 @@ index 9765eaf24..5fabfe87c 100644 + @Override public void close() throws IOException { - this.save(true); + // CraftBukkit start diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 380c3663a..6eef4592a 100644 +index c58f6f50d3..2293360407 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/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 493770bf6..2be6fa0f0 100644 +index 493770bf68..2be6fa0f07 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 { @@ -147,7 +147,7 @@ index 493770bf6..2be6fa0f0 100644 if (flag) { List list = (List) this.visibleChunks.values().stream().filter(PlayerChunk::hasBeenLoaded).peek(PlayerChunk::m).collect(Collectors.toList()); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 1003ea50d..4148325a2 100644 +index 1003ea50d3..4148325a26 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 51dc381bc0..a45645dd20 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 3b282a18a..636a0bc4e 100644 +index 3b282a18a2..2b4a849f48 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/remove-null-possibility-for-getServer-singleton.patch b/Spigot-Server-Patches/remove-null-possibility-for-getServer-singleton.patch index c6c5fe10be..da4c6d47b4 100644 --- a/Spigot-Server-Patches/remove-null-possibility-for-getServer-singleton.patch +++ b/Spigot-Server-Patches/remove-null-possibility-for-getServer-singleton.patch @@ -6,7 +6,7 @@ Subject: [PATCH] remove null possibility for getServer singleton to stop IDE complaining about potential NPE diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 815b8dc243..5a04e6d72e 100644 +index e3bd80c934..17b9e9a31d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ import org.spigotmc.SlackActivityAccountant; // Spigot diff --git a/work/Bukkit b/work/Bukkit index 3d9d2efcea..bde198c9e9 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 3d9d2efcea61cf3dba713aa989ae7a362db68458 +Subproject commit bde198c9e927cc58b4773dc343825f15f7a8add6 diff --git a/work/CraftBukkit b/work/CraftBukkit index 3e7b3862c7..1ec1b05e2a 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 3e7b3862c7d1c718a47d1d5e54de8e3ea5845bbf +Subproject commit 1ec1b05e2a808326e9acbfcc3ffbdbdb4d4328c7 diff --git a/work/Spigot b/work/Spigot index 1981d553d1..e5b1b5dbb1 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 1981d553d1119cd80acb63db4d5612bc16179cb4 +Subproject commit e5b1b5dbb1c8546af20b21db92bd07a0029d4030