aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNassim Jahnke <[email protected]>2024-12-03 19:05:31 +0100
committerNassim Jahnke <[email protected]>2024-12-03 19:05:31 +0100
commitab9a3db5ba76384531ad52299344dea588a367b2 (patch)
tree7e91be513aa8e62596b332a159691d67f79323c7
parent172c7dc7e7ee96fceaa2586d9cd9d892184f9a39 (diff)
downloadPaper-ab9a3db5ba76384531ad52299344dea588a367b2.tar.gz
Paper-ab9a3db5ba76384531ad52299344dea588a367b2.zip
More work
-rw-r--r--patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch4
-rw-r--r--patches/server/0101-Avoid-blocking-on-Network-Manager-creation.patch (renamed from patches/unapplied/server/0101-Avoid-blocking-on-Network-Manager-creation.patch)0
-rw-r--r--patches/server/0102-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch (renamed from patches/unapplied/server/0102-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch)0
-rw-r--r--patches/server/0103-Add-setting-for-proxy-online-mode-status.patch (renamed from patches/unapplied/server/0103-Add-setting-for-proxy-online-mode-status.patch)0
-rw-r--r--patches/server/0104-Optimise-BlockState-s-hashCode-equals.patch (renamed from patches/unapplied/server/0104-Optimise-BlockState-s-hashCode-equals.patch)0
-rw-r--r--patches/server/0105-Configurable-packet-in-spam-threshold.patch (renamed from patches/unapplied/server/0105-Configurable-packet-in-spam-threshold.patch)4
-rw-r--r--patches/server/0106-Configurable-flying-kick-messages.patch (renamed from patches/unapplied/server/0106-Configurable-flying-kick-messages.patch)6
-rw-r--r--patches/server/0107-Add-EntityZapEvent.patch (renamed from patches/unapplied/server/0107-Add-EntityZapEvent.patch)4
-rw-r--r--patches/server/0108-Filter-bad-block-entity-nbt-data-from-falling-blocks.patch (renamed from patches/unapplied/server/0108-Filter-bad-block-entity-nbt-data-from-falling-blocks.patch)2
-rw-r--r--patches/server/0109-Cache-user-authenticator-threads.patch (renamed from patches/unapplied/server/0109-Cache-user-authenticator-threads.patch)0
-rw-r--r--patches/server/0110-Allow-Reloading-of-Command-Aliases.patch (renamed from patches/unapplied/server/0110-Allow-Reloading-of-Command-Aliases.patch)0
-rw-r--r--patches/server/0111-Add-source-to-PlayerExpChangeEvent.patch (renamed from patches/unapplied/server/0111-Add-source-to-PlayerExpChangeEvent.patch)4
-rw-r--r--patches/server/0112-Add-ProjectileCollideEvent.patch (renamed from patches/unapplied/server/0112-Add-ProjectileCollideEvent.patch)0
-rw-r--r--patches/server/0113-Prevent-Pathfinding-out-of-World-Border.patch (renamed from patches/unapplied/server/0113-Prevent-Pathfinding-out-of-World-Border.patch)0
-rw-r--r--patches/server/0114-Optimize-Level.hasChunkAt-BlockPosition-Z.patch (renamed from patches/unapplied/server/0114-Optimize-Level.hasChunkAt-BlockPosition-Z.patch)4
-rw-r--r--patches/server/0115-Bound-Treasure-Maps-to-World-Border.patch (renamed from patches/unapplied/server/0115-Bound-Treasure-Maps-to-World-Border.patch)4
-rw-r--r--patches/server/0116-Configurable-Cartographer-Treasure-Maps.patch (renamed from patches/unapplied/server/0116-Configurable-Cartographer-Treasure-Maps.patch)4
-rw-r--r--patches/server/0117-Add-API-methods-to-control-if-armor-stands-can-move.patch (renamed from patches/unapplied/server/0117-Add-API-methods-to-control-if-armor-stands-can-move.patch)0
-rw-r--r--patches/server/0118-String-based-Action-Bar-API.patch (renamed from patches/unapplied/server/0118-String-based-Action-Bar-API.patch)2
-rw-r--r--patches/server/0119-Properly-fix-item-duplication-bug.patch (renamed from patches/unapplied/server/0119-Properly-fix-item-duplication-bug.patch)4
-rw-r--r--patches/server/0120-Firework-API-s.patch (renamed from patches/unapplied/server/0120-Firework-API-s.patch)4
-rw-r--r--patches/server/0121-PlayerTeleportEndGatewayEvent.patch (renamed from patches/unapplied/server/0121-PlayerTeleportEndGatewayEvent.patch)4
-rw-r--r--patches/server/0122-Provide-E-TE-Chunk-count-stat-methods.patch (renamed from patches/unapplied/server/0122-Provide-E-TE-Chunk-count-stat-methods.patch)6
-rw-r--r--patches/server/0123-Enforce-Sync-Player-Saves.patch (renamed from patches/unapplied/server/0123-Enforce-Sync-Player-Saves.patch)0
-rw-r--r--patches/server/0124-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch (renamed from patches/unapplied/server/0124-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch)44
-rw-r--r--patches/server/0125-Cap-Entity-Collisions.patch (renamed from patches/unapplied/server/0125-Cap-Entity-Collisions.patch)6
-rw-r--r--patches/server/0126-Remove-CraftScheduler-Async-Task-Debugger.patch (renamed from patches/unapplied/server/0126-Remove-CraftScheduler-Async-Task-Debugger.patch)0
-rw-r--r--patches/server/0127-Properly-handle-async-calls-to-restart-the-server.patch (renamed from patches/unapplied/server/0127-Properly-handle-async-calls-to-restart-the-server.patch)2
-rw-r--r--patches/server/0128-Add-option-to-make-parrots-stay-on-shoulders-despite.patch (renamed from patches/unapplied/server/0128-Add-option-to-make-parrots-stay-on-shoulders-despite.patch)20
-rw-r--r--patches/server/0129-Add-configuration-option-to-prevent-player-names-fro.patch (renamed from patches/unapplied/server/0129-Add-configuration-option-to-prevent-player-names-fro.patch)0
-rw-r--r--patches/server/0130-provide-a-configurable-option-to-disable-creeper-lin.patch (renamed from patches/unapplied/server/0130-provide-a-configurable-option-to-disable-creeper-lin.patch)0
-rw-r--r--patches/server/0131-Item-canEntityPickup.patch (renamed from patches/unapplied/server/0131-Item-canEntityPickup.patch)4
-rw-r--r--patches/server/0132-PlayerPickupItemEvent-setFlyAtPlayer.patch (renamed from patches/unapplied/server/0132-PlayerPickupItemEvent-setFlyAtPlayer.patch)0
-rw-r--r--patches/server/0133-PlayerAttemptPickupItemEvent.patch (renamed from patches/unapplied/server/0133-PlayerAttemptPickupItemEvent.patch)0
-rw-r--r--patches/server/0134-Do-not-submit-profile-lookups-to-worldgen-threads.patch (renamed from patches/unapplied/server/0134-Do-not-submit-profile-lookups-to-worldgen-threads.patch)2
-rw-r--r--patches/server/0135-Basic-PlayerProfile-API.patch (renamed from patches/unapplied/server/0135-Basic-PlayerProfile-API.patch)4
-rw-r--r--patches/server/0136-Add-UnknownCommandEvent.patch (renamed from patches/unapplied/server/0136-Add-UnknownCommandEvent.patch)0
-rw-r--r--patches/server/0137-Shoulder-Entities-Release-API.patch (renamed from patches/unapplied/server/0137-Shoulder-Entities-Release-API.patch)6
-rw-r--r--patches/server/0138-Profile-Lookup-Events.patch (renamed from patches/unapplied/server/0138-Profile-Lookup-Events.patch)0
-rw-r--r--patches/server/0139-Block-player-logins-during-server-shutdown.patch (renamed from patches/unapplied/server/0139-Block-player-logins-during-server-shutdown.patch)0
-rw-r--r--patches/server/0140-Entity-fromMobSpawner.patch (renamed from patches/unapplied/server/0140-Entity-fromMobSpawner.patch)8
-rw-r--r--patches/server/0141-Improve-the-Saddle-API-for-Horses.patch (renamed from patches/unapplied/server/0141-Improve-the-Saddle-API-for-Horses.patch)0
-rw-r--r--patches/server/0142-ensureServerConversions-API.patch (renamed from patches/unapplied/server/0142-ensureServerConversions-API.patch)4
-rw-r--r--patches/server/0143-Implement-getI18NDisplayName.patch (renamed from patches/unapplied/server/0143-Implement-getI18NDisplayName.patch)4
-rw-r--r--patches/server/0144-ProfileWhitelistVerifyEvent.patch (renamed from patches/unapplied/server/0144-ProfileWhitelistVerifyEvent.patch)0
-rw-r--r--patches/server/0145-Fix-this-stupid-bullshit.patch (renamed from patches/unapplied/server/0145-Fix-this-stupid-bullshit.patch)10
-rw-r--r--patches/server/0146-LivingEntity-setKiller.patch (renamed from patches/unapplied/server/0146-LivingEntity-setKiller.patch)2
-rw-r--r--patches/server/0147-Ocelot-despawns-should-honor-nametags-and-leash.patch (renamed from patches/unapplied/server/0147-Ocelot-despawns-should-honor-nametags-and-leash.patch)0
-rw-r--r--patches/server/0148-Reset-spawner-timer-when-spawner-event-is-cancelled.patch (renamed from patches/unapplied/server/0148-Reset-spawner-timer-when-spawner-event-is-cancelled.patch)0
-rw-r--r--patches/server/0149-Allow-specifying-a-custom-authentication-servers-dow.patch (renamed from patches/unapplied/server/0149-Allow-specifying-a-custom-authentication-servers-dow.patch)0
-rw-r--r--patches/server/0150-Add-PlayerJumpEvent.patch (renamed from patches/unapplied/server/0150-Add-PlayerJumpEvent.patch)4
-rw-r--r--patches/server/0151-handle-ServerboundKeepAlivePacket-async.patch (renamed from patches/unapplied/server/0151-handle-ServerboundKeepAlivePacket-async.patch)0
-rw-r--r--patches/server/0152-Expose-client-protocol-version-and-virtual-host.patch (renamed from patches/unapplied/server/0152-Expose-client-protocol-version-and-virtual-host.patch)4
-rw-r--r--patches/server/0153-revert-serverside-behavior-of-keepalives.patch (renamed from patches/unapplied/server/0153-revert-serverside-behavior-of-keepalives.patch)0
-rw-r--r--patches/server/0154-Send-attack-SoundEffects-only-to-players-who-can-see.patch (renamed from patches/unapplied/server/0154-Send-attack-SoundEffects-only-to-players-who-can-see.patch)12
-rw-r--r--patches/server/0155-Add-PlayerArmorChangeEvent.patch (renamed from patches/unapplied/server/0155-Add-PlayerArmorChangeEvent.patch)4
-rw-r--r--patches/server/0156-Prevent-logins-from-being-processed-when-the-player-.patch (renamed from patches/unapplied/server/0156-Prevent-logins-from-being-processed-when-the-player-.patch)0
-rw-r--r--patches/server/0157-Fix-MC-117075-Block-entity-unload-lag-spike.patch (renamed from patches/unapplied/server/0157-Fix-MC-117075-Block-entity-unload-lag-spike.patch)6
-rw-r--r--patches/server/0158-use-CB-BlockState-implementations-for-captured-block.patch (renamed from patches/unapplied/server/0158-use-CB-BlockState-implementations-for-captured-block.patch)10
-rw-r--r--patches/server/0159-API-to-get-a-BlockState-without-a-snapshot.patch (renamed from patches/unapplied/server/0159-API-to-get-a-BlockState-without-a-snapshot.patch)8
-rw-r--r--patches/server/0160-AsyncTabCompleteEvent.patch (renamed from patches/unapplied/server/0160-AsyncTabCompleteEvent.patch)4
-rw-r--r--patches/server/0161-PlayerPickupExperienceEvent.patch (renamed from patches/unapplied/server/0161-PlayerPickupExperienceEvent.patch)4
-rw-r--r--patches/server/0162-Ability-to-apply-mending-to-XP-API.patch (renamed from patches/unapplied/server/0162-Ability-to-apply-mending-to-XP-API.patch)2
-rw-r--r--patches/server/0163-PlayerNaturallySpawnCreaturesEvent.patch (renamed from patches/unapplied/server/0163-PlayerNaturallySpawnCreaturesEvent.patch)4
-rw-r--r--patches/server/0164-Add-setPlayerProfile-API-for-Skulls.patch (renamed from patches/unapplied/server/0164-Add-setPlayerProfile-API-for-Skulls.patch)0
-rw-r--r--patches/server/0165-PreCreatureSpawnEvent.patch (renamed from patches/unapplied/server/0165-PreCreatureSpawnEvent.patch)24
-rw-r--r--patches/server/0166-Fill-Profile-Property-Events.patch (renamed from patches/unapplied/server/0166-Fill-Profile-Property-Events.patch)0
-rw-r--r--patches/server/0167-Add-PlayerAdvancementCriterionGrantEvent.patch (renamed from patches/unapplied/server/0167-Add-PlayerAdvancementCriterionGrantEvent.patch)0
-rw-r--r--patches/server/0168-Add-ArmorStand-Item-Meta.patch (renamed from patches/unapplied/server/0168-Add-ArmorStand-Item-Meta.patch)0
-rw-r--r--patches/server/0169-Extend-Player-Interact-cancellation.patch (renamed from patches/unapplied/server/0169-Extend-Player-Interact-cancellation.patch)0
-rw-r--r--patches/server/0170-Tameable-getOwnerUniqueId-API.patch (renamed from patches/unapplied/server/0170-Tameable-getOwnerUniqueId-API.patch)0
-rw-r--r--patches/server/0171-Toggleable-player-crits.patch (renamed from patches/unapplied/server/0171-Toggleable-player-crits.patch)4
-rw-r--r--patches/server/0172-Disable-Explicit-Network-Manager-Flushing.patch (renamed from patches/unapplied/server/0172-Disable-Explicit-Network-Manager-Flushing.patch)2
-rw-r--r--patches/server/0173-Implement-extended-PaperServerListPingEvent.patch (renamed from patches/unapplied/server/0173-Implement-extended-PaperServerListPingEvent.patch)2
-rw-r--r--patches/server/0174-Add-more-fields-to-AsyncPreLoginEvent.patch (renamed from patches/unapplied/server/0174-Add-more-fields-to-AsyncPreLoginEvent.patch)0
-rw-r--r--patches/server/0175-Player.setPlayerProfile-API.patch (renamed from patches/unapplied/server/0175-Player.setPlayerProfile-API.patch)2
-rw-r--r--patches/server/0176-getPlayerUniqueId-API.patch (renamed from patches/unapplied/server/0176-getPlayerUniqueId-API.patch)0
-rw-r--r--patches/server/0177-Improved-Async-Task-Scheduler.patch (renamed from patches/unapplied/server/0177-Improved-Async-Task-Scheduler.patch)0
-rw-r--r--patches/server/0178-Make-legacy-ping-handler-more-reliable.patch (renamed from patches/unapplied/server/0178-Make-legacy-ping-handler-more-reliable.patch)0
-rw-r--r--patches/server/0179-Call-PaperServerListPingEvent-for-legacy-pings.patch (renamed from patches/unapplied/server/0179-Call-PaperServerListPingEvent-for-legacy-pings.patch)0
-rw-r--r--patches/server/0180-Flag-to-disable-the-channel-limit.patch (renamed from patches/unapplied/server/0180-Flag-to-disable-the-channel-limit.patch)2
-rw-r--r--patches/server/0181-Add-openSign-method-to-HumanEntity.patch (renamed from patches/unapplied/server/0181-Add-openSign-method-to-HumanEntity.patch)0
-rw-r--r--patches/server/0182-Configurable-sprint-interruption-on-attack.patch (renamed from patches/unapplied/server/0182-Configurable-sprint-interruption-on-attack.patch)4
-rw-r--r--patches/server/0183-EndermanEscapeEvent.patch (renamed from patches/unapplied/server/0183-EndermanEscapeEvent.patch)10
-rw-r--r--patches/server/0184-Enderman.teleportRandomly.patch (renamed from patches/unapplied/server/0184-Enderman.teleportRandomly.patch)0
-rw-r--r--patches/server/0185-Expand-World.spawnParticle-API-and-add-Builder.patch (renamed from patches/unapplied/server/0185-Expand-World.spawnParticle-API-and-add-Builder.patch)20
-rw-r--r--patches/server/0186-Fix-exploit-that-allowed-colored-signs-to-be-created.patch (renamed from patches/unapplied/server/0186-Fix-exploit-that-allowed-colored-signs-to-be-created.patch)2
-rw-r--r--patches/server/0187-EndermanAttackPlayerEvent.patch (renamed from patches/unapplied/server/0187-EndermanAttackPlayerEvent.patch)14
-rw-r--r--patches/server/0188-WitchConsumePotionEvent.patch (renamed from patches/unapplied/server/0188-WitchConsumePotionEvent.patch)0
-rw-r--r--patches/server/0189-WitchThrowPotionEvent.patch (renamed from patches/unapplied/server/0189-WitchThrowPotionEvent.patch)0
-rw-r--r--patches/server/0190-WitchReadyPotionEvent.patch (renamed from patches/unapplied/server/0190-WitchReadyPotionEvent.patch)0
-rw-r--r--patches/server/0191-ItemStack-getMaxItemUseDuration.patch (renamed from patches/unapplied/server/0191-ItemStack-getMaxItemUseDuration.patch)0
-rw-r--r--patches/server/0192-Add-EntityTeleportEndGatewayEvent.patch (renamed from patches/unapplied/server/0192-Add-EntityTeleportEndGatewayEvent.patch)4
-rw-r--r--patches/server/0193-Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch (renamed from patches/unapplied/server/0193-Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch)0
-rw-r--r--patches/server/0194-Improve-CraftEntity-and-CraftPlayer-equals-and-hashC.patch (renamed from patches/unapplied/server/0194-Improve-CraftEntity-and-CraftPlayer-equals-and-hashC.patch)2
-rw-r--r--patches/server/0195-Configurable-LootPool-luck-formula.patch (renamed from patches/unapplied/server/0195-Configurable-LootPool-luck-formula.patch)0
-rw-r--r--patches/server/0196-Print-Error-details-when-failing-to-save-player-data.patch (renamed from patches/unapplied/server/0196-Print-Error-details-when-failing-to-save-player-data.patch)0
-rw-r--r--patches/server/0197-Make-shield-blocking-delay-configurable.patch (renamed from patches/unapplied/server/0197-Make-shield-blocking-delay-configurable.patch)6
-rw-r--r--patches/server/0198-Improve-EntityShootBowEvent.patch (renamed from patches/unapplied/server/0198-Improve-EntityShootBowEvent.patch)4
-rw-r--r--patches/server/0199-PlayerReadyArrowEvent.patch (renamed from patches/unapplied/server/0199-PlayerReadyArrowEvent.patch)4
-rw-r--r--patches/server/0200-Add-entity-knockback-events.patch (renamed from patches/unapplied/server/0200-Add-entity-knockback-events.patch)40
-rw-r--r--patches/server/0201-Expand-Explosions-API.patch (renamed from patches/unapplied/server/0201-Expand-Explosions-API.patch)10
-rw-r--r--patches/server/0202-LivingEntity-Active-Item-API.patch (renamed from patches/unapplied/server/0202-LivingEntity-Active-Item-API.patch)2
-rw-r--r--patches/server/0203-RangedEntity-API.patch (renamed from patches/unapplied/server/0203-RangedEntity-API.patch)0
-rw-r--r--patches/server/0204-Add-config-to-disable-ender-dragon-legacy-check.patch (renamed from patches/unapplied/server/0204-Add-config-to-disable-ender-dragon-legacy-check.patch)0
-rw-r--r--patches/server/0205-Implement-World.getEntity-UUID-API.patch (renamed from patches/unapplied/server/0205-Implement-World.getEntity-UUID-API.patch)2
-rw-r--r--patches/server/0206-InventoryCloseEvent-Reason-API.patch (renamed from patches/unapplied/server/0206-InventoryCloseEvent-Reason-API.patch)30
-rw-r--r--patches/server/0207-Vex-get-setSummoner-API.patch (renamed from patches/unapplied/server/0207-Vex-get-setSummoner-API.patch)0
-rw-r--r--patches/server/0208-add-more-information-to-Entity.toString.patch (renamed from patches/unapplied/server/0208-add-more-information-to-Entity.toString.patch)4
-rw-r--r--patches/server/0209-EnderDragon-Events.patch (renamed from patches/unapplied/server/0209-EnderDragon-Events.patch)0
-rw-r--r--patches/server/0210-PlayerElytraBoostEvent.patch (renamed from patches/unapplied/server/0210-PlayerElytraBoostEvent.patch)2
-rw-r--r--patches/server/0211-PlayerLaunchProjectileEvent.patch (renamed from patches/unapplied/server/0211-PlayerLaunchProjectileEvent.patch)53
-rw-r--r--patches/server/0212-Improve-BlockPosition-inlining.patch (renamed from patches/unapplied/server/0212-Improve-BlockPosition-inlining.patch)0
-rw-r--r--patches/server/0213-Option-to-prevent-armor-stands-from-doing-entity-loo.patch (renamed from patches/unapplied/server/0213-Option-to-prevent-armor-stands-from-doing-entity-loo.patch)4
-rw-r--r--patches/server/0214-Vanished-players-don-t-have-rights.patch (renamed from patches/unapplied/server/0214-Vanished-players-don-t-have-rights.patch)10
-rw-r--r--patches/server/0215-Allow-disabling-armor-stand-ticking.patch (renamed from patches/unapplied/server/0215-Allow-disabling-armor-stand-ticking.patch)0
-rw-r--r--patches/server/0216-SkeletonHorse-Additions.patch (renamed from patches/unapplied/server/0216-SkeletonHorse-Additions.patch)0
-rw-r--r--patches/server/0217-Expand-ArmorStand-API.patch (renamed from patches/unapplied/server/0217-Expand-ArmorStand-API.patch)0
-rw-r--r--patches/server/0218-AnvilDamageEvent.patch (renamed from patches/unapplied/server/0218-AnvilDamageEvent.patch)0
-rw-r--r--patches/server/0219-Add-TNTPrimeEvent.patch (renamed from patches/unapplied/server/0219-Add-TNTPrimeEvent.patch)4
-rw-r--r--patches/server/0220-Break-up-and-make-tab-spam-limits-configurable.patch (renamed from patches/unapplied/server/0220-Break-up-and-make-tab-spam-limits-configurable.patch)8
-rw-r--r--patches/server/0221-Fix-NBT-type-issues.patch (renamed from patches/unapplied/server/0221-Fix-NBT-type-issues.patch)10
-rw-r--r--patches/server/0222-Remove-unnecessary-itemmeta-handling.patch (renamed from patches/unapplied/server/0222-Remove-unnecessary-itemmeta-handling.patch)6
-rw-r--r--patches/server/0223-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch (renamed from patches/unapplied/server/0223-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch)4
-rw-r--r--patches/server/0224-Add-Early-Warning-Feature-to-WatchDog.patch (renamed from patches/unapplied/server/0224-Add-Early-Warning-Feature-to-WatchDog.patch)2
-rw-r--r--patches/server/0225-Use-ConcurrentHashMap-in-JsonList.patch (renamed from patches/unapplied/server/0225-Use-ConcurrentHashMap-in-JsonList.patch)0
-rw-r--r--patches/server/0226-Use-a-Queue-for-Queueing-Commands.patch (renamed from patches/unapplied/server/0226-Use-a-Queue-for-Queueing-Commands.patch)0
-rw-r--r--patches/server/0227-Ability-to-get-block-entities-from-a-chunk-without-s.patch (renamed from patches/unapplied/server/0227-Ability-to-get-block-entities-from-a-chunk-without-s.patch)0
-rw-r--r--patches/server/0228-Optimize-BlockPosition-helper-methods.patch (renamed from patches/unapplied/server/0228-Optimize-BlockPosition-helper-methods.patch)4
-rw-r--r--patches/server/0229-Restore-vanilla-default-mob-spawn-range-and-water-an.patch (renamed from patches/unapplied/server/0229-Restore-vanilla-default-mob-spawn-range-and-water-an.patch)0
-rw-r--r--patches/server/0230-Slime-Pathfinder-Events.patch (renamed from patches/unapplied/server/0230-Slime-Pathfinder-Events.patch)0
-rw-r--r--patches/server/0231-Configurable-speed-for-water-flowing-over-lava.patch (renamed from patches/unapplied/server/0231-Configurable-speed-for-water-flowing-over-lava.patch)0
-rw-r--r--patches/server/0232-Optimize-CraftBlockData-Creation.patch (renamed from patches/unapplied/server/0232-Optimize-CraftBlockData-Creation.patch)8
-rw-r--r--patches/server/0233-Optimize-MappedRegistry.patch (renamed from patches/unapplied/server/0233-Optimize-MappedRegistry.patch)0
-rw-r--r--patches/server/0234-Add-PhantomPreSpawnEvent.patch (renamed from patches/unapplied/server/0234-Add-PhantomPreSpawnEvent.patch)2
-rw-r--r--patches/server/0235-Add-More-Creeper-API.patch (renamed from patches/unapplied/server/0235-Add-More-Creeper-API.patch)0
-rw-r--r--patches/server/0236-Inventory-removeItemAnySlot.patch (renamed from patches/unapplied/server/0236-Inventory-removeItemAnySlot.patch)0
-rw-r--r--patches/server/0237-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch (renamed from patches/unapplied/server/0237-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch)2
-rw-r--r--patches/server/0238-Add-ray-tracing-methods-to-LivingEntity.patch (renamed from patches/unapplied/server/0238-Add-ray-tracing-methods-to-LivingEntity.patch)6
-rw-r--r--patches/server/0239-Expose-attack-cooldown-methods-for-Player.patch (renamed from patches/unapplied/server/0239-Expose-attack-cooldown-methods-for-Player.patch)4
-rw-r--r--patches/server/0240-Improve-death-events.patch (renamed from patches/unapplied/server/0240-Improve-death-events.patch)70
-rw-r--r--patches/server/0241-Allow-chests-to-be-placed-with-NBT-data.patch31
-rw-r--r--patches/server/0242-Mob-Pathfinding-API.patch (renamed from patches/unapplied/server/0242-Mob-Pathfinding-API.patch)0
-rw-r--r--patches/server/0243-Prevent-various-interactions-from-causing-chunk-load.patch (renamed from patches/unapplied/server/0243-Prevent-various-interactions-from-causing-chunk-load.patch)8
-rw-r--r--patches/server/0244-Prevent-mob-spawning-from-loading-generating-chunks.patch (renamed from patches/unapplied/server/0244-Prevent-mob-spawning-from-loading-generating-chunks.patch)0
-rw-r--r--patches/server/0245-Implement-furnace-cook-speed-multiplier-API.patch (renamed from patches/unapplied/server/0245-Implement-furnace-cook-speed-multiplier-API.patch)43
-rw-r--r--patches/server/0246-Honor-EntityAgeable.ageLock.patch (renamed from patches/unapplied/server/0246-Honor-EntityAgeable.ageLock.patch)6
-rw-r--r--patches/server/0247-Configurable-connection-throttle-kick-message.patch (renamed from patches/unapplied/server/0247-Configurable-connection-throttle-kick-message.patch)0
-rw-r--r--patches/server/0248-Prevent-chunk-loading-from-Fluid-Flowing.patch (renamed from patches/unapplied/server/0248-Prevent-chunk-loading-from-Fluid-Flowing.patch)0
-rw-r--r--patches/server/0249-PreSpawnerSpawnEvent.patch (renamed from patches/unapplied/server/0249-PreSpawnerSpawnEvent.patch)0
-rw-r--r--patches/server/0250-Add-LivingEntity-getTargetEntity.patch (renamed from patches/unapplied/server/0250-Add-LivingEntity-getTargetEntity.patch)6
-rw-r--r--patches/server/0251-Add-sun-related-API.patch (renamed from patches/unapplied/server/0251-Add-sun-related-API.patch)2
-rw-r--r--patches/server/0252-Turtle-API.patch (renamed from patches/unapplied/server/0252-Turtle-API.patch)0
-rw-r--r--patches/server/0253-Call-player-spectator-target-events-and-improve-impl.patch (renamed from patches/unapplied/server/0253-Call-player-spectator-target-events-and-improve-impl.patch)4
-rw-r--r--patches/server/0254-Add-more-Witch-API.patch (renamed from patches/unapplied/server/0254-Add-more-Witch-API.patch)0
-rw-r--r--patches/server/0255-Check-Drowned-for-Villager-Aggression-Config.patch (renamed from patches/unapplied/server/0255-Check-Drowned-for-Villager-Aggression-Config.patch)4
-rw-r--r--patches/server/0256-Add-option-to-prevent-players-from-moving-into-unloa.patch (renamed from patches/unapplied/server/0256-Add-option-to-prevent-players-from-moving-into-unloa.patch)28
-rw-r--r--patches/unapplied/server/0241-Allow-chests-to-be-placed-with-NBT-data.patch31
158 files changed, 393 insertions, 397 deletions
diff --git a/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch b/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch
index ebcc5735fb..dece600f08 100644
--- a/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch
+++ b/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch
@@ -608,7 +608,7 @@ index 0000000000000000000000000000000000000000..a3045afbc0cc057e99189b909367b21c
+ }
+}
diff --git a/src/main/java/io/papermc/paper/util/MappingEnvironment.java b/src/main/java/io/papermc/paper/util/MappingEnvironment.java
-index 8e4229634d41a42b3d93948eebb77def7c0c72b1..4477944f632a6b3936960ee80f9d898d3b7eed19 100644
+index 8e4229634d41a42b3d93948eebb77def7c0c72b1..8511c247089aeaecb0d2dd5921f667e592c4d99e 100644
--- a/src/main/java/io/papermc/paper/util/MappingEnvironment.java
+++ b/src/main/java/io/papermc/paper/util/MappingEnvironment.java
@@ -10,6 +10,8 @@ import org.checkerframework.framework.qual.DefaultQualifier;
@@ -616,7 +616,7 @@ index 8e4229634d41a42b3d93948eebb77def7c0c72b1..4477944f632a6b3936960ee80f9d898d
@DefaultQualifier(NonNull.class)
public final class MappingEnvironment {
+ public static final boolean DISABLE_PLUGIN_REMAPPING = Boolean.getBoolean("paper.disablePluginRemapping");
-+ public static final String LEGACY_CB_VERSION = "v1_21_R2";
++ public static final String LEGACY_CB_VERSION = "v1_21_R3";
private static final @Nullable String MAPPINGS_HASH = readMappingsHash();
private static final boolean REOBF = checkReobf();
diff --git a/patches/unapplied/server/0101-Avoid-blocking-on-Network-Manager-creation.patch b/patches/server/0101-Avoid-blocking-on-Network-Manager-creation.patch
index 1c6ee84de8..1c6ee84de8 100644
--- a/patches/unapplied/server/0101-Avoid-blocking-on-Network-Manager-creation.patch
+++ b/patches/server/0101-Avoid-blocking-on-Network-Manager-creation.patch
diff --git a/patches/unapplied/server/0102-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch b/patches/server/0102-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch
index d99e7ec08b..d99e7ec08b 100644
--- a/patches/unapplied/server/0102-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch
+++ b/patches/server/0102-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch
diff --git a/patches/unapplied/server/0103-Add-setting-for-proxy-online-mode-status.patch b/patches/server/0103-Add-setting-for-proxy-online-mode-status.patch
index 43b3f70650..43b3f70650 100644
--- a/patches/unapplied/server/0103-Add-setting-for-proxy-online-mode-status.patch
+++ b/patches/server/0103-Add-setting-for-proxy-online-mode-status.patch
diff --git a/patches/unapplied/server/0104-Optimise-BlockState-s-hashCode-equals.patch b/patches/server/0104-Optimise-BlockState-s-hashCode-equals.patch
index 057a037d89..057a037d89 100644
--- a/patches/unapplied/server/0104-Optimise-BlockState-s-hashCode-equals.patch
+++ b/patches/server/0104-Optimise-BlockState-s-hashCode-equals.patch
diff --git a/patches/unapplied/server/0105-Configurable-packet-in-spam-threshold.patch b/patches/server/0105-Configurable-packet-in-spam-threshold.patch
index b28e858037..8fbef567c5 100644
--- a/patches/unapplied/server/0105-Configurable-packet-in-spam-threshold.patch
+++ b/patches/server/0105-Configurable-packet-in-spam-threshold.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable packet in spam threshold
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 79db369b905744ab2fd69de1afc34feec589ec82..be690a8a22c126b007e623c8fe627bab00a28bad 100644
+index f8e38d3334eca60cd5abe1838b1f274a82c8ede5..bffff41f73b91c83fa35ebf34314cb6fdbfcb643 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1545,13 +1545,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1608,13 +1608,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// Spigot start - limit place/interactions
private int limitedPackets;
private long lastLimitedPacket = -1;
diff --git a/patches/unapplied/server/0106-Configurable-flying-kick-messages.patch b/patches/server/0106-Configurable-flying-kick-messages.patch
index 00bd532614..9973cbb18d 100644
--- a/patches/unapplied/server/0106-Configurable-flying-kick-messages.patch
+++ b/patches/server/0106-Configurable-flying-kick-messages.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable flying kick messages
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index be690a8a22c126b007e623c8fe627bab00a28bad..bc0d7bfb01a613c8fa567238f973f834cf3e3f17 100644
+index bffff41f73b91c83fa35ebf34314cb6fdbfcb643..8a8f073a29daf7cb36e5fd0e4d4e5932636bb04f 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -355,7 +355,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -357,7 +357,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
if (this.clientIsFloating && !this.player.isSleeping() && !this.player.isPassenger() && !this.player.isDeadOrDying()) {
if (++this.aboveGroundTickCount > this.getMaximumFlyingTicks(this.player)) {
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating too long!", this.player.getName().getString());
@@ -17,7 +17,7 @@ index be690a8a22c126b007e623c8fe627bab00a28bad..bc0d7bfb01a613c8fa567238f973f834
return;
}
} else {
-@@ -374,7 +374,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -376,7 +376,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
if (this.clientVehicleIsFloating && this.lastVehicle.getControllingPassenger() == this.player) {
if (++this.aboveGroundVehicleTickCount > this.getMaximumFlyingTicks(this.lastVehicle)) {
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating a vehicle too long!", this.player.getName().getString());
diff --git a/patches/unapplied/server/0107-Add-EntityZapEvent.patch b/patches/server/0107-Add-EntityZapEvent.patch
index c788e393ec..53b649321b 100644
--- a/patches/unapplied/server/0107-Add-EntityZapEvent.patch
+++ b/patches/server/0107-Add-EntityZapEvent.patch
@@ -21,7 +21,7 @@ index 3300104ad3e1f1e39cbe928ec6ad635e6ab76327..c18bc54721e90ed67312cd8baf52ccc8
+ // Paper start - entity zap event - allow conversion to be cancelled during finalization
}
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 9655466953cf850b82716246821a3ebb968a5478..03d289abc30927793aa00f6758ed9db6fb765999 100644
+index 0562039114a90ddb64547eb8396920813d54f46b..54d3df0d34a786e63bf462b7ad1e93396129d41a 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1498,6 +1498,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -59,7 +59,7 @@ index 9655466953cf850b82716246821a3ebb968a5478..03d289abc30927793aa00f6758ed9db6
// CraftBukkit end
}
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-index e52487a3537db6c7d6845f972355f8f437ea9156..624f06d630b55cdcaa97cb66736b69c7ad45dd83 100644
+index e7a63ff51d7046c2bea4c0ac98c93dd9077a545d..64a2c1b43541764c7ec454e709d7beb365f1fef1 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -834,11 +834,18 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
diff --git a/patches/unapplied/server/0108-Filter-bad-block-entity-nbt-data-from-falling-blocks.patch b/patches/server/0108-Filter-bad-block-entity-nbt-data-from-falling-blocks.patch
index bf9d10bb7e..8bb1f855c4 100644
--- a/patches/unapplied/server/0108-Filter-bad-block-entity-nbt-data-from-falling-blocks.patch
+++ b/patches/server/0108-Filter-bad-block-entity-nbt-data-from-falling-blocks.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Filter bad block entity nbt data from falling blocks
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
-index a5543a6b4811628ff5178a0ec01933ec4b30dfa4..72abeb4f37b70094498ed3b18e8f73346ba0ead0 100644
+index e8585c05c5db32eafa18f3ac1968ba7e0c6f4566..eb1745915190e69bb467fca2dbc46e0727530ba0 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -356,7 +356,7 @@ public class FallingBlockEntity extends Entity {
diff --git a/patches/unapplied/server/0109-Cache-user-authenticator-threads.patch b/patches/server/0109-Cache-user-authenticator-threads.patch
index 471804336a..471804336a 100644
--- a/patches/unapplied/server/0109-Cache-user-authenticator-threads.patch
+++ b/patches/server/0109-Cache-user-authenticator-threads.patch
diff --git a/patches/unapplied/server/0110-Allow-Reloading-of-Command-Aliases.patch b/patches/server/0110-Allow-Reloading-of-Command-Aliases.patch
index 0984a8f80e..0984a8f80e 100644
--- a/patches/unapplied/server/0110-Allow-Reloading-of-Command-Aliases.patch
+++ b/patches/server/0110-Allow-Reloading-of-Command-Aliases.patch
diff --git a/patches/unapplied/server/0111-Add-source-to-PlayerExpChangeEvent.patch b/patches/server/0111-Add-source-to-PlayerExpChangeEvent.patch
index cb2ac725a2..0d2e3b15be 100644
--- a/patches/unapplied/server/0111-Add-source-to-PlayerExpChangeEvent.patch
+++ b/patches/server/0111-Add-source-to-PlayerExpChangeEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add source to PlayerExpChangeEvent
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
-index 8254f76a386bd6791b844a35b146370e817b09ad..7f3ac3e8631e30c968ef664f994ad208d05eb4a3 100644
+index b835e5bf605a34202a69a448eed72307a2c2b061..5109a63ff821afdf3d86a39464e39ae80586b95d 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
-@@ -268,7 +268,7 @@ public class ExperienceOrb extends Entity {
+@@ -270,7 +270,7 @@ public class ExperienceOrb extends Entity {
int i = this.repairPlayerItems(entityplayer, this.value);
if (i > 0) {
diff --git a/patches/unapplied/server/0112-Add-ProjectileCollideEvent.patch b/patches/server/0112-Add-ProjectileCollideEvent.patch
index 2b0113c50b..2b0113c50b 100644
--- a/patches/unapplied/server/0112-Add-ProjectileCollideEvent.patch
+++ b/patches/server/0112-Add-ProjectileCollideEvent.patch
diff --git a/patches/unapplied/server/0113-Prevent-Pathfinding-out-of-World-Border.patch b/patches/server/0113-Prevent-Pathfinding-out-of-World-Border.patch
index 21235871ad..21235871ad 100644
--- a/patches/unapplied/server/0113-Prevent-Pathfinding-out-of-World-Border.patch
+++ b/patches/server/0113-Prevent-Pathfinding-out-of-World-Border.patch
diff --git a/patches/unapplied/server/0114-Optimize-Level.hasChunkAt-BlockPosition-Z.patch b/patches/server/0114-Optimize-Level.hasChunkAt-BlockPosition-Z.patch
index 526301e39d..1db7bda571 100644
--- a/patches/unapplied/server/0114-Optimize-Level.hasChunkAt-BlockPosition-Z.patch
+++ b/patches/server/0114-Optimize-Level.hasChunkAt-BlockPosition-Z.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Optimize Level.hasChunkAt(BlockPosition)Z
Reduce method invocations for World.isLoaded(BlockPosition)Z
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 675dcb6eb5c33f6ec582ff20118d2f73745914a9..943c14b26cf5b1c9f9ea1acec058cecac3b93bf7 100644
+index 8891eab56b1bb2ed253fbced383e14a8c177966b..0d589ad5cd7887ce2143fd2f1af617fbe9226c2c 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -340,6 +340,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -341,6 +341,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
return chunk == null ? null : chunk.getFluidState(blockposition);
}
diff --git a/patches/unapplied/server/0115-Bound-Treasure-Maps-to-World-Border.patch b/patches/server/0115-Bound-Treasure-Maps-to-World-Border.patch
index 0444bae2ba..88512f6d5b 100644
--- a/patches/unapplied/server/0115-Bound-Treasure-Maps-to-World-Border.patch
+++ b/patches/server/0115-Bound-Treasure-Maps-to-World-Border.patch
@@ -34,10 +34,10 @@ index 5aa04c48e04c067a366383b252a7b713d85eaee9..b50090df116697a12f5498d65dd2e5d6
return this.isWithinBounds(box.minX, box.minZ, box.maxX - 9.999999747378752E-6D, box.maxZ - 9.999999747378752E-6D);
}
diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-index a84434a95dbe3c458f358d9824de87c503a8b1dc..115deba41ec48143570489e8494785a3a48cd789 100644
+index c037b08bcad40e5c2df3b7f98ab2071db3b3e48d..0acf8b62ddb5e005f8f861558934e8afc8673725 100644
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-@@ -222,6 +222,7 @@ public abstract class ChunkGenerator {
+@@ -223,6 +223,7 @@ public abstract class ChunkGenerator {
while (iterator.hasNext()) {
ChunkPos chunkcoordintpair = (ChunkPos) iterator.next();
diff --git a/patches/unapplied/server/0116-Configurable-Cartographer-Treasure-Maps.patch b/patches/server/0116-Configurable-Cartographer-Treasure-Maps.patch
index 1ca587b32e..82178eca8e 100644
--- a/patches/unapplied/server/0116-Configurable-Cartographer-Treasure-Maps.patch
+++ b/patches/server/0116-Configurable-Cartographer-Treasure-Maps.patch
@@ -9,10 +9,10 @@ Also allow turning off treasure maps all together as they can eat up Map ID's
which are limited in quantity.
diff --git a/src/main/java/net/minecraft/world/entity/npc/VillagerTrades.java b/src/main/java/net/minecraft/world/entity/npc/VillagerTrades.java
-index 914134d274c4a484c99bbe59521e30881c120799..a20c23db72f207b069f4ae0eb83ab6b6dca12072 100644
+index e6592409abfed699e0be74256bbbca871e5cc09a..37d62ee36e6b41ce8e923fc210c5b30920275c48 100644
--- a/src/main/java/net/minecraft/world/entity/npc/VillagerTrades.java
+++ b/src/main/java/net/minecraft/world/entity/npc/VillagerTrades.java
-@@ -1826,7 +1826,8 @@ public class VillagerTrades {
+@@ -1834,7 +1834,8 @@ public class VillagerTrades {
return null;
} else {
ServerLevel serverLevel = (ServerLevel)entity.level();
diff --git a/patches/unapplied/server/0117-Add-API-methods-to-control-if-armor-stands-can-move.patch b/patches/server/0117-Add-API-methods-to-control-if-armor-stands-can-move.patch
index e79a04b269..e79a04b269 100644
--- a/patches/unapplied/server/0117-Add-API-methods-to-control-if-armor-stands-can-move.patch
+++ b/patches/server/0117-Add-API-methods-to-control-if-armor-stands-can-move.patch
diff --git a/patches/unapplied/server/0118-String-based-Action-Bar-API.patch b/patches/server/0118-String-based-Action-Bar-API.patch
index 56ae9b2920..2ee21e39f5 100644
--- a/patches/unapplied/server/0118-String-based-Action-Bar-API.patch
+++ b/patches/server/0118-String-based-Action-Bar-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] String based Action Bar API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 2664daa2ae772b2ad63bdab8942bcaeda0e457bc..4a3836a645f3efac6f9d4fd4cbaa3eb2e23bb4b9 100644
+index f32794e235fe58027bc6a13e2bbc593bbc9d713b..d5aa717e790a56109ddcdc573bd254ed4b161a00 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -395,6 +395,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/unapplied/server/0119-Properly-fix-item-duplication-bug.patch b/patches/server/0119-Properly-fix-item-duplication-bug.patch
index 3fe8b5e902..7102e84e67 100644
--- a/patches/unapplied/server/0119-Properly-fix-item-duplication-bug.patch
+++ b/patches/server/0119-Properly-fix-item-duplication-bug.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Properly fix item duplication bug
Credit to prplz for figuring out the real issue
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index a06a2c5acb677b2495fab223dfbde293dffca096..8e127c36cbcb14d39de20217564ce1e722a57bcc 100644
+index 7e5fb0abe6cb4f10c41dedb2076e70bd9ace5430..51e00fe2454af281ba28dd6d5d5a1151103c0ab4 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -2982,7 +2982,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -2962,7 +2962,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
@Override
public boolean isImmobile() {
diff --git a/patches/unapplied/server/0120-Firework-API-s.patch b/patches/server/0120-Firework-API-s.patch
index 5efca78eb3..19bd2cf51a 100644
--- a/patches/unapplied/server/0120-Firework-API-s.patch
+++ b/patches/server/0120-Firework-API-s.patch
@@ -44,10 +44,10 @@ index e5d245c71ce2b2a1fe7f156e69831dec73354221..8a4e7e1c0c4919d2ee34121c14f9665b
private List<FireworkExplosion> getExplosions() {
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
-index 40cae3332a18e3f7be890d2ba8014bfe3d2d1c0e..710181cf04563f06690eee5b46a5a0d84844ac29 100644
+index a9d29c7981a98c3dd6355ca0db1f5a64b091cc05..a81e2f1e5abc20a95c562c1b9b1f7af489eaaaab 100644
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
-@@ -163,7 +163,11 @@ public class CrossbowItem extends ProjectileWeaponItem {
+@@ -164,7 +164,11 @@ public class CrossbowItem extends ProjectileWeaponItem {
@Override
protected Projectile createProjectile(Level world, LivingEntity shooter, ItemStack weaponStack, ItemStack projectileStack, boolean critical) {
if (projectileStack.is(Items.FIREWORK_ROCKET)) {
diff --git a/patches/unapplied/server/0121-PlayerTeleportEndGatewayEvent.patch b/patches/server/0121-PlayerTeleportEndGatewayEvent.patch
index c86ce687bf..f136ae72e5 100644
--- a/patches/unapplied/server/0121-PlayerTeleportEndGatewayEvent.patch
+++ b/patches/server/0121-PlayerTeleportEndGatewayEvent.patch
@@ -7,10 +7,10 @@ Allows you to access the Gateway being used in a teleport event
Fix the offset used for player teleportation
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 8e127c36cbcb14d39de20217564ce1e722a57bcc..0432304139fada99dff884ebf8d08dbf9afc45c7 100644
+index 51e00fe2454af281ba28dd6d5d5a1151103c0ab4..bdf79f73ab219debd4eedff44018dd8ab705b4e8 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -1455,6 +1455,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -1446,6 +1446,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
PositionMoveRotation absolutePosition = PositionMoveRotation.calculateAbsolute(PositionMoveRotation.of(this), PositionMoveRotation.of(teleportTarget), teleportTarget.relatives());
Location exit = (worldserver == null) ? null : CraftLocation.toBukkit(absolutePosition.position(), worldserver.getWorld(), absolutePosition.yRot(), absolutePosition.xRot());
PlayerTeleportEvent tpEvent = new PlayerTeleportEvent(this.getBukkitEntity(), enter, exit, teleportTarget.cause());
diff --git a/patches/unapplied/server/0122-Provide-E-TE-Chunk-count-stat-methods.patch b/patches/server/0122-Provide-E-TE-Chunk-count-stat-methods.patch
index 58b18fa417..fcff875035 100644
--- a/patches/unapplied/server/0122-Provide-E-TE-Chunk-count-stat-methods.patch
+++ b/patches/server/0122-Provide-E-TE-Chunk-count-stat-methods.patch
@@ -7,10 +7,10 @@ Provides counts without the ineffeciency of using .getEntities().size()
which creates copy of the collections.
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 943c14b26cf5b1c9f9ea1acec058cecac3b93bf7..e5eac1977f77b7ce1112bfe7ac1b77d9ef4d90f4 100644
+index 0d589ad5cd7887ce2143fd2f1af617fbe9226c2c..b628fbacf4a56f5df682dee8190a9dd6bb330803 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -116,7 +116,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -117,7 +117,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public static final int TICKS_PER_DAY = 24000;
public static final int MAX_ENTITY_SPAWN_Y = 20000000;
public static final int MIN_ENTITY_SPAWN_Y = -20000000;
@@ -20,7 +20,7 @@ index 943c14b26cf5b1c9f9ea1acec058cecac3b93bf7..e5eac1977f77b7ce1112bfe7ac1b77d9
private final List<TickingBlockEntity> pendingBlockEntityTickers = Lists.newArrayList();
private boolean tickingBlockEntities;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 5612f66ec7b0e927824d5503b15dc28af0dfb168..9ad27a6908ac07d87dc0453b61f69d3b3037a971 100644
+index 1827df86bf21ca3ed297fd4316f3a962063a47fb..cf38f75050ef947d9f853374f40a25504ec987a6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -169,6 +169,48 @@ public class CraftWorld extends CraftRegionAccessor implements World {
diff --git a/patches/unapplied/server/0123-Enforce-Sync-Player-Saves.patch b/patches/server/0123-Enforce-Sync-Player-Saves.patch
index c0c144111c..c0c144111c 100644
--- a/patches/unapplied/server/0123-Enforce-Sync-Player-Saves.patch
+++ b/patches/server/0123-Enforce-Sync-Player-Saves.patch
diff --git a/patches/unapplied/server/0124-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch b/patches/server/0124-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
index 50161ad69f..e3b9ff0f66 100644
--- a/patches/unapplied/server/0124-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
+++ b/patches/server/0124-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
@@ -21,7 +21,7 @@ index 0de7b8b8d2670c6ec50eb56348ca28a315b961e5..73b6aa34ad2579d79f388c5660cdfbef
return true;
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
-index 7f3ac3e8631e30c968ef664f994ad208d05eb4a3..b9160ebca0d11dbbf96da5f0f5810d302cfcea9a 100644
+index 5109a63ff821afdf3d86a39464e39ae80586b95d..5999a77c803ee6f2a0dd05dea5f5817366bc70ea 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
@@ -44,9 +44,63 @@ public class ExperienceOrb extends Entity {
@@ -88,7 +88,7 @@ index 7f3ac3e8631e30c968ef664f994ad208d05eb4a3..b9160ebca0d11dbbf96da5f0f5810d30
this.setPos(x, y, z);
this.setYRot((float) (this.random.nextDouble() * 360.0D));
this.setDeltaMovement((this.random.nextDouble() * 0.20000000298023224D - 0.10000000149011612D) * 2.0D, this.random.nextDouble() * 0.2D * 2.0D, (this.random.nextDouble() * 0.20000000298023224D - 0.10000000149011612D) * 2.0D);
-@@ -171,12 +225,20 @@ public class ExperienceOrb extends Entity {
+@@ -173,12 +227,20 @@ public class ExperienceOrb extends Entity {
}
public static void award(ServerLevel world, Vec3 pos, int amount) {
@@ -110,7 +110,7 @@ index 7f3ac3e8631e30c968ef664f994ad208d05eb4a3..b9160ebca0d11dbbf96da5f0f5810d30
}
}
-@@ -249,6 +311,7 @@ public class ExperienceOrb extends Entity {
+@@ -251,6 +313,7 @@ public class ExperienceOrb extends Entity {
nbt.putShort("Age", (short) this.age);
nbt.putShort("Value", (short) this.value);
nbt.putInt("Count", this.count);
@@ -118,7 +118,7 @@ index 7f3ac3e8631e30c968ef664f994ad208d05eb4a3..b9160ebca0d11dbbf96da5f0f5810d30
}
@Override
-@@ -257,6 +320,7 @@ public class ExperienceOrb extends Entity {
+@@ -259,6 +322,7 @@ public class ExperienceOrb extends Entity {
this.age = nbt.getShort("Age");
this.value = nbt.getShort("Value");
this.count = Math.max(nbt.getInt("Count"), 1);
@@ -127,10 +127,10 @@ index 7f3ac3e8631e30c968ef664f994ad208d05eb4a3..b9160ebca0d11dbbf96da5f0f5810d30
@Override
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index f8f4fa56881efabada7ec966d74db0a174907614..6c29a05e91a6bac634ca3e5394b90112b65cdbd6 100644
+index 4938b2caf5f8a32f6076f89fd2119fb965539e36..9dbd7ee7253bab6733d54283c5255c6fef222b8e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1835,7 +1835,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1846,7 +1846,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
protected void dropExperience(ServerLevel world, @Nullable Entity attacker) {
// CraftBukkit start - Update getExpReward() above if the removed if() changes!
if (!(this instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon)) { // CraftBukkit - SPIGOT-2420: Special case ender dragon will drop the xp over time
@@ -172,7 +172,7 @@ index e359bb8e6366b0c695fe3bb14967556a875524f4..775bfac26aaa6db998c2647ec81247b6
// CraftBukkit end
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
-index 258fad440d4d2402a273c761da57130a57202b3c..faffc3a9ed8bc306277cad37bc43af2ef7303493 100644
+index 0fa76dddd028a793752048b8f4073ef37240f148..81bb457ddebcf06e14c772c5c5df584e43766e58 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -882,7 +882,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
@@ -198,7 +198,7 @@ index 81982515b7757febb964627e9c5046d52bf5edf5..a2c5042e99a8f4cd45d502320cf1c06e
}
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
-index 95d69e3ca1a9095dfb340e9be0ec322ab6c5eb5e..0012ab1f56180081d210c8836e2a59d543b950b8 100644
+index e9246613702325375ac1e4cf03402839b3a93146..f10d0a03c2bb6487dd05869e05258276bfcec7eb 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -659,7 +659,7 @@ public class EnderDragon extends Mob implements Enemy {
@@ -210,17 +210,17 @@ index 95d69e3ca1a9095dfb340e9be0ec322ab6c5eb5e..0012ab1f56180081d210c8836e2a59d5
}
if (this.dragonDeathTime == 1 && !this.isSilent()) {
-@@ -691,7 +691,7 @@ public class EnderDragon extends Mob implements Enemy {
- if (world instanceof ServerLevel) {
- ServerLevel worldserver = (ServerLevel) world; // CraftBukkit - decompile error
+@@ -705,7 +705,7 @@ public class EnderDragon extends Mob implements Enemy {
+ ServerLevel worldserver1 = (ServerLevel) world1;
+
if (true) { // CraftBukkit - SPIGOT-2420: Already checked for the game rule when calculating the xp
-- ExperienceOrb.award(worldserver, this.position(), Mth.floor((float) short0 * 0.2F));
-+ ExperienceOrb.award(worldserver, this.position(), Mth.floor((float) short0 * 0.2F), org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, this.lastHurtByPlayer, this); // Paper
+- ExperienceOrb.award(worldserver1, this.position(), Mth.floor((float) short0 * 0.2F));
++ ExperienceOrb.award(worldserver1, this.position(), Mth.floor((float) short0 * 0.2F), org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, this.lastHurtByPlayer, this); // Paper
}
if (this.dragonFight != null) {
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-index 624f06d630b55cdcaa97cb66736b69c7ad45dd83..83bb48891d03534468d61cf7683438b3efb131cf 100644
+index 64a2c1b43541764c7ec454e709d7beb365f1fef1..6681c8d9e76a7a1e470378479d2c55e62d05a0fe 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -630,7 +630,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -246,7 +246,7 @@ index 380a876b3cbd660b34dd504cd20f6031b35a613a..8034588a9a87b907c35e28e220280d46
}
diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
-index ed378bc8135c329cb7423da06eb26fff69ee4954..9d24d4c3802c525546dae92530c9c5b3cf77924e 100644
+index bec8aa80dab4bfc9c75d50e4141f0bf18f4a39cb..d0c7dc98ead5c9c52e9d24afe59874b8c512a165 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
@@ -530,7 +530,7 @@ public class FishingHook extends Projectile {
@@ -259,10 +259,10 @@ index ed378bc8135c329cb7423da06eb26fff69ee4954..9d24d4c3802c525546dae92530c9c5b3
// CraftBukkit end
if (itemstack1.is(ItemTags.FISHES)) {
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java
-index 89292bd47e80f7c8bd6a382a44b912a43037b58e..268e46777bdea5b539b0c6833eee08ea8a6c61c2 100644
+index 46c19edfa01bdab873053674f39b70c6774255a3..c808b177bb78804a8af7012da912572978baebdb 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java
-@@ -55,7 +55,7 @@ public class ThrownExperienceBottle extends ThrowableItemProjectile {
+@@ -53,7 +53,7 @@ public class ThrownExperienceBottle extends ThrowableItemProjectile {
}
// CraftBukkit end
@@ -285,7 +285,7 @@ index 56d8ed71861b0a47692fde4c5acc97aaba8166da..13bc52bc856031c930370828b0381e43
world.levelEvent(1042, blockposition, 0);
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
-index 27cbec37c6ea278232970ae035795fdecca71735..f1711f774f844024ca7b678385daaace6cda9f46 100644
+index 6c9920be736eba2947fd3a6903f052eba8533b32..533df8ff84ec4224637dfb0837104a6db1ea9901 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -354,8 +354,13 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -304,10 +304,10 @@ index 27cbec37c6ea278232970ae035795fdecca71735..f1711f774f844024ca7b678385daaace
}
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
-index 7341e14645eac007312889776a29d16fc390c5bf..119ea31f6e15185b6d6171053f790e39c24f6823 100644
+index a46c22c1bf004c5f17852505183f04a1c6385875..9f44f4ed56bf3cabd3d4a5409f7f6068273d7ff7 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
-@@ -517,7 +517,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
+@@ -512,7 +512,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
j = event.getExpToDrop();
// CraftBukkit end
@@ -317,10 +317,10 @@ index 7341e14645eac007312889776a29d16fc390c5bf..119ea31f6e15185b6d6171053f790e39
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java
-index 161301924f78593c6f398d4ca41dd80bf26b8d58..e0ff8e8ed03a6a78c9fd8e4630c8b95600bee10a 100644
+index 807e4a7a835c96284149cd405ce8169f65fe9b6b..0ebcf7ed1cb9e896de5fbac60afdb937ba86d15c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java
-@@ -426,7 +426,7 @@ public final class CraftEntityTypes {
+@@ -424,7 +424,7 @@ public final class CraftEntityTypes {
return item;
}));
register(new EntityTypeData<>(EntityType.EXPERIENCE_ORB, ExperienceOrb.class, CraftExperienceOrb::new,
diff --git a/patches/unapplied/server/0125-Cap-Entity-Collisions.patch b/patches/server/0125-Cap-Entity-Collisions.patch
index abbc967c00..2d6114f426 100644
--- a/patches/unapplied/server/0125-Cap-Entity-Collisions.patch
+++ b/patches/server/0125-Cap-Entity-Collisions.patch
@@ -12,7 +12,7 @@ just as it does in Vanilla, but entity pushing logic will be capped.
You can set this to 0 to disable collisions.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 30abcdfd4c18781563bed93642778424b4f9a417..9b0ae983caa12ea50284d9945a7f312429852795 100644
+index 68b89c03a20c051af8c5adb63eef310905e569bc..943dfab743ec9d5a49a9886b384fb4d8d894bb31 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -405,6 +405,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -24,10 +24,10 @@ index 30abcdfd4c18781563bed93642778424b4f9a417..9b0ae983caa12ea50284d9945a7f3124
@javax.annotation.Nullable
private org.bukkit.util.Vector origin;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 6c29a05e91a6bac634ca3e5394b90112b65cdbd6..009539fa39c81c610ac34747cc09082a0756c79d 100644
+index 9dbd7ee7253bab6733d54283c5255c6fef222b8e..bc708b5b98e33d65105b394d69d410ae3acde584 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -3641,10 +3641,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3652,10 +3652,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
Iterator iterator1 = list.iterator();
diff --git a/patches/unapplied/server/0126-Remove-CraftScheduler-Async-Task-Debugger.patch b/patches/server/0126-Remove-CraftScheduler-Async-Task-Debugger.patch
index 08692be694..08692be694 100644
--- a/patches/unapplied/server/0126-Remove-CraftScheduler-Async-Task-Debugger.patch
+++ b/patches/server/0126-Remove-CraftScheduler-Async-Task-Debugger.patch
diff --git a/patches/unapplied/server/0127-Properly-handle-async-calls-to-restart-the-server.patch b/patches/server/0127-Properly-handle-async-calls-to-restart-the-server.patch
index 5af027525d..e2d2362447 100644
--- a/patches/unapplied/server/0127-Properly-handle-async-calls-to-restart-the-server.patch
+++ b/patches/server/0127-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 76d9f12e0c2d54ed35cee6a4463d982682d4d641..fc5176447b4e54aafdd9f2806ffbdce02bc20c9b 100644
+index 0eb856a27fefb8d7283617498a31b05f2a736192..b2396fe53d7db64f17671358880401ccc667a251 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -247,6 +247,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/unapplied/server/0128-Add-option-to-make-parrots-stay-on-shoulders-despite.patch b/patches/server/0128-Add-option-to-make-parrots-stay-on-shoulders-despite.patch
index 7160cf1fcd..f6e6df4935 100644
--- a/patches/unapplied/server/0128-Add-option-to-make-parrots-stay-on-shoulders-despite.patch
+++ b/patches/server/0128-Add-option-to-make-parrots-stay-on-shoulders-despite.patch
@@ -14,13 +14,13 @@ To be converted into a Paper-API event at some point in the future?
public net.minecraft.world.entity.player.Player removeEntitiesOnShoulder()V
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index bc0d7bfb01a613c8fa567238f973f834cf3e3f17..7be9c0054ae3bf0d9b9327271a4ddf56a81d6448 100644
+index 8a8f073a29daf7cb36e5fd0e4d4e5932636bb04f..c459d32e85aaea647e3dc5239e1c4e106a69ad46 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2273,6 +2273,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
- switch (packet.getAction()) {
- case PRESS_SHIFT_KEY:
- this.player.setShiftKeyDown(true);
+@@ -2342,6 +2342,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+ switch (packet.getAction()) {
+ case PRESS_SHIFT_KEY:
+ this.player.setShiftKeyDown(true);
+
+ // Paper start - Add option to make parrots stay
+ if (this.player.level().paperConfig().entities.behavior.parrotsAreUnaffectedByPlayerMovement) {
@@ -28,14 +28,14 @@ index bc0d7bfb01a613c8fa567238f973f834cf3e3f17..7be9c0054ae3bf0d9b9327271a4ddf56
+ }
+ // Paper end - Add option to make parrots stay
+
- break;
- case RELEASE_SHIFT_KEY:
- this.player.setShiftKeyDown(false);
+ break;
+ case RELEASE_SHIFT_KEY:
+ this.player.setShiftKeyDown(false);
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index b953b8e7e184c0c0eb7231564ad120765d66823a..fb6b7be09fffbb9ffefba3f0c0c97b0f90ff6a94 100644
+index 09a7c6171e50b6cf08cf7096b6005d3f9d8d2de7..2f4909a26d6473bcf1bf4f71d05d77d2212ad745 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -617,6 +617,7 @@ public abstract class Player extends LivingEntity {
+@@ -620,6 +620,7 @@ public abstract class Player extends LivingEntity {
this.playShoulderEntityAmbientSound(this.getShoulderEntityLeft());
this.playShoulderEntityAmbientSound(this.getShoulderEntityRight());
if (!this.level().isClientSide && (this.fallDistance > 0.5F || this.isInWater()) || this.abilities.flying || this.isSleeping() || this.isInPowderSnow) {
diff --git a/patches/unapplied/server/0129-Add-configuration-option-to-prevent-player-names-fro.patch b/patches/server/0129-Add-configuration-option-to-prevent-player-names-fro.patch
index fb0fd629d5..fb0fd629d5 100644
--- a/patches/unapplied/server/0129-Add-configuration-option-to-prevent-player-names-fro.patch
+++ b/patches/server/0129-Add-configuration-option-to-prevent-player-names-fro.patch
diff --git a/patches/unapplied/server/0130-provide-a-configurable-option-to-disable-creeper-lin.patch b/patches/server/0130-provide-a-configurable-option-to-disable-creeper-lin.patch
index c55f4a428d..c55f4a428d 100644
--- a/patches/unapplied/server/0130-provide-a-configurable-option-to-disable-creeper-lin.patch
+++ b/patches/server/0130-provide-a-configurable-option-to-disable-creeper-lin.patch
diff --git a/patches/unapplied/server/0131-Item-canEntityPickup.patch b/patches/server/0131-Item-canEntityPickup.patch
index d68202e1be..e0024acf5f 100644
--- a/patches/unapplied/server/0131-Item-canEntityPickup.patch
+++ b/patches/server/0131-Item-canEntityPickup.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Item#canEntityPickup
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 03d289abc30927793aa00f6758ed9db6fb765999..51381c32c8650400331a122a4b6c8d95c9d0632b 100644
+index 54d3df0d34a786e63bf462b7ad1e93396129d41a..f568ccec14cac96efa03dc888a4a2a0067515b39 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -672,6 +672,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
+@@ -682,6 +682,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
ItemEntity entityitem = (ItemEntity) iterator.next();
if (!entityitem.isRemoved() && !entityitem.getItem().isEmpty() && !entityitem.hasPickUpDelay() && this.wantsToPickUp(worldserver, entityitem.getItem())) {
diff --git a/patches/unapplied/server/0132-PlayerPickupItemEvent-setFlyAtPlayer.patch b/patches/server/0132-PlayerPickupItemEvent-setFlyAtPlayer.patch
index 081b08fc3a..081b08fc3a 100644
--- a/patches/unapplied/server/0132-PlayerPickupItemEvent-setFlyAtPlayer.patch
+++ b/patches/server/0132-PlayerPickupItemEvent-setFlyAtPlayer.patch
diff --git a/patches/unapplied/server/0133-PlayerAttemptPickupItemEvent.patch b/patches/server/0133-PlayerAttemptPickupItemEvent.patch
index 11b2bbe078..11b2bbe078 100644
--- a/patches/unapplied/server/0133-PlayerAttemptPickupItemEvent.patch
+++ b/patches/server/0133-PlayerAttemptPickupItemEvent.patch
diff --git a/patches/unapplied/server/0134-Do-not-submit-profile-lookups-to-worldgen-threads.patch b/patches/server/0134-Do-not-submit-profile-lookups-to-worldgen-threads.patch
index 11222ddf7d..f050e6b300 100644
--- a/patches/unapplied/server/0134-Do-not-submit-profile-lookups-to-worldgen-threads.patch
+++ b/patches/server/0134-Do-not-submit-profile-lookups-to-worldgen-threads.patch
@@ -10,7 +10,7 @@ out due to a sync load, as the worldgen threads will be
stalling on profile lookups.
diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java
-index 2ff5a6517d717bbd4c944572040bd30866347341..8cac2075077b1d9c2b01e09c99780ff9e204abb2 100644
+index a88cfb92dea57d2f9abc029cea94a1b921f66766..3d5bca1b637234df48ca3228c7ffbce21116a0c7 100644
--- a/src/main/java/net/minecraft/Util.java
+++ b/src/main/java/net/minecraft/Util.java
@@ -95,6 +95,22 @@ public class Util {
diff --git a/patches/unapplied/server/0135-Basic-PlayerProfile-API.patch b/patches/server/0135-Basic-PlayerProfile-API.patch
index a81f8d765a..420fb11d4c 100644
--- a/patches/unapplied/server/0135-Basic-PlayerProfile-API.patch
+++ b/patches/server/0135-Basic-PlayerProfile-API.patch
@@ -591,10 +591,10 @@ index 0000000000000000000000000000000000000000..332700f84c5587e47a4d2056bfbb5413
+ @NotNull ResolvableProfile buildResolvableProfile();
+}
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
-index 7399358f18dc7869fbfe414186cf18414c1eaafc..a9dadd106ff0ac0f788c16048a73dfc3320b4944 100644
+index a9f09f2939a0fbf20be7f8bc27a6d8b961fb748a..577140660c96da69f68ec27ad5ab7da2c836974b 100644
--- a/src/main/java/net/minecraft/server/Main.java
+++ b/src/main/java/net/minecraft/server/Main.java
-@@ -168,7 +168,7 @@ public class Main {
+@@ -170,7 +170,7 @@ public class Main {
}
File file = (File) optionset.valueOf("universe"); // CraftBukkit
diff --git a/patches/unapplied/server/0136-Add-UnknownCommandEvent.patch b/patches/server/0136-Add-UnknownCommandEvent.patch
index aba283df9e..aba283df9e 100644
--- a/patches/unapplied/server/0136-Add-UnknownCommandEvent.patch
+++ b/patches/server/0136-Add-UnknownCommandEvent.patch
diff --git a/patches/unapplied/server/0137-Shoulder-Entities-Release-API.patch b/patches/server/0137-Shoulder-Entities-Release-API.patch
index 3c6d15f323..fe1aa46719 100644
--- a/patches/unapplied/server/0137-Shoulder-Entities-Release-API.patch
+++ b/patches/server/0137-Shoulder-Entities-Release-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Shoulder Entities Release API
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index fb6b7be09fffbb9ffefba3f0c0c97b0f90ff6a94..357c71409af5f67a0a6aaa0cb08fd93a4a4f99de 100644
+index 2f4909a26d6473bcf1bf4f71d05d77d2212ad745..4dcc510061adfd07a15fa7007aa4863f7e5d0037 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1948,7 +1948,31 @@ public abstract class Player extends LivingEntity {
+@@ -1951,7 +1951,31 @@ public abstract class Player extends LivingEntity {
}
@@ -40,7 +40,7 @@ index fb6b7be09fffbb9ffefba3f0c0c97b0f90ff6a94..357c71409af5f67a0a6aaa0cb08fd93a
if (!this.level().isClientSide && !nbttagcompound.isEmpty()) {
return EntityType.create(nbttagcompound, this.level(), EntitySpawnReason.LOAD).map((entity) -> { // CraftBukkit
if (entity instanceof TamableAnimal) {
-@@ -1956,11 +1980,11 @@ public abstract class Player extends LivingEntity {
+@@ -1959,11 +1983,11 @@ public abstract class Player extends LivingEntity {
}
entity.setPos(this.getX(), this.getY() + 0.699999988079071D, this.getZ());
diff --git a/patches/unapplied/server/0138-Profile-Lookup-Events.patch b/patches/server/0138-Profile-Lookup-Events.patch
index 8a3c9a944e..8a3c9a944e 100644
--- a/patches/unapplied/server/0138-Profile-Lookup-Events.patch
+++ b/patches/server/0138-Profile-Lookup-Events.patch
diff --git a/patches/unapplied/server/0139-Block-player-logins-during-server-shutdown.patch b/patches/server/0139-Block-player-logins-during-server-shutdown.patch
index d3fdf86a58..d3fdf86a58 100644
--- a/patches/unapplied/server/0139-Block-player-logins-during-server-shutdown.patch
+++ b/patches/server/0139-Block-player-logins-during-server-shutdown.patch
diff --git a/patches/unapplied/server/0140-Entity-fromMobSpawner.patch b/patches/server/0140-Entity-fromMobSpawner.patch
index dc193e5905..69526e714c 100644
--- a/patches/unapplied/server/0140-Entity-fromMobSpawner.patch
+++ b/patches/server/0140-Entity-fromMobSpawner.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Entity#fromMobSpawner()
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 9b0ae983caa12ea50284d9945a7f312429852795..c22b1ef0751d244310dee880565eef83bdb61114 100644
+index 943dfab743ec9d5a49a9886b384fb4d8d894bb31..211886d55e19039768658b1c704f241ac93cf75a 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -406,6 +406,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -16,7 +16,7 @@ index 9b0ae983caa12ea50284d9945a7f312429852795..c22b1ef0751d244310dee880565eef83
// Paper start - Entity origin API
@javax.annotation.Nullable
private org.bukkit.util.Vector origin;
-@@ -2376,6 +2377,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -2399,6 +2400,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
nbttagcompound.put("Paper.Origin", this.newDoubleList(origin.getX(), origin.getY(), origin.getZ()));
}
@@ -27,7 +27,7 @@ index 9b0ae983caa12ea50284d9945a7f312429852795..c22b1ef0751d244310dee880565eef83
// Paper end
return nbttagcompound;
} catch (Throwable throwable) {
-@@ -2517,6 +2522,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -2542,6 +2547,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.originWorld = originWorld;
origin = new org.bukkit.util.Vector(originTag.getDouble(0), originTag.getDouble(1), originTag.getDouble(2));
}
@@ -49,7 +49,7 @@ index 7b918001d36a8f14ed0d3ee4d6783588f48eb78f..e424c23c22809a307175b5dcc7f7b008
if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, pos).isCancelled()) {
continue;
diff --git a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java
-index 28c8b8cd2ad0a368f7856a407d91742978490728..f0163b7fa8b27823db9df5b8d2b6adcb63023164 100644
+index 3e986b7c1cd4ad45241ea50a05a41a68947a1f94..150a525772dd87f0aca39ad74f0bcefa0693d7d8 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java
@@ -230,6 +230,7 @@ public final class TrialSpawner {
diff --git a/patches/unapplied/server/0141-Improve-the-Saddle-API-for-Horses.patch b/patches/server/0141-Improve-the-Saddle-API-for-Horses.patch
index ddf19f0208..ddf19f0208 100644
--- a/patches/unapplied/server/0141-Improve-the-Saddle-API-for-Horses.patch
+++ b/patches/server/0141-Improve-the-Saddle-API-for-Horses.patch
diff --git a/patches/unapplied/server/0142-ensureServerConversions-API.patch b/patches/server/0142-ensureServerConversions-API.patch
index 8c69d762bc..10b0036b6f 100644
--- a/patches/unapplied/server/0142-ensureServerConversions-API.patch
+++ b/patches/server/0142-ensureServerConversions-API.patch
@@ -7,10 +7,10 @@ This will take a Bukkit ItemStack and run it through any conversions a server pr
to ensure it meets latest minecraft expectations.
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-index 5d7e6b61102a6244c5426917c4ff280fa9e12cf1..91010267b8c4df582415a8f7cd7386723b556cc0 100644
+index 2f57af25e5cdeb2295675309d4cb7f36d15256c5..f71cd296bd43d67023f6008bc178b9aca44e2a45 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -226,4 +226,12 @@ public final class CraftItemFactory implements ItemFactory {
+@@ -228,4 +228,12 @@ public final class CraftItemFactory implements ItemFactory {
return io.papermc.paper.adventure.PaperAdventure.asAdventure(CraftItemStack.asNMSCopy(itemStack).getDisplayName());
}
// Paper end - Adventure
diff --git a/patches/unapplied/server/0143-Implement-getI18NDisplayName.patch b/patches/server/0143-Implement-getI18NDisplayName.patch
index 32d65af2dc..19af50181c 100644
--- a/patches/unapplied/server/0143-Implement-getI18NDisplayName.patch
+++ b/patches/server/0143-Implement-getI18NDisplayName.patch
@@ -8,10 +8,10 @@ Currently the server only supports the English language. To override this,
You must replace the language file embedded in the server jar.
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-index 91010267b8c4df582415a8f7cd7386723b556cc0..b407968b111ff9cb9f428319d211e5d9c4c99138 100644
+index f71cd296bd43d67023f6008bc178b9aca44e2a45..77150a80d3523a923e2c9ccadda4887d6d960799 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -234,4 +234,19 @@ public final class CraftItemFactory implements ItemFactory {
+@@ -236,4 +236,19 @@ public final class CraftItemFactory implements ItemFactory {
return CraftItemStack.asCraftMirror(CraftItemStack.asNMSCopy(item));
}
// Paper end - ensure server conversions API
diff --git a/patches/unapplied/server/0144-ProfileWhitelistVerifyEvent.patch b/patches/server/0144-ProfileWhitelistVerifyEvent.patch
index 335095baa9..335095baa9 100644
--- a/patches/unapplied/server/0144-ProfileWhitelistVerifyEvent.patch
+++ b/patches/server/0144-ProfileWhitelistVerifyEvent.patch
diff --git a/patches/unapplied/server/0145-Fix-this-stupid-bullshit.patch b/patches/server/0145-Fix-this-stupid-bullshit.patch
index 066446b1cb..a7caee64f2 100644
--- a/patches/unapplied/server/0145-Fix-this-stupid-bullshit.patch
+++ b/patches/server/0145-Fix-this-stupid-bullshit.patch
@@ -9,10 +9,10 @@ modified in order to prevent merge conflicts when Spigot changes/disables the wa
and to provide some level of hint without being disruptive.
diff --git a/src/main/java/net/minecraft/server/Bootstrap.java b/src/main/java/net/minecraft/server/Bootstrap.java
-index 9abd1dea58ffc612114d5fd8e8944d4aa8c68236..4840893082cbcd9b00f79149df1a7805af279dcb 100644
+index 01c8d583a4addf43b8cad55a51989de7c3f73d90..b86839c170ef01455a05e71cb8ba40b047b1659e 100644
--- a/src/main/java/net/minecraft/server/Bootstrap.java
+++ b/src/main/java/net/minecraft/server/Bootstrap.java
-@@ -44,7 +44,7 @@ public class Bootstrap {
+@@ -47,7 +47,7 @@ public class Bootstrap {
public static void bootStrap() {
if (!Bootstrap.isBootstrapped) {
// CraftBukkit start
@@ -21,7 +21,7 @@ index 9abd1dea58ffc612114d5fd8e8944d4aa8c68236..4840893082cbcd9b00f79149df1a7805
switch (name) {
case "DispenserRegistry":
break;
-@@ -58,7 +58,7 @@ public class Bootstrap {
+@@ -61,7 +61,7 @@ public class Bootstrap {
System.err.println("*** WARNING: This server jar is unsupported, use at your own risk. ***");
System.err.println("**********************************************************************");
break;
@@ -31,12 +31,12 @@ index 9abd1dea58ffc612114d5fd8e8944d4aa8c68236..4840893082cbcd9b00f79149df1a7805
Bootstrap.isBootstrapped = true;
Instant instant = Instant.now();
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index 1a254cb043ae57afac80c3cfcf0a130089061ee3..2a95a42ade0e82a509f08e2bec7f0c64f55b185c 100644
+index ffb40be63a01221d81060356e2a3fec17c1fa603..bb3203dc75df1e480b221fb2de44909759bbf07f 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -249,10 +249,12 @@ public class Main {
Calendar deadline = Calendar.getInstance();
- deadline.add(Calendar.DAY_OF_YEAR, -14);
+ deadline.add(Calendar.DAY_OF_YEAR, -2);
if (buildDate.before(deadline.getTime())) {
- System.err.println("*** Error, this build is outdated ***");
+ // Paper start - This is some stupid bullshit
diff --git a/patches/unapplied/server/0146-LivingEntity-setKiller.patch b/patches/server/0146-LivingEntity-setKiller.patch
index 1a07e6b288..d87f9ff0df 100644
--- a/patches/unapplied/server/0146-LivingEntity-setKiller.patch
+++ b/patches/server/0146-LivingEntity-setKiller.patch
@@ -7,7 +7,7 @@ Subject: [PATCH] LivingEntity#setKiller
public net.minecraft.world.entity.LivingEntity lastHurtByPlayerTime
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index 6bb32e4eab357c5f67a3daafa2de035b0d125635..452fe788152f7c38ab4b6c627e3ba37da3d9b9d9 100644
+index 7d05d87e3c8ebbd65b15dcf09324e2e4f95959e5..445126b24a8c5c9104b14838661c53382bd65e53 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -417,6 +417,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/unapplied/server/0147-Ocelot-despawns-should-honor-nametags-and-leash.patch b/patches/server/0147-Ocelot-despawns-should-honor-nametags-and-leash.patch
index ac704548ec..ac704548ec 100644
--- a/patches/unapplied/server/0147-Ocelot-despawns-should-honor-nametags-and-leash.patch
+++ b/patches/server/0147-Ocelot-despawns-should-honor-nametags-and-leash.patch
diff --git a/patches/unapplied/server/0148-Reset-spawner-timer-when-spawner-event-is-cancelled.patch b/patches/server/0148-Reset-spawner-timer-when-spawner-event-is-cancelled.patch
index e27bff4361..e27bff4361 100644
--- a/patches/unapplied/server/0148-Reset-spawner-timer-when-spawner-event-is-cancelled.patch
+++ b/patches/server/0148-Reset-spawner-timer-when-spawner-event-is-cancelled.patch
diff --git a/patches/unapplied/server/0149-Allow-specifying-a-custom-authentication-servers-dow.patch b/patches/server/0149-Allow-specifying-a-custom-authentication-servers-dow.patch
index 49defd6c90..49defd6c90 100644
--- a/patches/unapplied/server/0149-Allow-specifying-a-custom-authentication-servers-dow.patch
+++ b/patches/server/0149-Allow-specifying-a-custom-authentication-servers-dow.patch
diff --git a/patches/unapplied/server/0150-Add-PlayerJumpEvent.patch b/patches/server/0150-Add-PlayerJumpEvent.patch
index 6e1404774e..5d7e98b9d6 100644
--- a/patches/unapplied/server/0150-Add-PlayerJumpEvent.patch
+++ b/patches/server/0150-Add-PlayerJumpEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerJumpEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 7be9c0054ae3bf0d9b9327271a4ddf56a81d6448..414077a1fed2955bd64ac7091af1daeda2a92e2c 100644
+index c459d32e85aaea647e3dc5239e1c4e106a69ad46..85b81b06e834e1575588a2a7e840a8bcc65c3306 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1209,7 +1209,34 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1270,7 +1270,34 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
boolean flag1 = d7 > 0.0D;
if (this.player.onGround() && !packet.isOnGround() && flag1) {
diff --git a/patches/unapplied/server/0151-handle-ServerboundKeepAlivePacket-async.patch b/patches/server/0151-handle-ServerboundKeepAlivePacket-async.patch
index db2c92f2c3..db2c92f2c3 100644
--- a/patches/unapplied/server/0151-handle-ServerboundKeepAlivePacket-async.patch
+++ b/patches/server/0151-handle-ServerboundKeepAlivePacket-async.patch
diff --git a/patches/unapplied/server/0152-Expose-client-protocol-version-and-virtual-host.patch b/patches/server/0152-Expose-client-protocol-version-and-virtual-host.patch
index 8b7e39a071..752fc3a3d4 100644
--- a/patches/unapplied/server/0152-Expose-client-protocol-version-and-virtual-host.patch
+++ b/patches/server/0152-Expose-client-protocol-version-and-virtual-host.patch
@@ -60,7 +60,7 @@ index 0000000000000000000000000000000000000000..a5a7624f1f372a26b982836cd31cff15
+
+}
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
-index f5e6610d271ef2c997fb3d1a5f65e0bf0740805a..4ce0aaaeebe7b333491e3d8aece212c1378297c1 100644
+index 00bf34e1fd3593ad6d92bd292f3069cd3cbddfdd..d1a8e95da5d9b37a097e4f91b31f32c490e7f64b 100644
--- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java
@@ -120,6 +120,10 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@@ -90,7 +90,7 @@ index 7ae4279768b70a4fdc8f4438898871a17c8fe402..582bbb376c75ab5bf737f3015ce8ad45
private void beginLogin(ClientIntentionPacket packet, boolean transfer) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 4a3836a645f3efac6f9d4fd4cbaa3eb2e23bb4b9..24339928fc75bc227a15921fb0a197a003ba0e5c 100644
+index d5aa717e790a56109ddcdc573bd254ed4b161a00..88b693ddaf301035d674fda835a51faa13842214 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -341,6 +341,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/unapplied/server/0153-revert-serverside-behavior-of-keepalives.patch b/patches/server/0153-revert-serverside-behavior-of-keepalives.patch
index 78c569400b..78c569400b 100644
--- a/patches/unapplied/server/0153-revert-serverside-behavior-of-keepalives.patch
+++ b/patches/server/0153-revert-serverside-behavior-of-keepalives.patch
diff --git a/patches/unapplied/server/0154-Send-attack-SoundEffects-only-to-players-who-can-see.patch b/patches/server/0154-Send-attack-SoundEffects-only-to-players-who-can-see.patch
index af85833106..a144c45248 100644
--- a/patches/unapplied/server/0154-Send-attack-SoundEffects-only-to-players-who-can-see.patch
+++ b/patches/server/0154-Send-attack-SoundEffects-only-to-players-who-can-see.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Send attack SoundEffects only to players who can see the
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 357c71409af5f67a0a6aaa0cb08fd93a4a4f99de..1cc11284b0e155ea41c198641b3644028adda97d 100644
+index 4dcc510061adfd07a15fa7007aa4863f7e5d0037..d0df92c91420d1202e0ae7fc6b879b37154e962b 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1227,7 +1227,7 @@ public abstract class Player extends LivingEntity {
+@@ -1230,7 +1230,7 @@ public abstract class Player extends LivingEntity {
boolean flag1;
if (this.isSprinting() && flag) {
@@ -18,7 +18,7 @@ index 357c71409af5f67a0a6aaa0cb08fd93a4a4f99de..1cc11284b0e155ea41c198641b364402
flag1 = true;
} else {
flag1 = false;
-@@ -1308,7 +1308,7 @@ public abstract class Player extends LivingEntity {
+@@ -1311,7 +1311,7 @@ public abstract class Player extends LivingEntity {
}
}
@@ -27,7 +27,7 @@ index 357c71409af5f67a0a6aaa0cb08fd93a4a4f99de..1cc11284b0e155ea41c198641b364402
this.sweepAttack();
}
-@@ -1336,15 +1336,15 @@ public abstract class Player extends LivingEntity {
+@@ -1339,15 +1339,15 @@ public abstract class Player extends LivingEntity {
}
if (flag2) {
@@ -46,7 +46,7 @@ index 357c71409af5f67a0a6aaa0cb08fd93a4a4f99de..1cc11284b0e155ea41c198641b364402
}
}
-@@ -1400,7 +1400,7 @@ public abstract class Player extends LivingEntity {
+@@ -1403,7 +1403,7 @@ public abstract class Player extends LivingEntity {
this.causeFoodExhaustion(this.level().spigotConfig.combatExhaustion, EntityExhaustionEvent.ExhaustionReason.ATTACK); // CraftBukkit - EntityExhaustionEvent // Spigot - Change to use configurable value
} else {
@@ -55,7 +55,7 @@ index 357c71409af5f67a0a6aaa0cb08fd93a4a4f99de..1cc11284b0e155ea41c198641b364402
// CraftBukkit start - resync on cancelled event
if (this instanceof ServerPlayer) {
((ServerPlayer) this).getBukkitEntity().updateInventory();
-@@ -1784,6 +1784,14 @@ public abstract class Player extends LivingEntity {
+@@ -1787,6 +1787,14 @@ public abstract class Player extends LivingEntity {
public int getXpNeededForNextLevel() {
return this.experienceLevel >= 30 ? 112 + (this.experienceLevel - 30) * 9 : (this.experienceLevel >= 15 ? 37 + (this.experienceLevel - 15) * 5 : 7 + this.experienceLevel * 2);
}
diff --git a/patches/unapplied/server/0155-Add-PlayerArmorChangeEvent.patch b/patches/server/0155-Add-PlayerArmorChangeEvent.patch
index cd83cc1481..d4167c4563 100644
--- a/patches/unapplied/server/0155-Add-PlayerArmorChangeEvent.patch
+++ b/patches/server/0155-Add-PlayerArmorChangeEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerArmorChangeEvent
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 009539fa39c81c610ac34747cc09082a0756c79d..a03583daf6cac850c154e0e89dc3fa00a844903f 100644
+index bc708b5b98e33d65105b394d69d410ae3acde584..bddd731cbdf88b349598d92f45a5af30b46e34ef 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -3280,10 +3280,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3291,10 +3291,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
throw new MatchException((String) null, (Throwable) null);
}
diff --git a/patches/unapplied/server/0156-Prevent-logins-from-being-processed-when-the-player-.patch b/patches/server/0156-Prevent-logins-from-being-processed-when-the-player-.patch
index 95804a7b7c..95804a7b7c 100644
--- a/patches/unapplied/server/0156-Prevent-logins-from-being-processed-when-the-player-.patch
+++ b/patches/server/0156-Prevent-logins-from-being-processed-when-the-player-.patch
diff --git a/patches/unapplied/server/0157-Fix-MC-117075-Block-entity-unload-lag-spike.patch b/patches/server/0157-Fix-MC-117075-Block-entity-unload-lag-spike.patch
index 12f777016d..a4d23ced2f 100644
--- a/patches/unapplied/server/0157-Fix-MC-117075-Block-entity-unload-lag-spike.patch
+++ b/patches/server/0157-Fix-MC-117075-Block-entity-unload-lag-spike.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix MC-117075: Block entity unload lag spike
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index e5eac1977f77b7ce1112bfe7ac1b77d9ef4d90f4..b8a3116ab104405c26d97f4103eb426f5367071a 100644
+index b628fbacf4a56f5df682dee8190a9dd6bb330803..8f3dcda2bdfe2694a510bf842f0146cd029bb618 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -723,6 +723,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -724,6 +724,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
boolean flag = this.tickRateManager().runsNormally();
int tilesThisCycle = 0;
@@ -17,7 +17,7 @@ index e5eac1977f77b7ce1112bfe7ac1b77d9ef4d90f4..b8a3116ab104405c26d97f4103eb426f
for (tileTickPosition = 0; tileTickPosition < this.blockEntityTickers.size(); tileTickPosition++) { // Paper - Disable tick limiters
this.tileTickPosition = (this.tileTickPosition < this.blockEntityTickers.size()) ? this.tileTickPosition : 0;
TickingBlockEntity tickingblockentity = (TickingBlockEntity) this.blockEntityTickers.get(this.tileTickPosition);
-@@ -731,12 +733,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -732,12 +734,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
if (tickingblockentity.isRemoved()) {
// Spigot start
tilesThisCycle--;
diff --git a/patches/unapplied/server/0158-use-CB-BlockState-implementations-for-captured-block.patch b/patches/server/0158-use-CB-BlockState-implementations-for-captured-block.patch
index 983ff7742b..bac3aa91ec 100644
--- a/patches/unapplied/server/0158-use-CB-BlockState-implementations-for-captured-block.patch
+++ b/patches/server/0158-use-CB-BlockState-implementations-for-captured-block.patch
@@ -18,10 +18,10 @@ the blockstate that will be valid for restoration, as opposed to dropping
information on restoration when the event is cancelled.
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index b8a3116ab104405c26d97f4103eb426f5367071a..e0986a141384de0ede38c88c2b116e083c63efe4 100644
+index 8f3dcda2bdfe2694a510bf842f0146cd029bb618..fb4dd68648e6b7905e6b6469a829a0cad22ed3d7 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -151,7 +151,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -152,7 +152,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public boolean preventPoiUpdated = false; // CraftBukkit - SPIGOT-5710
public boolean captureBlockStates = false;
public boolean captureTreeGeneration = false;
@@ -30,7 +30,7 @@ index b8a3116ab104405c26d97f4103eb426f5367071a..e0986a141384de0ede38c88c2b116e08
public Map<BlockPos, BlockEntity> capturedTileEntities = new HashMap<>();
public List<ItemEntity> captureDrops;
public final it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap<SpawnCategory> ticksPerSpawnCategory = new it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap<>();
-@@ -382,7 +382,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -383,7 +383,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) {
// CraftBukkit start - tree generation
if (this.captureTreeGeneration) {
@@ -39,7 +39,7 @@ index b8a3116ab104405c26d97f4103eb426f5367071a..e0986a141384de0ede38c88c2b116e08
if (blockstate == null) {
blockstate = CapturedBlockState.getTreeBlockState(this, pos, flags);
this.capturedBlockStates.put(pos.immutable(), blockstate);
-@@ -403,7 +403,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -404,7 +404,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
// CraftBukkit start - capture blockstates
boolean captured = false;
if (this.captureBlockStates && !this.capturedBlockStates.containsKey(pos)) {
@@ -49,7 +49,7 @@ index b8a3116ab104405c26d97f4103eb426f5367071a..e0986a141384de0ede38c88c2b116e08
this.capturedBlockStates.put(pos.immutable(), blockstate);
captured = true;
}
-@@ -606,7 +607,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -607,7 +608,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public BlockState getBlockState(BlockPos pos) {
// CraftBukkit start - tree generation
if (this.captureTreeGeneration) {
diff --git a/patches/unapplied/server/0159-API-to-get-a-BlockState-without-a-snapshot.patch b/patches/server/0159-API-to-get-a-BlockState-without-a-snapshot.patch
index 97e12295c9..166431ff22 100644
--- a/patches/unapplied/server/0159-API-to-get-a-BlockState-without-a-snapshot.patch
+++ b/patches/server/0159-API-to-get-a-BlockState-without-a-snapshot.patch
@@ -13,10 +13,10 @@ also Avoid NPE during CraftBlockEntityState load if could not get TE
If Tile Entity was null, correct Sign to return empty lines instead of null
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
-index 3d7c5db5514f9d4401da22d2df88c5614051e568..50413d317ce0282752c57535637f87d529f4c09f 100644
+index 4c5ff6009f72ec3e56a1f440904c472fb2a4138a..8e091ac441acf88a5c8597c6d2923efa5662092e 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
-@@ -54,6 +54,7 @@ public abstract class BlockEntity {
+@@ -53,6 +53,7 @@ public abstract class BlockEntity {
this.worldPosition = pos.immutable();
this.validateBlockState(state);
this.blockState = state;
@@ -24,7 +24,7 @@ index 3d7c5db5514f9d4401da22d2df88c5614051e568..50413d317ce0282752c57535637f87d5
}
private void validateBlockState(BlockState state) {
-@@ -87,7 +88,7 @@ public abstract class BlockEntity {
+@@ -86,7 +87,7 @@ public abstract class BlockEntity {
// CraftBukkit start - read container
protected void loadAdditional(CompoundTag nbt, HolderLookup.Provider registries) {
@@ -33,7 +33,7 @@ index 3d7c5db5514f9d4401da22d2df88c5614051e568..50413d317ce0282752c57535637f87d5
net.minecraft.nbt.Tag persistentDataTag = nbt.get("PublicBukkitValues");
if (persistentDataTag instanceof CompoundTag) {
-@@ -375,8 +376,15 @@ public abstract class BlockEntity {
+@@ -362,8 +363,15 @@ public abstract class BlockEntity {
// CraftBukkit start - add method
public InventoryHolder getOwner() {
diff --git a/patches/unapplied/server/0160-AsyncTabCompleteEvent.patch b/patches/server/0160-AsyncTabCompleteEvent.patch
index e02cf2d105..a10bfdb711 100644
--- a/patches/unapplied/server/0160-AsyncTabCompleteEvent.patch
+++ b/patches/server/0160-AsyncTabCompleteEvent.patch
@@ -16,10 +16,10 @@ Also adds isCommand and getLocation to the sync TabCompleteEvent
Co-authored-by: Aikar <[email protected]>
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 414077a1fed2955bd64ac7091af1daeda2a92e2c..79d9a58c66382fd94ab5f6020285e341b0114f6a 100644
+index 85b81b06e834e1575588a2a7e840a8bcc65c3306..f2b6162562a2f35c8f610c9386172984ae30bf17 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -722,21 +722,58 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -720,21 +720,58 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
diff --git a/patches/unapplied/server/0161-PlayerPickupExperienceEvent.patch b/patches/server/0161-PlayerPickupExperienceEvent.patch
index a07fa0d160..21c06bdcf2 100644
--- a/patches/unapplied/server/0161-PlayerPickupExperienceEvent.patch
+++ b/patches/server/0161-PlayerPickupExperienceEvent.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] PlayerPickupExperienceEvent
Allows plugins to cancel a player picking up an experience orb
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
-index b9160ebca0d11dbbf96da5f0f5810d302cfcea9a..74a0bebbf829fdb2bbae87100c4e2523c34f95a0 100644
+index 5999a77c803ee6f2a0dd05dea5f5817366bc70ea..5a017ec91d2e0df8467fde4f38ef00571f15bd01 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
-@@ -326,7 +326,7 @@ public class ExperienceOrb extends Entity {
+@@ -328,7 +328,7 @@ public class ExperienceOrb extends Entity {
@Override
public void playerTouch(Player player) {
if (player instanceof ServerPlayer entityplayer) {
diff --git a/patches/unapplied/server/0162-Ability-to-apply-mending-to-XP-API.patch b/patches/server/0162-Ability-to-apply-mending-to-XP-API.patch
index cecc6533cf..a4f65af530 100644
--- a/patches/unapplied/server/0162-Ability-to-apply-mending-to-XP-API.patch
+++ b/patches/server/0162-Ability-to-apply-mending-to-XP-API.patch
@@ -14,7 +14,7 @@ public net.minecraft.world.entity.ExperienceOrb durabilityToXp(I)I
public net.minecraft.world.entity.ExperienceOrb xpToDurability(I)I
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 24339928fc75bc227a15921fb0a197a003ba0e5c..8b9fdcbea2dd31ca2d79b31cc389afdc792a9423 100644
+index 88b693ddaf301035d674fda835a51faa13842214..09974c95ead0f1e38a3b3be2e7fccb3e227c21c9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1665,7 +1665,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/unapplied/server/0163-PlayerNaturallySpawnCreaturesEvent.patch b/patches/server/0163-PlayerNaturallySpawnCreaturesEvent.patch
index b510c92555..a9638abe21 100644
--- a/patches/unapplied/server/0163-PlayerNaturallySpawnCreaturesEvent.patch
+++ b/patches/server/0163-PlayerNaturallySpawnCreaturesEvent.patch
@@ -61,10 +61,10 @@ index 2e2976efcf99de269f67dec2c87cb910ff280562..f4fa64ab18573cb9a22a9bfb79a351c3
list1 = NaturalSpawner.getFilteredSpawningCategories(spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1, this.level); // CraftBukkit
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 0432304139fada99dff884ebf8d08dbf9afc45c7..8fd3802d8e293e35478666bd4e921d58e1ce5b41 100644
+index bdf79f73ab219debd4eedff44018dd8ab705b4e8..1ebd8d20e510b7af2cdf461fff9eb949a0017ae6 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -314,6 +314,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -312,6 +312,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
public String kickLeaveMessage = null; // SPIGOT-3034: Forward leave message to PlayerQuitEvent
// CraftBukkit end
public boolean isRealPlayer; // Paper
diff --git a/patches/unapplied/server/0164-Add-setPlayerProfile-API-for-Skulls.patch b/patches/server/0164-Add-setPlayerProfile-API-for-Skulls.patch
index 3b0eaf2557..3b0eaf2557 100644
--- a/patches/unapplied/server/0164-Add-setPlayerProfile-API-for-Skulls.patch
+++ b/patches/server/0164-Add-setPlayerProfile-API-for-Skulls.patch
diff --git a/patches/unapplied/server/0165-PreCreatureSpawnEvent.patch b/patches/server/0165-PreCreatureSpawnEvent.patch
index 0f7306bfc5..857136240c 100644
--- a/patches/unapplied/server/0165-PreCreatureSpawnEvent.patch
+++ b/patches/server/0165-PreCreatureSpawnEvent.patch
@@ -15,28 +15,28 @@ instead and save a lot of server resources.
See: https://github.com/PaperMC/Paper/issues/917
diff --git a/src/main/java/net/minecraft/util/SpawnUtil.java b/src/main/java/net/minecraft/util/SpawnUtil.java
-index e139ed6bc6f2dd07fe546588b31309ba30ed9755..34c3bf85473b3ad89355ebc21b68c59b3c683b84 100644
+index 116c0fe87776ebea88f47d1c98fd31d6046f3b86..a8903f087c75c851e8111b96e5aa9f271d618392 100644
--- a/src/main/java/net/minecraft/util/SpawnUtil.java
+++ b/src/main/java/net/minecraft/util/SpawnUtil.java
@@ -22,10 +22,10 @@ public class SpawnUtil {
- public static <T extends Mob> Optional<T> trySpawnMob(EntityType<T> entityType, EntitySpawnReason reason, ServerLevel world, BlockPos pos, int tries, int horizontalRange, int verticalRange, SpawnUtil.Strategy requirements) {
+ public static <T extends Mob> Optional<T> trySpawnMob(EntityType<T> entityType, EntitySpawnReason reason, ServerLevel world, BlockPos pos, int tries, int horizontalRange, int verticalRange, SpawnUtil.Strategy requirements, boolean requireEmptySpace) {
// CraftBukkit start
-- return SpawnUtil.trySpawnMob(entityType, reason, world, pos, tries, horizontalRange, verticalRange, requirements, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT);
-+ return SpawnUtil.trySpawnMob(entityType, reason, world, pos, tries, horizontalRange, verticalRange, requirements, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT, null); // Paper
+- return SpawnUtil.trySpawnMob(entityType, reason, world, pos, tries, horizontalRange, verticalRange, requirements, requireEmptySpace, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT);
++ return SpawnUtil.trySpawnMob(entityType, reason, world, pos, tries, horizontalRange, verticalRange, requirements, requireEmptySpace, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT, null); // Paper - pre creature spawn event
}
-- public static <T extends Mob> Optional<T> trySpawnMob(EntityType<T> entitytypes, EntitySpawnReason entityspawnreason, ServerLevel worldserver, BlockPos blockposition, int i, int j, int k, SpawnUtil.Strategy spawnutil_a, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) {
-+ public static <T extends Mob> Optional<T> trySpawnMob(EntityType<T> entitytypes, EntitySpawnReason entityspawnreason, ServerLevel worldserver, BlockPos blockposition, int i, int j, int k, SpawnUtil.Strategy spawnutil_a, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason, @javax.annotation.Nullable Runnable onAbort) { // Paper - pre creature spawn event
+- public static <T extends Mob> Optional<T> trySpawnMob(EntityType<T> entitytypes, EntitySpawnReason entityspawnreason, ServerLevel worldserver, BlockPos blockposition, int i, int j, int k, SpawnUtil.Strategy spawnutil_a, boolean flag, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) {
++ public static <T extends Mob> Optional<T> trySpawnMob(EntityType<T> entitytypes, EntitySpawnReason entityspawnreason, ServerLevel worldserver, BlockPos blockposition, int i, int j, int k, SpawnUtil.Strategy spawnutil_a, boolean flag, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason, @javax.annotation.Nullable Runnable onAbort) { // Paper - pre creature spawn event
// CraftBukkit end
BlockPos.MutableBlockPos blockposition_mutableblockposition = blockposition.mutable();
@@ -35,6 +35,22 @@ public class SpawnUtil {
blockposition_mutableblockposition.setWithOffset(blockposition, i1, k, j1);
- if (worldserver.getWorldBorder().isWithinBounds((BlockPos) blockposition_mutableblockposition) && SpawnUtil.moveToPossibleSpawnPosition(worldserver, k, blockposition_mutableblockposition, spawnutil_a)) {
+ if (worldserver.getWorldBorder().isWithinBounds((BlockPos) blockposition_mutableblockposition) && SpawnUtil.moveToPossibleSpawnPosition(worldserver, k, blockposition_mutableblockposition, spawnutil_a) && (!flag || worldserver.noCollision(entitytypes.getSpawnAABB((double) blockposition_mutableblockposition.getX() + 0.5D, (double) blockposition_mutableblockposition.getY(), (double) blockposition_mutableblockposition.getZ() + 0.5D)))) {
+ // Paper start - PreCreatureSpawnEvent
-+ com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent event = new com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent(
++ final com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent event = new com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent(
+ io.papermc.paper.util.MCUtil.toLocation(worldserver, blockposition),
+ org.bukkit.craftbukkit.entity.CraftEntityType.minecraftToBukkit(entitytypes),
+ reason
@@ -55,7 +55,7 @@ index e139ed6bc6f2dd07fe546588b31309ba30ed9755..34c3bf85473b3ad89355ebc21b68c59b
if (t0 != null) {
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
-index 17ab230c95901f0533997ac117d5b3d852fcd467..8f4ec4f0ea7ff2f9a952120785aea65f6559f897 100644
+index bb68fcef4b0cd89605f57f42ee5529d9c8e7e73e..768edafa018961ce38306f87e5cfe6aa99537305 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
@@ -497,6 +497,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -76,15 +76,15 @@ index 17ab230c95901f0533997ac117d5b3d852fcd467..8f4ec4f0ea7ff2f9a952120785aea65f
if (t0 != null) {
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-index 83bb48891d03534468d61cf7683438b3efb131cf..82ed0ce824e84ea09ea963caa61fbb75f6ce6fe7 100644
+index 6681c8d9e76a7a1e470378479d2c55e62d05a0fe..77c8c09b3d74b0dd88321bdfdf19d0f089d4e432 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -944,7 +944,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}).limit(5L).toList();
if (list1.size() >= requiredCount) {
-- if (!SpawnUtil.trySpawnMob(EntityType.IRON_GOLEM, EntitySpawnReason.MOB_SUMMONED, world, this.blockPosition(), 10, 8, 6, SpawnUtil.Strategy.LEGACY_IRON_GOLEM, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.VILLAGE_DEFENSE).isEmpty()) { // CraftBukkit
-+ if (SpawnUtil.trySpawnMob(EntityType.IRON_GOLEM, EntitySpawnReason.MOB_SUMMONED, world, this.blockPosition(), 10, 8, 6, SpawnUtil.Strategy.LEGACY_IRON_GOLEM, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.VILLAGE_DEFENSE, () -> {GolemSensor.golemDetected(this);}).isPresent()) { // CraftBukkit // Paper - Set Golem Last Seen to stop it from spawning another one
+- if (!SpawnUtil.trySpawnMob(EntityType.IRON_GOLEM, EntitySpawnReason.MOB_SUMMONED, world, this.blockPosition(), 10, 8, 6, SpawnUtil.Strategy.LEGACY_IRON_GOLEM, false, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.VILLAGE_DEFENSE).isEmpty()) { // CraftBukkit
++ if (SpawnUtil.trySpawnMob(EntityType.IRON_GOLEM, EntitySpawnReason.MOB_SUMMONED, world, this.blockPosition(), 10, 8, 6, SpawnUtil.Strategy.LEGACY_IRON_GOLEM, false, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.VILLAGE_DEFENSE, () -> {GolemSensor.golemDetected(this);}).isPresent()) { // CraftBukkit // Paper - Set Golem Last Seen to stop it from spawning another one
list.forEach(GolemSensor::golemDetected);
}
}
diff --git a/patches/unapplied/server/0166-Fill-Profile-Property-Events.patch b/patches/server/0166-Fill-Profile-Property-Events.patch
index 0c89bc936a..0c89bc936a 100644
--- a/patches/unapplied/server/0166-Fill-Profile-Property-Events.patch
+++ b/patches/server/0166-Fill-Profile-Property-Events.patch
diff --git a/patches/unapplied/server/0167-Add-PlayerAdvancementCriterionGrantEvent.patch b/patches/server/0167-Add-PlayerAdvancementCriterionGrantEvent.patch
index af41f90a89..af41f90a89 100644
--- a/patches/unapplied/server/0167-Add-PlayerAdvancementCriterionGrantEvent.patch
+++ b/patches/server/0167-Add-PlayerAdvancementCriterionGrantEvent.patch
diff --git a/patches/unapplied/server/0168-Add-ArmorStand-Item-Meta.patch b/patches/server/0168-Add-ArmorStand-Item-Meta.patch
index 9c2b77fa50..9c2b77fa50 100644
--- a/patches/unapplied/server/0168-Add-ArmorStand-Item-Meta.patch
+++ b/patches/server/0168-Add-ArmorStand-Item-Meta.patch
diff --git a/patches/unapplied/server/0169-Extend-Player-Interact-cancellation.patch b/patches/server/0169-Extend-Player-Interact-cancellation.patch
index 430e2a5e62..430e2a5e62 100644
--- a/patches/unapplied/server/0169-Extend-Player-Interact-cancellation.patch
+++ b/patches/server/0169-Extend-Player-Interact-cancellation.patch
diff --git a/patches/unapplied/server/0170-Tameable-getOwnerUniqueId-API.patch b/patches/server/0170-Tameable-getOwnerUniqueId-API.patch
index 8ef9a7ad54..8ef9a7ad54 100644
--- a/patches/unapplied/server/0170-Tameable-getOwnerUniqueId-API.patch
+++ b/patches/server/0170-Tameable-getOwnerUniqueId-API.patch
diff --git a/patches/unapplied/server/0171-Toggleable-player-crits.patch b/patches/server/0171-Toggleable-player-crits.patch
index 3a3f237d57..a4b16c6429 100644
--- a/patches/unapplied/server/0171-Toggleable-player-crits.patch
+++ b/patches/server/0171-Toggleable-player-crits.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Toggleable player crits
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 1cc11284b0e155ea41c198641b3644028adda97d..35cb06706e1584cd6d25aa68ff5c9b40a5768e03 100644
+index d0df92c91420d1202e0ae7fc6b879b37154e962b..8d8a58fc8a2620abab212952df94e6690a3c953b 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1236,6 +1236,7 @@ public abstract class Player extends LivingEntity {
+@@ -1239,6 +1239,7 @@ public abstract class Player extends LivingEntity {
f += itemstack.getItem().getAttackDamageBonus(target, f, damagesource);
boolean flag2 = flag && this.fallDistance > 0.0F && !this.onGround() && !this.onClimbable() && !this.isInWater() && !this.hasEffect(MobEffects.BLINDNESS) && !this.isPassenger() && target instanceof LivingEntity && !this.isSprinting();
diff --git a/patches/unapplied/server/0172-Disable-Explicit-Network-Manager-Flushing.patch b/patches/server/0172-Disable-Explicit-Network-Manager-Flushing.patch
index 583fa8e586..23bdb7cb23 100644
--- a/patches/unapplied/server/0172-Disable-Explicit-Network-Manager-Flushing.patch
+++ b/patches/server/0172-Disable-Explicit-Network-Manager-Flushing.patch
@@ -12,7 +12,7 @@ flushing on the netty event loop, so it won't do the flush on the main thread.
Renable flushing by passing -Dpaper.explicit-flush=true
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
-index 4ce0aaaeebe7b333491e3d8aece212c1378297c1..c45b8b2c89ffec7bd6a6875963c61f11185d3ee1 100644
+index d1a8e95da5d9b37a097e4f91b31f32c490e7f64b..ca2125fe63d5c2bc5af0ecec177bb457c54b111a 100644
--- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java
@@ -123,6 +123,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
diff --git a/patches/unapplied/server/0173-Implement-extended-PaperServerListPingEvent.patch b/patches/server/0173-Implement-extended-PaperServerListPingEvent.patch
index f229293b86..992120678b 100644
--- a/patches/unapplied/server/0173-Implement-extended-PaperServerListPingEvent.patch
+++ b/patches/server/0173-Implement-extended-PaperServerListPingEvent.patch
@@ -170,7 +170,7 @@ index 0000000000000000000000000000000000000000..30a19d10869f73d67b794e8e4c035bc5
+
+}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index fc5176447b4e54aafdd9f2806ffbdce02bc20c9b..5e8a9801ff92c8fab9c5cb5a5888ebe9144b331d 100644
+index b2396fe53d7db64f17671358880401ccc667a251..c64d2c093c84bc2708df52a77138307d2b81cf38 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -3,6 +3,9 @@ package net.minecraft.server;
diff --git a/patches/unapplied/server/0174-Add-more-fields-to-AsyncPreLoginEvent.patch b/patches/server/0174-Add-more-fields-to-AsyncPreLoginEvent.patch
index 685fda6db8..685fda6db8 100644
--- a/patches/unapplied/server/0174-Add-more-fields-to-AsyncPreLoginEvent.patch
+++ b/patches/server/0174-Add-more-fields-to-AsyncPreLoginEvent.patch
diff --git a/patches/unapplied/server/0175-Player.setPlayerProfile-API.patch b/patches/server/0175-Player.setPlayerProfile-API.patch
index af417f4286..e555f43ee5 100644
--- a/patches/unapplied/server/0175-Player.setPlayerProfile-API.patch
+++ b/patches/server/0175-Player.setPlayerProfile-API.patch
@@ -64,7 +64,7 @@ index 818df09e9245b5d89b4180b1eaa51470b7539341..f6b2ca92fd3510a76cbf56d0ea55aa6c
public Server getServer() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 8b9fdcbea2dd31ca2d79b31cc389afdc792a9423..2f956a9148601fec4bbf9502d692811a8bf47c55 100644
+index 09974c95ead0f1e38a3b3be2e7fccb3e227c21c9..7bb315c45a3b021ec6016c7ff70a88c1a371f799 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -254,11 +254,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/unapplied/server/0176-getPlayerUniqueId-API.patch b/patches/server/0176-getPlayerUniqueId-API.patch
index 5214138b6e..5214138b6e 100644
--- a/patches/unapplied/server/0176-getPlayerUniqueId-API.patch
+++ b/patches/server/0176-getPlayerUniqueId-API.patch
diff --git a/patches/unapplied/server/0177-Improved-Async-Task-Scheduler.patch b/patches/server/0177-Improved-Async-Task-Scheduler.patch
index 82d5ebd660..82d5ebd660 100644
--- a/patches/unapplied/server/0177-Improved-Async-Task-Scheduler.patch
+++ b/patches/server/0177-Improved-Async-Task-Scheduler.patch
diff --git a/patches/unapplied/server/0178-Make-legacy-ping-handler-more-reliable.patch b/patches/server/0178-Make-legacy-ping-handler-more-reliable.patch
index e9431bd1eb..e9431bd1eb 100644
--- a/patches/unapplied/server/0178-Make-legacy-ping-handler-more-reliable.patch
+++ b/patches/server/0178-Make-legacy-ping-handler-more-reliable.patch
diff --git a/patches/unapplied/server/0179-Call-PaperServerListPingEvent-for-legacy-pings.patch b/patches/server/0179-Call-PaperServerListPingEvent-for-legacy-pings.patch
index 5265180dd5..5265180dd5 100644
--- a/patches/unapplied/server/0179-Call-PaperServerListPingEvent-for-legacy-pings.patch
+++ b/patches/server/0179-Call-PaperServerListPingEvent-for-legacy-pings.patch
diff --git a/patches/unapplied/server/0180-Flag-to-disable-the-channel-limit.patch b/patches/server/0180-Flag-to-disable-the-channel-limit.patch
index c38b29f20b..d4be156693 100644
--- a/patches/unapplied/server/0180-Flag-to-disable-the-channel-limit.patch
+++ b/patches/server/0180-Flag-to-disable-the-channel-limit.patch
@@ -9,7 +9,7 @@ e.g. servers which allow and support the usage of mod packs.
provide an optional flag to disable this check, at your own risk.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 2f956a9148601fec4bbf9502d692811a8bf47c55..a94927944ebf952c8621c2cc4f4506eb934f0bfa 100644
+index 7bb315c45a3b021ec6016c7ff70a88c1a371f799..ce22bf772aa00e7d06328961bb69ff89eb3e52c6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -214,6 +214,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/unapplied/server/0181-Add-openSign-method-to-HumanEntity.patch b/patches/server/0181-Add-openSign-method-to-HumanEntity.patch
index c90098c049..c90098c049 100644
--- a/patches/unapplied/server/0181-Add-openSign-method-to-HumanEntity.patch
+++ b/patches/server/0181-Add-openSign-method-to-HumanEntity.patch
diff --git a/patches/unapplied/server/0182-Configurable-sprint-interruption-on-attack.patch b/patches/server/0182-Configurable-sprint-interruption-on-attack.patch
index 1fe54fe26f..419b298b51 100644
--- a/patches/unapplied/server/0182-Configurable-sprint-interruption-on-attack.patch
+++ b/patches/server/0182-Configurable-sprint-interruption-on-attack.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Configurable sprint interruption on attack
If the sprint interruption is disabled players continue sprinting when they attack entities.
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 35cb06706e1584cd6d25aa68ff5c9b40a5768e03..605f043bb132b21ff263ba7ab31a0f468a912d13 100644
+index 8d8a58fc8a2620abab212952df94e6690a3c953b..c43bc1d01e9116393d92e06b1929d09ed1abaefb 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1277,7 +1277,11 @@ public abstract class Player extends LivingEntity {
+@@ -1280,7 +1280,11 @@ public abstract class Player extends LivingEntity {
}
this.setDeltaMovement(this.getDeltaMovement().multiply(0.6D, 1.0D, 0.6D));
diff --git a/patches/unapplied/server/0183-EndermanEscapeEvent.patch b/patches/server/0183-EndermanEscapeEvent.patch
index cd9bf53000..bc426f7325 100644
--- a/patches/unapplied/server/0183-EndermanEscapeEvent.patch
+++ b/patches/server/0183-EndermanEscapeEvent.patch
@@ -8,10 +8,10 @@ Fires an event anytime an enderman intends to teleport away from the player
You may cancel this, enabling ranged attacks to damage the enderman for example.
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-index a6c9ca2928216ed89f69c1d140590d3368b354d6..d7145b3a19402a03d0af02822ffcb0ef07eaa663 100644
+index 7257cfd299f2e9d49d7c303dcb5f9304f09e05d8..ba45d14724c29d227800e76c6a906e60ab6844d6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-@@ -121,6 +121,12 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -120,6 +120,12 @@ public class EnderMan extends Monster implements NeutralMob {
this.setTarget(target, EntityTargetEvent.TargetReason.UNKNOWN, true);
}
@@ -24,7 +24,7 @@ index a6c9ca2928216ed89f69c1d140590d3368b354d6..d7145b3a19402a03d0af02822ffcb0ef
@Override
public boolean setTarget(LivingEntity entityliving, EntityTargetEvent.TargetReason reason, boolean fireEvent) {
if (!super.setTarget(entityliving, reason, fireEvent)) {
-@@ -257,7 +263,7 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -256,7 +262,7 @@ public class EnderMan extends Monster implements NeutralMob {
if (world.isDay() && this.tickCount >= this.targetChangeTime + 600) {
float f = this.getLightLevelDependentMagicValue();
@@ -33,7 +33,7 @@ index a6c9ca2928216ed89f69c1d140590d3368b354d6..d7145b3a19402a03d0af02822ffcb0ef
this.setTarget((LivingEntity) null);
this.teleport();
}
-@@ -383,11 +389,13 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -382,11 +388,13 @@ public class EnderMan extends Monster implements NeutralMob {
} else {
flag1 = flag && this.hurtWithCleanWater(world, source, (ThrownPotion) source.getDirectEntity(), amount);
@@ -47,7 +47,7 @@ index a6c9ca2928216ed89f69c1d140590d3368b354d6..d7145b3a19402a03d0af02822ffcb0ef
return flag1;
}
-@@ -612,7 +620,7 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -611,7 +619,7 @@ public class EnderMan extends Monster implements NeutralMob {
} else {
if (this.target != null && !this.enderman.isPassenger()) {
if (this.enderman.isBeingStaredBy((Player) this.target)) {
diff --git a/patches/unapplied/server/0184-Enderman.teleportRandomly.patch b/patches/server/0184-Enderman.teleportRandomly.patch
index aeb2e69493..aeb2e69493 100644
--- a/patches/unapplied/server/0184-Enderman.teleportRandomly.patch
+++ b/patches/server/0184-Enderman.teleportRandomly.patch
diff --git a/patches/unapplied/server/0185-Expand-World.spawnParticle-API-and-add-Builder.patch b/patches/server/0185-Expand-World.spawnParticle-API-and-add-Builder.patch
index 532ff4941f..eacc37f6ea 100644
--- a/patches/unapplied/server/0185-Expand-World.spawnParticle-API-and-add-Builder.patch
+++ b/patches/server/0185-Expand-World.spawnParticle-API-and-add-Builder.patch
@@ -10,20 +10,20 @@ Adds an option to control the force mode of the particle.
This adds a new Builder API which is much friendlier to use.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 3d54f52ed43ceef368804f7dce1dd95de3acc045..03161ef12960cab3b9c81c190dd808a9c5c476e1 100644
+index 9cb02b168384f597fce1251696e77a1e74f0d774..e80dc81423538e7e8a5510e5d82e97ab2097c225 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1541,12 +1541,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
+@@ -1542,12 +1542,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
- public <T extends ParticleOptions> int sendParticles(ServerPlayer sender, T t0, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6, boolean force) {
+ public <T extends ParticleOptions> int sendParticlesSource(ServerPlayer sender, T t0, boolean flag, boolean flag1, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6) {
+ // Paper start - Particle API
-+ return sendParticles(players, sender, t0, d0, d1, d2, i, d3, d4, d5, d6, force);
++ return this.sendParticlesSource(this.players, sender, t0, flag, flag1, d0, d1, d2, i, d3, d4, d5, d6);
+ }
-+ public <T extends ParticleOptions> int sendParticles(List<ServerPlayer> receivers, @Nullable ServerPlayer sender, T t0, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6, boolean force) {
++ public <T extends ParticleOptions> int sendParticlesSource(List<ServerPlayer> receivers, ServerPlayer sender, T t0, boolean flag, boolean flag1, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6) {
+ // Paper end - Particle API
- ClientboundLevelParticlesPacket packetplayoutworldparticles = new ClientboundLevelParticlesPacket(t0, force, d0, d1, d2, (float) d3, (float) d4, (float) d5, (float) d6, i);
// CraftBukkit end
+ ClientboundLevelParticlesPacket packetplayoutworldparticles = new ClientboundLevelParticlesPacket(t0, flag, flag1, d0, d1, d2, (float) d3, (float) d4, (float) d5, (float) d6, i);
int j = 0;
- for (int k = 0; k < this.players.size(); ++k) {
@@ -32,9 +32,9 @@ index 3d54f52ed43ceef368804f7dce1dd95de3acc045..03161ef12960cab3b9c81c190dd808a9
+ ServerPlayer entityplayer = (ServerPlayer) entityhuman; // Paper - Particle API
if (sender != null && !entityplayer.getBukkitEntity().canSee(sender.getBukkitEntity())) continue; // CraftBukkit
- if (this.sendParticles(entityplayer, force, d0, d1, d2, packetplayoutworldparticles)) { // CraftBukkit
+ if (this.sendParticles(entityplayer, flag, d0, d1, d2, packetplayoutworldparticles)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 9ad27a6908ac07d87dc0453b61f69d3b3037a971..51e5cd3e56487c3438d9b4ab1670e551790967ac 100644
+index cf38f75050ef947d9f853374f40a25504ec987a6..a403507c0729f5c26172c82caa9dca65214d0319 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1989,8 +1989,19 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -51,10 +51,10 @@ index 9ad27a6908ac07d87dc0453b61f69d3b3037a971..51e5cd3e56487c3438d9b4ab1670e551
+ if (data != null) {
+ Preconditions.checkArgument(particle.getDataType().isInstance(data), "data (%s) should be %s", data.getClass(), particle.getDataType());
+ }
- this.getHandle().sendParticles(
+ this.getHandle().sendParticlesSource(
- null, // Sender
+ receivers == null ? this.getHandle().players() : receivers.stream().map(player -> ((CraftPlayer) player).getHandle()).collect(java.util.stream.Collectors.toList()), // Paper - Particle API
+ sender != null ? ((CraftPlayer) sender).getHandle() : null, // Sender // Paper - Particle API
CraftParticle.createParticleParam(particle, data), // Particle
+ false, force,
x, y, z, // Position
- count, // Count
diff --git a/patches/unapplied/server/0186-Fix-exploit-that-allowed-colored-signs-to-be-created.patch b/patches/server/0186-Fix-exploit-that-allowed-colored-signs-to-be-created.patch
index 9b28d06fce..24b6027a1a 100644
--- a/patches/unapplied/server/0186-Fix-exploit-that-allowed-colored-signs-to-be-created.patch
+++ b/patches/server/0186-Fix-exploit-that-allowed-colored-signs-to-be-created.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix exploit that allowed colored signs to be created
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
-index cdaa050f237c6d6d5a0df0faf23daf3775249451..469d0046ba98289e98aa0f3f66e3ed27026a98a2 100644
+index 9e185afc561a4470055bba7dd1d256ee83805c8d..0e80e4f01e0175a9a2e90dc950ba0580af6b1520 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
@@ -202,9 +202,9 @@ public class SignBlockEntity extends BlockEntity {
diff --git a/patches/unapplied/server/0187-EndermanAttackPlayerEvent.patch b/patches/server/0187-EndermanAttackPlayerEvent.patch
index 7ec73bf7df..f416d418ac 100644
--- a/patches/unapplied/server/0187-EndermanAttackPlayerEvent.patch
+++ b/patches/server/0187-EndermanAttackPlayerEvent.patch
@@ -8,21 +8,21 @@ Allow control over whether or not an enderman aggros a player.
This allows you to override/extend the pumpkin/stare logic.
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-index d7145b3a19402a03d0af02822ffcb0ef07eaa663..5f1bbb4302013c2c1788db6b64eafba2a11a373a 100644
+index ba45d14724c29d227800e76c6a906e60ab6844d6..e9b28c7fea402cb15cfeefe6cd02e3056e54796d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-@@ -234,6 +234,14 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -233,6 +233,14 @@ public class EnderMan extends Monster implements NeutralMob {
}
boolean isBeingStaredBy(Player player) {
-+ // Paper start - EndermanAttackPlayerEvent
-+ boolean shouldAttack = isBeingStaredBy0(player);
-+ com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity());
++ // Paper start - EndermanAttackPlayerEvent
++ final boolean shouldAttack = isBeingStaredBy0(player);
++ final com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity());
+ event.setCancelled(!shouldAttack);
+ return event.callEvent();
+ }
+ private boolean isBeingStaredBy0(Player player) {
-+ // Paper end - EndermanAttackPlayerEvent
- return this.isLookingAtMe(player, 0.025D, true, false, LivingEntity.PLAYER_NOT_WEARING_DISGUISE_ITEM, new DoubleSupplier[]{this::getEyeY});
++ // Paper end - EndermanAttackPlayerEvent
+ return !LivingEntity.PLAYER_NOT_WEARING_DISGUISE_ITEM.test(player) ? false : this.isLookingAtMe(player, 0.025D, true, false, new double[]{this.getEyeY()});
}
diff --git a/patches/unapplied/server/0188-WitchConsumePotionEvent.patch b/patches/server/0188-WitchConsumePotionEvent.patch
index d63befdcdb..d63befdcdb 100644
--- a/patches/unapplied/server/0188-WitchConsumePotionEvent.patch
+++ b/patches/server/0188-WitchConsumePotionEvent.patch
diff --git a/patches/unapplied/server/0189-WitchThrowPotionEvent.patch b/patches/server/0189-WitchThrowPotionEvent.patch
index fc4a2c07db..fc4a2c07db 100644
--- a/patches/unapplied/server/0189-WitchThrowPotionEvent.patch
+++ b/patches/server/0189-WitchThrowPotionEvent.patch
diff --git a/patches/unapplied/server/0190-WitchReadyPotionEvent.patch b/patches/server/0190-WitchReadyPotionEvent.patch
index 5275662a1d..5275662a1d 100644
--- a/patches/unapplied/server/0190-WitchReadyPotionEvent.patch
+++ b/patches/server/0190-WitchReadyPotionEvent.patch
diff --git a/patches/unapplied/server/0191-ItemStack-getMaxItemUseDuration.patch b/patches/server/0191-ItemStack-getMaxItemUseDuration.patch
index d3f513e3a9..d3f513e3a9 100644
--- a/patches/unapplied/server/0191-ItemStack-getMaxItemUseDuration.patch
+++ b/patches/server/0191-ItemStack-getMaxItemUseDuration.patch
diff --git a/patches/unapplied/server/0192-Add-EntityTeleportEndGatewayEvent.patch b/patches/server/0192-Add-EntityTeleportEndGatewayEvent.patch
index 6431091971..d8a3152357 100644
--- a/patches/unapplied/server/0192-Add-EntityTeleportEndGatewayEvent.patch
+++ b/patches/server/0192-Add-EntityTeleportEndGatewayEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add EntityTeleportEndGatewayEvent
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index c22b1ef0751d244310dee880565eef83bdb61114..7001d4f1da527ed3cfd548eebccfcdc284b6a2ee 100644
+index 211886d55e19039768658b1c704f241ac93cf75a..9175c61a5c0b8a79c46869649320beaf731a2ab4 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3430,8 +3430,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3460,8 +3460,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit start
PositionMoveRotation absolutePosition = PositionMoveRotation.calculateAbsolute(PositionMoveRotation.of(this), PositionMoveRotation.of(teleportTarget), teleportTarget.relatives());
Location to = CraftLocation.toBukkit(absolutePosition.position(), teleportTarget.newLevel().getWorld(), absolutePosition.yRot(), absolutePosition.xRot());
diff --git a/patches/unapplied/server/0193-Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch b/patches/server/0193-Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch
index 70526b8bcb..70526b8bcb 100644
--- a/patches/unapplied/server/0193-Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch
+++ b/patches/server/0193-Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch
diff --git a/patches/unapplied/server/0194-Improve-CraftEntity-and-CraftPlayer-equals-and-hashC.patch b/patches/server/0194-Improve-CraftEntity-and-CraftPlayer-equals-and-hashC.patch
index 3a0c761449..8e4524f669 100644
--- a/patches/unapplied/server/0194-Improve-CraftEntity-and-CraftPlayer-equals-and-hashC.patch
+++ b/patches/server/0194-Improve-CraftEntity-and-CraftPlayer-equals-and-hashC.patch
@@ -53,7 +53,7 @@ index 0480fbeffd19011d3cd63021225f376c464b480c..d6241e2db362de034ae610694c49c188
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index a94927944ebf952c8621c2cc4f4506eb934f0bfa..b79d02ecccc74120f5e40cfc0542c8ac8c1f5909 100644
+index ce22bf772aa00e7d06328961bb69ff89eb3e52c6..6538a3ee384b36774480bc49c702102e5d0b7762 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -626,22 +626,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/unapplied/server/0195-Configurable-LootPool-luck-formula.patch b/patches/server/0195-Configurable-LootPool-luck-formula.patch
index 33c95e3339..33c95e3339 100644
--- a/patches/unapplied/server/0195-Configurable-LootPool-luck-formula.patch
+++ b/patches/server/0195-Configurable-LootPool-luck-formula.patch
diff --git a/patches/unapplied/server/0196-Print-Error-details-when-failing-to-save-player-data.patch b/patches/server/0196-Print-Error-details-when-failing-to-save-player-data.patch
index 0885ca8d10..0885ca8d10 100644
--- a/patches/unapplied/server/0196-Print-Error-details-when-failing-to-save-player-data.patch
+++ b/patches/server/0196-Print-Error-details-when-failing-to-save-player-data.patch
diff --git a/patches/unapplied/server/0197-Make-shield-blocking-delay-configurable.patch b/patches/server/0197-Make-shield-blocking-delay-configurable.patch
index 87567dd988..810db5a600 100644
--- a/patches/unapplied/server/0197-Make-shield-blocking-delay-configurable.patch
+++ b/patches/server/0197-Make-shield-blocking-delay-configurable.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Make shield blocking delay configurable
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index a03583daf6cac850c154e0e89dc3fa00a844903f..349aa25d6e52190534ea68a31b6e2ae29a689944 100644
+index bddd731cbdf88b349598d92f45a5af30b46e34ef..9d0b7fc2e6beee1acb28a0dd473023beaafd86e5 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -4102,12 +4102,24 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -4109,12 +4109,24 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (this.isUsingItem() && !this.useItem.isEmpty()) {
Item item = this.useItem.getItem();
@@ -35,7 +35,7 @@ index a03583daf6cac850c154e0e89dc3fa00a844903f..349aa25d6e52190534ea68a31b6e2ae2
return this.isShiftKeyDown();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index 452fe788152f7c38ab4b6c627e3ba37da3d9b9d9..e5186fbd4030d7b39443090b711e855dcbc39426 100644
+index 445126b24a8c5c9104b14838661c53382bd65e53..4d09ba705220d397adedab27c31d604447c51319 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -873,5 +873,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/unapplied/server/0198-Improve-EntityShootBowEvent.patch b/patches/server/0198-Improve-EntityShootBowEvent.patch
index 213e6f61c1..b38b2ff979 100644
--- a/patches/unapplied/server/0198-Improve-EntityShootBowEvent.patch
+++ b/patches/server/0198-Improve-EntityShootBowEvent.patch
@@ -9,10 +9,10 @@ Adds missing call to Illagers and also adds Arrow ItemStack to skeletons
public net.minecraft.world.entity.projectile.AbstractArrow getPickupItem()Lnet.minecraft.world.item.ItemStack;
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
-index b16979ae9ad9636d91d3f2cd80baf01250ec534d..8f63e27d904abb33492daf627d48d33d1193deef 100644
+index 60b41fc25093789c362fa8d158272df42443fec1..b7b567192f14ca8bac24b533dcbb5b5bd4f5a3aa 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
-@@ -208,7 +208,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
+@@ -210,7 +210,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
if (world instanceof ServerLevel worldserver) {
// CraftBukkit start
diff --git a/patches/unapplied/server/0199-PlayerReadyArrowEvent.patch b/patches/server/0199-PlayerReadyArrowEvent.patch
index 8d16572d48..e290640892 100644
--- a/patches/unapplied/server/0199-PlayerReadyArrowEvent.patch
+++ b/patches/server/0199-PlayerReadyArrowEvent.patch
@@ -7,10 +7,10 @@ Called when a player is firing a bow and the server is choosing an arrow to use.
Plugins can skip selection of certain arrows and control which is used.
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 605f043bb132b21ff263ba7ab31a0f468a912d13..df0cfd316d24e285f927c713ab1f9a912857928c 100644
+index c43bc1d01e9116393d92e06b1929d09ed1abaefb..3c02f29b3114220b2634d69b413a6724ee4cfdf8 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -2185,18 +2185,29 @@ public abstract class Player extends LivingEntity {
+@@ -2188,18 +2188,29 @@ public abstract class Player extends LivingEntity {
return ImmutableList.of(Pose.STANDING, Pose.CROUCHING, Pose.SWIMMING);
}
diff --git a/patches/unapplied/server/0200-Add-entity-knockback-events.patch b/patches/server/0200-Add-entity-knockback-events.patch
index 54b98a893f..acd8ec13b9 100644
--- a/patches/unapplied/server/0200-Add-entity-knockback-events.patch
+++ b/patches/server/0200-Add-entity-knockback-events.patch
@@ -11,10 +11,10 @@ Co-authored-by: aerulion <[email protected]>
Co-authored-by: Jake Potrebic <[email protected]>
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 7001d4f1da527ed3cfd548eebccfcdc284b6a2ee..9f503da8895e85991f3d5e8f62c7aa065c61c93c 100644
+index 9175c61a5c0b8a79c46869649320beaf731a2ab4..3c29f5e1338754728e1acb4676526945b1e7f67c 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -2051,7 +2051,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -2074,7 +2074,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public void push(double deltaX, double deltaY, double deltaZ) {
@@ -38,10 +38,10 @@ index 7001d4f1da527ed3cfd548eebccfcdc284b6a2ee..9f503da8895e85991f3d5e8f62c7aa06
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 349aa25d6e52190534ea68a31b6e2ae29a689944..6b599427c2d61d4475af0f5af8294308940cf0c9 100644
+index 9d0b7fc2e6beee1acb28a0dd473023beaafd86e5..5fef8dad5469a1e9409700614a1c861547e42bc7 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1563,7 +1563,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1531,7 +1531,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
d1 = source.getSourcePosition().z() - this.getZ();
}
@@ -50,7 +50,7 @@ index 349aa25d6e52190534ea68a31b6e2ae29a689944..6b599427c2d61d4475af0f5af8294308
if (!flag) {
this.indicateDamage(d0, d1);
}
-@@ -1620,7 +1620,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1631,7 +1631,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
protected void blockedByShield(LivingEntity target) {
@@ -59,7 +59,7 @@ index 349aa25d6e52190534ea68a31b6e2ae29a689944..6b599427c2d61d4475af0f5af8294308
}
private boolean checkTotemDeathProtection(DamageSource source) {
-@@ -1906,10 +1906,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1917,10 +1917,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
public void knockback(double strength, double x, double z) {
// CraftBukkit start - EntityKnockbackEvent
@@ -72,7 +72,7 @@ index 349aa25d6e52190534ea68a31b6e2ae29a689944..6b599427c2d61d4475af0f5af8294308
d0 *= 1.0D - this.getAttributeValue(Attributes.KNOCKBACK_RESISTANCE);
if (true || d0 > 0.0D) { // CraftBukkit - Call event even when force is 0
//this.hasImpulse = true; // CraftBukkit - Move down
-@@ -1922,13 +1922,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1933,13 +1933,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
Vec3 vec3d1 = (new Vec3(d1, 0.0D, d2)).normalize().scale(d0);
@@ -93,10 +93,10 @@ index 349aa25d6e52190534ea68a31b6e2ae29a689944..6b599427c2d61d4475af0f5af8294308
}
}
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 51381c32c8650400331a122a4b6c8d95c9d0632b..2b8bfccbf520f9a356f816522ac3a5caa51e44e1 100644
+index f568ccec14cac96efa03dc888a4a2a0067515b39..6d1f840a328a2081a59aab923595450eb54f685c 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -1685,7 +1685,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
+@@ -1684,7 +1684,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
if (f1 > 0.0F && target instanceof LivingEntity) {
entityliving = (LivingEntity) target;
@@ -132,7 +132,7 @@ index dbae113f3447f66e154b302ce0634b0fe446381c..d0fb32feb10f75444e3ed0a50c70ef6f
});
}
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
-index 0012ab1f56180081d210c8836e2a59d543b950b8..ba1bb0f82634054e02c5f4bc062c1822a356e2a6 100644
+index f10d0a03c2bb6487dd05869e05258276bfcec7eb..6e2e570aa1c85eced9ed9578188db43df132a290 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -441,7 +441,7 @@ public class EnderDragon extends Mob implements Enemy {
@@ -174,10 +174,10 @@ index 6a90feef8eb2d65c925c44bc97305a51e3fb7cf0..7dfbcb2ed831cff5d002d79fb81514e6
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
-index c4397afa53a36ecf867525c4dcf2231a52d058dd..32973d9c7bf4c4105d7bd82d3723e0b70cd79644 100644
+index 1d15465069c8aa57fa89521a8e75c1aeb1cfc096..6c909ea334310f1f9b2d9a2e2cc2f23f2badba37 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
-@@ -292,7 +292,7 @@ public class Ravager extends Raider {
+@@ -289,7 +289,7 @@ public class Ravager extends Raider {
double d1 = entity.getZ() - this.getZ();
double d2 = Math.max(d0 * d0 + d1 * d1, 0.001D);
@@ -200,10 +200,10 @@ index 8b80f5c2749106f634d962fd0f381aa20e7ef335..a1e3375519fe676b14788d6729a7e71d
}
}
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index df0cfd316d24e285f927c713ab1f9a912857928c..ba0ea4d6b67c9c52f170e0235e4b972aad3ce211 100644
+index 3c02f29b3114220b2634d69b413a6724ee4cfdf8..02d8ada43669134695e7edcf33fdac4599969f9d 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1271,9 +1271,9 @@ public abstract class Player extends LivingEntity {
+@@ -1274,9 +1274,9 @@ public abstract class Player extends LivingEntity {
if (target instanceof LivingEntity) {
LivingEntity entityliving1 = (LivingEntity) target;
@@ -215,7 +215,7 @@ index df0cfd316d24e285f927c713ab1f9a912857928c..ba0ea4d6b67c9c52f170e0235e4b972a
}
this.setDeltaMovement(this.getDeltaMovement().multiply(0.6D, 1.0D, 0.6D));
-@@ -1301,7 +1301,7 @@ public abstract class Player extends LivingEntity {
+@@ -1304,7 +1304,7 @@ public abstract class Player extends LivingEntity {
continue;
}
// CraftBukkit end
@@ -225,10 +225,10 @@ index df0cfd316d24e285f927c713ab1f9a912857928c..ba0ea4d6b67c9c52f170e0235e4b972a
Level world = this.level();
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
-index eb9a82c8c0e342d2afb21c64da32412ce3a0be76..94fdfaa209406c23fc292982d1221c3ee82eea27 100644
+index dd115d514aeb3d124bc99456044f7d176850acab..a05fc651a952b57a8a2fcb32d26d024875037d38 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
-@@ -553,7 +553,7 @@ public abstract class AbstractArrow extends Projectile {
+@@ -568,7 +568,7 @@ public abstract class AbstractArrow extends Projectile {
Vec3 vec3d = this.getDeltaMovement().multiply(1.0D, 0.0D, 1.0D).normalize().scale(d0 * 0.6D * d1);
if (vec3d.lengthSqr() > 0.0D) {
@@ -238,7 +238,7 @@ index eb9a82c8c0e342d2afb21c64da32412ce3a0be76..94fdfaa209406c23fc292982d1221c3e
}
diff --git a/src/main/java/net/minecraft/world/entity/projectile/windcharge/AbstractWindCharge.java b/src/main/java/net/minecraft/world/entity/projectile/windcharge/AbstractWindCharge.java
-index 6541ab0d8da28785b19fa50d18d6a484ea38cef8..a325a223d06e155c01f664562db0edd0b180e356 100644
+index dd14e76ca0813e19a7a531e9009b8f156ae8d896..8022d2d9415d8b2dedee2db0e4f1f0aab8c55bde 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/windcharge/AbstractWindCharge.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/windcharge/AbstractWindCharge.java
@@ -101,7 +101,7 @@ public abstract class AbstractWindCharge extends AbstractHurtingProjectile imple
@@ -251,7 +251,7 @@ index 6541ab0d8da28785b19fa50d18d6a484ea38cef8..a325a223d06e155c01f664562db0edd0
public abstract void explode(Vec3 pos);
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
-index 3afacd201683f46fd75cd6f9a7f3d43a7050cf4a..9f37d7284c81d529551107e2836627977efabd65 100644
+index e816e54daff781d54a94a007df5c59051347739d..fa22406002ae2c424b8eadbf78eabc2776f43945 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -258,13 +258,10 @@ public class ServerExplosion implements Explosion {
@@ -271,7 +271,7 @@ index 3afacd201683f46fd75cd6f9a7f3d43a7050cf4a..9f37d7284c81d529551107e283662797
+ // Paper end - knockback events
}
// CraftBukkit end
- entity.setDeltaMovement(entity.getDeltaMovement().add(vec3d));
+ entity.push(vec3d);
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index f05a19f868be0d685c4fbf64e1dfbefda71131ac..60a16ac62a27a92b763bf90e72fab4ed01aeb592 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
diff --git a/patches/unapplied/server/0201-Expand-Explosions-API.patch b/patches/server/0201-Expand-Explosions-API.patch
index 43d296102f..b10058e3c2 100644
--- a/patches/unapplied/server/0201-Expand-Explosions-API.patch
+++ b/patches/server/0201-Expand-Explosions-API.patch
@@ -9,10 +9,10 @@ Co-authored-by: Esoteric Enderman <[email protected]
Co-authored-by: Bjarne Koll <[email protected]>
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 03161ef12960cab3b9c81c190dd808a9c5c476e1..f0fc08bcc2988277b6a5e3107e6fc5c89bb67b93 100644
+index e80dc81423538e7e8a5510e5d82e97ab2097c225..74f7467caf7d86011f0b8aea7a8c1f5c644f690a 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1424,6 +1424,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
+@@ -1425,6 +1425,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
public ServerExplosion explode0(@Nullable Entity entity, @Nullable DamageSource damagesource, @Nullable ExplosionDamageCalculator explosiondamagecalculator, double d0, double d1, double d2, float f, boolean flag, Level.ExplosionInteraction world_a, ParticleOptions particleparam, ParticleOptions particleparam1, Holder<SoundEvent> holder) {
@@ -24,7 +24,7 @@ index 03161ef12960cab3b9c81c190dd808a9c5c476e1..f0fc08bcc2988277b6a5e3107e6fc5c8
// CraftBukkit end
Explosion.BlockInteraction explosion_effect;
-@@ -1455,6 +1460,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
+@@ -1456,6 +1461,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
Explosion.BlockInteraction explosion_effect1 = explosion_effect;
Vec3 vec3d = new Vec3(d0, d1, d2);
ServerExplosion serverexplosion = new ServerExplosion(this, entity, damagesource, explosiondamagecalculator, vec3d, f, flag, explosion_effect1);
@@ -33,7 +33,7 @@ index 03161ef12960cab3b9c81c190dd808a9c5c476e1..f0fc08bcc2988277b6a5e3107e6fc5c8
serverexplosion.explode();
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
-index 9f37d7284c81d529551107e2836627977efabd65..d1878f597c3d8119e9b248f4fe8af435ce8c9710 100644
+index fa22406002ae2c424b8eadbf78eabc2776f43945..4c03ec11fb2c36291b8b6cb73a7c63eabb9dcd4f 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -63,6 +63,7 @@ public class ServerExplosion implements Explosion {
@@ -54,7 +54,7 @@ index 9f37d7284c81d529551107e2836627977efabd65..d1878f597c3d8119e9b248f4fe8af435
while (iterator.hasNext()) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 51e5cd3e56487c3438d9b4ab1670e551790967ac..18c92df4fd68bf5374608dc34517e48ce0fb428a 100644
+index a403507c0729f5c26172c82caa9dca65214d0319..32b5fbbaf49bbede29a94d518663e9549411ee2f 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -777,6 +777,11 @@ public class CraftWorld extends CraftRegionAccessor implements World {
diff --git a/patches/unapplied/server/0202-LivingEntity-Active-Item-API.patch b/patches/server/0202-LivingEntity-Active-Item-API.patch
index f7de817b6b..ae5cb5c4dc 100644
--- a/patches/unapplied/server/0202-LivingEntity-Active-Item-API.patch
+++ b/patches/server/0202-LivingEntity-Active-Item-API.patch
@@ -13,7 +13,7 @@ public net/minecraft/server/level/ServerPlayer completeUsingItem()V
Co-authored-by: Jake Potrebic <[email protected]>
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index e5186fbd4030d7b39443090b711e855dcbc39426..2033354daafc739a8bd9ddf4a6128d3204d32094 100644
+index 4d09ba705220d397adedab27c31d604447c51319..5799e385ca91f360a9b5d72b281c5a19ab03de48 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -884,4 +884,53 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/unapplied/server/0203-RangedEntity-API.patch b/patches/server/0203-RangedEntity-API.patch
index 2b548743e2..2b548743e2 100644
--- a/patches/unapplied/server/0203-RangedEntity-API.patch
+++ b/patches/server/0203-RangedEntity-API.patch
diff --git a/patches/unapplied/server/0204-Add-config-to-disable-ender-dragon-legacy-check.patch b/patches/server/0204-Add-config-to-disable-ender-dragon-legacy-check.patch
index 7c711b2484..7c711b2484 100644
--- a/patches/unapplied/server/0204-Add-config-to-disable-ender-dragon-legacy-check.patch
+++ b/patches/server/0204-Add-config-to-disable-ender-dragon-legacy-check.patch
diff --git a/patches/unapplied/server/0205-Implement-World.getEntity-UUID-API.patch b/patches/server/0205-Implement-World.getEntity-UUID-API.patch
index 608b54079b..7836da0c0a 100644
--- a/patches/unapplied/server/0205-Implement-World.getEntity-UUID-API.patch
+++ b/patches/server/0205-Implement-World.getEntity-UUID-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Implement World.getEntity(UUID) API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 18c92df4fd68bf5374608dc34517e48ce0fb428a..8f231f693882a770bdc810b1e117eb31ef1ddadb 100644
+index 32b5fbbaf49bbede29a94d518663e9549411ee2f..1a3ea592ce33798d01425205fcde452a7bcb8790 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1130,6 +1130,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
diff --git a/patches/unapplied/server/0206-InventoryCloseEvent-Reason-API.patch b/patches/server/0206-InventoryCloseEvent-Reason-API.patch
index 179c54a7fa..39b8f269e4 100644
--- a/patches/unapplied/server/0206-InventoryCloseEvent-Reason-API.patch
+++ b/patches/server/0206-InventoryCloseEvent-Reason-API.patch
@@ -7,10 +7,10 @@ Allows you to determine why an inventory was closed, enabling plugin developers
to "confirm" things based on if it was player triggered close or not.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index f0fc08bcc2988277b6a5e3107e6fc5c89bb67b93..e03032b96e8f44ef83f52dcf3dc5a8856281e475 100644
+index 74f7467caf7d86011f0b8aea7a8c1f5c644f690a..99db41834d7e8fb8fbbe83bd70a4b8d7c016c3e2 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1209,7 +1209,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
+@@ -1210,7 +1210,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
for (net.minecraft.world.level.block.entity.BlockEntity tileentity : chunk.getBlockEntities().values()) {
if (tileentity instanceof net.minecraft.world.Container) {
for (org.bukkit.entity.HumanEntity h : Lists.newArrayList(((net.minecraft.world.Container) tileentity).getViewers())) {
@@ -19,7 +19,7 @@ index f0fc08bcc2988277b6a5e3107e6fc5c89bb67b93..e03032b96e8f44ef83f52dcf3dc5a885
}
}
}
-@@ -2254,7 +2254,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
+@@ -2260,7 +2260,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// Spigot Start
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
for (org.bukkit.entity.HumanEntity h : Lists.newArrayList(((org.bukkit.inventory.InventoryHolder) entity.getBukkitEntity()).getInventory().getViewers())) {
@@ -29,19 +29,19 @@ index f0fc08bcc2988277b6a5e3107e6fc5c89bb67b93..e03032b96e8f44ef83f52dcf3dc5a885
}
// Spigot End
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 8fd3802d8e293e35478666bd4e921d58e1ce5b41..8a3b570034d2ec7916b80b89186c0664e7bc73dd 100644
+index 1ebd8d20e510b7af2cdf461fff9eb949a0017ae6..0a5aeb9b50dfec3b791040348f6a9e929ef8e59c 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -933,7 +933,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -930,7 +930,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
}
// Paper end - Configurable container update tick rate
- if (!this.level().isClientSide && !this.containerMenu.stillValid(this)) {
+ if (!this.containerMenu.stillValid(this)) {
- this.closeContainer();
+ this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper - Inventory close reason
this.containerMenu = this.inventoryMenu;
}
-@@ -1185,7 +1185,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -1182,7 +1182,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
// SPIGOT-943 - only call if they have an inventory open
if (this.containerMenu != this.inventoryMenu) {
@@ -50,7 +50,7 @@ index 8fd3802d8e293e35478666bd4e921d58e1ce5b41..8a3b570034d2ec7916b80b89186c0664
}
net.kyori.adventure.text.Component deathMessage = event.deathMessage() != null ? event.deathMessage() : net.kyori.adventure.text.Component.empty(); // Paper - Adventure
-@@ -1859,7 +1859,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -1842,7 +1842,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
}
// CraftBukkit end
if (this.containerMenu != this.inventoryMenu) {
@@ -59,7 +59,7 @@ index 8fd3802d8e293e35478666bd4e921d58e1ce5b41..8a3b570034d2ec7916b80b89186c0664
}
// this.nextContainerCounter(); // CraftBukkit - moved up
-@@ -1889,7 +1889,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -1872,7 +1872,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
@Override
public void closeContainer() {
@@ -75,10 +75,10 @@ index 8fd3802d8e293e35478666bd4e921d58e1ce5b41..8a3b570034d2ec7916b80b89186c0664
this.doCloseContainer();
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 79d9a58c66382fd94ab5f6020285e341b0114f6a..f36d72153c1ec0426790ed3033500c3cb766af2d 100644
+index f2b6162562a2f35c8f610c9386172984ae30bf17..b4edc64f3eacdbfb6187106989d190303b0541ac 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2638,10 +2638,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2714,10 +2714,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@Override
public void handleContainerClose(ServerboundContainerClosePacket packet) {
@@ -109,10 +109,10 @@ index ac5607fb1ac771f16b14d71e08a8d4183a39a002..06338f5fa552a390db05a90b5cc796a7
PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName()))); // Paper - Adventure
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index ba0ea4d6b67c9c52f170e0235e4b972aad3ce211..7eb4563299e7c54ec4df53c966f6d1a86fb2ec4e 100644
+index 02d8ada43669134695e7edcf33fdac4599969f9d..833e2b338671b81401409fc390ab1515f3520442 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -279,7 +279,7 @@ public abstract class Player extends LivingEntity {
+@@ -282,7 +282,7 @@ public abstract class Player extends LivingEntity {
this.updateIsUnderwater();
super.tick();
if (!this.level().isClientSide && this.containerMenu != null && !this.containerMenu.stillValid(this)) {
@@ -121,7 +121,7 @@ index ba0ea4d6b67c9c52f170e0235e4b972aad3ce211..7eb4563299e7c54ec4df53c966f6d1a8
this.containerMenu = this.inventoryMenu;
}
-@@ -531,6 +531,13 @@ public abstract class Player extends LivingEntity {
+@@ -534,6 +534,13 @@ public abstract class Player extends LivingEntity {
}
@@ -165,7 +165,7 @@ index 6d4e0a90c70f7a66450cbb18ebec1d7bf9200af2..5ff159be1a6dfb4b1a5b9aa1e435d294
@Override
public boolean isBlocking() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index b79d02ecccc74120f5e40cfc0542c8ac8c1f5909..5239ce2d507f48effc4f3e2bc462d9caef5caa92 100644
+index 6538a3ee384b36774480bc49c702102e5d0b7762..c76f5d21d6bc5c25b43503ebb0cbdd9f8f984743 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1278,7 +1278,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/unapplied/server/0207-Vex-get-setSummoner-API.patch b/patches/server/0207-Vex-get-setSummoner-API.patch
index 9c014ff1fc..9c014ff1fc 100644
--- a/patches/unapplied/server/0207-Vex-get-setSummoner-API.patch
+++ b/patches/server/0207-Vex-get-setSummoner-API.patch
diff --git a/patches/unapplied/server/0208-add-more-information-to-Entity.toString.patch b/patches/server/0208-add-more-information-to-Entity.toString.patch
index 8541967ffd..1c7a508698 100644
--- a/patches/unapplied/server/0208-add-more-information-to-Entity.toString.patch
+++ b/patches/server/0208-add-more-information-to-Entity.toString.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] add more information to Entity.toString()
UUID, ticks lived, valid, dead
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 9f503da8895e85991f3d5e8f62c7aa065c61c93c..e67d8da5be50e07cb0473b7bfe6d381da044155a 100644
+index 3c29f5e1338754728e1acb4676526945b1e7f67c..87ab16a82b4ba58fd469eb845d79e9ad98cf45bc 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3407,7 +3407,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3437,7 +3437,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public String toString() {
String s = this.level() == null ? "~NULL~" : this.level().toString();
diff --git a/patches/unapplied/server/0209-EnderDragon-Events.patch b/patches/server/0209-EnderDragon-Events.patch
index f78c44aab2..f78c44aab2 100644
--- a/patches/unapplied/server/0209-EnderDragon-Events.patch
+++ b/patches/server/0209-EnderDragon-Events.patch
diff --git a/patches/unapplied/server/0210-PlayerElytraBoostEvent.patch b/patches/server/0210-PlayerElytraBoostEvent.patch
index 3042206c20..f36ab9b175 100644
--- a/patches/unapplied/server/0210-PlayerElytraBoostEvent.patch
+++ b/patches/server/0210-PlayerElytraBoostEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] PlayerElytraBoostEvent
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-index fed01aea47090b990939becde837add6c36bf418..f8ae12a3540c4a7aa7e2c1656cbd866e33e11f57 100644
+index d7d2d4b5eb49e286171a143e4cb4419290a117e0..e76dc69e1bdce789532c9e439ea73b54186d0afc 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
@@ -219,11 +219,34 @@ public abstract class Projectile extends Entity implements TraceableEntity {
diff --git a/patches/unapplied/server/0211-PlayerLaunchProjectileEvent.patch b/patches/server/0211-PlayerLaunchProjectileEvent.patch
index de1f0193b6..d029ba0031 100644
--- a/patches/unapplied/server/0211-PlayerLaunchProjectileEvent.patch
+++ b/patches/server/0211-PlayerLaunchProjectileEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] PlayerLaunchProjectileEvent
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-index f8ae12a3540c4a7aa7e2c1656cbd866e33e11f57..d6dfda0580d919eb8a000113e7f9dd9794117b45 100644
+index e76dc69e1bdce789532c9e439ea73b54186d0afc..9c36b42befab1ce490d1e8af1d8b1b032291f49f 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
@@ -197,7 +197,12 @@ public abstract class Projectile extends Entity implements TraceableEntity {
@@ -23,16 +23,16 @@ index f8ae12a3540c4a7aa7e2c1656cbd866e33e11f57..d6dfda0580d919eb8a000113e7f9dd97
});
}
diff --git a/src/main/java/net/minecraft/world/item/EggItem.java b/src/main/java/net/minecraft/world/item/EggItem.java
-index 8ddc1fa76244265616309322170c3a1b821c5092..3ddd34e5d05fa1355a2affd329d72dea216cd0e4 100644
+index 30e2e3a15e7fd2af1dc04f319758e1383eceb964..6d559fef484036194e4d899b82aaa7b5d518311e 100644
--- a/src/main/java/net/minecraft/world/item/EggItem.java
+++ b/src/main/java/net/minecraft/world/item/EggItem.java
-@@ -26,7 +26,19 @@ public class EggItem extends Item implements ProjectileItem {
+@@ -28,7 +28,20 @@ public class EggItem extends Item implements ProjectileItem {
// world.playSound((EntityHuman) null, entityhuman.getX(), entityhuman.getY(), entityhuman.getZ(), SoundEffects.EGG_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F)); // CraftBukkit - moved down
if (world instanceof ServerLevel worldserver) {
// CraftBukkit start
-- if (Projectile.spawnProjectileFromRotation(ThrownEgg::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F).isRemoved()) {
+- if (Projectile.spawnProjectileFromRotation(ThrownEgg::new, worldserver, itemstack, user, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, 1.0F).isRemoved()) {
+ // Paper start - PlayerLaunchProjectileEvent
-+ final Projectile.Delayed<ThrownEgg> thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F);
++ final Projectile.Delayed<ThrownEgg> thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, worldserver, itemstack, user, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, 1.0F);
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) thrownEgg.projectile().getBukkitEntity());
+ if (event.callEvent() && thrownEgg.attemptSpawn()) {
+ if (event.shouldConsume()) {
@@ -44,10 +44,11 @@ index 8ddc1fa76244265616309322170c3a1b821c5092..3ddd34e5d05fa1355a2affd329d72dea
+ world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.EGG_THROW, SoundSource.PLAYERS, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
+ user.awardStat(Stats.ITEM_USED.get(this));
+ } else {
++ // Paper end - PlayerLaunchProjectileEvent
if (user instanceof net.minecraft.server.level.ServerPlayer) {
((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
}
-@@ -35,9 +47,7 @@ public class EggItem extends Item implements ProjectileItem {
+@@ -37,9 +50,7 @@ public class EggItem extends Item implements ProjectileItem {
// CraftBukkit end
}
world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.EGG_THROW, SoundSource.PLAYERS, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
@@ -59,16 +60,16 @@ index 8ddc1fa76244265616309322170c3a1b821c5092..3ddd34e5d05fa1355a2affd329d72dea
}
diff --git a/src/main/java/net/minecraft/world/item/EnderpearlItem.java b/src/main/java/net/minecraft/world/item/EnderpearlItem.java
-index b9e24451a8f87479377e3324b3a956c0efc3e53c..b232390d8ee8e449e61c0ea7f3af60df507abb97 100644
+index 03fad91dc87cb01589093ad65a73a585bf9e1ab2..eaee34054233c8f0296b65a09f1287ba515496f2 100644
--- a/src/main/java/net/minecraft/world/item/EnderpearlItem.java
+++ b/src/main/java/net/minecraft/world/item/EnderpearlItem.java
-@@ -23,7 +23,20 @@ public class EnderpearlItem extends Item {
+@@ -25,7 +25,20 @@ public class EnderpearlItem extends Item {
if (world instanceof ServerLevel worldserver) {
// CraftBukkit start
-- if (Projectile.spawnProjectileFromRotation(ThrownEnderpearl::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F).isRemoved()) {
+- if (Projectile.spawnProjectileFromRotation(ThrownEnderpearl::new, worldserver, itemstack, user, 0.0F, EnderpearlItem.PROJECTILE_SHOOT_POWER, 1.0F).isRemoved()) {
+ // Paper start - PlayerLaunchProjectileEvent
-+ final Projectile.Delayed<ThrownEnderpearl> thrownEnderpearl = Projectile.spawnProjectileFromRotationDelayed(ThrownEnderpearl::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F);
++ final Projectile.Delayed<ThrownEnderpearl> thrownEnderpearl = Projectile.spawnProjectileFromRotationDelayed(ThrownEnderpearl::new, worldserver, itemstack, user, 0.0F, EnderpearlItem.PROJECTILE_SHOOT_POWER, 1.0F);
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) thrownEnderpearl.projectile().getBukkitEntity());
+ if (event.callEvent() && thrownEnderpearl.attemptSpawn()) {
+ if (event.shouldConsume()) {
@@ -84,7 +85,7 @@ index b9e24451a8f87479377e3324b3a956c0efc3e53c..b232390d8ee8e449e61c0ea7f3af60df
if (user instanceof net.minecraft.server.level.ServerPlayer) {
((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
}
-@@ -33,8 +46,7 @@ public class EnderpearlItem extends Item {
+@@ -35,8 +48,7 @@ public class EnderpearlItem extends Item {
world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.ENDER_PEARL_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
// CraftBukkit end
@@ -201,17 +202,17 @@ index 7a5045469bc2d383ed087dcc094b6f97df4ec7ab..fa92a1346825f00a585503d0a0825711
}
}
diff --git a/src/main/java/net/minecraft/world/item/SnowballItem.java b/src/main/java/net/minecraft/world/item/SnowballItem.java
-index ada9bc42a788b5f472324a0765edf5766d729784..57872ebef6beb8cdc03c9f8f19de94652ee19062 100644
+index eda3f4172c0aed152d81742e85d9bcf22e2bfdb2..d3bba4665ae14cc279c0f937831f909f8831b12b 100644
--- a/src/main/java/net/minecraft/world/item/SnowballItem.java
+++ b/src/main/java/net/minecraft/world/item/SnowballItem.java
-@@ -26,17 +26,26 @@ public class SnowballItem extends Item implements ProjectileItem {
+@@ -28,17 +28,26 @@ public class SnowballItem extends Item implements ProjectileItem {
// CraftBukkit start - moved down
// world.playSound((EntityHuman) null, entityhuman.getX(), entityhuman.getY(), entityhuman.getZ(), SoundEffects.SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
if (world instanceof ServerLevel worldserver) {
-- if (Projectile.spawnProjectileFromRotation(Snowball::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F).isAlive()) {
+- if (Projectile.spawnProjectileFromRotation(Snowball::new, worldserver, itemstack, user, 0.0F, SnowballItem.PROJECTILE_SHOOT_POWER, 1.0F).isAlive()) {
- itemstack.consume(1, user);
+ // Paper start - PlayerLaunchProjectileEvent
-+ final Projectile.Delayed<Snowball> snowball = Projectile.spawnProjectileFromRotationDelayed(Snowball::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F);
++ final Projectile.Delayed<Snowball> snowball = Projectile.spawnProjectileFromRotationDelayed(Snowball::new, worldserver, itemstack, user, 0.0F, SnowballItem.PROJECTILE_SHOOT_POWER, 1.0F);
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) snowball.projectile().getBukkitEntity());
+ if (event.callEvent() && snowball.attemptSpawn()) {
+ user.awardStat(Stats.ITEM_USED.get(this));
@@ -260,16 +261,16 @@ index 6d622d276a632c9c29ab04a01fbe7adbf10c35cd..577e66a7ff64d9569ee2402ecc26b0aa
}
}
diff --git a/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java b/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
-index e3eb733f18c23ae3fcc4c271843d285b217d1a7d..fa9d2ae44fcdd06f8f33cd14ffca422b20a01451 100644
+index 77f28203ce4bf1e4b66b513ed5aff442735a1a01..e422881d1ab0f1a5bb2cb741d23089a2e35de2d4 100644
--- a/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
+++ b/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
-@@ -20,11 +20,28 @@ public class ThrowablePotionItem extends PotionItem implements ProjectileItem {
+@@ -22,11 +22,28 @@ public class ThrowablePotionItem extends PotionItem implements ProjectileItem {
public InteractionResult use(Level world, Player user, InteractionHand hand) {
ItemStack itemStack = user.getItemInHand(hand);
if (world instanceof ServerLevel serverLevel) {
-- Projectile.spawnProjectileFromRotation(ThrownPotion::new, serverLevel, itemStack, user, -20.0F, 0.5F, 1.0F);
+- Projectile.spawnProjectileFromRotation(ThrownPotion::new, serverLevel, itemStack, user, -20.0F, PROJECTILE_SHOOT_POWER, 1.0F);
+ // Paper start - PlayerLaunchProjectileEvent
-+ final Projectile.Delayed<ThrownPotion> thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemStack, user, -20.0F, 0.5F, 1.0F);
++ final Projectile.Delayed<ThrownPotion> thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemStack, user, -20.0F, PROJECTILE_SHOOT_POWER, 1.0F);
+ // Paper start - PlayerLaunchProjectileEvent
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.projectile().getBukkitEntity());
+ if (event.callEvent() && thrownPotion.attemptSpawn()) {
@@ -296,10 +297,10 @@ index e3eb733f18c23ae3fcc4c271843d285b217d1a7d..fa9d2ae44fcdd06f8f33cd14ffca422b
}
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
-index 22aa715c4ef615c2c9d795cc2e11b7099d5167da..8b9a93ef71164cce8a616735b71d96d37e83b1a8 100644
+index ddba6f1a1392c4a80aa14ecae4ee0c129dba37ce..2b2af4b7cc2c8be8c3aed30885be26816c021bdc 100644
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
-@@ -87,21 +87,26 @@ public class TridentItem extends Item implements ProjectileItem {
+@@ -88,21 +88,26 @@ public class TridentItem extends Item implements ProjectileItem {
// itemstack.hurtWithoutBreaking(1, entityhuman); // CraftBukkit - moved down
if (f == 0.0F) {
@@ -332,10 +333,10 @@ index 22aa715c4ef615c2c9d795cc2e11b7099d5167da..8b9a93ef71164cce8a616735b71d96d3
}
diff --git a/src/main/java/net/minecraft/world/item/WindChargeItem.java b/src/main/java/net/minecraft/world/item/WindChargeItem.java
-index 79fdb78a4c3c7e324f0ed84a3dad9a3a80a6456a..0ce52d239b5bfb63e09cf5df679eee177f7bc5b0 100644
+index d20df91acdfa9067c8820bb55e605a9185803ee0..42e1128a47f1352d838e02e0b9ee8aa57fa41bb1 100644
--- a/src/main/java/net/minecraft/world/item/WindChargeItem.java
+++ b/src/main/java/net/minecraft/world/item/WindChargeItem.java
-@@ -25,7 +25,7 @@ public class WindChargeItem extends Item implements ProjectileItem {
+@@ -27,7 +27,7 @@ public class WindChargeItem extends Item implements ProjectileItem {
public InteractionResult use(Level world, Player user, InteractionHand hand) {
ItemStack itemStack = user.getItemInHand(hand);
if (world instanceof ServerLevel serverLevel) {
@@ -344,8 +345,8 @@ index 79fdb78a4c3c7e324f0ed84a3dad9a3a80a6456a..0ce52d239b5bfb63e09cf5df679eee17
(world2, shooter, stack) -> new WindCharge(user, world, user.position().x(), user.getEyePosition().y(), user.position().z()),
serverLevel,
itemStack,
-@@ -34,6 +34,21 @@ public class WindChargeItem extends Item implements ProjectileItem {
- 1.5F,
+@@ -36,6 +36,21 @@ public class WindChargeItem extends Item implements ProjectileItem {
+ PROJECTILE_SHOOT_POWER,
1.0F
);
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) windCharge.projectile().getBukkitEntity());
@@ -366,7 +367,7 @@ index 79fdb78a4c3c7e324f0ed84a3dad9a3a80a6456a..0ce52d239b5bfb63e09cf5df679eee17
}
world.playSound(
-@@ -46,8 +61,6 @@ public class WindChargeItem extends Item implements ProjectileItem {
+@@ -48,8 +63,6 @@ public class WindChargeItem extends Item implements ProjectileItem {
0.5F,
0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F)
);
diff --git a/patches/unapplied/server/0212-Improve-BlockPosition-inlining.patch b/patches/server/0212-Improve-BlockPosition-inlining.patch
index e1e44f61f0..e1e44f61f0 100644
--- a/patches/unapplied/server/0212-Improve-BlockPosition-inlining.patch
+++ b/patches/server/0212-Improve-BlockPosition-inlining.patch
diff --git a/patches/unapplied/server/0213-Option-to-prevent-armor-stands-from-doing-entity-loo.patch b/patches/server/0213-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
index 8f032f18fa..bac6654e61 100644
--- a/patches/unapplied/server/0213-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
+++ b/patches/server/0213-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
@@ -17,10 +17,10 @@ index aea97a30a9226275f8fbf9cb2c15d5ddf36371ac..e9d6211eb0f955eb95d2f73ad96799ef
Iterator iterator = list.iterator();
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index e0986a141384de0ede38c88c2b116e083c63efe4..fb68aff87670f545ae5ba26db9f074a34375031e 100644
+index fb4dd68648e6b7905e6b6469a829a0cad22ed3d7..dd1e3fea8a6dc132b0ab7c5f9addba86ec13a6f4 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -759,6 +759,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -760,6 +760,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
// Paper end - Prevent block entity and entity crashes
}
}
diff --git a/patches/unapplied/server/0214-Vanished-players-don-t-have-rights.patch b/patches/server/0214-Vanished-players-don-t-have-rights.patch
index 4d196bf7d1..b316e0d269 100644
--- a/patches/unapplied/server/0214-Vanished-players-don-t-have-rights.patch
+++ b/patches/server/0214-Vanished-players-don-t-have-rights.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Vanished players don't have rights
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-index d6dfda0580d919eb8a000113e7f9dd9794117b45..6c7f644738548da30908a08dcfde8142b597c0b7 100644
+index 9c36b42befab1ce490d1e8af1d8b1b032291f49f..23b7894761ef8871a7771e228b39ff01702afbcd 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-@@ -387,6 +387,15 @@ public abstract class Projectile extends Entity implements TraceableEntity {
+@@ -372,6 +372,15 @@ public abstract class Projectile extends Entity implements TraceableEntity {
} else {
Entity entity1 = this.getOwner();
@@ -25,7 +25,7 @@ index d6dfda0580d919eb8a000113e7f9dd9794117b45..6c7f644738548da30908a08dcfde8142
}
}
diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java
-index 752929f3bcd6404b08dad1c67e9a0023b671f10d..407f5db0a4b3884440bc49bf4f00d9c035899e86 100644
+index 20848282d0559ded99f17c1d9a0e429db8aa9b1d..2527fea68885c6911d01cd5a9b08a347d30844c8 100644
--- a/src/main/java/net/minecraft/world/item/BlockItem.java
+++ b/src/main/java/net/minecraft/world/item/BlockItem.java
@@ -168,7 +168,8 @@ public class BlockItem extends Item {
@@ -39,10 +39,10 @@ index 752929f3bcd6404b08dad1c67e9a0023b671f10d..407f5db0a4b3884440bc49bf4f00d9c0
BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(context.getLevel(), context.getClickedPos()), player, CraftBlockData.fromData(state), defaultReturn);
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index fb68aff87670f545ae5ba26db9f074a34375031e..924b496aaaa19c7ef69498730725ae9287e46e28 100644
+index dd1e3fea8a6dc132b0ab7c5f9addba86ec13a6f4..09bcffea6b9510a108c5e7d2a32d2930c6abe6b3 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -263,6 +263,45 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -264,6 +264,45 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
this.tileLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.tileMaxTickTime);
}
diff --git a/patches/unapplied/server/0215-Allow-disabling-armor-stand-ticking.patch b/patches/server/0215-Allow-disabling-armor-stand-ticking.patch
index 52031cba6b..52031cba6b 100644
--- a/patches/unapplied/server/0215-Allow-disabling-armor-stand-ticking.patch
+++ b/patches/server/0215-Allow-disabling-armor-stand-ticking.patch
diff --git a/patches/unapplied/server/0216-SkeletonHorse-Additions.patch b/patches/server/0216-SkeletonHorse-Additions.patch
index 2b721231ef..2b721231ef 100644
--- a/patches/unapplied/server/0216-SkeletonHorse-Additions.patch
+++ b/patches/server/0216-SkeletonHorse-Additions.patch
diff --git a/patches/unapplied/server/0217-Expand-ArmorStand-API.patch b/patches/server/0217-Expand-ArmorStand-API.patch
index 8e53f0be90..8e53f0be90 100644
--- a/patches/unapplied/server/0217-Expand-ArmorStand-API.patch
+++ b/patches/server/0217-Expand-ArmorStand-API.patch
diff --git a/patches/unapplied/server/0218-AnvilDamageEvent.patch b/patches/server/0218-AnvilDamageEvent.patch
index 2364b6084c..2364b6084c 100644
--- a/patches/unapplied/server/0218-AnvilDamageEvent.patch
+++ b/patches/server/0218-AnvilDamageEvent.patch
diff --git a/patches/unapplied/server/0219-Add-TNTPrimeEvent.patch b/patches/server/0219-Add-TNTPrimeEvent.patch
index 4cf9d43050..c9cfc333c7 100644
--- a/patches/unapplied/server/0219-Add-TNTPrimeEvent.patch
+++ b/patches/server/0219-Add-TNTPrimeEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add TNTPrimeEvent
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
-index ba1bb0f82634054e02c5f4bc062c1822a356e2a6..25d2226c2a5dda411a9e35f7a0e3ab183110c227 100644
+index 6e2e570aa1c85eced9ed9578188db43df132a290..f5aee15f80e226c8d59e66b1a53f529e2fb524a5 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -543,6 +543,11 @@ public class EnderDragon extends Mob implements Enemy {
@@ -21,7 +21,7 @@ index ba1bb0f82634054e02c5f4bc062c1822a356e2a6..25d2226c2a5dda411a9e35f7a0e3ab18
this.level().removeBlock(blockposition, false);
diff --git a/src/main/java/net/minecraft/world/level/block/FireBlock.java b/src/main/java/net/minecraft/world/level/block/FireBlock.java
-index 88976aa06028adcb8f0c91e32b794887d0b55308..f44457c0d75efe323cc8242ef5173a3d5067fad0 100644
+index be6e65e66d60dbc8b356666b4505af835d367e20..422e5750669457bea6e4b8de799d289e8e315a09 100644
--- a/src/main/java/net/minecraft/world/level/block/FireBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/FireBlock.java
@@ -302,12 +302,19 @@ public class FireBlock extends BaseFireBlock {
diff --git a/patches/unapplied/server/0220-Break-up-and-make-tab-spam-limits-configurable.patch b/patches/server/0220-Break-up-and-make-tab-spam-limits-configurable.patch
index 92f889e9c0..300f431158 100644
--- a/patches/unapplied/server/0220-Break-up-and-make-tab-spam-limits-configurable.patch
+++ b/patches/server/0220-Break-up-and-make-tab-spam-limits-configurable.patch
@@ -22,10 +22,10 @@ to take the burden of this into their own hand without having to rely on
plugins doing unsafe things.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index f36d72153c1ec0426790ed3033500c3cb766af2d..af519e9914bae40fa1605b0cd4cf02ca1d44f0e8 100644
+index b4edc64f3eacdbfb6187106989d190303b0541ac..0e1abdd619f26dbc334061f5f13ba126ee3006b5 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -274,6 +274,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -276,6 +276,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
private int tickCount;
private int ackBlockChangesUpTo = -1;
private final TickThrottler chatSpamThrottler = new TickThrottler(20, 200);
@@ -33,7 +33,7 @@ index f36d72153c1ec0426790ed3033500c3cb766af2d..af519e9914bae40fa1605b0cd4cf02ca
private final TickThrottler dropSpamThrottler = new TickThrottler(20, 1480);
private double firstGoodX;
private double firstGoodY;
-@@ -389,6 +390,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -391,6 +392,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.keepConnectionAlive();
this.chatSpamThrottler.tick();
@@ -41,7 +41,7 @@ index f36d72153c1ec0426790ed3033500c3cb766af2d..af519e9914bae40fa1605b0cd4cf02ca
this.dropSpamThrottler.tick();
if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L) {
this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854
-@@ -730,7 +732,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -728,7 +730,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public void handleCustomCommandSuggestions(ServerboundCommandSuggestionPacket packet) {
// PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - AsyncTabCompleteEvent; run this async
// CraftBukkit start
diff --git a/patches/unapplied/server/0221-Fix-NBT-type-issues.patch b/patches/server/0221-Fix-NBT-type-issues.patch
index bae1fe4393..af51f3f8dc 100644
--- a/patches/unapplied/server/0221-Fix-NBT-type-issues.patch
+++ b/patches/server/0221-Fix-NBT-type-issues.patch
@@ -8,10 +8,10 @@ Addresses two issues:
- Allay duplication cooldown is saved and exposed as a long, but loaded as an int
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
-index 74a0bebbf829fdb2bbae87100c4e2523c34f95a0..9d9e3daebc5da0af627c3d3cdb50029aacbc587b 100644
+index 5a017ec91d2e0df8467fde4f38ef00571f15bd01..9ef7227c2b88f9d0e92e70b33bbd97e22bd71eca 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
-@@ -309,7 +309,7 @@ public class ExperienceOrb extends Entity {
+@@ -311,7 +311,7 @@ public class ExperienceOrb extends Entity {
public void addAdditionalSaveData(CompoundTag nbt) {
nbt.putShort("Health", (short) this.health);
nbt.putShort("Age", (short) this.age);
@@ -20,7 +20,7 @@ index 74a0bebbf829fdb2bbae87100c4e2523c34f95a0..9d9e3daebc5da0af627c3d3cdb50029a
nbt.putInt("Count", this.count);
this.savePaperNBT(nbt); // Paper
}
-@@ -318,7 +318,7 @@ public class ExperienceOrb extends Entity {
+@@ -320,7 +320,7 @@ public class ExperienceOrb extends Entity {
public void readAdditionalSaveData(CompoundTag nbt) {
this.health = nbt.getShort("Health");
this.age = nbt.getShort("Age");
@@ -30,10 +30,10 @@ index 74a0bebbf829fdb2bbae87100c4e2523c34f95a0..9d9e3daebc5da0af627c3d3cdb50029a
this.loadPaperNBT(nbt); // Paper
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
-index c0c054b604cdf87591e4ce7c9f15baa5c942aadc..05c3d43fafc781e2c2d762dd5f509753df8da3b3 100644
+index e64143d730bc473d6a78f5822b006c1f29aded80..b86f638390d386c838318a4d9b6571ac5514df8f 100644
--- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
+++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
-@@ -495,7 +495,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
+@@ -499,7 +499,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
});
}
diff --git a/patches/unapplied/server/0222-Remove-unnecessary-itemmeta-handling.patch b/patches/server/0222-Remove-unnecessary-itemmeta-handling.patch
index d573a1e6f9..85d3bc9a5e 100644
--- a/patches/unapplied/server/0222-Remove-unnecessary-itemmeta-handling.patch
+++ b/patches/server/0222-Remove-unnecessary-itemmeta-handling.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Remove unnecessary itemmeta handling
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 1ebaedc9617e5b79458fa119887fd72cb1f39852..957c112b4145fda5078a6f8f1689935fa0290806 100644
+index 1db50e72ad8e04e54bed9b462bd7276feb06ce4c..1e16482830556cf34f3b68fc2af8216663b075e4 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -165,7 +165,7 @@ public final class ItemStack implements DataComponentHolder {
+@@ -166,7 +166,7 @@ public final class ItemStack implements DataComponentHolder {
// CraftBukkit start
ItemStack itemstack = new ItemStack(holder, i, datacomponentpatch);
@@ -17,7 +17,7 @@ index 1ebaedc9617e5b79458fa119887fd72cb1f39852..957c112b4145fda5078a6f8f1689935f
CraftItemStack.setItemMeta(itemstack, CraftItemStack.getItemMeta(itemstack));
}
return itemstack;
-@@ -179,8 +179,8 @@ public final class ItemStack implements DataComponentHolder {
+@@ -180,8 +180,8 @@ public final class ItemStack implements DataComponentHolder {
} else {
registryfriendlybytebuf.writeVarInt(itemstack.getCount());
// Spigot start - filter
diff --git a/patches/unapplied/server/0223-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch b/patches/server/0223-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch
index 15dfd12d29..9074301896 100644
--- a/patches/unapplied/server/0223-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch
+++ b/patches/server/0223-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index e03032b96e8f44ef83f52dcf3dc5a8856281e475..01c4f405692116813bbd3d851738f52a50b548a2 100644
+index 99db41834d7e8fb8fbbe83bd70a4b8d7c016c3e2..967357ec91036a03407eb7e410f717112fe96b16 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1171,6 +1171,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
+@@ -1172,6 +1172,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// CraftBukkit start
private boolean addEntity(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) {
org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot
diff --git a/patches/unapplied/server/0224-Add-Early-Warning-Feature-to-WatchDog.patch b/patches/server/0224-Add-Early-Warning-Feature-to-WatchDog.patch
index 21a0005a08..509c2f5dfe 100644
--- a/patches/unapplied/server/0224-Add-Early-Warning-Feature-to-WatchDog.patch
+++ b/patches/server/0224-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/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 5e8a9801ff92c8fab9c5cb5a5888ebe9144b331d..af20a16e18673a629fc3033d8e7e07eba855b1c7 100644
+index c64d2c093c84bc2708df52a77138307d2b81cf38..65dee566937104e301b917d037f2db456751801c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1120,6 +1120,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/unapplied/server/0225-Use-ConcurrentHashMap-in-JsonList.patch b/patches/server/0225-Use-ConcurrentHashMap-in-JsonList.patch
index 75fd866138..75fd866138 100644
--- a/patches/unapplied/server/0225-Use-ConcurrentHashMap-in-JsonList.patch
+++ b/patches/server/0225-Use-ConcurrentHashMap-in-JsonList.patch
diff --git a/patches/unapplied/server/0226-Use-a-Queue-for-Queueing-Commands.patch b/patches/server/0226-Use-a-Queue-for-Queueing-Commands.patch
index 8ee1b6a200..8ee1b6a200 100644
--- a/patches/unapplied/server/0226-Use-a-Queue-for-Queueing-Commands.patch
+++ b/patches/server/0226-Use-a-Queue-for-Queueing-Commands.patch
diff --git a/patches/unapplied/server/0227-Ability-to-get-block-entities-from-a-chunk-without-s.patch b/patches/server/0227-Ability-to-get-block-entities-from-a-chunk-without-s.patch
index 27cc8f2412..27cc8f2412 100644
--- a/patches/unapplied/server/0227-Ability-to-get-block-entities-from-a-chunk-without-s.patch
+++ b/patches/server/0227-Ability-to-get-block-entities-from-a-chunk-without-s.patch
diff --git a/patches/unapplied/server/0228-Optimize-BlockPosition-helper-methods.patch b/patches/server/0228-Optimize-BlockPosition-helper-methods.patch
index 5c3a739bd0..fb1fe4ab4d 100644
--- a/patches/unapplied/server/0228-Optimize-BlockPosition-helper-methods.patch
+++ b/patches/server/0228-Optimize-BlockPosition-helper-methods.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Optimize BlockPosition helper methods
diff --git a/src/main/java/net/minecraft/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java
-index 83e7c141d947f8f8096fed1da716560494bc5c62..8e00fd1a1fb0d73e800395f4b9fffdbdb6c6b5cb 100644
+index 33167226a9687ce26450d30d7eebf351709c638a..57340f0f46d5429585d99712dd39347d30d9951b 100644
--- a/src/main/java/net/minecraft/core/BlockPos.java
+++ b/src/main/java/net/minecraft/core/BlockPos.java
-@@ -157,67 +157,84 @@ public class BlockPos extends Vec3i {
+@@ -158,67 +158,84 @@ public class BlockPos extends Vec3i {
@Override
public BlockPos above() {
diff --git a/patches/unapplied/server/0229-Restore-vanilla-default-mob-spawn-range-and-water-an.patch b/patches/server/0229-Restore-vanilla-default-mob-spawn-range-and-water-an.patch
index 0ed98b85c4..0ed98b85c4 100644
--- a/patches/unapplied/server/0229-Restore-vanilla-default-mob-spawn-range-and-water-an.patch
+++ b/patches/server/0229-Restore-vanilla-default-mob-spawn-range-and-water-an.patch
diff --git a/patches/unapplied/server/0230-Slime-Pathfinder-Events.patch b/patches/server/0230-Slime-Pathfinder-Events.patch
index b24fcc8b0b..b24fcc8b0b 100644
--- a/patches/unapplied/server/0230-Slime-Pathfinder-Events.patch
+++ b/patches/server/0230-Slime-Pathfinder-Events.patch
diff --git a/patches/unapplied/server/0231-Configurable-speed-for-water-flowing-over-lava.patch b/patches/server/0231-Configurable-speed-for-water-flowing-over-lava.patch
index 5b45a51e5f..5b45a51e5f 100644
--- a/patches/unapplied/server/0231-Configurable-speed-for-water-flowing-over-lava.patch
+++ b/patches/server/0231-Configurable-speed-for-water-flowing-over-lava.patch
diff --git a/patches/unapplied/server/0232-Optimize-CraftBlockData-Creation.patch b/patches/server/0232-Optimize-CraftBlockData-Creation.patch
index d66c9bf468..94f5d1a95d 100644
--- a/patches/unapplied/server/0232-Optimize-CraftBlockData-Creation.patch
+++ b/patches/server/0232-Optimize-CraftBlockData-Creation.patch
@@ -7,10 +7,10 @@ Avoids a hashmap lookup by cacheing a reference to the CraftBlockData
and cloning it when one is needed.
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
-index 0bae4e8d1e9fcc4608b3ef1c981c65f3b03de22b..83a3c877f2969549ea154ad86687e96fdf34d881 100644
+index 4315fc2473bd60a14ce848e4c43001f04eb0cd9f..c3494c5fca138cde1f48e07d8c42ed32254a0d17 100644
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
-@@ -862,6 +862,14 @@ public abstract class BlockBehaviour implements FeatureElement {
+@@ -866,6 +866,14 @@ public abstract class BlockBehaviour implements FeatureElement {
this.instrument = blockbase_info.instrument;
this.replaceable = blockbase_info.replaceable;
}
@@ -26,10 +26,10 @@ index 0bae4e8d1e9fcc4608b3ef1c981c65f3b03de22b..83a3c877f2969549ea154ad86687e96f
private boolean calculateSolid() {
if (((Block) this.owner).properties.forceSolidOn) {
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-index e3987a1947548f152daaa9c7ad1d894a13eacbd8..b472cd2d8ca0885ca5f2c42787d796f3e27ec413 100644
+index fc27930e4c5c2a74dbcb6338f5d8fc38992e3235..82816ad68da8b034b46904f9eb82e7ecd9fc8dbf 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-@@ -578,7 +578,17 @@ public class CraftBlockData implements BlockData {
+@@ -579,7 +579,17 @@ public class CraftBlockData implements BlockData {
return craft;
}
diff --git a/patches/unapplied/server/0233-Optimize-MappedRegistry.patch b/patches/server/0233-Optimize-MappedRegistry.patch
index 967e274d5b..967e274d5b 100644
--- a/patches/unapplied/server/0233-Optimize-MappedRegistry.patch
+++ b/patches/server/0233-Optimize-MappedRegistry.patch
diff --git a/patches/unapplied/server/0234-Add-PhantomPreSpawnEvent.patch b/patches/server/0234-Add-PhantomPreSpawnEvent.patch
index 3398693ce4..6387f2e774 100644
--- a/patches/unapplied/server/0234-Add-PhantomPreSpawnEvent.patch
+++ b/patches/server/0234-Add-PhantomPreSpawnEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add PhantomPreSpawnEvent
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
-index d9d374e18b1cacf0b04e6e02f3a94b145f4052fb..748f07c7036fe5955d76e28c4e7d23f8c0235d5f 100644
+index 229025eb54094e81ce08edc868543d82cba756a5..93013ca49e56f3ac47d67d0c48d87d53fca32a4f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -161,6 +161,11 @@ public class Phantom extends FlyingMob implements Enemy {
diff --git a/patches/unapplied/server/0235-Add-More-Creeper-API.patch b/patches/server/0235-Add-More-Creeper-API.patch
index 04605aa213..04605aa213 100644
--- a/patches/unapplied/server/0235-Add-More-Creeper-API.patch
+++ b/patches/server/0235-Add-More-Creeper-API.patch
diff --git a/patches/unapplied/server/0236-Inventory-removeItemAnySlot.patch b/patches/server/0236-Inventory-removeItemAnySlot.patch
index f1cf07d2eb..f1cf07d2eb 100644
--- a/patches/unapplied/server/0236-Inventory-removeItemAnySlot.patch
+++ b/patches/server/0236-Inventory-removeItemAnySlot.patch
diff --git a/patches/unapplied/server/0237-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch b/patches/server/0237-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch
index 26aafc757e..0983d9fd9b 100644
--- a/patches/unapplied/server/0237-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch
+++ b/patches/server/0237-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Make CraftWorld#loadChunk(int, int, false) load unconverted
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 8f231f693882a770bdc810b1e117eb31ef1ddadb..269853764c75382e921e0846c4dc3001bac0395c 100644
+index 1a3ea592ce33798d01425205fcde452a7bcb8790..b01bbddb8621a4215337c9d04197d5b1f22c8b3b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -431,7 +431,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
diff --git a/patches/unapplied/server/0238-Add-ray-tracing-methods-to-LivingEntity.patch b/patches/server/0238-Add-ray-tracing-methods-to-LivingEntity.patch
index c5fccadff5..0887090b6e 100644
--- a/patches/unapplied/server/0238-Add-ray-tracing-methods-to-LivingEntity.patch
+++ b/patches/server/0238-Add-ray-tracing-methods-to-LivingEntity.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add ray tracing methods to LivingEntity
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 6b599427c2d61d4475af0f5af8294308940cf0c9..6a46d57d4941b1abbac4c2609272feb3fb8e45e6 100644
+index 5fef8dad5469a1e9409700614a1c861547e42bc7..6924772818d10654f7f25028bb08fd807689c8a1 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -4113,6 +4113,19 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -4120,6 +4120,19 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
// Paper start - Make shield blocking delay configurable
@@ -29,7 +29,7 @@ index 6b599427c2d61d4475af0f5af8294308940cf0c9..6a46d57d4941b1abbac4c2609272feb3
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 2033354daafc739a8bd9ddf4a6128d3204d32094..0c7bf4124d67258ebca9b9b73b92c2e0efbdaa86 100644
+index 5799e385ca91f360a9b5d72b281c5a19ab03de48..6797ced32f54f0d135301849902b30d9ec829327 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -207,6 +207,33 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/unapplied/server/0239-Expose-attack-cooldown-methods-for-Player.patch b/patches/server/0239-Expose-attack-cooldown-methods-for-Player.patch
index 1d6a1224bf..c6d4616593 100644
--- a/patches/unapplied/server/0239-Expose-attack-cooldown-methods-for-Player.patch
+++ b/patches/server/0239-Expose-attack-cooldown-methods-for-Player.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose attack cooldown methods for Player
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 5239ce2d507f48effc4f3e2bc462d9caef5caa92..b9e325d32fabe77fe1ebd0d8b988db594b154284 100644
+index c76f5d21d6bc5c25b43503ebb0cbdd9f8f984743..c9c4696b17917fab03e8e6837a232f08290b05fe 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2995,6 +2995,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2980,6 +2980,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.adventure$pointers;
}
diff --git a/patches/unapplied/server/0240-Improve-death-events.patch b/patches/server/0240-Improve-death-events.patch
index 0dd0b2b8ce..c5edd99375 100644
--- a/patches/unapplied/server/0240-Improve-death-events.patch
+++ b/patches/server/0240-Improve-death-events.patch
@@ -19,10 +19,10 @@ public net.minecraft.world.entity.LivingEntity getDeathSound()Lnet/minecraft/sou
public net.minecraft.world.entity.LivingEntity getSoundVolume()F
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 8a3b570034d2ec7916b80b89186c0664e7bc73dd..ca32fad1fbb5eeb0b6fb8c74f645277e92f63c33 100644
+index 0a5aeb9b50dfec3b791040348f6a9e929ef8e59c..cec8e2b8867e348d8c92e76983211e29edd46ed1 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -296,6 +296,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -294,6 +294,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
private int containerCounter;
public boolean wonGame;
private int containerUpdateDelay; // Paper - Configurable container update tick rate
@@ -33,7 +33,7 @@ index 8a3b570034d2ec7916b80b89186c0664e7bc73dd..ca32fad1fbb5eeb0b6fb8c74f645277e
// CraftBukkit start
public CraftPlayer.TransferCookieConnection transferCookieConnection;
-@@ -1154,7 +1158,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -1151,7 +1155,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
@Override
public void die(DamageSource damageSource) {
@@ -42,7 +42,7 @@ index 8a3b570034d2ec7916b80b89186c0664e7bc73dd..ca32fad1fbb5eeb0b6fb8c74f645277e
boolean flag = this.serverLevel().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES);
// CraftBukkit start - fire PlayerDeathEvent
if (this.isRemoved()) {
-@@ -1182,6 +1186,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -1179,6 +1183,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
String deathmessage = defaultMessage.getString();
this.keepLevel = keepInventory; // SPIGOT-2222: pre-set keepLevel
org.bukkit.event.entity.PlayerDeathEvent event = CraftEventFactory.callPlayerDeathEvent(this, damageSource, loot, PaperAdventure.asAdventure(defaultMessage), keepInventory); // Paper - Adventure
@@ -59,30 +59,30 @@ index 8a3b570034d2ec7916b80b89186c0664e7bc73dd..ca32fad1fbb5eeb0b6fb8c74f645277e
// SPIGOT-943 - only call if they have an inventory open
if (this.containerMenu != this.inventoryMenu) {
-@@ -1331,7 +1345,17 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
- }
+@@ -1323,7 +1337,17 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
}
-
-- return super.hurtServer(world, source, amount);
-+ // Paper start - cancellable death events
-+ //return super.hurt(source, amount);
-+ this.queueHealthUpdatePacket = true;
-+ boolean damaged = super.hurtServer(world, source, amount);
-+ this.queueHealthUpdatePacket = false;
-+ if (this.queuedHealthUpdatePacket != null) {
-+ this.connection.send(this.queuedHealthUpdatePacket);
-+ this.queuedHealthUpdatePacket = null;
-+ }
-+ return damaged;
-+ // Paper end
}
+
+- return super.hurtServer(world, source, amount);
++ // Paper start - cancellable death events
++ //return super.hurt(world, source, amount);
++ this.queueHealthUpdatePacket = true;
++ boolean damaged = super.hurtServer(world, source, amount);
++ this.queueHealthUpdatePacket = false;
++ if (this.queuedHealthUpdatePacket != null) {
++ this.connection.send(this.queuedHealthUpdatePacket);
++ this.queuedHealthUpdatePacket = null;
++ }
++ return damaged;
++ // Paper end - cancellable death events
}
}
+
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 6a46d57d4941b1abbac4c2609272feb3fb8e45e6..d1a65777767f503275d41ed48db887eedafe6324 100644
+index 6924772818d10654f7f25028bb08fd807689c8a1..4250056b003588e6e57efdf9d4276216009adb71 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -295,6 +295,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -293,6 +293,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
public Set<UUID> collidableExemptions = new HashSet<>();
public boolean bukkitPickUpLoot;
public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper
@@ -90,7 +90,7 @@ index 6a46d57d4941b1abbac4c2609272feb3fb8e45e6..d1a65777767f503275d41ed48db887ee
@Override
public float getBukkitYaw() {
-@@ -1572,11 +1573,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1540,11 +1541,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (this.isDeadOrDying()) {
if (!this.checkTotemDeathProtection(source)) {
@@ -106,19 +106,19 @@ index 6a46d57d4941b1abbac4c2609272feb3fb8e45e6..d1a65777767f503275d41ed48db887ee
}
} else if (flag1) {
this.playHurtSound(source);
-@@ -1738,6 +1740,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1749,6 +1751,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
Entity entity = damageSource.getEntity();
LivingEntity entityliving = this.getKillCredit();
+ /* // Paper - move down to make death event cancellable - this is the awardKillScore below
- if (this.deathScore >= 0 && entityliving != null) {
- entityliving.awardKillScore(this, this.deathScore, damageSource);
+ if (entityliving != null) {
+ entityliving.awardKillScore(this, damageSource);
}
-@@ -1749,24 +1752,59 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1760,24 +1763,59 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (!this.level().isClientSide && this.hasCustomName()) {
if (org.spigotmc.SpigotConfig.logNamedDeaths) LivingEntity.LOGGER.info("Named entity {} died: {}", this, this.getCombatTracker().getDeathMessage().getString()); // Spigot
}
-+ */ // Paper - move down to make death event cancellable - this is the awardKillScore below
++ */ // Paper - move down to make death event cancellable - this is the awardKillScore below
this.dead = true;
- this.getCombatTracker().recheckStatus();
@@ -132,8 +132,8 @@ index 6a46d57d4941b1abbac4c2609272feb3fb8e45e6..d1a65777767f503275d41ed48db887ee
+ // Paper start
+ org.bukkit.event.entity.EntityDeathEvent deathEvent = this.dropAllDeathLoot(worldserver, damageSource);
+ if (deathEvent == null || !deathEvent.isCancelled()) {
-+ if (this.deathScore >= 0 && entityliving != null) {
-+ entityliving.awardKillScore(this, this.deathScore, damageSource);
++ if (entityliving != null) {
++ entityliving.awardKillScore(this, damageSource);
+ }
+ // Paper start - clear equipment if event is not cancelled
+ if (this instanceof Mob) {
@@ -178,7 +178,7 @@ index 6a46d57d4941b1abbac4c2609272feb3fb8e45e6..d1a65777767f503275d41ed48db887ee
}
}
-@@ -1776,7 +1814,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1787,7 +1825,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (world instanceof ServerLevel worldserver) {
boolean flag = false;
@@ -187,7 +187,7 @@ index 6a46d57d4941b1abbac4c2609272feb3fb8e45e6..d1a65777767f503275d41ed48db887ee
if (worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
BlockPos blockposition = this.blockPosition();
BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState();
-@@ -1805,24 +1843,37 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1816,24 +1854,37 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
}
@@ -228,7 +228,7 @@ index 6a46d57d4941b1abbac4c2609272feb3fb8e45e6..d1a65777767f503275d41ed48db887ee
public int getExpReward(ServerLevel worldserver, @Nullable Entity entity) { // CraftBukkit
if (!this.wasExperienceConsumed() && (this.isAlwaysExperienceDropper() || this.lastHurtByPlayerTime > 0 && this.shouldDropExperience() && worldserver.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT))) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 2b8bfccbf520f9a356f816522ac3a5caa51e44e1..a8ab3c03a6f96658ce2a3f5758225954a36de6a9 100644
+index 6d1f840a328a2081a59aab923595450eb54f685c..b3c27cdf7d336404403fe09553080835f2d3de49 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1117,6 +1117,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -267,7 +267,7 @@ index 2b8bfccbf520f9a356f816522ac3a5caa51e44e1..a8ab3c03a6f96658ce2a3f5758225954
}
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
-index faffc3a9ed8bc306277cad37bc43af2ef7303493..205aefd38a185fa411ff17cfb0155769de8fc2fd 100644
+index 81bb457ddebcf06e14c772c5c5df584e43766e58..273ca38677223c28025629144c39e9e415145f70 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -689,16 +689,38 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
@@ -420,10 +420,10 @@ index 2caba38a50b7ea535337a3540aa5272d4a9f1878..e20565cf256aacd012a1722c5ebbf901
// CraftBukkit end
this.gameEvent(GameEvent.ENTITY_DIE);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index b9e325d32fabe77fe1ebd0d8b988db594b154284..054892e472636d1a5c7f06c46ee28ebe4736f24d 100644
+index c9c4696b17917fab03e8e6837a232f08290b05fe..63cc339b42c47879401628c8d0e0f62bd7dd76b4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2532,7 +2532,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2517,7 +2517,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void sendHealthUpdate() {
FoodData foodData = this.getHandle().getFoodData();
diff --git a/patches/server/0241-Allow-chests-to-be-placed-with-NBT-data.patch b/patches/server/0241-Allow-chests-to-be-placed-with-NBT-data.patch
new file mode 100644
index 0000000000..71c7a234d6
--- /dev/null
+++ b/patches/server/0241-Allow-chests-to-be-placed-with-NBT-data.patch
@@ -0,0 +1,31 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: BillyGalbreath <[email protected]>
+Date: Sat, 8 Sep 2018 18:43:31 -0500
+Subject: [PATCH] Allow chests to be placed with NBT data
+
+
+diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
+index 1e16482830556cf34f3b68fc2af8216663b075e4..225206a055e2f6bf4dbb18434cb3401d02746387 100644
+--- a/src/main/java/net/minecraft/world/item/ItemStack.java
++++ b/src/main/java/net/minecraft/world/item/ItemStack.java
+@@ -501,6 +501,7 @@ public final class ItemStack implements DataComponentHolder {
+ enuminteractionresult = InteractionResult.FAIL; // cancel placement
+ // PAIL: Remove this when MC-99075 fixed
+ placeEvent.getPlayer().updateInventory();
++ world.capturedTileEntities.clear(); // Paper - Allow chests to be placed with NBT data; clear out block entities as chests and such will pop loot
+ // revert back all captured blocks
+ world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710
+ for (BlockState blockstate : blocks) {
+diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntityType.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntityType.java
+index d602ab397e7deacd9cb9a43f9058cd7f7bb9dc07..63c5bc786010d96dc121ee14dbac99253b3c8168 100644
+--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntityType.java
++++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntityType.java
+@@ -66,7 +66,7 @@ public class BlockEntityType<T extends BlockEntity> {
+ public static final BlockEntityType<CrafterBlockEntity> CRAFTER = BlockEntityType.register("crafter", CrafterBlockEntity::new, Blocks.CRAFTER);
+ public static final BlockEntityType<TrialSpawnerBlockEntity> TRIAL_SPAWNER = BlockEntityType.register("trial_spawner", TrialSpawnerBlockEntity::new, Blocks.TRIAL_SPAWNER);
+ public static final BlockEntityType<VaultBlockEntity> VAULT = BlockEntityType.register("vault", VaultBlockEntity::new, Blocks.VAULT);
+- private static final Set<BlockEntityType<?>> OP_ONLY_CUSTOM_DATA = Set.of(BlockEntityType.COMMAND_BLOCK, BlockEntityType.LECTERN, BlockEntityType.SIGN, BlockEntityType.HANGING_SIGN, BlockEntityType.MOB_SPAWNER, BlockEntityType.TRIAL_SPAWNER, BlockEntityType.CHEST); // CraftBukkit
++ private static final Set<BlockEntityType<?>> OP_ONLY_CUSTOM_DATA = Set.of(BlockEntityType.COMMAND_BLOCK, BlockEntityType.LECTERN, BlockEntityType.SIGN, BlockEntityType.HANGING_SIGN, BlockEntityType.MOB_SPAWNER, BlockEntityType.TRIAL_SPAWNER); // CraftBukkit // Paper - Allow chests to be placed with NBT data
+ private final BlockEntityType.BlockEntitySupplier<? extends T> factory;
+ public final Set<Block> validBlocks;
+ private final Holder.Reference<BlockEntityType<?>> builtInRegistryHolder;
diff --git a/patches/unapplied/server/0242-Mob-Pathfinding-API.patch b/patches/server/0242-Mob-Pathfinding-API.patch
index 638eb9310c..638eb9310c 100644
--- a/patches/unapplied/server/0242-Mob-Pathfinding-API.patch
+++ b/patches/server/0242-Mob-Pathfinding-API.patch
diff --git a/patches/unapplied/server/0243-Prevent-various-interactions-from-causing-chunk-load.patch b/patches/server/0243-Prevent-various-interactions-from-causing-chunk-load.patch
index a2789a6dfa..919b9b6aac 100644
--- a/patches/unapplied/server/0243-Prevent-various-interactions-from-causing-chunk-load.patch
+++ b/patches/server/0243-Prevent-various-interactions-from-causing-chunk-load.patch
@@ -40,10 +40,10 @@ index 90f61511429799b1e852326d0d014551e5c35d5d..9d245d08be61d7edee9138196ae3bf52
return ichunkaccess == null ? false : ichunkaccess.getBlockState(pos).is(this.blockToRemove) && ichunkaccess.getBlockState(pos.above()).isAir() && ichunkaccess.getBlockState(pos.above(2)).isAir();
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-index 5f1bbb4302013c2c1788db6b64eafba2a11a373a..512de8e79a842d4389e8528983b94af4843ffd11 100644
+index e9b28c7fea402cb15cfeefe6cd02e3056e54796d..0ddbebbe6eea00c379f2a250f7a44ba9313c1de1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-@@ -489,7 +489,8 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -488,7 +488,8 @@ public class EnderMan extends Monster implements NeutralMob {
int j = Mth.floor(this.enderman.getY() + randomsource.nextDouble() * 2.0D);
int k = Mth.floor(this.enderman.getZ() - 1.0D + randomsource.nextDouble() * 2.0D);
BlockPos blockposition = new BlockPos(i, j, k);
@@ -53,7 +53,7 @@ index 5f1bbb4302013c2c1788db6b64eafba2a11a373a..512de8e79a842d4389e8528983b94af4
BlockPos blockposition1 = blockposition.below();
BlockState iblockdata1 = world.getBlockState(blockposition1);
BlockState iblockdata2 = this.enderman.getCarriedBlock();
-@@ -533,7 +534,8 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -532,7 +533,8 @@ public class EnderMan extends Monster implements NeutralMob {
int j = Mth.floor(this.enderman.getY() + randomsource.nextDouble() * 3.0D);
int k = Mth.floor(this.enderman.getZ() - 2.0D + randomsource.nextDouble() * 4.0D);
BlockPos blockposition = new BlockPos(i, j, k);
@@ -77,7 +77,7 @@ index c02a2f9e1b4e727b1deeb73377e1f7193f5ee072..cdd1f6939ce33e62f6609f7eb3a5dff5
: new LodestoneTracker(Optional.empty(), true);
}
diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java
-index 6850ac324ee4d202f112dbd057ea1bde9de17ea9..f39ccc0d2a4eea4e1e0b15608780c7c4a749e672 100644
+index f399d130d9bf4ab00f35090019a00c6287146490..6bf3019ff06501e82de5976417fd98a10ae6334a 100644
--- a/src/main/java/net/minecraft/world/level/BlockGetter.java
+++ b/src/main/java/net/minecraft/world/level/BlockGetter.java
@@ -71,7 +71,15 @@ public interface BlockGetter extends LevelHeightAccessor {
diff --git a/patches/unapplied/server/0244-Prevent-mob-spawning-from-loading-generating-chunks.patch b/patches/server/0244-Prevent-mob-spawning-from-loading-generating-chunks.patch
index e9d396eb02..e9d396eb02 100644
--- a/patches/unapplied/server/0244-Prevent-mob-spawning-from-loading-generating-chunks.patch
+++ b/patches/server/0244-Prevent-mob-spawning-from-loading-generating-chunks.patch
diff --git a/patches/unapplied/server/0245-Implement-furnace-cook-speed-multiplier-API.patch b/patches/server/0245-Implement-furnace-cook-speed-multiplier-API.patch
index 3a04c8b1ea..48795a8667 100644
--- a/patches/unapplied/server/0245-Implement-furnace-cook-speed-multiplier-API.patch
+++ b/patches/server/0245-Implement-furnace-cook-speed-multiplier-API.patch
@@ -12,24 +12,19 @@ public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity getTota
Co-authored-by: Eric Su <[email protected]>
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
-index 119ea31f6e15185b6d6171053f790e39c24f6823..187f380eae3948eb5e37e8703db6ea785aaf833d 100644
+index 9f44f4ed56bf3cabd3d4a5409f7f6068273d7ff7..b2c0de191fdc84d4a007373309a5df81cacd5466 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
-@@ -74,11 +74,13 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
- protected NonNullList<ItemStack> items;
- public int litTime;
- int litDuration;
-+ public double cookSpeedMultiplier = 1.0; // Paper - cook speed multiplier API
- public int cookingProgress;
- public int cookingTotalTime;
+@@ -78,6 +78,8 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
protected final ContainerData dataAccess;
public final Reference2IntOpenHashMap<ResourceKey<Recipe<?>>> recipesUsed;
private final RecipeManager.CachedCheck<SingleRecipeInput, ? extends AbstractCookingRecipe> quickCheck;
+ public final RecipeType<? extends AbstractCookingRecipe> recipeType; // Paper - cook speed multiplier API
++ public double cookSpeedMultiplier = 1.0; // Paper - cook speed multiplier API
protected AbstractFurnaceBlockEntity(BlockEntityType<?> blockEntityType, BlockPos pos, BlockState state, RecipeType<? extends AbstractCookingRecipe> recipeType) {
super(blockEntityType, pos, state);
-@@ -126,6 +128,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
+@@ -124,6 +126,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
};
this.recipesUsed = new Reference2IntOpenHashMap();
this.quickCheck = RecipeManager.createCheck((RecipeType<AbstractCookingRecipe>) recipeType); // CraftBukkit - decompile error // Eclipse fail
@@ -37,7 +32,7 @@ index 119ea31f6e15185b6d6171053f790e39c24f6823..187f380eae3948eb5e37e8703db6ea78
}
// CraftBukkit start - add fields and methods
-@@ -180,6 +183,11 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
+@@ -178,6 +181,11 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
this.recipesUsed.put(ResourceKey.create(Registries.RECIPE, ResourceLocation.parse(s)), nbttagcompound1.getInt(s));
}
@@ -49,15 +44,15 @@ index 119ea31f6e15185b6d6171053f790e39c24f6823..187f380eae3948eb5e37e8703db6ea78
}
@Override
-@@ -188,6 +196,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
- nbt.putShort("BurnTime", (short) this.litTime);
- nbt.putShort("CookTime", (short) this.cookingProgress);
- nbt.putShort("CookTimeTotal", (short) this.cookingTotalTime);
+@@ -187,6 +195,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
+ nbt.putShort("cooking_total_time", (short) this.cookingTotalTime);
+ nbt.putShort("lit_time_remaining", (short) this.litTimeRemaining);
+ nbt.putShort("lit_total_time", (short) this.litTotalTime);
+ nbt.putDouble("Paper.CookSpeedMultiplier", this.cookSpeedMultiplier); // Paper - cook speed multiplier API
ContainerHelper.saveAllItems(nbt, this.items, registries);
CompoundTag nbttagcompound1 = new CompoundTag();
-@@ -263,7 +272,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
+@@ -258,7 +267,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
CraftItemStack source = CraftItemStack.asCraftMirror(blockEntity.items.get(0));
CookingRecipe<?> recipe = (CookingRecipe<?>) recipeholder.toBukkitRecipe();
@@ -66,19 +61,19 @@ index 119ea31f6e15185b6d6171053f790e39c24f6823..187f380eae3948eb5e37e8703db6ea78
world.getCraftServer().getPluginManager().callEvent(event);
blockEntity.cookingTotalTime = event.getTotalCookTime();
-@@ -271,9 +280,9 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
+@@ -266,9 +275,9 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
// CraftBukkit end
- ++blockEntity.cookingProgress;
-- if (blockEntity.cookingProgress == blockEntity.cookingTotalTime) {
-+ if (blockEntity.cookingProgress >= blockEntity.cookingTotalTime) { // Paper - cook speed multiplier API
- blockEntity.cookingProgress = 0;
+ ++blockEntity.cookingTimer;
+- if (blockEntity.cookingTimer == blockEntity.cookingTotalTime) {
++ if (blockEntity.cookingTimer >= blockEntity.cookingTotalTime) { // Paper - cook speed multiplier API
+ blockEntity.cookingTimer = 0;
- blockEntity.cookingTotalTime = AbstractFurnaceBlockEntity.getTotalCookTime(world, blockEntity);
+ blockEntity.cookingTotalTime = AbstractFurnaceBlockEntity.getTotalCookTime(world, blockEntity, blockEntity.recipeType, blockEntity.cookSpeedMultiplier); // Paper - cook speed multiplier API
if (AbstractFurnaceBlockEntity.burn(blockEntity.level, blockEntity.worldPosition, world.registryAccess(), recipeholder, singlerecipeinput, blockEntity.items, i)) { // CraftBukkit
blockEntity.setRecipeUsed(recipeholder);
}
-@@ -367,13 +376,14 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
+@@ -362,13 +371,14 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
return fuelRegistry.burnDuration(stack);
}
@@ -98,13 +93,13 @@ index 119ea31f6e15185b6d6171053f790e39c24f6823..187f380eae3948eb5e37e8703db6ea78
}
@Override
-@@ -419,12 +429,11 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
+@@ -414,12 +424,11 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
if (world instanceof ServerLevel) {
ServerLevel worldserver = (ServerLevel) world;
- this.cookingTotalTime = AbstractFurnaceBlockEntity.getTotalCookTime(worldserver, this);
+ this.cookingTotalTime = AbstractFurnaceBlockEntity.getTotalCookTime(worldserver, this, this.recipeType, this.cookSpeedMultiplier); // Paper - cook speed multiplier API
- this.cookingProgress = 0;
+ this.cookingTimer = 0;
this.setChanged();
}
}
@@ -113,7 +108,7 @@ index 119ea31f6e15185b6d6171053f790e39c24f6823..187f380eae3948eb5e37e8703db6ea78
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java b/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java
-index 7ed43bc29a4bc0f6db2cabd3cd4c8489ed81ee81..7b5f35779ac63b5f9b3a88cc4dcde38147fea2b7 100644
+index 7a642b1b95b36b91698455d50ae85b846d520611..fd2f28ee785283bcc979c7a146308827f2ce2ba9 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java
@@ -88,4 +88,20 @@ public abstract class CraftFurnace<T extends AbstractFurnaceBlockEntity> extends
diff --git a/patches/unapplied/server/0246-Honor-EntityAgeable.ageLock.patch b/patches/server/0246-Honor-EntityAgeable.ageLock.patch
index aaaf81b894..66ebf48179 100644
--- a/patches/unapplied/server/0246-Honor-EntityAgeable.ageLock.patch
+++ b/patches/server/0246-Honor-EntityAgeable.ageLock.patch
@@ -17,10 +17,10 @@ index d7020068a9ea3e5e1cacfe53ef19a88139687205..119856b22df5bbcd4e5bf5f95645156f
int k = j;
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
-index f3687ecd2d757b22b224346bbb8342d83221efdb..0fab8826e14af9184f07bc1262555a71effcd84b 100644
+index 268394088dbb1e63ab5d550a3cad5df0d2807108..333189cf01ce571993e8152f5851b8c362ba4b70 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
-@@ -447,6 +447,7 @@ public class BeehiveBlockEntity extends BlockEntity {
+@@ -442,6 +442,7 @@ public class BeehiveBlockEntity extends BlockEntity {
}
private static void setBeeReleaseData(int ticksInHive, Bee beeEntity) {
@@ -28,7 +28,7 @@ index f3687ecd2d757b22b224346bbb8342d83221efdb..0fab8826e14af9184f07bc1262555a71
int j = beeEntity.getAge();
if (j < 0) {
-@@ -456,6 +457,7 @@ public class BeehiveBlockEntity extends BlockEntity {
+@@ -451,6 +452,7 @@ public class BeehiveBlockEntity extends BlockEntity {
}
beeEntity.setInLoveTime(Math.max(0, beeEntity.getInLoveTime() - ticksInHive));
diff --git a/patches/unapplied/server/0247-Configurable-connection-throttle-kick-message.patch b/patches/server/0247-Configurable-connection-throttle-kick-message.patch
index ed8fbcb06d..ed8fbcb06d 100644
--- a/patches/unapplied/server/0247-Configurable-connection-throttle-kick-message.patch
+++ b/patches/server/0247-Configurable-connection-throttle-kick-message.patch
diff --git a/patches/unapplied/server/0248-Prevent-chunk-loading-from-Fluid-Flowing.patch b/patches/server/0248-Prevent-chunk-loading-from-Fluid-Flowing.patch
index 8426fd78fd..8426fd78fd 100644
--- a/patches/unapplied/server/0248-Prevent-chunk-loading-from-Fluid-Flowing.patch
+++ b/patches/server/0248-Prevent-chunk-loading-from-Fluid-Flowing.patch
diff --git a/patches/unapplied/server/0249-PreSpawnerSpawnEvent.patch b/patches/server/0249-PreSpawnerSpawnEvent.patch
index d10c136bb8..d10c136bb8 100644
--- a/patches/unapplied/server/0249-PreSpawnerSpawnEvent.patch
+++ b/patches/server/0249-PreSpawnerSpawnEvent.patch
diff --git a/patches/unapplied/server/0250-Add-LivingEntity-getTargetEntity.patch b/patches/server/0250-Add-LivingEntity-getTargetEntity.patch
index 7a6786a2ee..2840c31b54 100644
--- a/patches/unapplied/server/0250-Add-LivingEntity-getTargetEntity.patch
+++ b/patches/server/0250-Add-LivingEntity-getTargetEntity.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add LivingEntity#getTargetEntity
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index d1a65777767f503275d41ed48db887eedafe6324..7ba5e60eae4fc230c86956ed8ee895c9e1585d42 100644
+index 4250056b003588e6e57efdf9d4276216009adb71..df7dce2bff49023d22622c90795428222dc489ce 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -4177,6 +4177,38 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -4184,6 +4184,38 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.level().clip(raytrace);
}
@@ -48,7 +48,7 @@ index d1a65777767f503275d41ed48db887eedafe6324..7ba5e60eae4fc230c86956ed8ee895c9
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 0c7bf4124d67258ebca9b9b73b92c2e0efbdaa86..c4c83b4e17aac23794fdb51acfba4e7ef8451e2c 100644
+index 6797ced32f54f0d135301849902b30d9ec829327..db21f7eeeca48f1df95b37ffa7e9bf7f71f37d5d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -232,6 +232,39 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/unapplied/server/0251-Add-sun-related-API.patch b/patches/server/0251-Add-sun-related-API.patch
index 280661a416..cfa9ddac01 100644
--- a/patches/unapplied/server/0251-Add-sun-related-API.patch
+++ b/patches/server/0251-Add-sun-related-API.patch
@@ -7,7 +7,7 @@ Subject: [PATCH] Add sun related API
public net.minecraft.world.entity.Mob isSunBurnTick()Z
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 269853764c75382e921e0846c4dc3001bac0395c..74b65238eb4fe53d361ab70447c1be385b5a3951 100644
+index b01bbddb8621a4215337c9d04197d5b1f22c8b3b..c310a8bae84af6c20f7d976fb7cd683885407cc8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -755,6 +755,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
diff --git a/patches/unapplied/server/0252-Turtle-API.patch b/patches/server/0252-Turtle-API.patch
index bf96743cf2..bf96743cf2 100644
--- a/patches/unapplied/server/0252-Turtle-API.patch
+++ b/patches/server/0252-Turtle-API.patch
diff --git a/patches/unapplied/server/0253-Call-player-spectator-target-events-and-improve-impl.patch b/patches/server/0253-Call-player-spectator-target-events-and-improve-impl.patch
index a5b2f09843..b98bbbcb38 100644
--- a/patches/unapplied/server/0253-Call-player-spectator-target-events-and-improve-impl.patch
+++ b/patches/server/0253-Call-player-spectator-target-events-and-improve-impl.patch
@@ -19,10 +19,10 @@ spectate the target entity.
Co-authored-by: Spottedleaf <[email protected]>
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index ca32fad1fbb5eeb0b6fb8c74f645277e92f63c33..419476f7ee7c55552655ef0098da0ddbc2434361 100644
+index cec8e2b8867e348d8c92e76983211e29edd46ed1..e73377782c388c9f750f0548f3c427bc52246fbc 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -2441,6 +2441,21 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -2421,6 +2421,21 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
this.camera = (Entity) (entity == null ? this : entity);
if (entity1 != this.camera) {
diff --git a/patches/unapplied/server/0254-Add-more-Witch-API.patch b/patches/server/0254-Add-more-Witch-API.patch
index c250557de6..c250557de6 100644
--- a/patches/unapplied/server/0254-Add-more-Witch-API.patch
+++ b/patches/server/0254-Add-more-Witch-API.patch
diff --git a/patches/unapplied/server/0255-Check-Drowned-for-Villager-Aggression-Config.patch b/patches/server/0255-Check-Drowned-for-Villager-Aggression-Config.patch
index 34b444c109..ce3b6e56c4 100644
--- a/patches/unapplied/server/0255-Check-Drowned-for-Villager-Aggression-Config.patch
+++ b/patches/server/0255-Check-Drowned-for-Villager-Aggression-Config.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Check Drowned for Villager Aggression Config
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
-index 95e0a5d464398c17dfaa2f919a17f63c63925551..2e73917ce9270de7483bb1d4e9bf312a31ec9b1e 100644
+index 22d6b36cbac0bc3bb6c63bbad0e7eaac60fcc1cf..c6c86913c0a48501a9109a3838a3e56685d16d79 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
-@@ -82,7 +82,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
+@@ -85,7 +85,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0));
this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Drowned.class).setAlertOthers(ZombifiedPiglin.class));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (target, world) -> this.okTarget(target)));
diff --git a/patches/unapplied/server/0256-Add-option-to-prevent-players-from-moving-into-unloa.patch b/patches/server/0256-Add-option-to-prevent-players-from-moving-into-unloa.patch
index a382aa3965..84c4327a00 100644
--- a/patches/unapplied/server/0256-Add-option-to-prevent-players-from-moving-into-unloa.patch
+++ b/patches/server/0256-Add-option-to-prevent-players-from-moving-into-unloa.patch
@@ -6,23 +6,23 @@ Subject: [PATCH] Add option to prevent players from moving into unloaded
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index af519e9914bae40fa1605b0cd4cf02ca1d44f0e8..f57c133de5e974d2c86145f697d3636347a29d65 100644
+index 0e1abdd619f26dbc334061f5f13ba126ee3006b5..8aacca1e3b310125a618de02b9277aedc949268f 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -498,9 +498,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -500,9 +500,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
double d0 = entity.getX();
double d1 = entity.getY();
double d2 = entity.getZ();
-- double d3 = ServerGamePacketListenerImpl.clampHorizontal(packet.getX());
-- double d4 = ServerGamePacketListenerImpl.clampVertical(packet.getY());
-- double d5 = ServerGamePacketListenerImpl.clampHorizontal(packet.getZ());
-+ double d3 = ServerGamePacketListenerImpl.clampHorizontal(packet.getX()); final double toX = d3; // Paper - OBFHELPER
-+ double d4 = ServerGamePacketListenerImpl.clampVertical(packet.getY()); final double toY = d4; // Paper - OBFHELPER
-+ double d5 = ServerGamePacketListenerImpl.clampHorizontal(packet.getZ()); final double toZ = d5; // Paper - OBFHELPER
- float f = Mth.wrapDegrees(packet.getYRot());
- float f1 = Mth.wrapDegrees(packet.getXRot());
+- double d3 = ServerGamePacketListenerImpl.clampHorizontal(packet.position().x());
+- double d4 = ServerGamePacketListenerImpl.clampVertical(packet.position().y());
+- double d5 = ServerGamePacketListenerImpl.clampHorizontal(packet.position().z());
++ double d3 = ServerGamePacketListenerImpl.clampHorizontal(packet.position().x()); final double toX = d3; // Paper - OBFHELPER
++ double d4 = ServerGamePacketListenerImpl.clampVertical(packet.position().y()); final double toY = d4; // Paper - OBFHELPER
++ double d5 = ServerGamePacketListenerImpl.clampHorizontal(packet.position().z()); final double toZ = d5; // Paper - OBFHELPER
+ float f = Mth.wrapDegrees(packet.yRot());
+ float f1 = Mth.wrapDegrees(packet.xRot());
double d6 = d3 - this.vehicleFirstGoodX;
-@@ -534,6 +534,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -536,6 +536,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
@@ -39,10 +39,10 @@ index af519e9914bae40fa1605b0cd4cf02ca1d44f0e8..f57c133de5e974d2c86145f697d36363
if (d10 - d9 > Math.max(100.0D, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) {
// CraftBukkit end
ServerGamePacketListenerImpl.LOGGER.warn("{} (vehicle of {}) moved too quickly! {},{},{}", new Object[]{entity.getName().getString(), this.player.getName().getString(), d6, d7, d8});
-@@ -1167,9 +1177,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1228,9 +1238,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
- if (!this.updateAwaitingTeleport()) {
+ if (!this.updateAwaitingTeleport() && this.player.hasClientLoaded()) {
- double d0 = ServerGamePacketListenerImpl.clampHorizontal(packet.getX(this.player.getX()));
- double d1 = ServerGamePacketListenerImpl.clampVertical(packet.getY(this.player.getY()));
- double d2 = ServerGamePacketListenerImpl.clampHorizontal(packet.getZ(this.player.getZ()));
@@ -52,7 +52,7 @@ index af519e9914bae40fa1605b0cd4cf02ca1d44f0e8..f57c133de5e974d2c86145f697d36363
float f = Mth.wrapDegrees(packet.getYRot(this.player.getYRot()));
float f1 = Mth.wrapDegrees(packet.getXRot(this.player.getXRot()));
-@@ -1227,6 +1237,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1288,6 +1298,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
} else {
speed = this.player.getAbilities().walkingSpeed * 10f;
}
diff --git a/patches/unapplied/server/0241-Allow-chests-to-be-placed-with-NBT-data.patch b/patches/unapplied/server/0241-Allow-chests-to-be-placed-with-NBT-data.patch
deleted file mode 100644
index 4b282589d9..0000000000
--- a/patches/unapplied/server/0241-Allow-chests-to-be-placed-with-NBT-data.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: BillyGalbreath <[email protected]>
-Date: Sat, 8 Sep 2018 18:43:31 -0500
-Subject: [PATCH] Allow chests to be placed with NBT data
-
-
-diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 957c112b4145fda5078a6f8f1689935fa0290806..f00b756fe5dad616323e3b11e35e27353f347042 100644
---- a/src/main/java/net/minecraft/world/item/ItemStack.java
-+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -496,6 +496,7 @@ public final class ItemStack implements DataComponentHolder {
- enuminteractionresult = InteractionResult.FAIL; // cancel placement
- // PAIL: Remove this when MC-99075 fixed
- placeEvent.getPlayer().updateInventory();
-+ world.capturedTileEntities.clear(); // Paper - Allow chests to be placed with NBT data; clear out block entities as chests and such will pop loot
- // revert back all captured blocks
- world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710
- for (BlockState blockstate : blocks) {
-diff --git a/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java
-index a3cdb4af2b7a3c7f884c8af2cba0d3d5e1c184a6..8847617f6a23e6d2fe9bf7444a2072dc53f741b8 100644
---- a/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java
-+++ b/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java
-@@ -238,7 +238,7 @@ public class ChestBlockEntity extends RandomizableContainerBlockEntity implement
- // CraftBukkit start
- @Override
- public boolean onlyOpCanSetNbt() {
-- return true;
-+ return false; // Paper - Allow chests to be placed with NBT data
- }
- // CraftBukkit end
- }