aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2023-08-05 17:21:59 -0700
committerGitHub <[email protected]>2023-08-05 17:21:59 -0700
commit2fa8efce9b49bc060e3d332b47f454dadc70188e (patch)
tree91719261cac492d78fb5fffca809cc6db8472e40
parent69a801305d3148d49672401e83905d95bfc950ec (diff)
downloadPaper-2fa8efce9b49bc060e3d332b47f454dadc70188e.tar.gz
Paper-2fa8efce9b49bc060e3d332b47f454dadc70188e.zip
Updated Upstream (Bukkit/CraftBukkit) (#9485)
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 82af5dc6 SPIGOT-7396: Add PlayerSignOpenEvent 3f0281ca SPIGOT-7063, PR-763: Add DragonBattle#initiateRespawn with custom EnderCrystals f83c8df4 PR-873: Add PlayerRecipeBookClickEvent 14560d39 SPIGOT-7435: Add TeleportCause#EXIT_BED 2cc6db92 SPIGOT-7422, PR-887: Add API to set sherds on decorated pots 36022f02 PR-883: Add ItemFactory#getSpawnEgg 12eb5c46 PR-881: Update Scoreboard Javadocs, remove explicit exception throwing f6d8d44a PR-882: Add modern time API methods to ban API 21a7b710 Upgrade some Maven plugins to reduce warnings 11fd1225 PR-886: Deprecate the SmithingRecipe constructor as it now does nothing dbd1761d SPIGOT-7406: Improve documentation for getDragonBattle CraftBukkit Changes: d548daac2 SPIGOT-7446: BlockState#update not updating a spawner's type to null 70e0bc050 SPIGOT-7447: Fix --forceUpgrade 6752f1d63 SPIGOT-7396: Add PlayerSignOpenEvent 847b4cad5 SPIGOT-7063, PR-1071: Add DragonBattle#initiateRespawn with custom EnderCrystals c335a555f PR-1212: Add PlayerRecipeBookClickEvent 4be756ecb SPIGOT-7445: Fix opening smithing inventory db70bd6ed SPIGOT-7441: Fix issue placing certain items in creative/op f7fa6d993 SPIGOT-7435: Add TeleportCause#EXIT_BED b435e8e8d SPIGOT-7349: Player#setDisplayName not working when message/format unmodified a2fafdd1d PR-1232: Re-add fix for player rotation 7cf863de1 PR-1233: Remove some old MC bug fixes now fixed in vanilla 08ec344ad Fix ChunkGenerator#generateCaves never being called 5daeb502a SPIGOT-7422, PR-1228: Add API to set sherds on decorated pots 52faa6b32 PR-1224: Add ItemFactory#getSpawnEgg 01cae71b7 SPIGOT-7429: Fix LEFT_CLICK_AIR not working for passable entities and spectators a94277a18 PR-1223: Remove non-existent scoreboard display name/prefix/suffix limits 36b107660 PR-1225: Add modern time API methods to ban API 59ead25bc Upgrade some Maven plugins to reduce warnings 202fc5c4e Increase outdated build delay ce545de57 SPIGOT-7398: TextDisplay#setInterpolationDuration incorrectly updates the line width Spigot Changes: b41c46db Rebuild patches 3374045a SPIGOT-7431: Fix EntityMountEvent returning opposite entities 0ca4eb66 Rebuild patches
-rw-r--r--build-data/reobf-mappings-patch.tiny7
-rw-r--r--patches/api/0001-Convert-project-to-Gradle.patch6
-rw-r--r--patches/api/0005-Adventure.patch259
-rw-r--r--patches/api/0010-Timings-v2.patch4
-rw-r--r--patches/api/0012-Player-affects-spawning-API.patch4
-rw-r--r--patches/api/0017-Add-view-distance-API.patch4
-rw-r--r--patches/api/0021-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch4
-rw-r--r--patches/api/0025-Player-Tab-List-and-Title-APIs.patch4
-rw-r--r--patches/api/0027-Complete-resource-pack-API.patch6
-rw-r--r--patches/api/0046-Add-String-based-Action-Bar-API.patch6
-rw-r--r--patches/api/0055-Fix-upstream-javadocs.patch66
-rw-r--r--patches/api/0065-Add-getI18NDisplayName-API.patch11
-rw-r--r--patches/api/0066-ensureServerConversions-API.patch13
-rw-r--r--patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch4
-rw-r--r--patches/api/0077-Display-warning-on-deprecated-recipe-API.patch24
-rw-r--r--patches/api/0080-Ability-to-apply-mending-to-XP-API.patch6
-rw-r--r--patches/api/0091-Player.setPlayerProfile-API.patch8
-rw-r--r--patches/api/0094-Add-openSign-method-to-HumanEntity.patch4
-rw-r--r--patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch8
-rw-r--r--patches/api/0144-Expose-attack-cooldown-methods-for-Player.patch4
-rw-r--r--patches/api/0165-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch6
-rw-r--r--patches/api/0166-Add-ItemStack-Recipe-API-helper-methods.patch12
-rw-r--r--patches/api/0172-Fix-Spigot-annotation-mistakes.patch43
-rw-r--r--patches/api/0189-Add-Player-Client-Options-API.patch4
-rw-r--r--patches/api/0201-Add-and-implement-PlayerRecipeBookClickEvent.patch15
-rw-r--r--patches/api/0206-Brand-support.patch4
-rw-r--r--patches/api/0212-Create-HoverEvent-from-ItemStack-Entity.patch9
-rw-r--r--patches/api/0217-Player-elytra-boost-API.patch4
-rw-r--r--patches/api/0244-Add-sendOpLevel-API.patch4
-rw-r--r--patches/api/0292-Add-PlayerKickEvent-causes.patch4
-rw-r--r--patches/api/0311-Option-to-prevent-NBT-copy-in-smithing-recipes.patch10
-rw-r--r--patches/api/0319-Add-ItemFactory-getSpawnEgg-API.patch25
-rw-r--r--patches/api/0319-Add-critical-damage-API.patch (renamed from patches/api/0320-Add-critical-damage-API.patch)0
-rw-r--r--patches/api/0320-Fix-issues-with-mob-conversion.patch (renamed from patches/api/0321-Fix-issues-with-mob-conversion.patch)0
-rw-r--r--patches/api/0321-Add-isCollidable-methods-to-various-places.patch (renamed from patches/api/0322-Add-isCollidable-methods-to-various-places.patch)0
-rw-r--r--patches/api/0322-Goat-ram-API.patch (renamed from patches/api/0323-Goat-ram-API.patch)0
-rw-r--r--patches/api/0323-Add-API-for-resetting-a-single-score.patch (renamed from patches/api/0324-Add-API-for-resetting-a-single-score.patch)2
-rw-r--r--patches/api/0324-Add-Raw-Byte-Entity-Serialization.patch (renamed from patches/api/0325-Add-Raw-Byte-Entity-Serialization.patch)0
-rw-r--r--patches/api/0325-Add-PlayerItemFrameChangeEvent.patch (renamed from patches/api/0326-Add-PlayerItemFrameChangeEvent.patch)0
-rw-r--r--patches/api/0326-Allow-delegation-to-vanilla-chunk-gen.patch (renamed from patches/api/0327-Allow-delegation-to-vanilla-chunk-gen.patch)4
-rw-r--r--patches/api/0327-Add-more-Campfire-API.patch (renamed from patches/api/0328-Add-more-Campfire-API.patch)0
-rw-r--r--patches/api/0328-Move-VehicleCollisionEvent-HandlerList-up.patch (renamed from patches/api/0329-Move-VehicleCollisionEvent-HandlerList-up.patch)0
-rw-r--r--patches/api/0329-Improve-scoreboard-entries.patch (renamed from patches/api/0330-Improve-scoreboard-entries.patch)74
-rw-r--r--patches/api/0330-Entity-powdered-snow-API.patch (renamed from patches/api/0331-Entity-powdered-snow-API.patch)0
-rw-r--r--patches/api/0331-Add-API-for-item-entity-health.patch (renamed from patches/api/0332-Add-API-for-item-entity-health.patch)0
-rw-r--r--patches/api/0332-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch (renamed from patches/api/0333-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch)0
-rw-r--r--patches/api/0333-Bucketable-API.patch (renamed from patches/api/0334-Bucketable-API.patch)0
-rw-r--r--patches/api/0334-System-prop-for-default-config-comment-parsing.patch (renamed from patches/api/0335-System-prop-for-default-config-comment-parsing.patch)0
-rw-r--r--patches/api/0335-Expose-vanilla-BiomeProvider-from-WorldInfo.patch (renamed from patches/api/0336-Expose-vanilla-BiomeProvider-from-WorldInfo.patch)0
-rw-r--r--patches/api/0336-Add-new-overload-to-PersistentDataContainer-has.patch (renamed from patches/api/0337-Add-new-overload-to-PersistentDataContainer-has.patch)0
-rw-r--r--patches/api/0337-Multiple-Entries-with-Scoreboards.patch (renamed from patches/api/0338-Multiple-Entries-with-Scoreboards.patch)10
-rw-r--r--patches/api/0338-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/api/0339-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/api/0339-Warn-on-strange-EventHandler-return-types.patch (renamed from patches/api/0340-Warn-on-strange-EventHandler-return-types.patch)0
-rw-r--r--patches/api/0340-Multi-Block-Change-API.patch (renamed from patches/api/0341-Multi-Block-Change-API.patch)4
-rw-r--r--patches/api/0341-Fix-NotePlayEvent.patch (renamed from patches/api/0342-Fix-NotePlayEvent.patch)0
-rw-r--r--patches/api/0342-Freeze-Tick-Lock-API.patch (renamed from patches/api/0343-Freeze-Tick-Lock-API.patch)0
-rw-r--r--patches/api/0343-Dolphin-API.patch (renamed from patches/api/0344-Dolphin-API.patch)0
-rw-r--r--patches/api/0344-More-PotionEffectType-API.patch (renamed from patches/api/0345-More-PotionEffectType-API.patch)0
-rw-r--r--patches/api/0345-API-for-creating-command-sender-which-forwards-feedb.patch (renamed from patches/api/0346-API-for-creating-command-sender-which-forwards-feedb.patch)4
-rw-r--r--patches/api/0346-Implement-regenerateChunk.patch (renamed from patches/api/0347-Implement-regenerateChunk.patch)0
-rw-r--r--patches/api/0347-Add-GameEvent-tags.patch (renamed from patches/api/0348-Add-GameEvent-tags.patch)0
-rw-r--r--patches/api/0348-Furnace-RecipesUsed-API.patch (renamed from patches/api/0349-Furnace-RecipesUsed-API.patch)0
-rw-r--r--patches/api/0349-Configurable-sculk-sensor-listener-range.patch (renamed from patches/api/0350-Configurable-sculk-sensor-listener-range.patch)0
-rw-r--r--patches/api/0350-Add-missing-block-data-mins-and-maxes.patch (renamed from patches/api/0351-Add-missing-block-data-mins-and-maxes.patch)0
-rw-r--r--patches/api/0351-Custom-Potion-Mixes.patch (renamed from patches/api/0352-Custom-Potion-Mixes.patch)4
-rw-r--r--patches/api/0352-Expose-furnace-minecart-push-values.patch (renamed from patches/api/0353-Expose-furnace-minecart-push-values.patch)0
-rw-r--r--patches/api/0353-More-Projectile-API.patch (renamed from patches/api/0354-More-Projectile-API.patch)0
-rw-r--r--patches/api/0354-Add-getComputedBiome-API.patch (renamed from patches/api/0355-Add-getComputedBiome-API.patch)0
-rw-r--r--patches/api/0355-Add-enchantWithLevels-API.patch (renamed from patches/api/0356-Add-enchantWithLevels-API.patch)8
-rw-r--r--patches/api/0356-Add-TameableDeathMessageEvent.patch (renamed from patches/api/0357-Add-TameableDeathMessageEvent.patch)0
-rw-r--r--patches/api/0357-Allow-to-change-the-podium-of-the-EnderDragon.patch (renamed from patches/api/0358-Allow-to-change-the-podium-of-the-EnderDragon.patch)4
-rw-r--r--patches/api/0358-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch (renamed from patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch)0
-rw-r--r--patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch (renamed from patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch)0
-rw-r--r--patches/api/0360-WorldCreator-keepSpawnLoaded.patch (renamed from patches/api/0361-WorldCreator-keepSpawnLoaded.patch)0
-rw-r--r--patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch (renamed from patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch)0
-rw-r--r--patches/api/0362-Add-PlayerStopUsingItemEvent.patch (renamed from patches/api/0363-Add-PlayerStopUsingItemEvent.patch)0
-rw-r--r--patches/api/0363-FallingBlock-auto-expire-setting.patch (renamed from patches/api/0364-FallingBlock-auto-expire-setting.patch)0
-rw-r--r--patches/api/0364-Keyed-Cat-Type.patch (renamed from patches/api/0365-Keyed-Cat-Type.patch)0
-rw-r--r--patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch (renamed from patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch)0
-rw-r--r--patches/api/0366-Add-WardenAngerChangeEvent.patch (renamed from patches/api/0367-Add-WardenAngerChangeEvent.patch)0
-rw-r--r--patches/api/0367-Nameable-Banner-API.patch (renamed from patches/api/0368-Nameable-Banner-API.patch)0
-rw-r--r--patches/api/0368-Add-Player-getFishHook.patch (renamed from patches/api/0369-Add-Player-getFishHook.patch)0
-rw-r--r--patches/api/0369-More-Teleport-API.patch (renamed from patches/api/0370-More-Teleport-API.patch)8
-rw-r--r--patches/api/0370-Add-EntityPortalReadyEvent.patch (renamed from patches/api/0371-Add-EntityPortalReadyEvent.patch)0
-rw-r--r--patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch (renamed from patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch)4
-rw-r--r--patches/api/0372-Collision-API.patch (renamed from patches/api/0373-Collision-API.patch)0
-rw-r--r--patches/api/0373-Block-Ticking-API.patch (renamed from patches/api/0374-Block-Ticking-API.patch)0
-rw-r--r--patches/api/0374-Add-NamespacedKey-biome-methods.patch (renamed from patches/api/0375-Add-NamespacedKey-biome-methods.patch)0
-rw-r--r--patches/api/0375-Also-load-resources-from-LibraryLoader.patch (renamed from patches/api/0376-Also-load-resources-from-LibraryLoader.patch)0
-rw-r--r--patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch (renamed from patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch)0
-rw-r--r--patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch (renamed from patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch)0
-rw-r--r--patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch (renamed from patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch)0
-rw-r--r--patches/api/0379-Add-getDrops-to-BlockState.patch (renamed from patches/api/0380-Add-getDrops-to-BlockState.patch)0
-rw-r--r--patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch (renamed from patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch)0
-rw-r--r--patches/api/0381-Elder-Guardian-appearance-API.patch (renamed from patches/api/0382-Elder-Guardian-appearance-API.patch)4
-rw-r--r--patches/api/0382-Allow-changing-bed-s-occupied-property.patch (renamed from patches/api/0383-Allow-changing-bed-s-occupied-property.patch)0
-rw-r--r--patches/api/0383-Add-EquipmentSlot-convenience-methods.patch (renamed from patches/api/0384-Add-EquipmentSlot-convenience-methods.patch)0
-rw-r--r--patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch (renamed from patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch)0
-rw-r--r--patches/api/0385-Add-entity-knockback-API.patch (renamed from patches/api/0386-Add-entity-knockback-API.patch)0
-rw-r--r--patches/api/0386-Added-EntityToggleSitEvent.patch (renamed from patches/api/0387-Added-EntityToggleSitEvent.patch)0
-rw-r--r--patches/api/0387-Add-Moving-Piston-API.patch (renamed from patches/api/0388-Add-Moving-Piston-API.patch)0
-rw-r--r--patches/api/0388-Add-PrePlayerAttackEntityEvent.patch (renamed from patches/api/0389-Add-PrePlayerAttackEntityEvent.patch)0
-rw-r--r--patches/api/0389-Add-Player-Warden-Warning-API.patch (renamed from patches/api/0390-Add-Player-Warden-Warning-API.patch)4
-rw-r--r--patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch (renamed from patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch)0
-rw-r--r--patches/api/0391-Add-paper-dumplisteners-command.patch (renamed from patches/api/0392-Add-paper-dumplisteners-command.patch)0
-rw-r--r--patches/api/0392-ItemStack-damage-API.patch (renamed from patches/api/0393-ItemStack-damage-API.patch)0
-rw-r--r--patches/api/0393-Add-Tick-TemporalUnit.patch (renamed from patches/api/0394-Add-Tick-TemporalUnit.patch)0
-rw-r--r--patches/api/0394-Friction-API.patch (renamed from patches/api/0395-Friction-API.patch)0
-rw-r--r--patches/api/0395-Player-Entity-Tracking-Events.patch (renamed from patches/api/0396-Player-Entity-Tracking-Events.patch)0
-rw-r--r--patches/api/0396-Add-missing-Fluid-type.patch (renamed from patches/api/0397-Add-missing-Fluid-type.patch)0
-rw-r--r--patches/api/0397-fix-Instruments.patch (renamed from patches/api/0398-fix-Instruments.patch)4
-rw-r--r--patches/api/0398-Add-BlockLockCheckEvent.patch (renamed from patches/api/0399-Add-BlockLockCheckEvent.patch)0
-rw-r--r--patches/api/0399-Add-Sneaking-API-for-Entities.patch (renamed from patches/api/0400-Add-Sneaking-API-for-Entities.patch)6
-rw-r--r--patches/api/0400-Improve-PortalEvents.patch (renamed from patches/api/0401-Improve-PortalEvents.patch)0
-rw-r--r--patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch (renamed from patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch)0
-rw-r--r--patches/api/0402-Flying-Fall-Damage-API.patch (renamed from patches/api/0403-Flying-Fall-Damage-API.patch)4
-rw-r--r--patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch (renamed from patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch)0
-rw-r--r--patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch (renamed from patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch)0
-rw-r--r--patches/api/0405-Win-Screen-API.patch (renamed from patches/api/0406-Win-Screen-API.patch)4
-rw-r--r--patches/api/0406-Add-Entity-Body-Yaw-API.patch (renamed from patches/api/0407-Add-Entity-Body-Yaw-API.patch)0
-rw-r--r--patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch (renamed from patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch)0
-rw-r--r--patches/api/0408-Add-EntityFertilizeEggEvent.patch (renamed from patches/api/0409-Add-EntityFertilizeEggEvent.patch)0
-rw-r--r--patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch (renamed from patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch)0
-rw-r--r--patches/api/0410-Add-Shearable-API.patch (renamed from patches/api/0411-Add-Shearable-API.patch)0
-rw-r--r--patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch (renamed from patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch)0
-rw-r--r--patches/api/0412-Add-Mob-Experience-reward-API.patch (renamed from patches/api/0413-Add-Mob-Experience-reward-API.patch)0
-rw-r--r--patches/api/0413-Expand-PlayerItemMendEvent.patch (renamed from patches/api/0414-Expand-PlayerItemMendEvent.patch)0
-rw-r--r--patches/api/0414-Add-transient-modifier-API.patch (renamed from patches/api/0415-Add-transient-modifier-API.patch)0
-rw-r--r--patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch (renamed from patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch)0
-rw-r--r--patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch (renamed from patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch)0
-rw-r--r--patches/api/0417-Folia-scheduler-and-owned-region-API.patch (renamed from patches/api/0418-Folia-scheduler-and-owned-region-API.patch)0
-rw-r--r--patches/api/0418-Add-event-for-player-editing-sign.patch (renamed from patches/api/0419-Add-event-for-player-editing-sign.patch)16
-rw-r--r--patches/api/0419-Add-Sign-getInteractableSideFor.patch (renamed from patches/api/0420-Add-Sign-getInteractableSideFor.patch)0
-rw-r--r--patches/api/0420-Fix-BanList-API.patch (renamed from patches/api/0421-Fix-BanList-API.patch)75
-rw-r--r--patches/api/0421-Add-whitelist-events.patch (renamed from patches/api/0422-Add-whitelist-events.patch)0
-rw-r--r--patches/server/0001-Setup-Gradle-project.patch6
-rw-r--r--patches/server/0003-Build-system-changes.patch4
-rw-r--r--patches/server/0005-Paper-config-files.patch6
-rw-r--r--patches/server/0006-MC-Dev-fixes.patch27
-rw-r--r--patches/server/0008-CB-fixes.patch4
-rw-r--r--patches/server/0009-MC-Utils.patch12
-rw-r--r--patches/server/0010-Adventure.patch155
-rw-r--r--patches/server/0011-Paper-command.patch6
-rw-r--r--patches/server/0013-Paper-Plugins.patch10
-rw-r--r--patches/server/0014-Timings-v2.patch26
-rw-r--r--patches/server/0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch6
-rw-r--r--patches/server/0019-Rewrite-chunk-system.patch24
-rw-r--r--patches/server/0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch8
-rw-r--r--patches/server/0030-Player-affects-spawning-API.patch4
-rw-r--r--patches/server/0031-Further-improve-server-tick-loop.patch4
-rw-r--r--patches/server/0032-Only-refresh-abilities-if-needed.patch4
-rw-r--r--patches/server/0045-Implement-PlayerLocaleChangeEvent.patch4
-rw-r--r--patches/server/0052-Ensure-commands-are-not-ran-async.patch16
-rw-r--r--patches/server/0054-Expose-server-CommandMap.patch4
-rw-r--r--patches/server/0056-Player-Tab-List-and-Title-APIs.patch4
-rw-r--r--patches/server/0058-Add-velocity-warnings.patch4
-rw-r--r--patches/server/0059-Configurable-inter-world-teleportation-safety.patch4
-rw-r--r--patches/server/0065-Complete-resource-pack-API.patch10
-rw-r--r--patches/server/0066-Default-loading-permissions.yml-before-plugins.patch6
-rw-r--r--patches/server/0067-Allow-Reloading-of-Custom-Permissions.patch4
-rw-r--r--patches/server/0068-Remove-Metadata-on-reload.patch4
-rw-r--r--patches/server/0069-Handle-Item-Meta-Inconsistencies.patch6
-rw-r--r--patches/server/0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch4
-rw-r--r--patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch4
-rw-r--r--patches/server/0105-Add-setting-for-proxy-online-mode-status.patch4
-rw-r--r--patches/server/0107-Configurable-packet-in-spam-threshold.patch4
-rw-r--r--patches/server/0108-Configurable-flying-kick-messages.patch6
-rw-r--r--patches/server/0109-Add-EntityZapEvent.patch4
-rw-r--r--patches/server/0112-Allow-Reloading-of-Command-Aliases.patch4
-rw-r--r--patches/server/0113-Add-source-to-PlayerExpChangeEvent.patch4
-rw-r--r--patches/server/0114-Add-ProjectileCollideEvent.patch6
-rw-r--r--patches/server/0120-String-based-Action-Bar-API.patch4
-rw-r--r--patches/server/0121-Properly-fix-item-duplication-bug.patch6
-rw-r--r--patches/server/0122-Firework-API-s.patch4
-rw-r--r--patches/server/0131-Add-option-to-make-parrots-stay-on-shoulders-despite.patch4
-rw-r--r--patches/server/0132-Add-configuration-option-to-prevent-player-names-fro.patch4
-rw-r--r--patches/server/0133-Use-TerminalConsoleAppender-for-console-improvements.patch8
-rw-r--r--patches/server/0139-Add-UnknownCommandEvent.patch6
-rw-r--r--patches/server/0140-Basic-PlayerProfile-API.patch8
-rw-r--r--patches/server/0146-Implement-ensureServerConversions-API.patch10
-rw-r--r--patches/server/0147-Implement-getI18NDisplayName.patch9
-rw-r--r--patches/server/0149-Fix-this-stupid-bullshit.patch4
-rw-r--r--patches/server/0156-Add-PlayerJumpEvent.patch4
-rw-r--r--patches/server/0157-handle-ServerboundKeepAlivePacket-async.patch4
-rw-r--r--patches/server/0158-Expose-client-protocol-version-and-virtual-host.patch4
-rw-r--r--patches/server/0159-revert-serverside-behavior-of-keepalives.patch8
-rw-r--r--patches/server/0166-AsyncTabCompleteEvent.patch10
-rw-r--r--patches/server/0168-Ability-to-apply-mending-to-XP-API.patch4
-rw-r--r--patches/server/0181-Player.setPlayerProfile-API.patch22
-rw-r--r--patches/server/0182-getPlayerUniqueId-API.patch4
-rw-r--r--patches/server/0186-Flag-to-disable-the-channel-limit.patch6
-rw-r--r--patches/server/0187-Add-openSign-method-to-HumanEntity.patch25
-rw-r--r--patches/server/0213-Add-config-to-disable-ender-dragon-legacy-check.patch12
-rw-r--r--patches/server/0215-InventoryCloseEvent-Reason-API.patch18
-rw-r--r--patches/server/0217-Refresh-player-inventory-when-cancelling-PlayerInter.patch4
-rw-r--r--patches/server/0225-Vanished-players-don-t-have-rights.patch4
-rw-r--r--patches/server/0232-Break-up-and-make-tab-spam-limits-configurable.patch8
-rw-r--r--patches/server/0236-Add-Early-Warning-Feature-to-WatchDog.patch6
-rw-r--r--patches/server/0251-Expose-attack-cooldown-methods-for-Player.patch4
-rw-r--r--patches/server/0252-Improve-death-events.patch14
-rw-r--r--patches/server/0253-Allow-chests-to-be-placed-with-NBT-data.patch4
-rw-r--r--patches/server/0272-Add-option-to-prevent-players-from-moving-into-unloa.patch10
-rw-r--r--patches/server/0277-Restore-custom-InventoryHolder-support.patch4
-rw-r--r--patches/server/0280-Don-t-allow-digging-into-unloaded-chunks.patch4
-rw-r--r--patches/server/0281-Make-the-default-permission-message-configurable.patch4
-rw-r--r--patches/server/0286-Book-Size-Limits.patch4
-rw-r--r--patches/server/0289-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch14
-rw-r--r--patches/server/0291-Block-Entity-remove-from-being-called-on-Players.patch4
-rw-r--r--patches/server/0294-Implement-Brigadier-Mojang-API.patch8
-rw-r--r--patches/server/0296-Limit-Client-Sign-length-more.patch6
-rw-r--r--patches/server/0309-Fix-CB-call-to-changed-postToMainThread-method.patch4
-rw-r--r--patches/server/0314-Expose-the-internal-current-tick.patch4
-rw-r--r--patches/server/0342-Anti-Xray.patch4
-rw-r--r--patches/server/0352-add-hand-to-BlockMultiPlaceEvent.patch4
-rw-r--r--patches/server/0358-Add-tick-times-API-and-mspt-command.patch4
-rw-r--r--patches/server/0359-Expose-MinecraftServer-isRunning.patch4
-rw-r--r--patches/server/0376-Implement-Player-Client-Options-API.patch4
-rw-r--r--patches/server/0383-Fix-numerous-item-duplication-issues-and-teleport-is.patch8
-rw-r--r--patches/server/0385-Validate-PickItem-Packet-and-kick-for-invalid.patch4
-rw-r--r--patches/server/0386-Expose-game-version.patch4
-rw-r--r--patches/server/0389-misc-debugging-dumps.patch4
-rw-r--r--patches/server/0390-Prevent-teleporting-dead-entities.patch4
-rw-r--r--patches/server/0392-Implement-Mob-Goal-API.patch4
-rw-r--r--patches/server/0394-Option-for-maximum-exp-value-when-merging-orbs.patch4
-rw-r--r--patches/server/0395-ExperienceOrbMergeEvent.patch4
-rw-r--r--patches/server/0399-Wait-for-Async-Tasks-during-shutdown.patch4
-rw-r--r--patches/server/0412-Prevent-position-desync-in-playerconnection-causing-.patch4
-rw-r--r--patches/server/0416-Add-and-implement-PlayerRecipeBookClickEvent.patch54
-rw-r--r--patches/server/0418-Add-permission-for-command-blocks.patch6
-rw-r--r--patches/server/0420-Fix-Per-World-Difficulty-Remembering-Difficulty.patch12
-rw-r--r--patches/server/0424-Add-Plugin-Tickets-to-API-Chunk-Methods.patch6
-rw-r--r--patches/server/0436-Add-PrepareResultEvent.patch4
-rw-r--r--patches/server/0448-Brand-support.patch14
-rw-r--r--patches/server/0454-Add-BellRingEvent.patch4
-rw-r--r--patches/server/0459-PortalCreateEvent-needs-to-know-its-entity.patch4
-rw-r--r--patches/server/0462-Create-HoverEvent-from-ItemStack-Entity.patch9
-rw-r--r--patches/server/0464-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch8
-rw-r--r--patches/server/0469-Lazily-track-plugin-scoreboards-by-default.patch8
-rw-r--r--patches/server/0473-Reset-Ender-Crystals-on-Dragon-Spawn.patch12
-rw-r--r--patches/server/0474-Fix-for-large-move-vectors-crashing-server.patch12
-rw-r--r--patches/server/0480-Player-elytra-boost-API.patch4
-rw-r--r--patches/server/0483-Add-getOfflinePlayerIfCached-String.patch4
-rw-r--r--patches/server/0485-Toggle-for-removing-existing-dragon.patch16
-rw-r--r--patches/server/0490-Add-API-for-quit-reason.patch6
-rw-r--r--patches/server/0494-Fix-Player-spawnParticle-x-y-z-precision-loss.patch4
-rw-r--r--patches/server/0503-Limit-recipe-packets.patch8
-rw-r--r--patches/server/0508-Add-OBSTRUCTED-reason-to-BedEnterResult.patch4
-rw-r--r--patches/server/0520-Fix-interact-event-not-being-called-sometimes.patch16
-rw-r--r--patches/server/0527-Implemented-BlockFailedDispenseEvent.patch4
-rw-r--r--patches/server/0534-Add-sendOpLevel-API.patch4
-rw-r--r--patches/server/0542-Implement-BlockPreDispenseEvent.patch4
-rw-r--r--patches/server/0544-Add-toggle-for-always-placing-the-dragon-egg.patch4
-rw-r--r--patches/server/0546-Add-dropLeash-variable-to-EntityUnleashEvent.patch4
-rw-r--r--patches/server/0548-add-DragonEggFormEvent.patch4
-rw-r--r--patches/server/0552-Allow-adding-items-to-BlockDropItemEvent.patch4
-rw-r--r--patches/server/0567-Allow-using-signs-inside-spawn-protection.patch4
-rw-r--r--patches/server/0568-Expand-world-key-API.patch8
-rw-r--r--patches/server/0573-Don-t-ignore-result-of-PlayerEditBookEvent.patch4
-rw-r--r--patches/server/0583-fix-PlayerItemHeldEvent-firing-twice.patch4
-rw-r--r--patches/server/0591-add-RespawnFlags-to-PlayerRespawnEvent.patch4
-rw-r--r--patches/server/0601-Add-basic-Datapack-API.patch8
-rw-r--r--patches/server/0603-additions-to-PlayerGameModeChangeEvent.patch10
-rw-r--r--patches/server/0606-Move-range-check-for-block-placing-up.patch4
-rw-r--r--patches/server/0607-Fix-and-optimise-world-force-upgrading.patch10
-rw-r--r--patches/server/0609-Add-Unix-domain-socket-support.patch4
-rw-r--r--patches/server/0615-Add-PlayerKickEvent-causes.patch78
-rw-r--r--patches/server/0632-Ensure-disconnect-for-book-edit-is-called-on-main.patch4
-rw-r--r--patches/server/0636-Adds-PlayerArmSwingEvent.patch4
-rw-r--r--patches/server/0637-Fixes-kick-event-leave-message-not-being-sent.patch12
-rw-r--r--patches/server/0645-Add-System.out-err-catcher.patch4
-rw-r--r--patches/server/0649-Prevent-AFK-kick-while-watching-end-credits.patch4
-rw-r--r--patches/server/0651-Add-PlayerSetSpawnEvent.patch4
-rw-r--r--patches/server/0655-Added-EntityDamageItemEvent.patch12
-rw-r--r--patches/server/0670-Add-ItemFactory-getSpawnEgg-API.patch35
-rw-r--r--patches/server/0671-Add-critical-damage-API.patch10
-rw-r--r--patches/server/0680-Improve-and-expand-AsyncCatcher.patch4
-rw-r--r--patches/server/0681-Add-paper-mobcaps-and-paper-playermobcaps.patch4
-rw-r--r--patches/server/0713-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch4
-rw-r--r--patches/server/0716-Prevent-softlocked-end-exit-portal-generation.patch6
-rw-r--r--patches/server/0735-Hide-unnecessary-itemmeta-from-clients.patch6
-rw-r--r--patches/server/0740-Allow-delegation-to-vanilla-chunk-gen.patch4
-rw-r--r--patches/server/0742-Optimise-collision-checking-in-player-move-packet-ha.patch20
-rw-r--r--patches/server/0748-Improve-scoreboard-entries.patch12
-rw-r--r--patches/server/0760-Expose-vanilla-BiomeProvider-from-WorldInfo.patch4
-rw-r--r--patches/server/0763-Multiple-Entries-with-Scoreboards.patch8
-rw-r--r--patches/server/0768-Kick-on-main-for-illegal-chat.patch8
-rw-r--r--patches/server/0769-Multi-Block-Change-API-Implementation.patch4
-rw-r--r--patches/server/0775-API-for-creating-command-sender-which-forwards-feedb.patch4
-rw-r--r--patches/server/0778-Fix-cancelled-powdered-snow-bucket-placement.patch12
-rw-r--r--patches/server/0779-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch4
-rw-r--r--patches/server/0780-Add-GameEvent-tags.patch6
-rw-r--r--patches/server/0786-Put-world-into-worldlist-before-initing-the-world.patch4
-rw-r--r--patches/server/0788-Custom-Potion-Mixes.patch8
-rw-r--r--patches/server/0795-Don-t-allow-vehicle-movement-from-players-while-tele.patch4
-rw-r--r--patches/server/0798-Implement-enchantWithLevels-API.patch6
-rw-r--r--patches/server/0799-Fix-saving-in-unloadWorld.patch4
-rw-r--r--patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch4
-rw-r--r--patches/server/0810-Prevent-tile-entity-copies-loading-chunks.patch4
-rw-r--r--patches/server/0813-Pass-ServerLevel-for-gamerule-callbacks.patch4
-rw-r--r--patches/server/0814-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch4
-rw-r--r--patches/server/0815-WorldCreator-keepSpawnLoaded.patch4
-rw-r--r--patches/server/0823-Do-not-accept-invalid-client-settings.patch4
-rw-r--r--patches/server/0825-Fix-OfflinePlayer-getBedSpawnLocation.patch6
-rw-r--r--patches/server/0830-Throw-exception-on-world-create-while-being-ticked.patch8
-rw-r--r--patches/server/0837-Don-t-broadcast-messages-to-command-blocks.patch4
-rw-r--r--patches/server/0840-Don-t-print-component-in-resource-pack-rejection-mes.patch4
-rw-r--r--patches/server/0844-Add-some-minimal-debug-information-to-chat-packet-er.patch4
-rw-r--r--patches/server/0846-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch4
-rw-r--r--patches/server/0847-More-Teleport-API.patch14
-rw-r--r--patches/server/0850-Send-block-entities-after-destroy-prediction.patch4
-rw-r--r--patches/server/0852-Custom-Chat-Completion-Suggestions-API.patch4
-rw-r--r--patches/server/0857-Add-Velocity-IP-Forwarding-Support.patch4
-rw-r--r--patches/server/0869-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch6
-rw-r--r--patches/server/0877-Correctly-handle-interactions-with-items-on-cooldown.patch6
-rw-r--r--patches/server/0879-Elder-Guardian-appearance-API.patch4
-rw-r--r--patches/server/0894-ensure-reset-EnderDragon-boss-event-name.patch19
-rw-r--r--patches/server/0896-Add-Player-Warden-Warning-API.patch4
-rw-r--r--patches/server/0908-Properly-resend-entities.patch4
-rw-r--r--patches/server/0910-fix-Instruments.patch4
-rw-r--r--patches/server/0915-Improve-logging-and-errors.patch4
-rw-r--r--patches/server/0918-Add-missing-SpigotConfig-logCommands-check.patch4
-rw-r--r--patches/server/0920-Flying-Fall-Damage.patch4
-rw-r--r--patches/server/0921-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch4
-rw-r--r--patches/server/0924-Use-single-player-info-update-packet-on-join.patch4
-rw-r--r--patches/server/0926-Win-Screen-API.patch4
-rw-r--r--patches/server/0932-Add-EntityFertilizeEggEvent.patch4
-rw-r--r--patches/server/0937-Fix-text-display-error-on-spawn.patch18
-rw-r--r--patches/server/0942-Optimize-Hoppers.patch4
-rw-r--r--patches/server/0943-Fix-beehives-generating-from-using-bonemeal.patch4
-rw-r--r--patches/server/0945-Treat-sequence-violations-like-they-should-be.patch4
-rw-r--r--patches/server/0947-Prevent-causing-expired-keys-from-impacting-new-join.patch8
-rw-r--r--patches/server/0954-Fix-DamageCause-for-Falling-Blocks.patch4
-rw-r--r--patches/server/0960-Expand-PlayerItemMendEvent.patch8
-rw-r--r--patches/server/0963-Fix-block-place-logic.patch4
-rw-r--r--patches/server/0964-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch4
-rw-r--r--patches/server/0967-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch4
-rw-r--r--patches/server/0972-Folia-scheduler-and-owned-region-API.patch6
-rw-r--r--patches/server/0974-Properly-Cancel-Usable-Items.patch6
-rw-r--r--patches/server/0975-Add-event-for-player-editing-sign.patch72
-rw-r--r--patches/server/0979-Call-missing-BlockDispenseEvent.patch4
-rw-r--r--patches/server/0982-Add-Sign-getInteractableSideFor.patch4
-rw-r--r--patches/server/0984-fix-item-meta-for-tadpole-buckets.patch4
-rw-r--r--patches/server/0986-Fix-BanList-API.patch109
-rw-r--r--patches/server/0989-ExperienceOrb-should-call-EntitySpawnEvent.patch4
-rw-r--r--patches/server/0990-Don-t-tick-signs.patch4
m---------work/Bukkit0
m---------work/CraftBukkit0
m---------work/Spigot0
348 files changed, 1390 insertions, 1255 deletions
diff --git a/build-data/reobf-mappings-patch.tiny b/build-data/reobf-mappings-patch.tiny
index 1d192e5e6b..48699a5e43 100644
--- a/build-data/reobf-mappings-patch.tiny
+++ b/build-data/reobf-mappings-patch.tiny
@@ -26,10 +26,3 @@ c net/minecraft/server/level/ChunkMap net/minecraft/server/level/PlayerChunkMap
# Paper changes type
c net/minecraft/core/MappedRegistry net/minecraft/core/RegistryMaterials
f Lit/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap; toId e
-
-# upstream makes a bunch of methods public that cause accidental overrides now
-c net/minecraft/world/entity/Display net/minecraft/world/entity/Display
- m ()I getInterpolationDelay getInterpolationDelay_
- m (I)V setInterpolationDelay setInterpolationDelay_
- m (I)V setInterpolationDuration setInterpolationDuration_
-
diff --git a/patches/api/0001-Convert-project-to-Gradle.patch b/patches/api/0001-Convert-project-to-Gradle.patch
index b5071c6988..0dc8757ff4 100644
--- a/patches/api/0001-Convert-project-to-Gradle.patch
+++ b/patches/api/0001-Convert-project-to-Gradle.patch
@@ -118,7 +118,7 @@ index 0000000000000000000000000000000000000000..232cc8fafb1d7d9730cf2f58777e8977
+}
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
-index d3b75bb8b9cb0623ed9e13226ced09c5fa7c3f2c..0000000000000000000000000000000000000000
+index c513b14a874045c14968c9f157621b3e18c3add1..0000000000000000000000000000000000000000
--- a/pom.xml
+++ /dev/null
@@ -1,270 +0,0 @@
@@ -241,7 +241,7 @@ index d3b75bb8b9cb0623ed9e13226ced09c5fa7c3f2c..00000000000000000000000000000000
- <plugin>
- <groupId>net.md-5</groupId>
- <artifactId>scriptus</artifactId>
-- <version>0.4.1</version>
+- <version>0.5.0</version>
- <executions>
- <execution>
- <phase>initialize</phase>
@@ -287,7 +287,7 @@ index d3b75bb8b9cb0623ed9e13226ced09c5fa7c3f2c..00000000000000000000000000000000
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
-- <version>3.4.1</version>
+- <version>3.5.0</version>
- <executions>
- <execution>
- <phase>package</phase>
diff --git a/patches/api/0005-Adventure.patch b/patches/api/0005-Adventure.patch
index 98191e3a7d..f40fd834ac 100644
--- a/patches/api/0005-Adventure.patch
+++ b/patches/api/0005-Adventure.patch
@@ -2131,10 +2131,10 @@ index f3afe67f0832cb828d25be3654518ff73a80b0e1..598abaa82c634178043a29f6caa6ac52
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896a23b437f 100644
+index 3d84a75a6999129353a9ead48f9db25bc80f685b..a5010cb46aa5ef69c559ef9fc717f90365c05807 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -49,7 +49,41 @@ import org.jetbrains.annotations.Nullable;
+@@ -51,7 +51,41 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a player, connected or not
*/
@@ -2177,7 +2177,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
/**
* {@inheritDoc}
-@@ -66,7 +100,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -68,7 +102,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* places defined by plugins.
*
* @return the friendly name
@@ -2187,7 +2187,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
@NotNull
public String getDisplayName();
-@@ -78,15 +114,50 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -80,15 +116,50 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* places defined by plugins.
*
* @param name The new display name.
@@ -2238,7 +2238,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public String getPlayerListName();
/**
-@@ -95,14 +166,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -97,14 +168,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* If the value is null, the name will be identical to {@link #getName()}.
*
* @param name new player list name
@@ -2257,7 +2257,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
@Nullable
public String getPlayerListHeader();
-@@ -110,7 +185,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -112,7 +187,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Gets the currently displayed player list footer for this player.
*
* @return player list header or null
@@ -2267,7 +2267,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
@Nullable
public String getPlayerListFooter();
-@@ -118,14 +195,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -120,14 +197,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Sets the currently displayed player list header for this player.
*
* @param header player list header, null for empty
@@ -2286,7 +2286,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void setPlayerListFooter(@Nullable String footer);
/**
-@@ -134,7 +215,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -136,7 +217,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param header player list header, null for empty
* @param footer player list footer, null for empty
@@ -2296,7 +2296,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void setPlayerListHeaderFooter(@Nullable String header, @Nullable String footer);
/**
-@@ -172,9 +255,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -174,9 +257,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Kicks player with custom kick message.
*
* @param message kick message
@@ -2322,7 +2322,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
/**
* Adds this user to the {@link ProfileBanList}. If a previous ban exists, this will
* update the entry.
-@@ -671,6 +770,106 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -737,6 +836,106 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendEquipmentChange(@NotNull LivingEntity entity, @NotNull Map<EquipmentSlot, ItemStack> items);
@@ -2429,7 +2429,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
/**
* Send a sign change. This fakes a sign change packet for a user at
* a certain location. This will not actually change the world in any way.
-@@ -688,7 +887,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -754,7 +953,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param lines the new text on the sign or null to clear it
* @throws IllegalArgumentException if location is null
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
@@ -2441,7 +2441,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines) throws IllegalArgumentException;
/**
-@@ -710,7 +913,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -776,7 +979,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException if location is null
* @throws IllegalArgumentException if dyeColor is null
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
@@ -2453,7 +2453,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor) throws IllegalArgumentException;
/**
-@@ -733,7 +940,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -799,7 +1006,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException if location is null
* @throws IllegalArgumentException if dyeColor is null
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
@@ -2465,7 +2465,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor, boolean hasGlowingText) throws IllegalArgumentException;
/**
-@@ -1249,6 +1460,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1315,6 +1526,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* pack correctly.
* </ul>
*
@@ -2473,7 +2473,15 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
* @param url The URL from which the client will download the resource
* pack. The string must contain only US-ASCII characters and should
* be encoded as per RFC 1738.
-@@ -1305,8 +1517,57 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1358,6 +1570,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+ * pack correctly.
+ * </ul>
+ *
++ * @deprecated in favour of {@link #setResourcePack(String, byte[], Component, boolean)}
+ * @param url The URL from which the client will download the resource
+ * pack. The string must contain only US-ASCII characters and should
+ * be encoded as per RFC 1738.
+@@ -1371,8 +1584,57 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
* long.
*/
@@ -2531,15 +2539,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
/**
* Request that the player's client download and switch resource packs.
* <p>
-@@ -1336,6 +1597,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
- * pack correctly.
- * </ul>
- *
-+ * @deprecated in favour of {@link #setResourcePack(String, byte[], Component, boolean)}
- * @param url The URL from which the client will download the resource
- * pack. The string must contain only US-ASCII characters and should
- * be encoded as per RFC 1738.
-@@ -1396,8 +1658,57 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1462,8 +1724,57 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
* long.
*/
@@ -2597,7 +2597,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
/**
* Gets the Scoreboard displayed to this player
*
-@@ -1532,7 +1843,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1598,7 +1909,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param title Title text
* @param subtitle Subtitle text
@@ -2606,7 +2606,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
*/
@Deprecated
public void sendTitle(@Nullable String title, @Nullable String subtitle);
-@@ -1551,7 +1862,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1617,7 +1928,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param fadeIn time in ticks for titles to fade in. Defaults to 10.
* @param stay time in ticks for titles to stay. Defaults to 70.
* @param fadeOut time in ticks for titles to fade out. Defaults to 20.
@@ -2616,7 +2616,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void sendTitle(@Nullable String title, @Nullable String subtitle, int fadeIn, int stay, int fadeOut);
/**
-@@ -1778,6 +2091,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1844,6 +2157,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public int getClientViewDistance();
@@ -2631,7 +2631,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
/**
* Gets the player's estimated ping in milliseconds.
*
-@@ -1803,8 +2124,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1869,8 +2190,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* they wish.
*
* @return the player's locale
@@ -2642,7 +2642,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public String getLocale();
/**
-@@ -1856,6 +2179,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1922,6 +2245,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public boolean isAllowingServerListings();
@@ -2657,7 +2657,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
// Spigot start
public class Spigot extends Entity.Spigot {
-@@ -1887,11 +2218,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1953,11 +2284,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
throw new UnsupportedOperationException("Not supported yet.");
}
@@ -2671,7 +2671,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
@Override
public void sendMessage(@NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
throw new UnsupportedOperationException("Not supported yet.");
-@@ -1902,7 +2235,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1968,7 +2301,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param position the screen position
* @param component the components to send
@@ -2681,7 +2681,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @NotNull net.md_5.bungee.api.chat.BaseComponent component) {
throw new UnsupportedOperationException("Not supported yet.");
}
-@@ -1912,7 +2247,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1978,7 +2313,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param position the screen position
* @param components the components to send
@@ -2691,7 +2691,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
throw new UnsupportedOperationException("Not supported yet.");
}
-@@ -1923,7 +2260,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1989,7 +2326,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param position the screen position
* @param sender the sender of the message
* @param component the components to send
@@ -2701,7 +2701,7 @@ index 7591d6de16694467b0fa5ab7ee746f3efdafad82..513e48de04a78268d16c924717d64896
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @Nullable java.util.UUID sender, @NotNull net.md_5.bungee.api.chat.BaseComponent component) {
throw new UnsupportedOperationException("Not supported yet.");
}
-@@ -1934,7 +2273,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2000,7 +2339,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param position the screen position
* @param sender the sender of the message
* @param components the components to send
@@ -3988,15 +3988,15 @@ index e12996492c1558fed9fab30de9f8018e0ed7fac3..002acfbdce1db10f7ba1b6a013e678f5
/**
diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
-index f89d71b77d1200314df6ca23614d5ca6fb15ceb3..af4a7ce37eb10bab06eadb6583c7894b3ec55ae6 100644
+index a66bec33fffd4e11d859efd8d17d274a5fa75f69..9578d6b0fa54feac75fa9a0727d878bd13b9e19e 100644
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
+++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
-@@ -159,4 +159,24 @@ public interface ItemFactory {
- @Deprecated
- @NotNull
- Material updateMaterial(@NotNull final ItemMeta meta, @NotNull final Material material) throws IllegalArgumentException;
+@@ -171,4 +171,24 @@ public interface ItemFactory {
+ */
+ @Nullable
+ Material getSpawnEgg(@NotNull EntityType type);
+
-+ // Paper start
++ // Paper start - Adventure
+ /**
+ * Creates a hover event for the given item.
+ *
@@ -4014,7 +4014,7 @@ index f89d71b77d1200314df6ca23614d5ca6fb15ceb3..af4a7ce37eb10bab06eadb6583c7894b
+ */
+ @NotNull
+ net.kyori.adventure.text.Component displayName(@NotNull ItemStack itemStack);
-+ // Paper end
++ // Paper end - Adventure
}
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index d80b0a52968920b990a75cff85e436a16d782500..9d327f0832c40d4a8d212346284274f6cf78834f 100644
@@ -4617,21 +4617,21 @@ index 03ca87a1cbace2459174bb7bb8847bda766e80c5..b37938745f916b5f0111b07b1a1c9752
* Returns the name of the plugin.
* <p>
diff --git a/src/main/java/org/bukkit/scoreboard/Objective.java b/src/main/java/org/bukkit/scoreboard/Objective.java
-index 2ff3a11f1f9c115722ea224873e7eb6dc6dc63e6..86a0a6f9e8487d6dfaf60876ace3dcc9b4722826 100644
+index 78fd35e6115072c6bc2ff5a899ffc2edb8f45801..22b1dc5fd4d453161a5ee520072f8e8f955b3a80 100644
--- a/src/main/java/org/bukkit/scoreboard/Objective.java
+++ b/src/main/java/org/bukkit/scoreboard/Objective.java
-@@ -19,14 +19,35 @@ public interface Objective {
- */
+@@ -20,13 +20,35 @@ public interface Objective {
@NotNull
- String getName() throws IllegalStateException;
-+ // Paper start
+ String getName();
+
++ // Paper start - Adventure
+ /**
-+ * Gets the name displayed to players for this objective
++ * Gets the display name for this objective
+ *
+ * @return this objective's display name
+ * @throws IllegalStateException if this objective has been unregistered
+ */
-+ net.kyori.adventure.text.@NotNull Component displayName() throws IllegalStateException;
++ net.kyori.adventure.text.@NotNull Component displayName();
+ /**
+ * Sets the name displayed to players for this objective.
+ *
@@ -4641,9 +4641,9 @@ index 2ff3a11f1f9c115722ea224873e7eb6dc6dc63e6..86a0a6f9e8487d6dfaf60876ace3dcc9
+ * @throws IllegalArgumentException if displayName is longer than 128
+ * characters.
+ */
-+ void displayName(net.kyori.adventure.text.@Nullable Component displayName) throws IllegalStateException, IllegalArgumentException;
-+ // Paper end
-
++ void displayName(net.kyori.adventure.text.@Nullable Component displayName);
++ // Paper end - Adventure
++
/**
* Gets the name displayed to players for this objective
*
@@ -4653,49 +4653,44 @@ index 2ff3a11f1f9c115722ea224873e7eb6dc6dc63e6..86a0a6f9e8487d6dfaf60876ace3dcc9
*/
@NotNull
+ @Deprecated // Paper
- String getDisplayName() throws IllegalStateException;
+ String getDisplayName();
/**
-@@ -37,7 +58,9 @@ public interface Objective {
- * @throws IllegalArgumentException if displayName is null
- * @throws IllegalArgumentException if displayName is longer than 128
- * characters.
+@@ -34,7 +56,9 @@ public interface Objective {
+ *
+ * @param displayName Display name to set
+ * @throws IllegalStateException if this objective has been unregistered
+ * @deprecated in favour of {@link #displayName(net.kyori.adventure.text.Component)}
*/
+ @Deprecated // Paper
- void setDisplayName(@NotNull String displayName) throws IllegalStateException, IllegalArgumentException;
+ void setDisplayName(@NotNull String displayName);
/**
diff --git a/src/main/java/org/bukkit/scoreboard/Scoreboard.java b/src/main/java/org/bukkit/scoreboard/Scoreboard.java
-index a15183f302de42956d8965efe5f0585fc2cd030e..ebb72912c1f8431606162b0643f6289203331253 100644
+index 083bb2c92a2c557e10b705b773ced97401586c3c..d5723e977d9a25701a4f387f1b26d2414e0fffb8 100644
--- a/src/main/java/org/bukkit/scoreboard/Scoreboard.java
+++ b/src/main/java/org/bukkit/scoreboard/Scoreboard.java
-@@ -27,6 +27,92 @@ public interface Scoreboard {
- @Deprecated
+@@ -26,6 +26,71 @@ public interface Scoreboard {
@NotNull
- Objective registerNewObjective(@NotNull String name, @NotNull String criteria) throws IllegalArgumentException;
-+ // Paper start
+ Objective registerNewObjective(@NotNull String name, @NotNull String criteria);
+
++ // Paper start - Adventure
+ /**
+ * Registers an Objective on this Scoreboard
+ *
+ * @param name Name of the Objective
+ * @param criteria Criteria for the Objective
-+ * @param displayName Name displayed to players for the Objective.
++ * @param displayName display name for the Objective.
+ * @return The registered Objective
-+ * @throws IllegalArgumentException if name is null
+ * @throws IllegalArgumentException if name is longer than 32767
+ * characters.
-+ * @throws IllegalArgumentException if criteria is null
-+ * @throws IllegalArgumentException if displayName is null
-+ * @throws IllegalArgumentException if displayName is longer than 128
-+ * characters.
+ * @throws IllegalArgumentException if an objective by that name already
+ * exists
+ * @deprecated use {@link #registerNewObjective(String, Criteria, net.kyori.adventure.text.Component)}
+ */
+ @NotNull
+ @Deprecated
-+ Objective registerNewObjective(@NotNull String name, @NotNull String criteria, net.kyori.adventure.text.@Nullable Component displayName) throws IllegalArgumentException;
++ Objective registerNewObjective(@NotNull String name, @NotNull String criteria, net.kyori.adventure.text.@Nullable Component displayName);
+ /**
+ * Registers an Objective on this Scoreboard
+ *
@@ -4704,14 +4699,8 @@ index a15183f302de42956d8965efe5f0585fc2cd030e..ebb72912c1f8431606162b0643f62892
+ * @param displayName Name displayed to players for the Objective.
+ * @param renderType Manner of rendering the Objective
+ * @return The registered Objective
-+ * @throws IllegalArgumentException if name is null
+ * @throws IllegalArgumentException if name is longer than 32767
+ * characters.
-+ * @throws IllegalArgumentException if criteria is null
-+ * @throws IllegalArgumentException if displayName is null
-+ * @throws IllegalArgumentException if displayName is longer than 128
-+ * characters.
-+ * @throws IllegalArgumentException if renderType is null
+ * @throws IllegalArgumentException if an objective by that name already
+ * exists
+ * @deprecated use {@link #registerNewObjective(String, Criteria, net.kyori.adventure.text.Component, RenderType)}
@@ -4726,13 +4715,8 @@ index a15183f302de42956d8965efe5f0585fc2cd030e..ebb72912c1f8431606162b0643f62892
+ * @param criteria Criteria for the Objective
+ * @param displayName Name displayed to players for the Objective.
+ * @return The registered Objective
-+ * @throws IllegalArgumentException if name is null
+ * @throws IllegalArgumentException if name is longer than 32767
+ * characters.
-+ * @throws IllegalArgumentException if criteria is null
-+ * @throws IllegalArgumentException if displayName is null
-+ * @throws IllegalArgumentException if displayName is longer than 128
-+ * characters.
+ * @throws IllegalArgumentException if an objective by that name already
+ * exists
+ */
@@ -4746,40 +4730,43 @@ index a15183f302de42956d8965efe5f0585fc2cd030e..ebb72912c1f8431606162b0643f62892
+ * @param displayName Name displayed to players for the Objective.
+ * @param renderType Manner of rendering the Objective
+ * @return The registered Objective
-+ * @throws IllegalArgumentException if name is null
+ * @throws IllegalArgumentException if name is longer than 32767
+ * characters.
-+ * @throws IllegalArgumentException if criteria is null
-+ * @throws IllegalArgumentException if displayName is null
-+ * @throws IllegalArgumentException if displayName is longer than 128
-+ * characters.
-+ * @throws IllegalArgumentException if renderType is null
+ * @throws IllegalArgumentException if an objective by that name already
+ * exists
+ */
+ @NotNull
+ Objective registerNewObjective(@NotNull String name, @NotNull Criteria criteria, net.kyori.adventure.text.@Nullable Component displayName, @NotNull RenderType renderType) throws IllegalArgumentException;
-+ // Paper end
-
++ // Paper end - Adventure
++
/**
* Registers an Objective on this Scoreboard
-@@ -47,6 +133,7 @@ public interface Scoreboard {
- * @deprecated use {@link #registerNewObjective(String, Criteria, String)}
+ *
+@@ -37,9 +102,10 @@ public interface Scoreboard {
+ * characters.
+ * @throws IllegalArgumentException if an objective by that name already
+ * exists
+- * @deprecated use {@link #registerNewObjective(String, Criteria, String)}
++ * @deprecated use {@link #registerNewObjective(String, Criteria, net.kyori.adventure.text.Component)}
*/
@NotNull
+ @Deprecated // Paper
- Objective registerNewObjective(@NotNull String name, @NotNull String criteria, @NotNull String displayName) throws IllegalArgumentException;
+ Objective registerNewObjective(@NotNull String name, @NotNull String criteria, @NotNull String displayName);
/**
-@@ -70,6 +157,7 @@ public interface Scoreboard {
- * @deprecated use {@link #registerNewObjective(String, Criteria, String, RenderType)}
+@@ -54,9 +120,10 @@ public interface Scoreboard {
+ * characters.
+ * @throws IllegalArgumentException if an objective by that name already
+ * exists
+- * @deprecated use {@link #registerNewObjective(String, Criteria, String, RenderType)}
++ * @deprecated use {@link #registerNewObjective(String, Criteria, net.kyori.adventure.text.Component, RenderType)}
*/
@NotNull
+ @Deprecated // Paper
- Objective registerNewObjective(@NotNull String name, @NotNull String criteria, @NotNull String displayName, @NotNull RenderType renderType) throws IllegalArgumentException;
+ Objective registerNewObjective(@NotNull String name, @NotNull String criteria, @NotNull String displayName, @NotNull RenderType renderType);
/**
-@@ -88,8 +176,10 @@ public interface Scoreboard {
+@@ -70,8 +137,10 @@ public interface Scoreboard {
* characters.
* @throws IllegalArgumentException if an objective by that name already
* exists
@@ -4787,36 +4774,36 @@ index a15183f302de42956d8965efe5f0585fc2cd030e..ebb72912c1f8431606162b0643f62892
*/
@NotNull
+ @Deprecated // Paper
- Objective registerNewObjective(@NotNull String name, @NotNull Criteria criteria, @NotNull String displayName) throws IllegalArgumentException;
+ Objective registerNewObjective(@NotNull String name, @NotNull Criteria criteria, @NotNull String displayName);
/**
-@@ -110,8 +200,10 @@ public interface Scoreboard {
- * @throws IllegalArgumentException if renderType is null
+@@ -86,8 +155,10 @@ public interface Scoreboard {
+ * characters.
* @throws IllegalArgumentException if an objective by that name already
* exists
+ * @deprecated in favour of {@link #registerNewObjective(String, Criteria, net.kyori.adventure.text.Component, RenderType)}
*/
@NotNull
+ @Deprecated // Paper
- Objective registerNewObjective(@NotNull String name, @NotNull Criteria criteria, @NotNull String displayName, @NotNull RenderType renderType) throws IllegalArgumentException;
+ Objective registerNewObjective(@NotNull String name, @NotNull Criteria criteria, @NotNull String displayName, @NotNull RenderType renderType);
/**
diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java
-index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2798cb82e 100644
+index 7b9a7890b25ca4bd95ab81f3181288bf79ed649c..e5a38e3568148170025e05c7ba69e8615f578047 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
-@@ -22,14 +22,100 @@ public interface Team {
- */
+@@ -23,13 +23,96 @@ public interface Team {
@NotNull
- String getName() throws IllegalStateException;
-+ // Paper start
+ String getName();
+
++ // Paper start - Adventure
+ /**
-+ * Gets the name displayed to entries for this team
++ * Gets the display name for this team
+ *
+ * @return Team display name
+ * @throws IllegalStateException if this team has been unregistered
+ */
-+ net.kyori.adventure.text.@NotNull Component displayName() throws IllegalStateException;
++ net.kyori.adventure.text.@NotNull Component displayName();
+
+ /**
+ * Sets the name displayed to entries for this team
@@ -4824,7 +4811,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
+ * @param displayName New display name
+ * @throws IllegalStateException if this team has been unregistered
+ */
-+ void displayName(net.kyori.adventure.text.@Nullable Component displayName) throws IllegalStateException, IllegalArgumentException;
++ void displayName(net.kyori.adventure.text.@Nullable Component displayName);
+
+ /**
+ * Gets the prefix prepended to the display of entries on this team.
@@ -4832,17 +4819,15 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
+ * @return Team prefix
+ * @throws IllegalStateException if this team has been unregistered
+ */
-+ net.kyori.adventure.text.@NotNull Component prefix() throws IllegalStateException;
++ net.kyori.adventure.text.@NotNull Component prefix();
+
+ /**
+ * Sets the prefix prepended to the display of entries on this team.
+ *
+ * @param prefix New prefix
-+ * @throws IllegalArgumentException if prefix is null
-+ * characters
+ * @throws IllegalStateException if this team has been unregistered
+ */
-+ void prefix(net.kyori.adventure.text.@Nullable Component prefix) throws IllegalStateException, IllegalArgumentException;
++ void prefix(net.kyori.adventure.text.@Nullable Component prefix);
+
+ /**
+ * Gets the suffix appended to the display of entries on this team.
@@ -4850,17 +4835,15 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
+ * @return the team's current suffix
+ * @throws IllegalStateException if this team has been unregistered
+ */
-+ net.kyori.adventure.text.@NotNull Component suffix() throws IllegalStateException;
++ net.kyori.adventure.text.@NotNull Component suffix();
+
+ /**
+ * Sets the suffix appended to the display of entries on this team.
+ *
+ * @param suffix the new suffix for this team.
-+ * @throws IllegalArgumentException if suffix is null
-+ * characters
+ * @throws IllegalStateException if this team has been unregistered
+ */
-+ void suffix(net.kyori.adventure.text.@Nullable Component suffix) throws IllegalStateException, IllegalArgumentException;
++ void suffix(net.kyori.adventure.text.@Nullable Component suffix);
+
+ /**
+ * Checks if the team has a color specified
@@ -4881,7 +4864,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
+ * @throws IllegalStateException if the team doesn't have a color
+ * @see #hasColor()
+ */
-+ net.kyori.adventure.text.format.@NotNull TextColor color() throws IllegalStateException;
++ net.kyori.adventure.text.format.@NotNull TextColor color();
+
+ /**
+ * Sets the color of the team.
@@ -4892,8 +4875,8 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
+ * @param color new color, null for no color
+ */
+ void color(net.kyori.adventure.text.format.@Nullable NamedTextColor color);
-+ // Paper end
-
++ // Paper end - Adventure
++
/**
* Gets the name displayed to entries for this team
*
@@ -4903,20 +4886,20 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
*/
@NotNull
+ @Deprecated // Paper
- String getDisplayName() throws IllegalStateException;
+ String getDisplayName();
/**
-@@ -39,7 +125,9 @@ public interface Team {
- * @throws IllegalArgumentException if displayName is longer than 128
- * characters.
+@@ -37,7 +120,9 @@ public interface Team {
+ *
+ * @param displayName New display name
* @throws IllegalStateException if this team has been unregistered
+ * @deprecated in favour of {@link #displayName(net.kyori.adventure.text.Component)}
*/
+ @Deprecated // Paper
- void setDisplayName(@NotNull String displayName) throws IllegalStateException, IllegalArgumentException;
+ void setDisplayName(@NotNull String displayName);
/**
-@@ -47,8 +135,10 @@ public interface Team {
+@@ -45,8 +130,10 @@ public interface Team {
*
* @return Team prefix
* @throws IllegalStateException if this team has been unregistered
@@ -4924,20 +4907,20 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
*/
@NotNull
+ @Deprecated // Paper
- String getPrefix() throws IllegalStateException;
+ String getPrefix();
/**
-@@ -59,7 +149,9 @@ public interface Team {
- * @throws IllegalArgumentException if prefix is longer than 64
- * characters
+@@ -54,7 +141,9 @@ public interface Team {
+ *
+ * @param prefix New prefix
* @throws IllegalStateException if this team has been unregistered
+ * @deprecated in favour of {@link #prefix(net.kyori.adventure.text.Component)}
*/
+ @Deprecated // Paper
- void setPrefix(@NotNull String prefix) throws IllegalStateException, IllegalArgumentException;
+ void setPrefix(@NotNull String prefix);
/**
-@@ -67,8 +159,10 @@ public interface Team {
+@@ -62,8 +151,10 @@ public interface Team {
*
* @return the team's current suffix
* @throws IllegalStateException if this team has been unregistered
@@ -4945,20 +4928,20 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
*/
@NotNull
+ @Deprecated // Paper
- String getSuffix() throws IllegalStateException;
+ String getSuffix();
/**
-@@ -79,7 +173,9 @@ public interface Team {
- * @throws IllegalArgumentException if suffix is longer than 64
- * characters
+@@ -71,7 +162,9 @@ public interface Team {
+ *
+ * @param suffix the new suffix for this team.
* @throws IllegalStateException if this team has been unregistered
+ * @deprecated in favour of {@link #suffix(net.kyori.adventure.text.Component)}
*/
+ @Deprecated // Paper
- void setSuffix(@NotNull String suffix) throws IllegalStateException, IllegalArgumentException;
+ void setSuffix(@NotNull String suffix);
/**
-@@ -90,8 +186,10 @@ public interface Team {
+@@ -82,8 +175,10 @@ public interface Team {
*
* @return team color, defaults to {@link ChatColor#RESET}
* @throws IllegalStateException if this team has been unregistered
@@ -4966,10 +4949,10 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..4d625f79ba2e3fe074feade98f7c1bc2
*/
@NotNull
+ @Deprecated // Paper
- ChatColor getColor() throws IllegalStateException;
+ ChatColor getColor();
/**
-@@ -102,7 +200,9 @@ public interface Team {
+@@ -94,7 +189,9 @@ public interface Team {
*
* @param color new color, must be non-null. Use {@link ChatColor#RESET} for
* no color
diff --git a/patches/api/0010-Timings-v2.patch b/patches/api/0010-Timings-v2.patch
index d727431d9f..e3a9522044 100644
--- a/patches/api/0010-Timings-v2.patch
+++ b/patches/api/0010-Timings-v2.patch
@@ -3455,10 +3455,10 @@ index 516d7fc7812aac343782861d0d567f54aa578c2a..00000000000000000000000000000000
- // Spigot end
-}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 513e48de04a78268d16c924717d64896a23b437f..5e1b013756d506b42c61a0abd25b324461adb9b2 100644
+index a5010cb46aa5ef69c559ef9fc717f90365c05807..1a54682f584479a5a548f6f1f2ffd5da5dc11c88 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2278,7 +2278,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2344,7 +2344,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Deprecated // Paper
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @Nullable java.util.UUID sender, @NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
throw new UnsupportedOperationException("Not supported yet.");
diff --git a/patches/api/0012-Player-affects-spawning-API.patch b/patches/api/0012-Player-affects-spawning-API.patch
index 6fabec4012..9ec0eab15d 100644
--- a/patches/api/0012-Player-affects-spawning-API.patch
+++ b/patches/api/0012-Player-affects-spawning-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Player affects spawning API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 5e1b013756d506b42c61a0abd25b324461adb9b2..2a86cb0a29e89d9dbb43047644c7c857d0abad60 100644
+index 1a54682f584479a5a548f6f1f2ffd5da5dc11c88..6b1a198f930a5a995e0cb6c279b455e1639a5039 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2130,6 +2130,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2196,6 +2196,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Deprecated // Paper
public String getLocale();
diff --git a/patches/api/0017-Add-view-distance-API.patch b/patches/api/0017-Add-view-distance-API.patch
index 472d3cc7c6..d9a570d45e 100644
--- a/patches/api/0017-Add-view-distance-API.patch
+++ b/patches/api/0017-Add-view-distance-API.patch
@@ -75,10 +75,10 @@ index 5357291ff0f2f20bd87ab9f6e57f6a4f6ff65226..887aa6217583d224d66f6d238ac269c2
public class Spigot {
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 2a86cb0a29e89d9dbb43047644c7c857d0abad60..f128512b17ec0079bea6bfd9d7b726b3db578745 100644
+index 6b1a198f930a5a995e0cb6c279b455e1639a5039..f8e45f70fe23cf73c8677b5d24cefcd3aae5e24e 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2144,6 +2144,78 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2210,6 +2210,78 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param affects Whether the player can affect mob spawning
*/
public void setAffectsSpawning(boolean affects);
diff --git a/patches/api/0021-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch b/patches/api/0021-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
index 1fba5bff01..28f44055a3 100644
--- a/patches/api/0021-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
+++ b/patches/api/0021-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
@@ -76,10 +76,10 @@ index 124e88e512d24b6ff7ace3cf7d5a6adf4c2bb40d..ccc825a2ea43bb84a5a08dff00c4d8ec
* Gets the name of the update folder. The update folder is used to safely
* update plugins at the right moment on a plugin load.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index f128512b17ec0079bea6bfd9d7b726b3db578745..4e68f6bc8ed217712b1d9a8990ee97ddfac18869 100644
+index f8e45f70fe23cf73c8677b5d24cefcd3aae5e24e..f52e7d4e5b8399d04d77384f8fe5315086acd776 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -975,6 +975,42 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1041,6 +1041,42 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendMap(@NotNull MapView map);
diff --git a/patches/api/0025-Player-Tab-List-and-Title-APIs.patch b/patches/api/0025-Player-Tab-List-and-Title-APIs.patch
index 1113d68dd6..fe2c52a402 100644
--- a/patches/api/0025-Player-Tab-List-and-Title-APIs.patch
+++ b/patches/api/0025-Player-Tab-List-and-Title-APIs.patch
@@ -432,10 +432,10 @@ index 0000000000000000000000000000000000000000..9e90c3df567a65b48a0b9341f784eb90
+ }
+}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 4e68f6bc8ed217712b1d9a8990ee97ddfac18869..64c696a5d0c4177c9f860a25e9901ee2bdb64aee 100644
+index f52e7d4e5b8399d04d77384f8fe5315086acd776..3650fb2b79368ad39278062f215d25cc99637cac 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1009,6 +1009,131 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1075,6 +1075,131 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
public default void sendMessage(net.md_5.bungee.api.ChatMessageType position, net.md_5.bungee.api.chat.BaseComponent... components) {
spigot().sendMessage(position, components);
}
diff --git a/patches/api/0027-Complete-resource-pack-API.patch b/patches/api/0027-Complete-resource-pack-API.patch
index ee22708269..e8e328e5cf 100644
--- a/patches/api/0027-Complete-resource-pack-API.patch
+++ b/patches/api/0027-Complete-resource-pack-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Complete resource pack API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 64c696a5d0c4177c9f860a25e9901ee2bdb64aee..d0a9fee7a2fd2a75894ea4acdf47454039406566 100644
+index 3650fb2b79368ad39278062f215d25cc99637cac..967ea421aed7f9d4c8edd366c00cf3ceca723b2f 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1589,7 +1589,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1655,7 +1655,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException Thrown if the URL is null.
* @throws IllegalArgumentException Thrown if the URL is too long. The
* length restriction is an implementation specific arbitrary value.
@@ -18,7 +18,7 @@ index 64c696a5d0c4177c9f860a25e9901ee2bdb64aee..d0a9fee7a2fd2a75894ea4acdf474540
public void setResourcePack(@NotNull String url);
/**
-@@ -2434,6 +2436,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2500,6 +2502,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
default net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowEntity> asHoverEvent(final @NotNull java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowEntity> op) {
return net.kyori.adventure.text.event.HoverEvent.showEntity(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowEntity.of(this.getType().getKey(), this.getUniqueId(), this.displayName())));
}
diff --git a/patches/api/0046-Add-String-based-Action-Bar-API.patch b/patches/api/0046-Add-String-based-Action-Bar-API.patch
index 9e5a66317c..8a43bbc9c0 100644
--- a/patches/api/0046-Add-String-based-Action-Bar-API.patch
+++ b/patches/api/0046-Add-String-based-Action-Bar-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add String based Action Bar API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index d0a9fee7a2fd2a75894ea4acdf47454039406566..cfa757a782ff592a2f7f998b649edd93052a17ac 100644
+index 967ea421aed7f9d4c8edd366c00cf3ceca723b2f..87b67723cb9dcead110eb88dd741d3348eb9ec1b 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -976,6 +976,39 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1042,6 +1042,39 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
public void sendMap(@NotNull MapView map);
// Paper start
@@ -48,7 +48,7 @@ index d0a9fee7a2fd2a75894ea4acdf47454039406566..cfa757a782ff592a2f7f998b649edd93
/**
* Sends the component to the player
*
-@@ -1003,9 +1036,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1069,9 +1102,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Sends an array of components as a single message to the specified screen position of this player
*
diff --git a/patches/api/0055-Fix-upstream-javadocs.patch b/patches/api/0055-Fix-upstream-javadocs.patch
index 58ac66699e..e25d33e18f 100644
--- a/patches/api/0055-Fix-upstream-javadocs.patch
+++ b/patches/api/0055-Fix-upstream-javadocs.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix upstream javadocs
diff --git a/src/main/java/org/bukkit/BanList.java b/src/main/java/org/bukkit/BanList.java
-index ce35cf91d4a5156e08cd5100fd65db28e38c30e6..c229d3bc37c4e454a4b5a93eda1fe6466a4f4e8b 100644
+index a04cde615f8c4bc593f8d9f8f6f1438008aaa707..548f6d28c28d74bed8b58ee82875909354afe132 100644
--- a/src/main/java/org/bukkit/BanList.java
+++ b/src/main/java/org/bukkit/BanList.java
-@@ -36,6 +36,9 @@ public interface BanList<T> {
+@@ -38,6 +38,9 @@ public interface BanList<T> {
/**
* Gets a {@link BanEntry} by target.
@@ -18,7 +18,7 @@ index ce35cf91d4a5156e08cd5100fd65db28e38c30e6..c229d3bc37c4e454a4b5a93eda1fe646
*
* @param target entry parameter to search for
* @return the corresponding entry, or null if none found
-@@ -57,6 +60,9 @@ public interface BanList<T> {
+@@ -59,6 +62,9 @@ public interface BanList<T> {
/**
* Adds a ban to this list. If a previous ban exists, this will
* update the previous entry.
@@ -28,7 +28,7 @@ index ce35cf91d4a5156e08cd5100fd65db28e38c30e6..c229d3bc37c4e454a4b5a93eda1fe646
*
* @param target the target of the ban
* @param reason reason for the ban, null indicates implementation default
-@@ -107,6 +113,9 @@ public interface BanList<T> {
+@@ -139,6 +145,9 @@ public interface BanList<T> {
/**
* Gets if a {@link BanEntry} exists for the target, indicating an active
* ban status.
@@ -38,7 +38,7 @@ index ce35cf91d4a5156e08cd5100fd65db28e38c30e6..c229d3bc37c4e454a4b5a93eda1fe646
*
* @param target the target to find
* @return true if a {@link BanEntry} exists for the target, indicating an
-@@ -129,6 +138,9 @@ public interface BanList<T> {
+@@ -161,6 +170,9 @@ public interface BanList<T> {
/**
* Removes the specified target from this list, therefore indicating a
* "not banned" status.
@@ -316,7 +316,7 @@ index 8814519df13c5e9475774f4bce4c8c6a462c2978..be9a35790fc664721ac94f3708613eb7
* in a state with no Custom Effects and PotionType.UNCRAFTABLE
*/
diff --git a/src/main/java/org/bukkit/entity/EnderDragon.java b/src/main/java/org/bukkit/entity/EnderDragon.java
-index 0449664d7cd0c52ac34d2101110f1ab42070257c..57f8e7bf4c7b4c4a4e793cfd5d7db74384d8b1b5 100644
+index 1e56aef9188487d3e9c737e85025f601ab359a72..92cd35c87bad578c2b714761c93a5b72ebf4bc9e 100644
--- a/src/main/java/org/bukkit/entity/EnderDragon.java
+++ b/src/main/java/org/bukkit/entity/EnderDragon.java
@@ -30,7 +30,7 @@ public interface EnderDragon extends ComplexLivingEntity, Boss, Mob, Enemy {
@@ -386,10 +386,10 @@ index ae9eaaa8e38e1d9dfc459926c7fc51ddb89de84a..b2ec535bb1b0ce0c114ddd7638b90218
@Override
public int getConversionTime();
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index cfa757a782ff592a2f7f998b649edd93052a17ac..49e3e59e369980dd96fec1467cacd88322a0c6ed 100644
+index 87b67723cb9dcead110eb88dd741d3348eb9ec1b..266e89b48d4991f6099290cf9d44fa06b43ffa2c 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -365,15 +365,15 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -431,15 +431,15 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Saves the players current location, health, inventory, motion, and
@@ -409,7 +409,7 @@ index cfa757a782ff592a2f7f998b649edd93052a17ac..49e3e59e369980dd96fec1467cacd883
* <p>
* Note: This will overwrite the players current inventory, health,
* motion, etc, with the state from the saved dat file.
-@@ -608,7 +608,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -674,7 +674,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Plays an effect to just this player.
*
@@ -418,7 +418,7 @@ index cfa757a782ff592a2f7f998b649edd93052a17ac..49e3e59e369980dd96fec1467cacd883
* @param loc the location to play the effect at
* @param effect the {@link Effect}
* @param data a data bit needed for some effects
-@@ -993,7 +993,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1059,7 +1059,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* Use supplied alternative character to the section symbol to represent legacy color codes.
*
@@ -427,7 +427,7 @@ index cfa757a782ff592a2f7f998b649edd93052a17ac..49e3e59e369980dd96fec1467cacd883
* @param message The message to send
* @deprecated use {@link #sendActionBar(net.kyori.adventure.text.Component)}
*/
-@@ -1459,7 +1459,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1525,7 +1525,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Allows this player to see a player that was previously hidden. If
@@ -436,7 +436,7 @@ index cfa757a782ff592a2f7f998b649edd93052a17ac..49e3e59e369980dd96fec1467cacd883
* remain hidden until the other plugin calls this method too.
*
* @param plugin Plugin that wants to show the player
-@@ -1488,7 +1488,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1554,7 +1554,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Allows this player to see an entity that was previously hidden. If
@@ -1063,10 +1063,10 @@ index 62fbd7f6d8195bebcab7f704a0a485a1bbeca26c..5461f7fa75f5a065bb333b4a113640b5
* @return the currently held item
* @see #getItemInMainHand()
diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
-index 8971ec20d36c4d1a8fb07ec4603221791a2b52b4..4c7f30877c608e327908a61e4bd68789191e2f3c 100644
+index 05f1acaac3a49c42f6cf544adb3ffec267c72700..9f9c67e935940833bbfe58e6bfa398e6c86980d5 100644
--- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
-@@ -30,8 +30,6 @@ public class ShapedRecipe implements Recipe, Keyed {
+@@ -24,8 +24,6 @@ public class ShapedRecipe extends CraftingRecipe {
* @param result The item you want the recipe to create.
* @see ShapedRecipe#shape(String...)
* @see ShapedRecipe#setIngredient(char, Material)
@@ -1075,7 +1075,7 @@ index 8971ec20d36c4d1a8fb07ec4603221791a2b52b4..4c7f30877c608e327908a61e4bd68789
* @see ShapedRecipe#setIngredient(char, RecipeChoice)
* @deprecated Recipes must have keys. Use {@link #ShapedRecipe(NamespacedKey, ItemStack)}
* instead.
-@@ -52,8 +50,6 @@ public class ShapedRecipe implements Recipe, Keyed {
+@@ -44,8 +42,6 @@ public class ShapedRecipe extends CraftingRecipe {
* @param result The item you want the recipe to create.
* @see ShapedRecipe#shape(String...)
* @see ShapedRecipe#setIngredient(char, Material)
@@ -1085,10 +1085,10 @@ index 8971ec20d36c4d1a8fb07ec4603221791a2b52b4..4c7f30877c608e327908a61e4bd68789
*/
public ShapedRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result) {
diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
-index df4c52f1f0be2409c7506b09167bd58b5602fa7a..74449a635aca84adcc1652e1e85f2d27dcaf6842 100644
+index 3d50775da447175b2a94ed9056ef36aa1e69c2eb..03839302c94adc3175d0a88065cd230257ffd20d 100644
--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
-@@ -38,11 +38,8 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -30,11 +30,8 @@ public class ShapelessRecipe extends CraftingRecipe {
* @param key the unique recipe key
* @param result The item you want the recipe to create.
* @see ShapelessRecipe#addIngredient(Material)
@@ -1100,8 +1100,8 @@ index df4c52f1f0be2409c7506b09167bd58b5602fa7a..74449a635aca84adcc1652e1e85f2d27
+ * @see ShapelessRecipe#addIngredient(RecipeChoice)
*/
public ShapelessRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result) {
- Preconditions.checkArgument(result.getType() != Material.AIR, "Recipe must have non-AIR result.");
-@@ -184,7 +181,7 @@ public class ShapelessRecipe implements Recipe, Keyed {
+ super(key, result);
+@@ -174,7 +171,7 @@ public class ShapelessRecipe extends CraftingRecipe {
/**
* Removes multiple instances of an ingredient from the list. If there are
@@ -1110,20 +1110,6 @@ index df4c52f1f0be2409c7506b09167bd58b5602fa7a..74449a635aca84adcc1652e1e85f2d27
* matches, with a data value of 0.
*
* @param count The number of copies to remove.
-diff --git a/src/main/java/org/bukkit/inventory/SmithingRecipe.java b/src/main/java/org/bukkit/inventory/SmithingRecipe.java
-index af04071d37e70b8cc9837d57477c8493be8afb9f..582671a0a94d47302c0fdc572d486282c32f786f 100644
---- a/src/main/java/org/bukkit/inventory/SmithingRecipe.java
-+++ b/src/main/java/org/bukkit/inventory/SmithingRecipe.java
-@@ -21,7 +21,9 @@ public class SmithingRecipe implements Recipe, Keyed {
- * @param result The item you want the recipe to create.
- * @param base The base ingredient
- * @param addition The addition ingredient
-+ * @deprecated use {@link SmithingTrimRecipe} or {@link SmithingTransformRecipe}
- */
-+ @Deprecated(forRemoval = true) // Paper
- public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice base, @NotNull RecipeChoice addition) {
- this.key = key;
- this.result = result;
diff --git a/src/main/java/org/bukkit/inventory/StonecuttingRecipe.java b/src/main/java/org/bukkit/inventory/StonecuttingRecipe.java
index 07c3dff4d6190ef388d9c1e1c36f67f00a3e8e66..597a18a767b68b47e81454b7d44613c7178c1366 100644
--- a/src/main/java/org/bukkit/inventory/StonecuttingRecipe.java
@@ -1169,31 +1155,31 @@ index 049c70c935fd7a781280d223f74bbbf87223f505..f78714c2a6d9da162c9802552984cbfa
* AttributeModifiers without a slot are active in any slot.<br>
* If there are no attributes set for the given slot, an empty map
diff --git a/src/main/java/org/bukkit/scoreboard/Objective.java b/src/main/java/org/bukkit/scoreboard/Objective.java
-index 86a0a6f9e8487d6dfaf60876ace3dcc9b4722826..571b43c2809d2b248feebc7decba6017a67c8aee 100644
+index 0ff409bcf093e6058c957cdcc5bb17bdc32c87be..be3b2e5d9364abde50716c35cabd5938fe2c5e4d 100644
--- a/src/main/java/org/bukkit/scoreboard/Objective.java
+++ b/src/main/java/org/bukkit/scoreboard/Objective.java
-@@ -88,7 +88,7 @@ public interface Objective {
+@@ -86,7 +86,7 @@ public interface Objective {
*
* @return true if scores are modifiable
* @throws IllegalStateException if this objective has been unregistered
- * @see Criterias#HEALTH
+ * @see Criteria#HEALTH
*/
- boolean isModifiable() throws IllegalStateException;
+ boolean isModifiable();
diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java
-index 4d625f79ba2e3fe074feade98f7c1bc2798cb82e..937a28638c251509ebeb254178a4583fe03c52d0 100644
+index 36260de3424012ac020d6c6e381010b3d4a32c6f..5416386c89a4019a2c123374dd5cb6d4f12744f0 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
-@@ -277,7 +277,7 @@ public interface Team {
+@@ -265,7 +265,7 @@ public interface Team {
* Gets the Set of entries on the team
*
* @return entries on the team
-- * @throws IllegalStateException if this entries has been unregistered\
+- * @throws IllegalStateException if this entries has been unregistered
+ * @throws IllegalStateException if this team has been unregistered
*/
@NotNull
- Set<String> getEntries() throws IllegalStateException;
+ Set<String> getEntries();
diff --git a/src/main/java/org/bukkit/util/BoundingBox.java b/src/main/java/org/bukkit/util/BoundingBox.java
index 9883983c33fcff0f4c1e23867adafa436e2ed96f..5017b73bcec0d4d5256d89db14201c03829dc981 100644
--- a/src/main/java/org/bukkit/util/BoundingBox.java
diff --git a/patches/api/0065-Add-getI18NDisplayName-API.patch b/patches/api/0065-Add-getI18NDisplayName-API.patch
index b21d6e25c4..8e66c9c0cc 100644
--- a/patches/api/0065-Add-getI18NDisplayName-API.patch
+++ b/patches/api/0065-Add-getI18NDisplayName-API.patch
@@ -8,17 +8,18 @@ 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/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
-index af4a7ce37eb10bab06eadb6583c7894b3ec55ae6..159e5a908b35b84b7fabc36581e093d9aa4c4b67 100644
+index 9578d6b0fa54feac75fa9a0727d878bd13b9e19e..a6795b102c9678b122dfd3b36d02783b9e108b48 100644
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
+++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
-@@ -178,5 +178,19 @@ public interface ItemFactory {
- */
+@@ -191,4 +191,20 @@ public interface ItemFactory {
@NotNull
net.kyori.adventure.text.Component displayName(@NotNull ItemStack itemStack);
+ // Paper end - Adventure
+
++ // Paper start - add getI18NDisplayName
+ /**
+ * Gets the Display name as seen in the Client.
-+ * Currently the server only supports the English language. To override this,
++ * Currently, the server only supports the English language. To override this,
+ * You must replace the language file embedded in the server jar.
+ *
+ * @param item Item to return Display name of
@@ -29,7 +30,7 @@ index af4a7ce37eb10bab06eadb6583c7894b3ec55ae6..159e5a908b35b84b7fabc36581e093d9
+ @Nullable
+ @Deprecated
+ String getI18NDisplayName(@Nullable ItemStack item);
- // Paper end
++ // Paper end - add getI18NDisplayName
}
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 9d327f0832c40d4a8d212346284274f6cf78834f..09a36df6edce2a283df80c67d5ef62da7ff73555 100644
diff --git a/patches/api/0066-ensureServerConversions-API.patch b/patches/api/0066-ensureServerConversions-API.patch
index 2b0cf31e73..cdb9f8cb72 100644
--- a/patches/api/0066-ensureServerConversions-API.patch
+++ b/patches/api/0066-ensureServerConversions-API.patch
@@ -7,26 +7,27 @@ 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/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
-index 159e5a908b35b84b7fabc36581e093d9aa4c4b67..349da0065ddf000cacdc259fab0f2c759332e9ad 100644
+index a6795b102c9678b122dfd3b36d02783b9e108b48..74cd662d0594f2fbc5aa30ba64d9e4928145dbb9 100644
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
+++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
-@@ -192,5 +192,17 @@ public interface ItemFactory {
- @Nullable
+@@ -207,4 +207,18 @@ public interface ItemFactory {
@Deprecated
String getI18NDisplayName(@Nullable ItemStack item);
+ // Paper end - add getI18NDisplayName
+
++ // Paper start - ensure server conversions API
+ /**
-+ * Minecraft updates are converting simple item stacks into more complex NBT oriented Item Stacks.
++ * Minecraft's updates are converting simple item stacks into more complex NBT oriented Item Stacks.
+ *
+ * Use this method to ensure any desired data conversions are processed.
+ * The input itemstack will not be the same as the returned itemstack.
+ *
+ * @param item The item to process conversions on
-+ * @return A potentially Data Converted ItemStack
++ * @return A potentially Data-Converted-ItemStack
+ */
+ @NotNull
+ ItemStack ensureServerConversions(@NotNull ItemStack item);
- // Paper end
++ // Paper end - ensure server conversions API
}
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 09a36df6edce2a283df80c67d5ef62da7ff73555..a8faa4c1881bae4d47d901388a78b991d138b518 100644
diff --git a/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch b/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch
index dc62c440b7..dd1f98147d 100644
--- a/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch
+++ b/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch
@@ -57,10 +57,10 @@ index 0000000000000000000000000000000000000000..7b2af1bd72dfbcf4e962a982940fc49b
+
+}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 77b2e935b823b302a7221cd5be6441ec10557908..4a1c42a55df02b33c144da55b4a01c610217d63c 100644
+index bb9f28d1a0290c5951412de1d2de8c2e6e354369..c1c2e8d9d6ff39ca6cdabb0744076cc540f86681 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -49,7 +49,7 @@ import org.jetbrains.annotations.Nullable;
+@@ -51,7 +51,7 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a player, connected or not
*/
diff --git a/patches/api/0077-Display-warning-on-deprecated-recipe-API.patch b/patches/api/0077-Display-warning-on-deprecated-recipe-API.patch
index bc3fa9520d..94f1cdd1f2 100644
--- a/patches/api/0077-Display-warning-on-deprecated-recipe-API.patch
+++ b/patches/api/0077-Display-warning-on-deprecated-recipe-API.patch
@@ -10,26 +10,26 @@ on the players login.
Plugin authors need to define a key to keep it consistent between server restarts.
diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
-index 4c7f30877c608e327908a61e4bd68789191e2f3c..be68263386a8faea7744f4de75d484e9358c87df 100644
+index 9f9c67e935940833bbfe58e6bfa398e6c86980d5..71e494177473c62449aafda1699b26a0c4c81a68 100644
--- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
-@@ -38,6 +38,7 @@ public class ShapedRecipe implements Recipe, Keyed {
+@@ -31,6 +31,7 @@ public class ShapedRecipe extends CraftingRecipe {
+ @Deprecated
public ShapedRecipe(@NotNull ItemStack result) {
- Preconditions.checkArgument(result.getType() != Material.AIR, "Recipe must have non-AIR result.");
- this.key = NamespacedKey.randomKey();
-+ new Throwable("Warning: A plugin is creating a recipe using a Deprecated method. This will cause you to receive warnings stating 'Tried to load unrecognized recipe: bukkit:<ID>'. Please ask the author to give their recipe a static key using NamespacedKey.").printStackTrace();
- this.output = new ItemStack(result);
+ super(NamespacedKey.randomKey(), result);
++ new Throwable("Warning: A plugin is creating a recipe using a Deprecated method. This will cause you to receive warnings stating 'Tried to load unrecognized recipe: bukkit:<ID>'. Please ask the author to give their recipe a static key using NamespacedKey.").printStackTrace(); // Paper
}
+ /**
diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
-index 74449a635aca84adcc1652e1e85f2d27dcaf6842..05ef88225415cd30de36f4517b6fb40d826ce996 100644
+index 03839302c94adc3175d0a88065cd230257ffd20d..d6e38c7ccfe3b6e85eafb611da20b1a29fb74d97 100644
--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
-@@ -27,6 +27,7 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -20,6 +20,7 @@ public class ShapelessRecipe extends CraftingRecipe {
+ @Deprecated
public ShapelessRecipe(@NotNull ItemStack result) {
- Preconditions.checkArgument(result.getType() != Material.AIR, "Recipe must have non-AIR result.");
- this.key = NamespacedKey.randomKey();
-+ new Throwable("Warning: A plugin is creating a recipe using a Deprecated method. This will cause you to receive warnings stating 'Tried to load unrecognized recipe: bukkit:<ID>'. Please ask the author to give their recipe a static key using NamespacedKey.").printStackTrace();
- this.output = new ItemStack(result);
+ super(NamespacedKey.randomKey(), result);
++ new Throwable("Warning: A plugin is creating a recipe using a Deprecated method. This will cause you to receive warnings stating 'Tried to load unrecognized recipe: bukkit:<ID>'. Please ask the author to give their recipe a static key using NamespacedKey.").printStackTrace(); // Paper
}
+ /**
diff --git a/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch b/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch
index 14e04a70da..16583a8716 100644
--- a/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch
+++ b/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch
@@ -10,10 +10,10 @@ of giving the player experience points.
Both an API To standalone mend, and apply mending logic to .giveExp has been added.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 83402738ec9c435b456929ad4d9337e7362f52c2..c742fb537788da58fb8984d588049fff3ba79af1 100644
+index 6586262b6dfcb0b022d78096b7d4ec339c0b396c..2257a1808d19775607e60c155d9e5508e7825811 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1302,6 +1302,15 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1368,6 +1368,15 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void resetPlayerWeather();
@@ -29,7 +29,7 @@ index 83402738ec9c435b456929ad4d9337e7362f52c2..c742fb537788da58fb8984d588049fff
/**
* Gets the player's cooldown between picking up experience orbs.
*
-@@ -1327,8 +1336,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1393,8 +1402,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Gives the player the amount of experience specified.
*
* @param amount Exp amount to give
diff --git a/patches/api/0091-Player.setPlayerProfile-API.patch b/patches/api/0091-Player.setPlayerProfile-API.patch
index fbf3af029b..b7a9c0e5cd 100644
--- a/patches/api/0091-Player.setPlayerProfile-API.patch
+++ b/patches/api/0091-Player.setPlayerProfile-API.patch
@@ -43,10 +43,10 @@ index dcd539220e5a2bda41f27101ea4c0ece146e1d0d..f5358612884aae8d0686f3ff98ccee56
return server.createPlayerProfile(name);
}
diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java
-index f000d706bdf50c48314bcbd83978920f5d2daae4..829077d76ad6b179e6f6abf7fb848353fa53a60a 100644
+index bec480aff819e09220b52175cab0cb6d68ae68c6..12349910297a75c00e64f6ccc7981aeeeb43ecd3 100644
--- a/src/main/java/org/bukkit/OfflinePlayer.java
+++ b/src/main/java/org/bukkit/OfflinePlayer.java
-@@ -57,7 +57,7 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+@@ -59,7 +59,7 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
* @return the player's profile
*/
@NotNull
@@ -93,10 +93,10 @@ index 016cee903c7179baf711984503d1d0793d40c5c5..064edd612885b2ea4b35001a864503b5
/**
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index c742fb537788da58fb8984d588049fff3ba79af1..bbd08acb81fd059a95f2f6e09284e7a0264f548d 100644
+index 2257a1808d19775607e60c155d9e5508e7825811..af7af85887e9463c561ddb0c47862b27b5de5d43 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2610,6 +2610,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2676,6 +2676,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* was {@link org.bukkit.event.player.PlayerResourcePackStatusEvent.Status#SUCCESSFULLY_LOADED}
*/
boolean hasResourcePack();
diff --git a/patches/api/0094-Add-openSign-method-to-HumanEntity.patch b/patches/api/0094-Add-openSign-method-to-HumanEntity.patch
index 8418db9595..16832e54bf 100644
--- a/patches/api/0094-Add-openSign-method-to-HumanEntity.patch
+++ b/patches/api/0094-Add-openSign-method-to-HumanEntity.patch
@@ -36,10 +36,10 @@ index abdca9fe5acc90f167219eb769ece66c35682bb1..b3aa3dc6aa5afbc36cc86741b4cba56f
/**
* Make the entity drop the item in their hand.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index bbd08acb81fd059a95f2f6e09284e7a0264f548d..b1d93f16c55d3fa9a157cf26286936a799ca8025 100644
+index af7af85887e9463c561ddb0c47862b27b5de5d43..8e7482df076c41ae12813e64153206851e020764 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2455,10 +2455,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2521,10 +2521,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Open a Sign for editing by the Player.
*
diff --git a/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch b/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch
index d588725a00..a2ee71d3c7 100644
--- a/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch
+++ b/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch
@@ -8,10 +8,10 @@ Allows a more logical API for banning players.
player.banPlayer("Breaking the rules");
diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java
-index 829077d76ad6b179e6f6abf7fb848353fa53a60a..0666cc126ab3709fd7d59c3902c3ec0e712b001c 100644
+index 12349910297a75c00e64f6ccc7981aeeeb43ecd3..8f2f3e0ac5266f571b62a754921422bb07d61984 100644
--- a/src/main/java/org/bukkit/OfflinePlayer.java
+++ b/src/main/java/org/bukkit/OfflinePlayer.java
-@@ -65,6 +65,61 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+@@ -67,6 +67,61 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
* @return true if banned, otherwise false
*/
public boolean isBanned();
@@ -74,10 +74,10 @@ index 829077d76ad6b179e6f6abf7fb848353fa53a60a..0666cc126ab3709fd7d59c3902c3ec0e
/**
* Adds this user to the {@link ProfileBanList}. If a previous ban exists, this will
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index b1d93f16c55d3fa9a157cf26286936a799ca8025..24723d089ffc9fc87b1f5dc8ae365b7124dc0e87 100644
+index 8e7482df076c41ae12813e64153206851e020764..6cbb64d4555a3741d0f4938c1850f64d055a3ac4 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -976,6 +976,162 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1042,6 +1042,162 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
public void sendMap(@NotNull MapView map);
// Paper start
diff --git a/patches/api/0144-Expose-attack-cooldown-methods-for-Player.patch b/patches/api/0144-Expose-attack-cooldown-methods-for-Player.patch
index c6a6f17962..a6e5700233 100644
--- a/patches/api/0144-Expose-attack-cooldown-methods-for-Player.patch
+++ b/patches/api/0144-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/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 24723d089ffc9fc87b1f5dc8ae365b7124dc0e87..7e304a795d8156c9b1c5ae8a19b71fb116b1b984 100644
+index 6cbb64d4555a3741d0f4938c1850f64d055a3ac4..1b4f70e44bd6cfb8fce17461b90eebb32c5bea73 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2782,6 +2782,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2848,6 +2848,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param profile The new profile to use
*/
void setPlayerProfile(@NotNull com.destroystokyo.paper.profile.PlayerProfile profile);
diff --git a/patches/api/0165-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch b/patches/api/0165-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
index 6d2c903a3a..552d9f92c6 100644
--- a/patches/api/0165-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
+++ b/patches/api/0165-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
@@ -16,10 +16,10 @@ intent to remove) and replace it with two new methods, clearly named and
documented as to their purpose.
diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java
-index 0666cc126ab3709fd7d59c3902c3ec0e712b001c..4d014215dce2c2ff09a2701accf2db144603c55a 100644
+index 8f2f3e0ac5266f571b62a754921422bb07d61984..774f9ec6a57d5d16a74ebe998e9ad800b1828029 100644
--- a/src/main/java/org/bukkit/OfflinePlayer.java
+++ b/src/main/java/org/bukkit/OfflinePlayer.java
-@@ -181,7 +181,9 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+@@ -211,7 +211,9 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
* UTC.
*
* @return Date of last log-in for this player, or 0
@@ -29,7 +29,7 @@ index 0666cc126ab3709fd7d59c3902c3ec0e712b001c..4d014215dce2c2ff09a2701accf2db14
public long getLastPlayed();
/**
-@@ -199,6 +201,30 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+@@ -229,6 +231,30 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
*/
@Nullable
public Location getBedSpawnLocation();
diff --git a/patches/api/0166-Add-ItemStack-Recipe-API-helper-methods.patch b/patches/api/0166-Add-ItemStack-Recipe-API-helper-methods.patch
index 7c3630854f..d01ff8e6d9 100644
--- a/patches/api/0166-Add-ItemStack-Recipe-API-helper-methods.patch
+++ b/patches/api/0166-Add-ItemStack-Recipe-API-helper-methods.patch
@@ -22,10 +22,10 @@ index 90208bc96085f05a3b657b9467b1670d00b03104..523818cbb0d6c90481ec97123e7fe0e2
public static class ExactChoice implements RecipeChoice {
diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
-index be68263386a8faea7744f4de75d484e9358c87df..c2d224b6472a65cd362e1ab55ce7e3d0b5a3befc 100644
+index 71e494177473c62449aafda1699b26a0c4c81a68..97d5d9c6347bc401e3f4ab7c0ba1391ad5b0449a 100644
--- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
-@@ -180,6 +180,13 @@ public class ShapedRecipe implements Recipe, Keyed {
+@@ -168,6 +168,13 @@ public class ShapedRecipe extends CraftingRecipe {
return this;
}
@@ -40,10 +40,10 @@ index be68263386a8faea7744f4de75d484e9358c87df..c2d224b6472a65cd362e1ab55ce7e3d0
* Get a copy of the ingredients map.
*
diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
-index 05ef88225415cd30de36f4517b6fb40d826ce996..8bf26da12dcb03f22f842a57798948d5513c227d 100644
+index d6e38c7ccfe3b6e85eafb611da20b1a29fb74d97..b8ac602cd2718d615ec243ce648951a1a46c26ec 100644
--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
-@@ -141,6 +141,40 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -131,6 +131,40 @@ public class ShapelessRecipe extends CraftingRecipe {
return this;
}
@@ -84,7 +84,7 @@ index 05ef88225415cd30de36f4517b6fb40d826ce996..8bf26da12dcb03f22f842a57798948d5
/**
* Removes an ingredient from the list.
*
-@@ -164,7 +198,7 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -154,7 +188,7 @@ public class ShapelessRecipe extends CraftingRecipe {
*/
@NotNull
public ShapelessRecipe removeIngredient(@NotNull Material ingredient) {
@@ -93,7 +93,7 @@ index 05ef88225415cd30de36f4517b6fb40d826ce996..8bf26da12dcb03f22f842a57798948d5
}
/**
-@@ -191,7 +225,7 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -181,7 +215,7 @@ public class ShapelessRecipe extends CraftingRecipe {
*/
@NotNull
public ShapelessRecipe removeIngredient(int count, @NotNull Material ingredient) {
diff --git a/patches/api/0172-Fix-Spigot-annotation-mistakes.patch b/patches/api/0172-Fix-Spigot-annotation-mistakes.patch
index 3927c91ead..799d3870a9 100644
--- a/patches/api/0172-Fix-Spigot-annotation-mistakes.patch
+++ b/patches/api/0172-Fix-Spigot-annotation-mistakes.patch
@@ -9,7 +9,7 @@ a ton of noise to plugin developers.
These do not help plugin developers if they bring moise noise than value.
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index 213b76f4ba50e882b6c7349d980701e0b6323e7c..f377b0d6bfdc88be2af2a8b059aac04421c4f378 100644
+index 3ad64a11c1e67cce5e49c34d389888060bf2a962..cb0ad65e4e30c3604d655bb75c7b26a7bf4227d7 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -837,9 +837,8 @@ public final class Bukkit {
@@ -59,7 +59,7 @@ index f9c9ae463aacd593e3aa9caf037ea1e23d56c780..f8ae143acbf586d5279b44f7311ca97f
/**
diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java
-index 20978b269a7757a561d6b872cc77898b44bbd272..2b9a117804a8ca54b47e51e23359bd6e01087641 100644
+index 8508aa2c6fb7c9f41f3d185f5228c86dd3b8b627..f7564581c18425c903e54f949728dd3742ca7bf2 100644
--- a/src/main/java/org/bukkit/Location.java
+++ b/src/main/java/org/bukkit/Location.java
@@ -46,7 +46,7 @@ public class Location implements Cloneable, ConfigurationSerializable, io.paperm
@@ -203,7 +203,7 @@ index 6277451c3c6c551078c237cd767b6d70c4f585ea..10f5cfb1885833a1d2c1027c03974da4
CRACKED(0x0),
GLYPHED(0x1),
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 281c1e511e46a31a1c3ee9380d60888628af87c3..bb90413c0170d3d37bc67565a6bd6f8795b2f6bd 100644
+index 3c09a5e08c2641502b7171f27d28d92d02ed39d0..49877944a385b22e5de66b4e33056ee3f592fcd7 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -703,9 +703,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -345,19 +345,6 @@ index 4bd127b3646307398e0c937c3e36ab671235b72b..f2557a87f468ee20c2d276dbfc0e9a97
public ItemStack getItem();
/**
-diff --git a/src/main/java/org/bukkit/block/DecoratedPot.java b/src/main/java/org/bukkit/block/DecoratedPot.java
-index 210f4be510c2074db3938d604937dae0270dd994..59b98f411f62e16fafb0efb489562847a090c733 100644
---- a/src/main/java/org/bukkit/block/DecoratedPot.java
-+++ b/src/main/java/org/bukkit/block/DecoratedPot.java
-@@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull;
- /**
- * Represents a captured state of a decorated pot.
- */
-+//@ApiStatus.Experimental // Paper
- public interface DecoratedPot extends TileState {
-
- /**
diff --git a/src/main/java/org/bukkit/entity/Enderman.java b/src/main/java/org/bukkit/entity/Enderman.java
index 605af1a9fc48602643aec57dd14e8c4ab657a0bc..b3085c7ff8b3e96083d209f6612c006578773c24 100644
--- a/src/main/java/org/bukkit/entity/Enderman.java
@@ -397,7 +384,7 @@ index f124b35ec76e6cb6a1a0dc464005087043c3efd0..f50aaddf8582be55fd4860ad374d8f22
+@Deprecated(forRemoval = true) // Paper
public interface LingeringPotion extends ThrownPotion { }
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
-index ebb66f19478908518685938ae3b79357d77fc614..cc1f52354d34bc4000a550f795f290244e8e7a7d 100644
+index 79fdb183887cb8153254f6ac84a981a7ffcb561c..373b3ad6b3f94655289155914aec8294cd4f2fb2 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -664,7 +664,9 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
@@ -705,10 +692,10 @@ index f1a48eab1a357ae64545e1f1dc941c383cff8707..466d1bd7089b76f48f953e1a51c611ec
/**
* Checks if the inventory contains any ItemStacks with the given
diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
-index 349da0065ddf000cacdc259fab0f2c759332e9ad..abf95d917eca248ff3f5a5caa008c1c87fa1e029 100644
+index 74cd662d0594f2fbc5aa30ba64d9e4928145dbb9..856751439b6599943d85203a59efd691ddbd89e9 100644
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
+++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
-@@ -26,7 +26,7 @@ public interface ItemFactory {
+@@ -27,7 +27,7 @@ public interface ItemFactory {
* @return a new ItemMeta that could be applied to an item stack of the
* specified material
*/
@@ -804,10 +791,10 @@ index 5461f7fa75f5a065bb333b4a113640b5fe1e3825..c4d657727e508cb941320730a9d3aa54
/**
diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
-index c2d224b6472a65cd362e1ab55ce7e3d0b5a3befc..833322283bdddc16524ddb56aaa481bf36881eeb 100644
+index 97d5d9c6347bc401e3f4ab7c0ba1391ad5b0449a..da878c6d4928ddbc16b50ace86d992685a2b7873 100644
--- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
-@@ -112,8 +112,10 @@ public class ShapedRecipe implements Recipe, Keyed {
+@@ -100,8 +100,10 @@ public class ShapedRecipe extends CraftingRecipe {
* @param ingredient The ingredient.
* @return The changed recipe, so you can chain calls.
* @throws IllegalArgumentException if the {@code key} does not appear in the shape.
@@ -818,7 +805,7 @@ index c2d224b6472a65cd362e1ab55ce7e3d0b5a3befc..833322283bdddc16524ddb56aaa481bf
public ShapedRecipe setIngredient(char key, @NotNull MaterialData ingredient) {
return setIngredient(key, ingredient.getItemType(), ingredient.getData());
}
-@@ -191,7 +193,9 @@ public class ShapedRecipe implements Recipe, Keyed {
+@@ -179,7 +181,9 @@ public class ShapedRecipe extends CraftingRecipe {
* Get a copy of the ingredients map.
*
* @return The mapping of character to ingredients.
@@ -829,10 +816,10 @@ index c2d224b6472a65cd362e1ab55ce7e3d0b5a3befc..833322283bdddc16524ddb56aaa481bf
public Map<Character, ItemStack> getIngredientMap() {
HashMap<Character, ItemStack> result = new HashMap<Character, ItemStack>();
diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
-index 8bf26da12dcb03f22f842a57798948d5513c227d..e5a2febc26a2b0aca0b83c48cd35ccdea1e6a222 100644
+index b8ac602cd2718d615ec243ce648951a1a46c26ec..beb798482479c58a8628c314b510ab6349576ce8 100644
--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
-@@ -53,8 +53,10 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -43,8 +43,10 @@ public class ShapelessRecipe extends CraftingRecipe {
*
* @param ingredient The ingredient to add.
* @return The changed recipe, so you can chain calls.
@@ -843,7 +830,7 @@ index 8bf26da12dcb03f22f842a57798948d5513c227d..e5a2febc26a2b0aca0b83c48cd35ccde
public ShapelessRecipe addIngredient(@NotNull MaterialData ingredient) {
return addIngredient(1, ingredient);
}
-@@ -90,8 +92,10 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -80,8 +82,10 @@ public class ShapelessRecipe extends CraftingRecipe {
* @param count How many to add (can't be more than 9!)
* @param ingredient The ingredient to add.
* @return The changed recipe, so you can chain calls.
@@ -854,7 +841,7 @@ index 8bf26da12dcb03f22f842a57798948d5513c227d..e5a2febc26a2b0aca0b83c48cd35ccde
public ShapelessRecipe addIngredient(int count, @NotNull MaterialData ingredient) {
return addIngredient(count, ingredient.getItemType(), ingredient.getData());
}
-@@ -208,8 +212,10 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -198,8 +202,10 @@ public class ShapelessRecipe extends CraftingRecipe {
*
* @param ingredient The ingredient to remove
* @return The changed recipe.
@@ -865,7 +852,7 @@ index 8bf26da12dcb03f22f842a57798948d5513c227d..e5a2febc26a2b0aca0b83c48cd35ccde
public ShapelessRecipe removeIngredient(@NotNull MaterialData ingredient) {
return removeIngredient(ingredient.getItemType(), ingredient.getData());
}
-@@ -236,8 +242,10 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -226,8 +232,10 @@ public class ShapelessRecipe extends CraftingRecipe {
* @param count The number of copies to remove.
* @param ingredient The ingredient to remove.
* @return The changed recipe.
@@ -876,7 +863,7 @@ index 8bf26da12dcb03f22f842a57798948d5513c227d..e5a2febc26a2b0aca0b83c48cd35ccde
public ShapelessRecipe removeIngredient(int count, @NotNull MaterialData ingredient) {
return removeIngredient(count, ingredient.getItemType(), ingredient.getData());
}
-@@ -298,7 +306,9 @@ public class ShapelessRecipe implements Recipe, Keyed {
+@@ -277,7 +285,9 @@ public class ShapelessRecipe extends CraftingRecipe {
* Get the list of ingredients used for this recipe.
*
* @return The input list
diff --git a/patches/api/0189-Add-Player-Client-Options-API.patch b/patches/api/0189-Add-Player-Client-Options-API.patch
index a100fb3101..c5e0100385 100644
--- a/patches/api/0189-Add-Player-Client-Options-API.patch
+++ b/patches/api/0189-Add-Player-Client-Options-API.patch
@@ -229,10 +229,10 @@ index 0000000000000000000000000000000000000000..cf67dc7d465223710adbf2b798109f52
+ }
+}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 7e304a795d8156c9b1c5ae8a19b71fb116b1b984..1f559c18d961ba31f723a9664201e5522dd7d14a 100644
+index 1b4f70e44bd6cfb8fce17461b90eebb32c5bea73..7a5dda4f2d6b7e9b225c3abd4f2d7fe87ac9e18e 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2802,6 +2802,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2868,6 +2868,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Reset the cooldown counter to 0, effectively starting the cooldown period.
*/
void resetCooldown();
diff --git a/patches/api/0201-Add-and-implement-PlayerRecipeBookClickEvent.patch b/patches/api/0201-Add-and-implement-PlayerRecipeBookClickEvent.patch
index 93bd233b85..9bd7c5c12b 100644
--- a/patches/api/0201-Add-and-implement-PlayerRecipeBookClickEvent.patch
+++ b/patches/api/0201-Add-and-implement-PlayerRecipeBookClickEvent.patch
@@ -94,3 +94,18 @@ index 0000000000000000000000000000000000000000..7fa937d339ee98ad308deebb523fead6
+ return handlers;
+ }
+}
+diff --git a/src/main/java/org/bukkit/event/player/PlayerRecipeBookClickEvent.java b/src/main/java/org/bukkit/event/player/PlayerRecipeBookClickEvent.java
+index eb8623184f69e213196558b077bd0004f08832af..a843f7347308a15b9fba4a3676f60bafafd83a66 100644
+--- a/src/main/java/org/bukkit/event/player/PlayerRecipeBookClickEvent.java
++++ b/src/main/java/org/bukkit/event/player/PlayerRecipeBookClickEvent.java
+@@ -9,7 +9,10 @@ import org.jetbrains.annotations.NotNull;
+
+ /**
+ * Called when a player clicks a recipe in the recipe book.
++ * @deprecated use {@link com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent}
+ */
++@Deprecated(forRemoval = true) // Paper
[email protected](false) // Paper
+ public class PlayerRecipeBookClickEvent extends PlayerEvent {
+
+ private static final HandlerList handlers = new HandlerList();
diff --git a/patches/api/0206-Brand-support.patch b/patches/api/0206-Brand-support.patch
index c93f4251d6..557c356959 100644
--- a/patches/api/0206-Brand-support.patch
+++ b/patches/api/0206-Brand-support.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Brand support
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 1f559c18d961ba31f723a9664201e5522dd7d14a..eb5fdf0d907f7e6d49cccbf0476ccfd25f578f2d 100644
+index 7a5dda4f2d6b7e9b225c3abd4f2d7fe87ac9e18e..6b55dce268a9a14d5cb943c08a6287c7f15b3ba3 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2911,6 +2911,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2977,6 +2977,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
// Paper end
}
diff --git a/patches/api/0212-Create-HoverEvent-from-ItemStack-Entity.patch b/patches/api/0212-Create-HoverEvent-from-ItemStack-Entity.patch
index 49e64dc27d..274ede44d7 100644
--- a/patches/api/0212-Create-HoverEvent-from-ItemStack-Entity.patch
+++ b/patches/api/0212-Create-HoverEvent-from-ItemStack-Entity.patch
@@ -5,14 +5,15 @@ Subject: [PATCH] Create HoverEvent from ItemStack Entity
diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
-index abf95d917eca248ff3f5a5caa008c1c87fa1e029..11e59068b8a8ef1128e3c75283d161c39e2a3a99 100644
+index 856751439b6599943d85203a59efd691ddbd89e9..77ca38e5edda55daf67ab8af9afd633efb4000b1 100644
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
+++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
-@@ -204,5 +204,64 @@ public interface ItemFactory {
- */
+@@ -221,4 +221,65 @@ public interface ItemFactory {
@NotNull
ItemStack ensureServerConversions(@NotNull ItemStack item);
+ // Paper end - ensure server conversions API
+
++ // Paper start - bungee hover events
+ /**
+ * Creates a {@link net.md_5.bungee.api.chat.hover.content.Content} of that ItemStack for displaying.
+ *
@@ -71,5 +72,5 @@ index abf95d917eca248ff3f5a5caa008c1c87fa1e029..11e59068b8a8ef1128e3c75283d161c3
+ @NotNull
+ @Deprecated
+ net.md_5.bungee.api.chat.hover.content.Content hoverContentOf(@NotNull org.bukkit.entity.Entity entity, @NotNull net.md_5.bungee.api.chat.BaseComponent[] customName);
- // Paper end
++ // Paper end - bungee hover events
}
diff --git a/patches/api/0217-Player-elytra-boost-API.patch b/patches/api/0217-Player-elytra-boost-API.patch
index 831d469b30..c147f27369 100644
--- a/patches/api/0217-Player-elytra-boost-API.patch
+++ b/patches/api/0217-Player-elytra-boost-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Player elytra boost API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index eb5fdf0d907f7e6d49cccbf0476ccfd25f578f2d..d5660c021020b9bacd2888e1b526bf2445aad919 100644
+index 6b55dce268a9a14d5cb943c08a6287c7f15b3ba3..acd49fc890aaf1f34bb3f8524ab4b071f3711b93 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2808,6 +2808,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2874,6 +2874,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
@NotNull
<T> T getClientOption(@NotNull com.destroystokyo.paper.ClientOption<T> option);
diff --git a/patches/api/0244-Add-sendOpLevel-API.patch b/patches/api/0244-Add-sendOpLevel-API.patch
index b67583405d..1ab89e42bb 100644
--- a/patches/api/0244-Add-sendOpLevel-API.patch
+++ b/patches/api/0244-Add-sendOpLevel-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add sendOpLevel API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index d5660c021020b9bacd2888e1b526bf2445aad919..5eb534d4199a83e94543999a7ae99dd538e1d9aa 100644
+index acd49fc890aaf1f34bb3f8524ab4b071f3711b93..d4e60896fe6a181f2bbf9b874407c6a1ccc666df 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2821,6 +2821,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2887,6 +2887,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
@Nullable
Firework boostElytra(@NotNull ItemStack firework);
diff --git a/patches/api/0292-Add-PlayerKickEvent-causes.patch b/patches/api/0292-Add-PlayerKickEvent-causes.patch
index 264c4cf46e..8b52af1af9 100644
--- a/patches/api/0292-Add-PlayerKickEvent-causes.patch
+++ b/patches/api/0292-Add-PlayerKickEvent-causes.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerKickEvent causes
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index e5f52cabf9447bb7dba77f1f5bbd4cdbf6fa772d..3b927832d91dab135da2c3e66d0894ef7a5e4675 100644
+index b28f13c51bce8bedb1fcbe63f89aa7b6262a5676..4ffdb81f5b5f2f1a13b2b8111e836af7aead1a41 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -272,6 +272,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -274,6 +274,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param message kick message
*/
void kick(final net.kyori.adventure.text.@Nullable Component message);
diff --git a/patches/api/0311-Option-to-prevent-NBT-copy-in-smithing-recipes.patch b/patches/api/0311-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
index a37dea550d..7e61d68783 100644
--- a/patches/api/0311-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
+++ b/patches/api/0311-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Option to prevent NBT copy in smithing recipes
diff --git a/src/main/java/org/bukkit/inventory/SmithingRecipe.java b/src/main/java/org/bukkit/inventory/SmithingRecipe.java
-index 582671a0a94d47302c0fdc572d486282c32f786f..cfb176130cd1e1008a194231113543d8c052371c 100644
+index 0235f4aa50eb69f87068005c669bd486899025d6..92f6285d87cabde3c1f1690ee4747217c4d098b2 100644
--- a/src/main/java/org/bukkit/inventory/SmithingRecipe.java
+++ b/src/main/java/org/bukkit/inventory/SmithingRecipe.java
@@ -13,6 +13,7 @@ public class SmithingRecipe implements Recipe, Keyed {
@@ -16,9 +16,9 @@ index 582671a0a94d47302c0fdc572d486282c32f786f..cfb176130cd1e1008a194231113543d8
/**
* Create a smithing recipe to produce the specified result ItemStack.
-@@ -25,6 +26,23 @@ public class SmithingRecipe implements Recipe, Keyed {
+@@ -28,6 +29,23 @@ public class SmithingRecipe implements Recipe, Keyed {
*/
- @Deprecated(forRemoval = true) // Paper
+ @Deprecated
public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice base, @NotNull RecipeChoice addition) {
+ // Paper start
+ this(key, result, base, addition, true);
@@ -33,14 +33,14 @@ index 582671a0a94d47302c0fdc572d486282c32f786f..cfb176130cd1e1008a194231113543d8
+ * @param copyNbt whether to copy the nbt from the input base item to the output
+ * @deprecated use {@link SmithingTrimRecipe} or {@link SmithingTransformRecipe}
+ */
-+ @Deprecated(forRemoval = true) // Paper
++ @Deprecated
+ public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice base, @NotNull RecipeChoice addition, boolean copyNbt) {
+ this.copyNbt = copyNbt;
+ // Paper end
this.key = key;
this.result = result;
this.base = base;
-@@ -62,4 +80,15 @@ public class SmithingRecipe implements Recipe, Keyed {
+@@ -65,4 +83,15 @@ public class SmithingRecipe implements Recipe, Keyed {
public NamespacedKey getKey() {
return this.key;
}
diff --git a/patches/api/0319-Add-ItemFactory-getSpawnEgg-API.patch b/patches/api/0319-Add-ItemFactory-getSpawnEgg-API.patch
deleted file mode 100644
index bf76f634c7..0000000000
--- a/patches/api/0319-Add-ItemFactory-getSpawnEgg-API.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: William Blake Galbreath <[email protected]>
-Date: Thu, 14 Oct 2021 12:09:28 -0500
-Subject: [PATCH] Add ItemFactory#getSpawnEgg API
-
-
-diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
-index 11e59068b8a8ef1128e3c75283d161c39e2a3a99..67d3105258fe4e8165a662dd65bc501b30fcff51 100644
---- a/src/main/java/org/bukkit/inventory/ItemFactory.java
-+++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
-@@ -263,5 +263,14 @@ public interface ItemFactory {
- @NotNull
- @Deprecated
- net.md_5.bungee.api.chat.hover.content.Content hoverContentOf(@NotNull org.bukkit.entity.Entity entity, @NotNull net.md_5.bungee.api.chat.BaseComponent[] customName);
-+
-+ /**
-+ * Get a spawn egg ItemStack from an EntityType
-+ *
-+ * @param type EntityType
-+ * @return ItemStack spawner egg
-+ */
-+ @Nullable
-+ ItemStack getSpawnEgg(@Nullable org.bukkit.entity.EntityType type);
- // Paper end
- }
diff --git a/patches/api/0320-Add-critical-damage-API.patch b/patches/api/0319-Add-critical-damage-API.patch
index 3a9d1f8070..3a9d1f8070 100644
--- a/patches/api/0320-Add-critical-damage-API.patch
+++ b/patches/api/0319-Add-critical-damage-API.patch
diff --git a/patches/api/0321-Fix-issues-with-mob-conversion.patch b/patches/api/0320-Fix-issues-with-mob-conversion.patch
index f451d967b6..f451d967b6 100644
--- a/patches/api/0321-Fix-issues-with-mob-conversion.patch
+++ b/patches/api/0320-Fix-issues-with-mob-conversion.patch
diff --git a/patches/api/0322-Add-isCollidable-methods-to-various-places.patch b/patches/api/0321-Add-isCollidable-methods-to-various-places.patch
index 62fba2ca0e..62fba2ca0e 100644
--- a/patches/api/0322-Add-isCollidable-methods-to-various-places.patch
+++ b/patches/api/0321-Add-isCollidable-methods-to-various-places.patch
diff --git a/patches/api/0323-Goat-ram-API.patch b/patches/api/0322-Goat-ram-API.patch
index 06d426a786..06d426a786 100644
--- a/patches/api/0323-Goat-ram-API.patch
+++ b/patches/api/0322-Goat-ram-API.patch
diff --git a/patches/api/0324-Add-API-for-resetting-a-single-score.patch b/patches/api/0323-Add-API-for-resetting-a-single-score.patch
index 997ebf42f6..14142e8f6c 100644
--- a/patches/api/0324-Add-API-for-resetting-a-single-score.patch
+++ b/patches/api/0323-Add-API-for-resetting-a-single-score.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Add API for resetting a single score
It was only possible to reset all scores for a specific entry, instead of resetting only specific scores.
diff --git a/src/main/java/org/bukkit/scoreboard/Score.java b/src/main/java/org/bukkit/scoreboard/Score.java
-index d25b4d04932da7e7562cd1acf67ebec33af5b6ef..07bfad4a908de26e9aa6291e4ad20006e88ffe87 100644
+index 8579c4f5e877a0db6df52094f2f2d82920f3c869..1eaa9a93f8eff5f18a6cce2d74f21eb19db273c8 100644
--- a/src/main/java/org/bukkit/scoreboard/Score.java
+++ b/src/main/java/org/bukkit/scoreboard/Score.java
@@ -73,4 +73,14 @@ public interface Score {
diff --git a/patches/api/0325-Add-Raw-Byte-Entity-Serialization.patch b/patches/api/0324-Add-Raw-Byte-Entity-Serialization.patch
index f824dd3957..f824dd3957 100644
--- a/patches/api/0325-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/api/0324-Add-Raw-Byte-Entity-Serialization.patch
diff --git a/patches/api/0326-Add-PlayerItemFrameChangeEvent.patch b/patches/api/0325-Add-PlayerItemFrameChangeEvent.patch
index a62e452bb4..a62e452bb4 100644
--- a/patches/api/0326-Add-PlayerItemFrameChangeEvent.patch
+++ b/patches/api/0325-Add-PlayerItemFrameChangeEvent.patch
diff --git a/patches/api/0327-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/api/0326-Allow-delegation-to-vanilla-chunk-gen.patch
index 0145865559..f91695aefc 100644
--- a/patches/api/0327-Allow-delegation-to-vanilla-chunk-gen.patch
+++ b/patches/api/0326-Allow-delegation-to-vanilla-chunk-gen.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Allow delegation to vanilla chunk gen
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index b21d1e8a53e4c51fa7742ee6211b4aedcd460a95..be9fbad7a60f58ef2d087cf5106f40d214b60175 100644
+index 256b98750ac5c48526b6b8d5cb4894b8bb6665be..44575892c30296800e444e38140853178bc24e6c 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -1970,6 +1970,24 @@ public final class Bukkit {
@@ -34,7 +34,7 @@ index b21d1e8a53e4c51fa7742ee6211b4aedcd460a95..be9fbad7a60f58ef2d087cf5106f40d2
* Creates a boss bar instance to display to players. The progress
* defaults to 1.0
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 92db34d3ff29a84b29701de6b64a70413a440ce9..1e000b6ed16a2ea550094a1cbb432eb625899a9a 100644
+index 156f014f94ed100d4d352a4ee5d0a2dc2bff518f..5a23830763fd20aa35cbd3a0669c5e3ee965131e 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -1661,6 +1661,22 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
diff --git a/patches/api/0328-Add-more-Campfire-API.patch b/patches/api/0327-Add-more-Campfire-API.patch
index 80cdc0bb39..80cdc0bb39 100644
--- a/patches/api/0328-Add-more-Campfire-API.patch
+++ b/patches/api/0327-Add-more-Campfire-API.patch
diff --git a/patches/api/0329-Move-VehicleCollisionEvent-HandlerList-up.patch b/patches/api/0328-Move-VehicleCollisionEvent-HandlerList-up.patch
index 4be8907b49..4be8907b49 100644
--- a/patches/api/0329-Move-VehicleCollisionEvent-HandlerList-up.patch
+++ b/patches/api/0328-Move-VehicleCollisionEvent-HandlerList-up.patch
diff --git a/patches/api/0330-Improve-scoreboard-entries.patch b/patches/api/0329-Improve-scoreboard-entries.patch
index bb288528e5..dbaa948bbf 100644
--- a/patches/api/0330-Improve-scoreboard-entries.patch
+++ b/patches/api/0329-Improve-scoreboard-entries.patch
@@ -5,11 +5,11 @@ Subject: [PATCH] Improve scoreboard entries
diff --git a/src/main/java/org/bukkit/scoreboard/Objective.java b/src/main/java/org/bukkit/scoreboard/Objective.java
-index 571b43c2809d2b248feebc7decba6017a67c8aee..4830db50f408bd9b7e79c30a6d90af567a45af0c 100644
+index be3b2e5d9364abde50716c35cabd5938fe2c5e4d..0e4d7a8b3a100e1e770275063f654c2c5683179e 100644
--- a/src/main/java/org/bukkit/scoreboard/Objective.java
+++ b/src/main/java/org/bukkit/scoreboard/Objective.java
-@@ -151,9 +151,8 @@ public interface Objective {
- * @throws IllegalArgumentException if player is null
+@@ -148,9 +148,8 @@ public interface Objective {
+ * @return Score tracking the Objective and player specified
* @throws IllegalStateException if this objective has been unregistered
* @see #getScore(String)
- * @deprecated Scoreboards can contain entries that aren't players
@@ -17,14 +17,14 @@ index 571b43c2809d2b248feebc7decba6017a67c8aee..4830db50f408bd9b7e79c30a6d90af56
- @Deprecated
+ // @Deprecated // Paper
@NotNull
- Score getScore(@NotNull OfflinePlayer player) throws IllegalArgumentException, IllegalStateException;
+ Score getScore(@NotNull OfflinePlayer player);
-@@ -168,4 +167,16 @@ public interface Objective {
+@@ -164,4 +163,16 @@ public interface Objective {
*/
@NotNull
- Score getScore(@NotNull String entry) throws IllegalArgumentException, IllegalStateException;
+ Score getScore(@NotNull String entry);
+
-+ // Paper start
++ // Paper start - improve scoreboard entries
+ /**
+ * Gets an entity's Score for an Objective on this Scoreboard.
+ *
@@ -34,51 +34,51 @@ index 571b43c2809d2b248feebc7decba6017a67c8aee..4830db50f408bd9b7e79c30a6d90af56
+ * @throws IllegalStateException if this objective has been unregistered
+ */
+ @NotNull Score getScoreFor(@NotNull org.bukkit.entity.Entity entity) throws IllegalArgumentException, IllegalStateException;
-+ // Paper end
++ // Paper end - improve scoreboard entries
}
diff --git a/src/main/java/org/bukkit/scoreboard/Scoreboard.java b/src/main/java/org/bukkit/scoreboard/Scoreboard.java
-index ebb72912c1f8431606162b0643f6289203331253..5547f82d3d739035da3acc4bdbda72930c863138 100644
+index 7f5afbf87396ecf489566e6924bb196621386b57..97571ad990d3a44f589f01cff2810f16a5f2ff9c 100644
--- a/src/main/java/org/bukkit/scoreboard/Scoreboard.java
+++ b/src/main/java/org/bukkit/scoreboard/Scoreboard.java
-@@ -265,9 +265,8 @@ public interface Scoreboard {
+@@ -215,9 +215,8 @@ public interface Scoreboard {
+ * @param player the player whose scores are being retrieved
* @return immutable set of all scores tracked for the player
- * @throws IllegalArgumentException if player is null
* @see #getScores(String)
- * @deprecated Scoreboards can contain entries that aren't players
*/
- @Deprecated
+ // @Deprecated // Paper
@NotNull
- Set<Score> getScores(@NotNull OfflinePlayer player) throws IllegalArgumentException;
+ Set<Score> getScores(@NotNull OfflinePlayer player);
-@@ -287,9 +286,8 @@ public interface Scoreboard {
+@@ -235,9 +234,8 @@ public interface Scoreboard {
+ *
* @param player the player to drop all current scores for
- * @throws IllegalArgumentException if player is null
* @see #resetScores(String)
- * @deprecated Scoreboards can contain entries that aren't players
*/
- @Deprecated
+ // @Deprecated // Paper
- void resetScores(@NotNull OfflinePlayer player) throws IllegalArgumentException;
+ void resetScores(@NotNull OfflinePlayer player);
/**
-@@ -307,9 +305,8 @@ public interface Scoreboard {
+@@ -253,9 +251,8 @@ public interface Scoreboard {
+ * @param player the player to search for
* @return the player's Team or null if the player is not on a team
- * @throws IllegalArgumentException if player is null
* @see #getEntryTeam(String)
- * @deprecated Scoreboards can contain entries that aren't players
*/
- @Deprecated
+ // @Deprecated // Paper
@Nullable
- Team getPlayerTeam(@NotNull OfflinePlayer player) throws IllegalArgumentException;
+ Team getPlayerTeam(@NotNull OfflinePlayer player);
-@@ -378,4 +375,35 @@ public interface Scoreboard {
- * @throws IllegalArgumentException if slot is null
+@@ -320,4 +317,35 @@ public interface Scoreboard {
+ * @param slot the slot to remove objectives
*/
- void clearSlot(@NotNull DisplaySlot slot) throws IllegalArgumentException;
+ void clearSlot(@NotNull DisplaySlot slot);
+
-+ // Paper start
++ // Paper start - improve scoreboard entries
+ /**
+ * Gets all scores for an entity on this Scoreboard
+ *
@@ -107,50 +107,50 @@ index ebb72912c1f8431606162b0643f6289203331253..5547f82d3d739035da3acc4bdbda7293
+ * @see #getEntryTeam(String)
+ */
+ @Nullable Team getEntityTeam(@NotNull org.bukkit.entity.Entity entity) throws IllegalArgumentException;
-+ // Paper end
++ // Paper end - improve scoreboard entries
}
diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java
-index 937a28638c251509ebeb254178a4583fe03c52d0..b7f0686d22cef8d9bd23105ab60051ccb10fa1e6 100644
+index 5416386c89a4019a2c123374dd5cb6d4f12744f0..4a963cb67151287ff6645dcd1c9edddd162dff1a 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
-@@ -308,9 +308,8 @@ public interface Team {
- * @throws IllegalArgumentException if player is null
+@@ -295,9 +295,8 @@ public interface Team {
+ * @param player the player to add
* @throws IllegalStateException if this team has been unregistered
* @see #addEntry(String)
- * @deprecated Teams can contain entries that aren't players
*/
- @Deprecated
+ // @Deprecated // Paper
- void addPlayer(@NotNull OfflinePlayer player) throws IllegalStateException, IllegalArgumentException;
+ void addPlayer(@NotNull OfflinePlayer player);
/**
-@@ -332,9 +331,8 @@ public interface Team {
- * @throws IllegalArgumentException if player is null
+@@ -317,9 +316,8 @@ public interface Team {
+ * @return if the player was on this team
* @throws IllegalStateException if this team has been unregistered
* @see #removeEntry(String)
- * @deprecated Teams can contain entries that aren't players
*/
- @Deprecated
+ // @Deprecated // Paper
- boolean removePlayer(@NotNull OfflinePlayer player) throws IllegalStateException, IllegalArgumentException;
+ boolean removePlayer(@NotNull OfflinePlayer player);
/**
-@@ -362,9 +360,8 @@ public interface Team {
- * @throws IllegalArgumentException if player is null
+@@ -345,9 +343,8 @@ public interface Team {
+ * @return true if the player is a member of this team
* @throws IllegalStateException if this team has been unregistered
* @see #hasEntry(String)
- * @deprecated Teams can contain entries that aren't players
*/
- @Deprecated
+ // @Deprecated // Paper
- boolean hasPlayer(@NotNull OfflinePlayer player) throws IllegalArgumentException, IllegalStateException;
+ boolean hasPlayer(@NotNull OfflinePlayer player);
/**
* Checks to see if the specified entry is a member of this team.
-@@ -395,6 +392,42 @@ public interface Team {
+@@ -377,6 +374,42 @@ public interface Team {
*/
- void setOption(@NotNull Option option, @NotNull OptionStatus status) throws IllegalStateException;
+ void setOption(@NotNull Option option, @NotNull OptionStatus status);
-+ // Paper start
++ // Paper start - improve scoreboard entries
+ /**
+ * This puts the specified entity onto this team for the scoreboard.
+ * <p>
@@ -184,7 +184,7 @@ index 937a28638c251509ebeb254178a4583fe03c52d0..b7f0686d22cef8d9bd23105ab60051cc
+ * @see #hasEntry(String)
+ */
+ boolean hasEntity(@NotNull org.bukkit.entity.Entity entity) throws IllegalStateException, IllegalArgumentException;
-+ // Paper end
++ // Paper end - improve scoreboard entries
+
/**
* Represents an option which may be applied to this team.
diff --git a/patches/api/0331-Entity-powdered-snow-API.patch b/patches/api/0330-Entity-powdered-snow-API.patch
index 3ed79d314d..3ed79d314d 100644
--- a/patches/api/0331-Entity-powdered-snow-API.patch
+++ b/patches/api/0330-Entity-powdered-snow-API.patch
diff --git a/patches/api/0332-Add-API-for-item-entity-health.patch b/patches/api/0331-Add-API-for-item-entity-health.patch
index 94373dbdf2..94373dbdf2 100644
--- a/patches/api/0332-Add-API-for-item-entity-health.patch
+++ b/patches/api/0331-Add-API-for-item-entity-health.patch
diff --git a/patches/api/0333-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/api/0332-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
index f094cdc255..f094cdc255 100644
--- a/patches/api/0333-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
+++ b/patches/api/0332-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
diff --git a/patches/api/0334-Bucketable-API.patch b/patches/api/0333-Bucketable-API.patch
index 26dbdc9f5d..26dbdc9f5d 100644
--- a/patches/api/0334-Bucketable-API.patch
+++ b/patches/api/0333-Bucketable-API.patch
diff --git a/patches/api/0335-System-prop-for-default-config-comment-parsing.patch b/patches/api/0334-System-prop-for-default-config-comment-parsing.patch
index 632f71e519..632f71e519 100644
--- a/patches/api/0335-System-prop-for-default-config-comment-parsing.patch
+++ b/patches/api/0334-System-prop-for-default-config-comment-parsing.patch
diff --git a/patches/api/0336-Expose-vanilla-BiomeProvider-from-WorldInfo.patch b/patches/api/0335-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
index 9b189fc918..9b189fc918 100644
--- a/patches/api/0336-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
+++ b/patches/api/0335-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
diff --git a/patches/api/0337-Add-new-overload-to-PersistentDataContainer-has.patch b/patches/api/0336-Add-new-overload-to-PersistentDataContainer-has.patch
index 73c49a2fc8..73c49a2fc8 100644
--- a/patches/api/0337-Add-new-overload-to-PersistentDataContainer-has.patch
+++ b/patches/api/0336-Add-new-overload-to-PersistentDataContainer-has.patch
diff --git a/patches/api/0338-Multiple-Entries-with-Scoreboards.patch b/patches/api/0337-Multiple-Entries-with-Scoreboards.patch
index 0a4fbab3a7..40407d71ea 100644
--- a/patches/api/0338-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/api/0337-Multiple-Entries-with-Scoreboards.patch
@@ -5,12 +5,12 @@ Subject: [PATCH] Multiple Entries with Scoreboards
diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java
-index b7f0686d22cef8d9bd23105ab60051ccb10fa1e6..0f1c08092577a7d66fdc1ea8b645ea67e0d9c6cf 100644
+index 4a963cb67151287ff6645dcd1c9edddd162dff1a..2cf3e30eaec539092dc5cd864ec429eebe9d2be6 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
-@@ -323,6 +323,60 @@ public interface Team {
+@@ -309,6 +309,60 @@ public interface Team {
*/
- void addEntry(@NotNull String entry) throws IllegalStateException, IllegalArgumentException;
+ void addEntry(@NotNull String entry);
+ // Paper start
+ /**
@@ -69,9 +69,9 @@ index b7f0686d22cef8d9bd23105ab60051ccb10fa1e6..0f1c08092577a7d66fdc1ea8b645ea67
/**
* Removes the player from this team.
*
-@@ -345,6 +399,56 @@ public interface Team {
+@@ -329,6 +383,56 @@ public interface Team {
*/
- boolean removeEntry(@NotNull String entry) throws IllegalStateException, IllegalArgumentException;
+ boolean removeEntry(@NotNull String entry);
+ // Paper start
+ /**
diff --git a/patches/api/0339-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch b/patches/api/0338-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
index 2d133482d3..2d133482d3 100644
--- a/patches/api/0339-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/api/0338-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/api/0340-Warn-on-strange-EventHandler-return-types.patch b/patches/api/0339-Warn-on-strange-EventHandler-return-types.patch
index c7807b823b..c7807b823b 100644
--- a/patches/api/0340-Warn-on-strange-EventHandler-return-types.patch
+++ b/patches/api/0339-Warn-on-strange-EventHandler-return-types.patch
diff --git a/patches/api/0341-Multi-Block-Change-API.patch b/patches/api/0340-Multi-Block-Change-API.patch
index 80dcae2503..f9dd8d1c58 100644
--- a/patches/api/0341-Multi-Block-Change-API.patch
+++ b/patches/api/0340-Multi-Block-Change-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Multi Block Change API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 3b927832d91dab135da2c3e66d0894ef7a5e4675..0af6b1ad7d0449354fd0166d1d6e8484ab1bd73f 100644
+index 4ffdb81f5b5f2f1a13b2b8111e836af7aead1a41..60bae5b28ed69f85e04013d6faaf199cb9ab13fe 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -724,6 +724,29 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -790,6 +790,29 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendBlockDamage(@NotNull Location loc, float progress);
diff --git a/patches/api/0342-Fix-NotePlayEvent.patch b/patches/api/0341-Fix-NotePlayEvent.patch
index d3f827bfd8..d3f827bfd8 100644
--- a/patches/api/0342-Fix-NotePlayEvent.patch
+++ b/patches/api/0341-Fix-NotePlayEvent.patch
diff --git a/patches/api/0343-Freeze-Tick-Lock-API.patch b/patches/api/0342-Freeze-Tick-Lock-API.patch
index fdf81b1a62..fdf81b1a62 100644
--- a/patches/api/0343-Freeze-Tick-Lock-API.patch
+++ b/patches/api/0342-Freeze-Tick-Lock-API.patch
diff --git a/patches/api/0344-Dolphin-API.patch b/patches/api/0343-Dolphin-API.patch
index 73beed437b..73beed437b 100644
--- a/patches/api/0344-Dolphin-API.patch
+++ b/patches/api/0343-Dolphin-API.patch
diff --git a/patches/api/0345-More-PotionEffectType-API.patch b/patches/api/0344-More-PotionEffectType-API.patch
index 5cd5753a92..5cd5753a92 100644
--- a/patches/api/0345-More-PotionEffectType-API.patch
+++ b/patches/api/0344-More-PotionEffectType-API.patch
diff --git a/patches/api/0346-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/api/0345-API-for-creating-command-sender-which-forwards-feedb.patch
index 3afcddddf9..5a9961dc34 100644
--- a/patches/api/0346-API-for-creating-command-sender-which-forwards-feedb.patch
+++ b/patches/api/0345-API-for-creating-command-sender-which-forwards-feedb.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] API for creating command sender which forwards feedback
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index be9fbad7a60f58ef2d087cf5106f40d214b60175..6103ff86cfc7f58b303ec1490fe74b82f6653796 100644
+index 44575892c30296800e444e38140853178bc24e6c..fcd63ae1130eb2db285392e08053af915279b6e7 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -1459,6 +1459,20 @@ public final class Bukkit {
@@ -30,7 +30,7 @@ index be9fbad7a60f58ef2d087cf5106f40d214b60175..6103ff86cfc7f58b303ec1490fe74b82
* Gets the folder that contains all of the various {@link World}s.
*
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 1e000b6ed16a2ea550094a1cbb432eb625899a9a..e76ff3645fdf0ce34bfcd5214f0509d35a7b3088 100644
+index 5a23830763fd20aa35cbd3a0669c5e3ee965131e..c2a9afee5c57d62bb6d62807eadae513b53849ba 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -1225,6 +1225,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
diff --git a/patches/api/0347-Implement-regenerateChunk.patch b/patches/api/0346-Implement-regenerateChunk.patch
index 721528d5a2..721528d5a2 100644
--- a/patches/api/0347-Implement-regenerateChunk.patch
+++ b/patches/api/0346-Implement-regenerateChunk.patch
diff --git a/patches/api/0348-Add-GameEvent-tags.patch b/patches/api/0347-Add-GameEvent-tags.patch
index 1aabdd065a..1aabdd065a 100644
--- a/patches/api/0348-Add-GameEvent-tags.patch
+++ b/patches/api/0347-Add-GameEvent-tags.patch
diff --git a/patches/api/0349-Furnace-RecipesUsed-API.patch b/patches/api/0348-Furnace-RecipesUsed-API.patch
index 7fed82db21..7fed82db21 100644
--- a/patches/api/0349-Furnace-RecipesUsed-API.patch
+++ b/patches/api/0348-Furnace-RecipesUsed-API.patch
diff --git a/patches/api/0350-Configurable-sculk-sensor-listener-range.patch b/patches/api/0349-Configurable-sculk-sensor-listener-range.patch
index b1ad0cdb5b..b1ad0cdb5b 100644
--- a/patches/api/0350-Configurable-sculk-sensor-listener-range.patch
+++ b/patches/api/0349-Configurable-sculk-sensor-listener-range.patch
diff --git a/patches/api/0351-Add-missing-block-data-mins-and-maxes.patch b/patches/api/0350-Add-missing-block-data-mins-and-maxes.patch
index 600497b952..600497b952 100644
--- a/patches/api/0351-Add-missing-block-data-mins-and-maxes.patch
+++ b/patches/api/0350-Add-missing-block-data-mins-and-maxes.patch
diff --git a/patches/api/0352-Custom-Potion-Mixes.patch b/patches/api/0351-Custom-Potion-Mixes.patch
index bef08bef17..346fa4ee18 100644
--- a/patches/api/0352-Custom-Potion-Mixes.patch
+++ b/patches/api/0351-Custom-Potion-Mixes.patch
@@ -102,7 +102,7 @@ index 0000000000000000000000000000000000000000..cb6d93526b637946aec311bef103ad30
+ }
+}
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index 6103ff86cfc7f58b303ec1490fe74b82f6653796..14ddb641d8a20ebd80cb2c5c8bef3062f813026d 100644
+index fcd63ae1130eb2db285392e08053af915279b6e7..209a0c48e092f168744498e1ba7555279318394c 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2492,6 +2492,15 @@ public final class Bukkit {
@@ -122,7 +122,7 @@ index 6103ff86cfc7f58b303ec1490fe74b82f6653796..14ddb641d8a20ebd80cb2c5c8bef3062
@NotNull
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index e76ff3645fdf0ce34bfcd5214f0509d35a7b3088..b6bdb945755a2c37b3cb2c3e2e91f7d769c517c4 100644
+index c2a9afee5c57d62bb6d62807eadae513b53849ba..20f95f8911852d86ea938dd73ed0d44c01b27d28 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2169,5 +2169,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
diff --git a/patches/api/0353-Expose-furnace-minecart-push-values.patch b/patches/api/0352-Expose-furnace-minecart-push-values.patch
index 3d8c2336e7..3d8c2336e7 100644
--- a/patches/api/0353-Expose-furnace-minecart-push-values.patch
+++ b/patches/api/0352-Expose-furnace-minecart-push-values.patch
diff --git a/patches/api/0354-More-Projectile-API.patch b/patches/api/0353-More-Projectile-API.patch
index fac92210c3..fac92210c3 100644
--- a/patches/api/0354-More-Projectile-API.patch
+++ b/patches/api/0353-More-Projectile-API.patch
diff --git a/patches/api/0355-Add-getComputedBiome-API.patch b/patches/api/0354-Add-getComputedBiome-API.patch
index a1ec54fe08..a1ec54fe08 100644
--- a/patches/api/0355-Add-getComputedBiome-API.patch
+++ b/patches/api/0354-Add-getComputedBiome-API.patch
diff --git a/patches/api/0356-Add-enchantWithLevels-API.patch b/patches/api/0355-Add-enchantWithLevels-API.patch
index fe08c8a617..8c3e1245c0 100644
--- a/patches/api/0356-Add-enchantWithLevels-API.patch
+++ b/patches/api/0355-Add-enchantWithLevels-API.patch
@@ -5,13 +5,13 @@ Subject: [PATCH] Add enchantWithLevels API
diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
-index 67d3105258fe4e8165a662dd65bc501b30fcff51..5a2e091785043e66c5560e870e3729fa70b28bb4 100644
+index 77ca38e5edda55daf67ab8af9afd633efb4000b1..ab73893656932f54009340df59293df2a732be51 100644
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
+++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
-@@ -161,6 +161,22 @@ public interface ItemFactory {
- Material updateMaterial(@NotNull final ItemMeta meta, @NotNull final Material material) throws IllegalArgumentException;
+@@ -173,6 +173,22 @@ public interface ItemFactory {
+ Material getSpawnEgg(@NotNull EntityType type);
- // Paper start
+ // Paper start - Adventure
+ /**
+ * Randomly enchants a copy of the provided {@link ItemStack} using the given experience levels.
+ *
diff --git a/patches/api/0357-Add-TameableDeathMessageEvent.patch b/patches/api/0356-Add-TameableDeathMessageEvent.patch
index 6152eacbe6..6152eacbe6 100644
--- a/patches/api/0357-Add-TameableDeathMessageEvent.patch
+++ b/patches/api/0356-Add-TameableDeathMessageEvent.patch
diff --git a/patches/api/0358-Allow-to-change-the-podium-of-the-EnderDragon.patch b/patches/api/0357-Allow-to-change-the-podium-of-the-EnderDragon.patch
index c2f08b9adc..08ffa1fdde 100644
--- a/patches/api/0358-Allow-to-change-the-podium-of-the-EnderDragon.patch
+++ b/patches/api/0357-Allow-to-change-the-podium-of-the-EnderDragon.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Allow to change the podium of the EnderDragon
diff --git a/src/main/java/org/bukkit/entity/EnderDragon.java b/src/main/java/org/bukkit/entity/EnderDragon.java
-index 57f8e7bf4c7b4c4a4e793cfd5d7db74384d8b1b5..64805bef298f869035614da010ace941b2a4d70b 100644
+index 92cd35c87bad578c2b714761c93a5b72ebf4bc9e..68f58c40a56791df177967de5661cca976a7e98c 100644
--- a/src/main/java/org/bukkit/entity/EnderDragon.java
+++ b/src/main/java/org/bukkit/entity/EnderDragon.java
-@@ -104,4 +104,22 @@ public interface EnderDragon extends ComplexLivingEntity, Boss, Mob, Enemy {
+@@ -108,4 +108,22 @@ public interface EnderDragon extends ComplexLivingEntity, Boss, Mob, Enemy {
* @return this dragon's death animation ticks
*/
int getDeathAnimationTicks();
diff --git a/patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch b/patches/api/0358-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch
index 21b3f85c0b..21b3f85c0b 100644
--- a/patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch
+++ b/patches/api/0358-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch
diff --git a/patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
index 5775b6f33c..5775b6f33c 100644
--- a/patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
+++ b/patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
diff --git a/patches/api/0361-WorldCreator-keepSpawnLoaded.patch b/patches/api/0360-WorldCreator-keepSpawnLoaded.patch
index c148a391f4..c148a391f4 100644
--- a/patches/api/0361-WorldCreator-keepSpawnLoaded.patch
+++ b/patches/api/0360-WorldCreator-keepSpawnLoaded.patch
diff --git a/patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch b/patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch
index 032a0872d1..032a0872d1 100644
--- a/patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch
+++ b/patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch
diff --git a/patches/api/0363-Add-PlayerStopUsingItemEvent.patch b/patches/api/0362-Add-PlayerStopUsingItemEvent.patch
index 0743d44ae1..0743d44ae1 100644
--- a/patches/api/0363-Add-PlayerStopUsingItemEvent.patch
+++ b/patches/api/0362-Add-PlayerStopUsingItemEvent.patch
diff --git a/patches/api/0364-FallingBlock-auto-expire-setting.patch b/patches/api/0363-FallingBlock-auto-expire-setting.patch
index 0a1e19afeb..0a1e19afeb 100644
--- a/patches/api/0364-FallingBlock-auto-expire-setting.patch
+++ b/patches/api/0363-FallingBlock-auto-expire-setting.patch
diff --git a/patches/api/0365-Keyed-Cat-Type.patch b/patches/api/0364-Keyed-Cat-Type.patch
index b0797d78b7..b0797d78b7 100644
--- a/patches/api/0365-Keyed-Cat-Type.patch
+++ b/patches/api/0364-Keyed-Cat-Type.patch
diff --git a/patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch b/patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch
index 126775a362..126775a362 100644
--- a/patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch
+++ b/patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch
diff --git a/patches/api/0367-Add-WardenAngerChangeEvent.patch b/patches/api/0366-Add-WardenAngerChangeEvent.patch
index acf45b5314..acf45b5314 100644
--- a/patches/api/0367-Add-WardenAngerChangeEvent.patch
+++ b/patches/api/0366-Add-WardenAngerChangeEvent.patch
diff --git a/patches/api/0368-Nameable-Banner-API.patch b/patches/api/0367-Nameable-Banner-API.patch
index eba196daaf..eba196daaf 100644
--- a/patches/api/0368-Nameable-Banner-API.patch
+++ b/patches/api/0367-Nameable-Banner-API.patch
diff --git a/patches/api/0369-Add-Player-getFishHook.patch b/patches/api/0368-Add-Player-getFishHook.patch
index 291eac5db5..291eac5db5 100644
--- a/patches/api/0369-Add-Player-getFishHook.patch
+++ b/patches/api/0368-Add-Player-getFishHook.patch
diff --git a/patches/api/0370-More-Teleport-API.patch b/patches/api/0369-More-Teleport-API.patch
index 1c18fbae2b..e749435dc5 100644
--- a/patches/api/0370-More-Teleport-API.patch
+++ b/patches/api/0369-More-Teleport-API.patch
@@ -165,10 +165,10 @@ index ab0ceaba9ddcbe20a8b8a1fc3ed19cb3c64ecd3d..97f0bc6573c8ba09de77061b6312b91c
* Teleports this entity to the given location. If this entity is riding a
* vehicle, it will be dismounted prior to teleportation.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index cd6dd216eb528bf5c0dcf804a2409d852accb78b..5a514111c21f62d1db8b298270088c1705a9e766 100644
+index 203ba784306d6aae10db9d1b5d9cbe9d797058f3..5c265bf9207d235c9d03ad7a23ad005871c81948 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2976,6 +2976,49 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3042,6 +3042,49 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
String getClientBrandName();
// Paper end
@@ -219,7 +219,7 @@ index cd6dd216eb528bf5c0dcf804a2409d852accb78b..5a514111c21f62d1db8b298270088c17
@Override
Spigot spigot();
diff --git a/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java b/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java
-index 113e620ce38bb8ff97cf24e309af59b717774b36..c334684341002c469a0dd90fc995758aff6bac61 100644
+index 2deae344c88920ab95eefd2f65df5c858e04750b..32f78f2e32280f5c9ee7394b77ed929845f127d2 100644
--- a/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java
+++ b/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java
@@ -13,8 +13,14 @@ public class PlayerTeleportEvent extends PlayerMoveEvent {
@@ -253,7 +253,7 @@ index 113e620ce38bb8ff97cf24e309af59b717774b36..c334684341002c469a0dd90fc995758a
/**
* Gets the cause of this teleportation event
*
-@@ -84,6 +99,31 @@ public class PlayerTeleportEvent extends PlayerMoveEvent {
+@@ -88,6 +103,31 @@ public class PlayerTeleportEvent extends PlayerMoveEvent {
UNKNOWN;
}
diff --git a/patches/api/0371-Add-EntityPortalReadyEvent.patch b/patches/api/0370-Add-EntityPortalReadyEvent.patch
index 4b1b1f1e1f..4b1b1f1e1f 100644
--- a/patches/api/0371-Add-EntityPortalReadyEvent.patch
+++ b/patches/api/0370-Add-EntityPortalReadyEvent.patch
diff --git a/patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch b/patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch
index 3d7b9ec1bb..77d99ebaa3 100644
--- a/patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Custom Chat Completion Suggestions API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 5a514111c21f62d1db8b298270088c1705a9e766..b977f198f7385813006473adf5e50166f0b77d5f 100644
+index 5c265bf9207d235c9d03ad7a23ad005871c81948..fbe858323fbabc15ac8533df2018cf5c95f442fa 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2863,6 +2863,29 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2929,6 +2929,29 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException If the level is negative or greater than {@code 4} (i.e. not within {@code [0, 4]}).
*/
void sendOpLevel(byte level);
diff --git a/patches/api/0373-Collision-API.patch b/patches/api/0372-Collision-API.patch
index 24bcebc503..24bcebc503 100644
--- a/patches/api/0373-Collision-API.patch
+++ b/patches/api/0372-Collision-API.patch
diff --git a/patches/api/0374-Block-Ticking-API.patch b/patches/api/0373-Block-Ticking-API.patch
index 9b2fc54ea1..9b2fc54ea1 100644
--- a/patches/api/0374-Block-Ticking-API.patch
+++ b/patches/api/0373-Block-Ticking-API.patch
diff --git a/patches/api/0375-Add-NamespacedKey-biome-methods.patch b/patches/api/0374-Add-NamespacedKey-biome-methods.patch
index 24cd2b9867..24cd2b9867 100644
--- a/patches/api/0375-Add-NamespacedKey-biome-methods.patch
+++ b/patches/api/0374-Add-NamespacedKey-biome-methods.patch
diff --git a/patches/api/0376-Also-load-resources-from-LibraryLoader.patch b/patches/api/0375-Also-load-resources-from-LibraryLoader.patch
index ee5785d8cb..ee5785d8cb 100644
--- a/patches/api/0376-Also-load-resources-from-LibraryLoader.patch
+++ b/patches/api/0375-Also-load-resources-from-LibraryLoader.patch
diff --git a/patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch b/patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch
index 161c82afe3..161c82afe3 100644
--- a/patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch
+++ b/patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch
diff --git a/patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch b/patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
index bec7a5d015..bec7a5d015 100644
--- a/patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
+++ b/patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
diff --git a/patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch b/patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
index 9b5ef25cf4..9b5ef25cf4 100644
--- a/patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
+++ b/patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
diff --git a/patches/api/0380-Add-getDrops-to-BlockState.patch b/patches/api/0379-Add-getDrops-to-BlockState.patch
index 48f3a99f04..48f3a99f04 100644
--- a/patches/api/0380-Add-getDrops-to-BlockState.patch
+++ b/patches/api/0379-Add-getDrops-to-BlockState.patch
diff --git a/patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch b/patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch
index f094f9dbc9..f094f9dbc9 100644
--- a/patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch
+++ b/patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch
diff --git a/patches/api/0382-Elder-Guardian-appearance-API.patch b/patches/api/0381-Elder-Guardian-appearance-API.patch
index c2e317d167..8510ba6a3a 100644
--- a/patches/api/0382-Elder-Guardian-appearance-API.patch
+++ b/patches/api/0381-Elder-Guardian-appearance-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Elder Guardian appearance API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index b977f198f7385813006473adf5e50166f0b77d5f..e70375b18de9c2c7c09ce13c5d6faadabd3732c1 100644
+index fbe858323fbabc15ac8533df2018cf5c95f442fa..73c989b03bb6da238300bdd0f1e634e6edce5bcd 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3042,6 +3042,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3108,6 +3108,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
void lookAt(@NotNull org.bukkit.entity.Entity entity, @NotNull io.papermc.paper.entity.LookAnchor playerAnchor, @NotNull io.papermc.paper.entity.LookAnchor entityAnchor);
// Paper end - Teleport API
diff --git a/patches/api/0383-Allow-changing-bed-s-occupied-property.patch b/patches/api/0382-Allow-changing-bed-s-occupied-property.patch
index 8dfafd6d33..8dfafd6d33 100644
--- a/patches/api/0383-Allow-changing-bed-s-occupied-property.patch
+++ b/patches/api/0382-Allow-changing-bed-s-occupied-property.patch
diff --git a/patches/api/0384-Add-EquipmentSlot-convenience-methods.patch b/patches/api/0383-Add-EquipmentSlot-convenience-methods.patch
index 0ef6b4c9b0..0ef6b4c9b0 100644
--- a/patches/api/0384-Add-EquipmentSlot-convenience-methods.patch
+++ b/patches/api/0383-Add-EquipmentSlot-convenience-methods.patch
diff --git a/patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch b/patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
index 8ba283e9b1..8ba283e9b1 100644
--- a/patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
+++ b/patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
diff --git a/patches/api/0386-Add-entity-knockback-API.patch b/patches/api/0385-Add-entity-knockback-API.patch
index 3852612f24..3852612f24 100644
--- a/patches/api/0386-Add-entity-knockback-API.patch
+++ b/patches/api/0385-Add-entity-knockback-API.patch
diff --git a/patches/api/0387-Added-EntityToggleSitEvent.patch b/patches/api/0386-Added-EntityToggleSitEvent.patch
index af2476123b..af2476123b 100644
--- a/patches/api/0387-Added-EntityToggleSitEvent.patch
+++ b/patches/api/0386-Added-EntityToggleSitEvent.patch
diff --git a/patches/api/0388-Add-Moving-Piston-API.patch b/patches/api/0387-Add-Moving-Piston-API.patch
index 8f889f1e3d..8f889f1e3d 100644
--- a/patches/api/0388-Add-Moving-Piston-API.patch
+++ b/patches/api/0387-Add-Moving-Piston-API.patch
diff --git a/patches/api/0389-Add-PrePlayerAttackEntityEvent.patch b/patches/api/0388-Add-PrePlayerAttackEntityEvent.patch
index 507b313e56..507b313e56 100644
--- a/patches/api/0389-Add-PrePlayerAttackEntityEvent.patch
+++ b/patches/api/0388-Add-PrePlayerAttackEntityEvent.patch
diff --git a/patches/api/0390-Add-Player-Warden-Warning-API.patch b/patches/api/0389-Add-Player-Warden-Warning-API.patch
index 8d1d1cb540..f4da739795 100644
--- a/patches/api/0390-Add-Player-Warden-Warning-API.patch
+++ b/patches/api/0389-Add-Player-Warden-Warning-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add Player Warden Warning API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index e70375b18de9c2c7c09ce13c5d6faadabd3732c1..b21d2ee776a25d00ed076b0a83562baec4ff2bd3 100644
+index 73c989b03bb6da238300bdd0f1e634e6edce5bcd..3740f4773795e345c0c61076d2473e67b49b6c65 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3058,6 +3058,59 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3124,6 +3124,59 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param silent whether sound should be silenced
*/
void showElderGuardian(boolean silent);
diff --git a/patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch b/patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch
index f13fdb5601..f13fdb5601 100644
--- a/patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch
+++ b/patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch
diff --git a/patches/api/0392-Add-paper-dumplisteners-command.patch b/patches/api/0391-Add-paper-dumplisteners-command.patch
index 8053dc2c4f..8053dc2c4f 100644
--- a/patches/api/0392-Add-paper-dumplisteners-command.patch
+++ b/patches/api/0391-Add-paper-dumplisteners-command.patch
diff --git a/patches/api/0393-ItemStack-damage-API.patch b/patches/api/0392-ItemStack-damage-API.patch
index ffdcd4b728..ffdcd4b728 100644
--- a/patches/api/0393-ItemStack-damage-API.patch
+++ b/patches/api/0392-ItemStack-damage-API.patch
diff --git a/patches/api/0394-Add-Tick-TemporalUnit.patch b/patches/api/0393-Add-Tick-TemporalUnit.patch
index 96c1dddab8..96c1dddab8 100644
--- a/patches/api/0394-Add-Tick-TemporalUnit.patch
+++ b/patches/api/0393-Add-Tick-TemporalUnit.patch
diff --git a/patches/api/0395-Friction-API.patch b/patches/api/0394-Friction-API.patch
index dd826ded3b..dd826ded3b 100644
--- a/patches/api/0395-Friction-API.patch
+++ b/patches/api/0394-Friction-API.patch
diff --git a/patches/api/0396-Player-Entity-Tracking-Events.patch b/patches/api/0395-Player-Entity-Tracking-Events.patch
index a824ae278f..a824ae278f 100644
--- a/patches/api/0396-Player-Entity-Tracking-Events.patch
+++ b/patches/api/0395-Player-Entity-Tracking-Events.patch
diff --git a/patches/api/0397-Add-missing-Fluid-type.patch b/patches/api/0396-Add-missing-Fluid-type.patch
index c260bf8497..c260bf8497 100644
--- a/patches/api/0397-Add-missing-Fluid-type.patch
+++ b/patches/api/0396-Add-missing-Fluid-type.patch
diff --git a/patches/api/0398-fix-Instruments.patch b/patches/api/0397-fix-Instruments.patch
index 38cd1521f2..1c2722264d 100644
--- a/patches/api/0398-fix-Instruments.patch
+++ b/patches/api/0397-fix-Instruments.patch
@@ -98,10 +98,10 @@ index de976be7132d05506fde7a839cac3954b0dd8da4..642feb8b4578e6dbd2bf78d859283d20
public static Instrument getByType(final byte type) {
return BY_DATA.get(type);
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 60206aaf1dfec3cf1f8911d7dce41a36a8675375..a0801ab1e7c91dfc6451338cfab414145c72a441 100644
+index 3cea1b5e29025cb5f9ccafb2eaf0895ab81409a9..e308cafa28648b09571caae8dc492870b902919d 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -445,9 +445,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -511,9 +511,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
public void playNote(@NotNull Location loc, byte instrument, byte note);
/**
diff --git a/patches/api/0399-Add-BlockLockCheckEvent.patch b/patches/api/0398-Add-BlockLockCheckEvent.patch
index 55a23307b1..55a23307b1 100644
--- a/patches/api/0399-Add-BlockLockCheckEvent.patch
+++ b/patches/api/0398-Add-BlockLockCheckEvent.patch
diff --git a/patches/api/0400-Add-Sneaking-API-for-Entities.patch b/patches/api/0399-Add-Sneaking-API-for-Entities.patch
index 8ad9168a83..46751f5a5f 100644
--- a/patches/api/0400-Add-Sneaking-API-for-Entities.patch
+++ b/patches/api/0399-Add-Sneaking-API-for-Entities.patch
@@ -35,10 +35,10 @@ index 3f3ea5bb6b3ea6f55b5cd699f1c01ac159619add..a2a423d4e4c2702ba5967223cab0432d
* Get the category of spawn to which this entity belongs.
*
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index a0801ab1e7c91dfc6451338cfab414145c72a441..77b0e632f8fefb9165a5170f8620a117c3b71c04 100644
+index e308cafa28648b09571caae8dc492870b902919d..f758e5e3a141733b3046fce7468391534116b34d 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -348,6 +348,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -414,6 +414,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @return true if player is in sneak mode
*/
@@ -46,7 +46,7 @@ index a0801ab1e7c91dfc6451338cfab414145c72a441..77b0e632f8fefb9165a5170f8620a117
public boolean isSneaking();
/**
-@@ -355,6 +356,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -421,6 +422,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param sneak true if player should appear sneaking
*/
diff --git a/patches/api/0401-Improve-PortalEvents.patch b/patches/api/0400-Improve-PortalEvents.patch
index f7f53b19fc..f7f53b19fc 100644
--- a/patches/api/0401-Improve-PortalEvents.patch
+++ b/patches/api/0400-Improve-PortalEvents.patch
diff --git a/patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch b/patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
index c9fd0c6501..c9fd0c6501 100644
--- a/patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
+++ b/patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
diff --git a/patches/api/0403-Flying-Fall-Damage-API.patch b/patches/api/0402-Flying-Fall-Damage-API.patch
index ff4c01fdd8..c37f4b3e6f 100644
--- a/patches/api/0403-Flying-Fall-Damage-API.patch
+++ b/patches/api/0402-Flying-Fall-Damage-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Flying Fall Damage API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index d4d07bb5cab656973b2ee54c8ea85e57718d2746..e2a3effda47e2c2696636398a0ff450d226ef469 100644
+index 37f781384989962d4930b33dc6a7878dac999797..63070eadd28dbd0d77a58904db751c1bea4bcf5c 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1639,6 +1639,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1705,6 +1705,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void setAllowFlight(boolean flight);
diff --git a/patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch b/patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
index 25fa280b26..25fa280b26 100644
--- a/patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
+++ b/patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
diff --git a/patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch b/patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
index 3936bb4a92..3936bb4a92 100644
--- a/patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
+++ b/patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
diff --git a/patches/api/0406-Win-Screen-API.patch b/patches/api/0405-Win-Screen-API.patch
index d8e46be6db..0711516cbb 100644
--- a/patches/api/0406-Win-Screen-API.patch
+++ b/patches/api/0405-Win-Screen-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Win Screen API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index e2a3effda47e2c2696636398a0ff450d226ef469..44f5237406128adde97e43304f8b433032920090 100644
+index 63070eadd28dbd0d77a58904db751c1bea4bcf5c..bcab0d70158d5843fc555a8ad532b6376a400749 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1006,6 +1006,47 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1072,6 +1072,47 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendMap(@NotNull MapView map);
diff --git a/patches/api/0407-Add-Entity-Body-Yaw-API.patch b/patches/api/0406-Add-Entity-Body-Yaw-API.patch
index 05fecf4aed..05fecf4aed 100644
--- a/patches/api/0407-Add-Entity-Body-Yaw-API.patch
+++ b/patches/api/0406-Add-Entity-Body-Yaw-API.patch
diff --git a/patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch b/patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
index 98799cd97d..98799cd97d 100644
--- a/patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
+++ b/patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
diff --git a/patches/api/0409-Add-EntityFertilizeEggEvent.patch b/patches/api/0408-Add-EntityFertilizeEggEvent.patch
index 52283a9df2..52283a9df2 100644
--- a/patches/api/0409-Add-EntityFertilizeEggEvent.patch
+++ b/patches/api/0408-Add-EntityFertilizeEggEvent.patch
diff --git a/patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch b/patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
index f720032bf2..f720032bf2 100644
--- a/patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
+++ b/patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
diff --git a/patches/api/0411-Add-Shearable-API.patch b/patches/api/0410-Add-Shearable-API.patch
index 96049cfd38..96049cfd38 100644
--- a/patches/api/0411-Add-Shearable-API.patch
+++ b/patches/api/0410-Add-Shearable-API.patch
diff --git a/patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch b/patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch
index 4014e17083..4014e17083 100644
--- a/patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch
+++ b/patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch
diff --git a/patches/api/0413-Add-Mob-Experience-reward-API.patch b/patches/api/0412-Add-Mob-Experience-reward-API.patch
index e399177aeb..e399177aeb 100644
--- a/patches/api/0413-Add-Mob-Experience-reward-API.patch
+++ b/patches/api/0412-Add-Mob-Experience-reward-API.patch
diff --git a/patches/api/0414-Expand-PlayerItemMendEvent.patch b/patches/api/0413-Expand-PlayerItemMendEvent.patch
index 223922e05e..223922e05e 100644
--- a/patches/api/0414-Expand-PlayerItemMendEvent.patch
+++ b/patches/api/0413-Expand-PlayerItemMendEvent.patch
diff --git a/patches/api/0415-Add-transient-modifier-API.patch b/patches/api/0414-Add-transient-modifier-API.patch
index a32e4c86a9..a32e4c86a9 100644
--- a/patches/api/0415-Add-transient-modifier-API.patch
+++ b/patches/api/0414-Add-transient-modifier-API.patch
diff --git a/patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch b/patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch
index 268785a112..268785a112 100644
--- a/patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch
+++ b/patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch
diff --git a/patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch b/patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch
index d0a824c013..d0a824c013 100644
--- a/patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch
+++ b/patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch
diff --git a/patches/api/0418-Folia-scheduler-and-owned-region-API.patch b/patches/api/0417-Folia-scheduler-and-owned-region-API.patch
index 13a38952d2..13a38952d2 100644
--- a/patches/api/0418-Folia-scheduler-and-owned-region-API.patch
+++ b/patches/api/0417-Folia-scheduler-and-owned-region-API.patch
diff --git a/patches/api/0419-Add-event-for-player-editing-sign.patch b/patches/api/0418-Add-event-for-player-editing-sign.patch
index 7ab903049e..738ff0d1f0 100644
--- a/patches/api/0419-Add-event-for-player-editing-sign.patch
+++ b/patches/api/0418-Add-event-for-player-editing-sign.patch
@@ -114,3 +114,19 @@ index 0000000000000000000000000000000000000000..a82c0db092684bcb5e3c99f8158eb407
+ UNKNOWN,
+ }
+}
+diff --git a/src/main/java/org/bukkit/event/player/PlayerSignOpenEvent.java b/src/main/java/org/bukkit/event/player/PlayerSignOpenEvent.java
+index ea197b1bc0a41355f8cdda3026f16c55f2d4fac9..62f41dbdf93e1912f4ee1376f000ffdc9073043d 100644
+--- a/src/main/java/org/bukkit/event/player/PlayerSignOpenEvent.java
++++ b/src/main/java/org/bukkit/event/player/PlayerSignOpenEvent.java
+@@ -10,8 +10,11 @@ import org.jetbrains.annotations.NotNull;
+
+ /**
+ * This event is fired when a sign is opened by the player.
++ * @deprecated use {@link io.papermc.paper.event.player.PlayerOpenSignEvent}
+ */
+ @ApiStatus.Experimental
++@Deprecated(forRemoval = true) // Paper
[email protected](false) // Paper
+ public class PlayerSignOpenEvent extends PlayerEvent implements Cancellable {
+
+ private static final HandlerList handlers = new HandlerList();
diff --git a/patches/api/0420-Add-Sign-getInteractableSideFor.patch b/patches/api/0419-Add-Sign-getInteractableSideFor.patch
index ded9bb7ac7..ded9bb7ac7 100644
--- a/patches/api/0420-Add-Sign-getInteractableSideFor.patch
+++ b/patches/api/0419-Add-Sign-getInteractableSideFor.patch
diff --git a/patches/api/0421-Fix-BanList-API.patch b/patches/api/0420-Fix-BanList-API.patch
index de86cde758..f0ff82bd87 100644
--- a/patches/api/0421-Fix-BanList-API.patch
+++ b/patches/api/0420-Fix-BanList-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix BanList API
diff --git a/src/main/java/org/bukkit/BanList.java b/src/main/java/org/bukkit/BanList.java
-index c229d3bc37c4e454a4b5a93eda1fe6466a4f4e8b..adeff14586351edad412a85a5797c28a43aaa9de 100644
+index 548f6d28c28d74bed8b58ee82875909354afe132..a77c0411a68a9bad33ddfb335b7a996a843e478c 100644
--- a/src/main/java/org/bukkit/BanList.java
+++ b/src/main/java/org/bukkit/BanList.java
-@@ -46,7 +46,7 @@ public interface BanList<T> {
+@@ -48,7 +48,7 @@ public interface BanList<T> {
*/
@Deprecated
@Nullable
@@ -17,7 +17,7 @@ index c229d3bc37c4e454a4b5a93eda1fe6466a4f4e8b..adeff14586351edad412a85a5797c28a
/**
* Gets a {@link BanEntry} by target.
-@@ -75,7 +75,7 @@ public interface BanList<T> {
+@@ -77,7 +77,7 @@ public interface BanList<T> {
*/
@Deprecated
@Nullable
@@ -26,7 +26,7 @@ index c229d3bc37c4e454a4b5a93eda1fe6466a4f4e8b..adeff14586351edad412a85a5797c28a
/**
* Adds a ban to this list. If a previous ban exists, this will
-@@ -108,7 +108,7 @@ public interface BanList<T> {
+@@ -140,7 +140,7 @@ public interface BanList<T> {
* @return an immutable set containing every entry tracked by this list
*/
@NotNull
@@ -36,20 +36,38 @@ index c229d3bc37c4e454a4b5a93eda1fe6466a4f4e8b..adeff14586351edad412a85a5797c28a
/**
* Gets if a {@link BanEntry} exists for the target, indicating an active
diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java
-index 4d014215dce2c2ff09a2701accf2db144603c55a..08ae501e97ae2a3f22b1994c9616fc7134cfc0c3 100644
+index 774f9ec6a57d5d16a74ebe998e9ad800b1828029..9b84cb5abdf3db55cbc7ba19c8cd6955bf4fc5ec 100644
--- a/src/main/java/org/bukkit/OfflinePlayer.java
+++ b/src/main/java/org/bukkit/OfflinePlayer.java
-@@ -133,7 +133,7 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+@@ -135,7 +135,7 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
* (updated) previous ban
*/
@Nullable
- public BanEntry<PlayerProfile> ban(@Nullable String reason, @Nullable Date expires, @Nullable String source);
-+ public <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E ban(@Nullable String reason, @Nullable Date expires, @Nullable String source);
++ public <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E ban(@Nullable String reason, @Nullable Date expires, @Nullable String source); // Paper - fix ban list API
+
+ /**
+ * Adds this user to the {@link ProfileBanList}. If a previous ban exists, this will
+@@ -149,7 +149,7 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+ * (updated) previous ban
+ */
+ @Nullable
+- public BanEntry<PlayerProfile> ban(@Nullable String reason, @Nullable Instant expires, @Nullable String source);
++ public <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E ban(@Nullable String reason, @Nullable Instant expires, @Nullable String source); // Paper - fix ban list API
+
+ /**
+ * Adds this user to the {@link ProfileBanList}. If a previous ban exists, this will
+@@ -163,7 +163,7 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
+ * (updated) previous ban
+ */
+ @Nullable
+- public BanEntry<PlayerProfile> ban(@Nullable String reason, @Nullable Duration duration, @Nullable String source);
++ public <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E ban(@Nullable String reason, @Nullable Duration duration, @Nullable String source); // Paper - fix ban list API
/**
* Checks if this player is whitelisted or not
diff --git a/src/main/java/org/bukkit/ban/ProfileBanList.java b/src/main/java/org/bukkit/ban/ProfileBanList.java
-index e805e629cede1c4c0674282c930cb67852718c3e..429b6e3730118660585c84319ef09e2e5bb32fd5 100644
+index e805e629cede1c4c0674282c930cb67852718c3e..5248cf08ef83c7304dd76c42a2f646bb81e0efae 100644
--- a/src/main/java/org/bukkit/ban/ProfileBanList.java
+++ b/src/main/java/org/bukkit/ban/ProfileBanList.java
@@ -10,7 +10,7 @@ import org.jetbrains.annotations.Nullable;
@@ -61,7 +79,7 @@ index e805e629cede1c4c0674282c930cb67852718c3e..429b6e3730118660585c84319ef09e2e
/**
* {@inheritDoc}
-@@ -23,8 +23,35 @@ public interface ProfileBanList extends BanList<PlayerProfile> {
+@@ -23,8 +23,48 @@ public interface ProfileBanList extends BanList<PlayerProfile> {
* @return the entry for the newly created ban, or the entry for the
* (updated) previous ban
* @throws IllegalArgumentException if ProfilePlayer has an invalid UUID
@@ -78,7 +96,7 @@ index e805e629cede1c4c0674282c930cb67852718c3e..429b6e3730118660585c84319ef09e2e
+ */
+ @Nullable BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(com.destroystokyo.paper.profile.@NotNull PlayerProfile target, @Nullable String reason, @Nullable Date expires, @Nullable String source);
+
-+ // the 3 methods below are added to maintain compat for the PlayerProfile parameter type
++ // the 5 methods below are added to maintain compat for the bukkit.PlayerProfile parameter type
+ /**
+ * @deprecated use {@link #getBanEntry(Object)}
+ */
@@ -96,18 +114,49 @@ index e805e629cede1c4c0674282c930cb67852718c3e..429b6e3730118660585c84319ef09e2e
+ */
+ @Deprecated
+ void pardon(@NotNull PlayerProfile target);
++
++ /**
++ * @deprecated use {@link #addBan(Object, String, java.time.Instant, String)}
++ */
++ @Deprecated
++ @Nullable <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E addBan(@NotNull PlayerProfile target, @Nullable String reason, @Nullable java.time.Instant expires, @Nullable String source);
++
++ /**
++ * @deprecated use {@link #addBan(Object, String, java.time.Duration, String)}
++ */
++ @Deprecated
++ @Nullable <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E addBan(@NotNull PlayerProfile target, @Nullable String reason, @Nullable java.time.Duration duration, @Nullable String source);
++
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index d0297f47f18cabf857cf4ce04c529b46525c0f75..06b2b925de745850816d9ce0cf6316412c8d2b49 100644
+index 1c25bdb3479da2d6e43782503c48e8ebda275e96..920424ba408730e63c0e42d24e327fb02c82c61c 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -296,7 +296,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -298,7 +298,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* (updated) previous ban
*/
@Nullable
- public BanEntry<PlayerProfile> ban(@Nullable String reason, @Nullable Date expires, @Nullable String source, boolean kickPlayer);
-+ public <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E ban(@Nullable String reason, @Nullable Date expires, @Nullable String source, boolean kickPlayer); // Paper
++ public <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E ban(@Nullable String reason, @Nullable Date expires, @Nullable String source, boolean kickPlayer); // Paper - fix ban list API
+
+ /**
+ * Adds this user to the {@link ProfileBanList}. If a previous ban exists, this will
+@@ -314,7 +314,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+ * (updated) previous ban
+ */
+ @Nullable
+- public BanEntry<PlayerProfile> ban(@Nullable String reason, @Nullable Instant expires, @Nullable String source, boolean kickPlayer);
++ public <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E ban(@Nullable String reason, @Nullable Instant expires, @Nullable String source, boolean kickPlayer); // Paper - fix ban list API
+
+ /**
+ * Adds this user to the {@link ProfileBanList}. If a previous ban exists, this will
+@@ -330,7 +330,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+ * (updated) previous ban
+ */
+ @Nullable
+- public BanEntry<PlayerProfile> ban(@Nullable String reason, @Nullable Duration duration, @Nullable String source, boolean kickPlayer);
++ public <E extends BanEntry<? super com.destroystokyo.paper.profile.PlayerProfile>> E ban(@Nullable String reason, @Nullable Duration duration, @Nullable String source, boolean kickPlayer); // Paper - fix ban list API
/**
* Adds this user's current IP address to the {@link IpBanList}. If a previous ban exists, this will
diff --git a/patches/api/0422-Add-whitelist-events.patch b/patches/api/0421-Add-whitelist-events.patch
index 236555f3ab..236555f3ab 100644
--- a/patches/api/0422-Add-whitelist-events.patch
+++ b/patches/api/0421-Add-whitelist-events.patch
diff --git a/patches/server/0001-Setup-Gradle-project.patch b/patches/server/0001-Setup-Gradle-project.patch
index 35eeac6761..4587f74b22 100644
--- a/patches/server/0001-Setup-Gradle-project.patch
+++ b/patches/server/0001-Setup-Gradle-project.patch
@@ -172,7 +172,7 @@ index 0000000000000000000000000000000000000000..f7d5f785f659aa905000d974f573e43f
+}
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
-index 76dce1e84f5f8f61a866eb3bbdc3e23cc8cc7a5a..0000000000000000000000000000000000000000
+index 241fad1f18c4eaf4283b8179981d1d6e90cd746c..0000000000000000000000000000000000000000
--- a/pom.xml
+++ /dev/null
@@ -1,587 +0,0 @@
@@ -462,7 +462,7 @@ index 76dce1e84f5f8f61a866eb3bbdc3e23cc8cc7a5a..00000000000000000000000000000000
- <plugin>
- <groupId>net.md-5</groupId>
- <artifactId>scriptus</artifactId>
-- <version>0.4.1</version>
+- <version>0.5.0</version>
- <executions>
- <execution>
- <id>ex-spigot</id>
@@ -548,7 +548,7 @@ index 76dce1e84f5f8f61a866eb3bbdc3e23cc8cc7a5a..00000000000000000000000000000000
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
-- <version>3.4.1</version>
+- <version>3.5.0</version>
- <executions>
- <execution>
- <phase>package</phase>
diff --git a/patches/server/0003-Build-system-changes.patch b/patches/server/0003-Build-system-changes.patch
index 4d03e74655..9df1c32782 100644
--- a/patches/server/0003-Build-system-changes.patch
+++ b/patches/server/0003-Build-system-changes.patch
@@ -79,7 +79,7 @@ index f7d5f785f659aa905000d974f573e43f841e7fc0..59579c22db8e028782f284942fb1e4f9
exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class")
}
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index 4849578ebb117e63a497a1f0365d25a140da4a3e..6c5c05efb58ba8ea919ea14a04ea7e9bc2d702b1 100644
+index 23e88fde465853629c4371d1e1a44d1af493ca3e..5a39201392fefe8da495244fdbc380e882ec938f 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -209,7 +209,7 @@ public class Main {
@@ -90,7 +90,7 @@ index 4849578ebb117e63a497a1f0365d25a140da4a3e..6c5c05efb58ba8ea919ea14a04ea7e9b
+ Date buildDate = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").parse(Main.class.getPackage().getImplementationVendor()); // Paper
Calendar deadline = Calendar.getInstance();
- deadline.add(Calendar.DAY_OF_YEAR, -7);
+ deadline.add(Calendar.DAY_OF_YEAR, -21);
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 93046379d0cefd5d3236fc59e698809acdc18f80..774556a62eb240da42e84db4502e2ed43495be17 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
diff --git a/patches/server/0005-Paper-config-files.patch b/patches/server/0005-Paper-config-files.patch
index 7f4ec77dad..9f8f81fe06 100644
--- a/patches/server/0005-Paper-config-files.patch
+++ b/patches/server/0005-Paper-config-files.patch
@@ -4600,10 +4600,10 @@ index cda55e481ddbcc1de5478125c5db20ebba168e7d..bacd4d875642cd93c3185f788745dd73
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 2f6568effdece27775cacfddf2c9657163aac6ad..81156003f28b68e420d992d6e8d57c5185a9543b 100644
+index 9aa71c85b630590b49a922fcc8d4badd01d46db4..3f5d20c65d9980b57f676d56a074c8e34a0e2fc8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -913,6 +913,7 @@ public final class CraftServer implements Server {
+@@ -914,6 +914,7 @@ public final class CraftServer implements Server {
}
org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot
@@ -4612,7 +4612,7 @@ index 2f6568effdece27775cacfddf2c9657163aac6ad..81156003f28b68e420d992d6e8d57c51
world.serverLevelData.setDifficulty(config.difficulty);
world.setSpawnSettings(config.spawnMonsters, config.spawnAnimals);
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index 6c5c05efb58ba8ea919ea14a04ea7e9bc2d702b1..2cd2456e73543490d98f0318883f51a7d9bcaa34 100644
+index 5a39201392fefe8da495244fdbc380e882ec938f..e8fb9e3454282ad328e6bc0d078142285d9cfa76 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -141,6 +141,19 @@ public class Main {
diff --git a/patches/server/0006-MC-Dev-fixes.patch b/patches/server/0006-MC-Dev-fixes.patch
index edb4a1d654..0cedf4efb3 100644
--- a/patches/server/0006-MC-Dev-fixes.patch
+++ b/patches/server/0006-MC-Dev-fixes.patch
@@ -94,7 +94,7 @@ index 41d6569c00db3d467f6e90d33ebd261529b89f4c..5f051cb22ae77f4d8994b07ac5b963bd
};
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 8eb949b43e8b403f3d98e36066cabd7cb9ab0e63..a9e30b7b3a666d83b3c595a7975693ccfcf3e8f9 100644
+index a6e12acf65068a2eaea75a7df877f6145a229195..b45950f3fec4540f9a65c7704a34125d9e588dcb 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1775,7 +1775,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -201,31 +201,6 @@ index 769614aeb4ca914abcf0f770240a3d4c916f08cd..6c9d163b9f857806461dc72e54713f1a
return InteractionResult.PASS;
}
}
-diff --git a/src/main/java/net/minecraft/world/level/block/SignBlock.java b/src/main/java/net/minecraft/world/level/block/SignBlock.java
-index 91bb294be2cd8ab3467a62006a5a2751e0bec4ba..5ab7df0042391cb621ed78a187dc20333e344186 100644
---- a/src/main/java/net/minecraft/world/level/block/SignBlock.java
-+++ b/src/main/java/net/minecraft/world/level/block/SignBlock.java
-@@ -76,18 +76,9 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
- public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
- ItemStack itemStack = player.getItemInHand(hand);
- Item item = itemStack.getItem();
-- Item signBlockEntity = itemStack.getItem();
-- SignApplicator var10000;
-- if (signBlockEntity instanceof SignApplicator signApplicator) {
-- var10000 = signApplicator;
-- } else {
-- var10000 = null;
-- }
--
-- SignApplicator signApplicator2 = var10000;
-+ SignApplicator signApplicator2 = item instanceof SignApplicator signApplicator ? signApplicator : null; // Paper - decompile fixes
- boolean bl = signApplicator2 != null && player.mayBuild();
-- BlockEntity bl2 = world.getBlockEntity(pos);
-- if (bl2 instanceof SignBlockEntity signBlockEntity) {
-+ if (world.getBlockEntity(pos) instanceof SignBlockEntity signBlockEntity) { // Paper - decompile fixes
- if (!world.isClientSide) {
- boolean bl2 = signBlockEntity.isFacingFrontText(player);
- SignText signText = signBlockEntity.getText(bl2);
diff --git a/src/main/java/net/minecraft/world/level/block/WallHangingSignBlock.java b/src/main/java/net/minecraft/world/level/block/WallHangingSignBlock.java
index db48010e633165972d2eac339dd7d1fd5a2f5bd8..d818d3ea6d28aa6ffb62127d4efd585d6f2935d1 100644
--- a/src/main/java/net/minecraft/world/level/block/WallHangingSignBlock.java
diff --git a/patches/server/0008-CB-fixes.patch b/patches/server/0008-CB-fixes.patch
index 0e83ebd93c..686621e73a 100644
--- a/patches/server/0008-CB-fixes.patch
+++ b/patches/server/0008-CB-fixes.patch
@@ -68,10 +68,10 @@ index 161ad6ab1443b2ce33a2d7d91d189c855db0453b..15a9736a870055d639d03063c7cf67fd
this.registryAccess = registryManager;
this.structureTemplateManager = structureTemplateManager;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 81156003f28b68e420d992d6e8d57c5185a9543b..d4ad78d3da64bda424d754f514af192543fb6f0b 100644
+index 3f5d20c65d9980b57f676d56a074c8e34a0e2fc8..b7c6c204795592dd5480338043d0da521a916190 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2354,7 +2354,13 @@ public final class CraftServer implements Server {
+@@ -2355,7 +2355,13 @@ public final class CraftServer implements Server {
Preconditions.checkArgument(key != null, "NamespacedKey key cannot be null");
LootDataManager registry = this.getServer().getLootData();
diff --git a/patches/server/0009-MC-Utils.patch b/patches/server/0009-MC-Utils.patch
index cb1b5a302b..b13beb23c7 100644
--- a/patches/server/0009-MC-Utils.patch
+++ b/patches/server/0009-MC-Utils.patch
@@ -5526,7 +5526,7 @@ index e6c4379b0fd7c1338e1713281cd9515cb54acecb..a63e7ee5c42bd51312155feab31c6ec4
throw new SkipPacketException(var10);
} else {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index a9e30b7b3a666d83b3c595a7975693ccfcf3e8f9..9b34e401040a45393afbb9e984ff421a89f744a0 100644
+index b45950f3fec4540f9a65c7704a34125d9e588dcb..d2a858f4e15920649aaa39fdebfad5b50a788cc5 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -296,6 +296,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -6551,7 +6551,7 @@ index ebae711991a3ae35e35c2cffa8d928677c205492..7be97441aed66fa3a21d13ad2211b3e0
public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey<Level> resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List<CustomSpawner> list, boolean flag1, @Nullable RandomSequences randomsequences, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) {
// IRegistryCustom.Dimension iregistrycustom_dimension = minecraftserver.registryAccess(); // CraftBukkit - decompile error
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 4a2205fca9b9487b92b120ece69f1548bf764056..ba89c0d7ae99e53350249365d0e035e6f14e1c5f 100644
+index 07220c52935369555f652bdd94692eec910d0fe2..d06430d59259849715e1457a75fd4f52406a34c2 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -255,6 +255,8 @@ public class ServerPlayer extends Player {
@@ -6646,7 +6646,7 @@ index 337e0a7b3c14e1b1a28744920e0dc0a69e0c5a87..f5829ae484d93b547a5437b85a962134
@Override
public void tell(R runnable) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 6b94211e45eff227277b5630292a855dd0254238..923b9243d97f9a741009f443d2c126b638fbb753 100644
+index 4d344101aa082c297611daa4d1b0006b85fcb7c8..78c7c779209972186b1244fb678d7208b38e30e3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -323,6 +323,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -6711,10 +6711,10 @@ index a0b5895abc88d297045e05f25bb09527991d43f0..6e0bd0eab0b06a4ac3042496bbb91292
super(type, world);
this.xpReward = 5;
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 6e0f74b8b59923e2ecddb6720dad2ca39de91fa6..c2b93eaf73ce038559611c272b6e3ecc2bcb903b 100644
+index 194c67d034daf6c584e903721aaf067a243302d5..3f18fb61a47dda559a6997af9c6c043423dd206a 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -789,6 +789,25 @@ public final class ItemStack {
+@@ -793,6 +793,25 @@ public final class ItemStack {
return this.tag != null ? this.tag.getList("Enchantments", 10) : new ListTag();
}
@@ -6740,7 +6740,7 @@ index 6e0f74b8b59923e2ecddb6720dad2ca39de91fa6..c2b93eaf73ce038559611c272b6e3ecc
public void setTag(@Nullable CompoundTag nbt) {
this.tag = nbt;
if (this.getItem().canBeDepleted()) {
-@@ -1179,6 +1198,7 @@ public final class ItemStack {
+@@ -1183,6 +1202,7 @@ public final class ItemStack {
// CraftBukkit start
@Deprecated
public void setItem(Item item) {
diff --git a/patches/server/0010-Adventure.patch b/patches/server/0010-Adventure.patch
index 721b01f4f0..4894cd850f 100644
--- a/patches/server/0010-Adventure.patch
+++ b/patches/server/0010-Adventure.patch
@@ -1825,6 +1825,26 @@ index 825ab7534f1ad9787ae2a6c2bf9a300f52cbfc95..53be8a43d784db5e8450c242adeb06f3
+ }
+ // Paper end
}
+diff --git a/src/main/java/net/minecraft/network/chat/ChatType.java b/src/main/java/net/minecraft/network/chat/ChatType.java
+index 618a9335faf9df4a7d0cc971a8e62a0e3b239aa3..375b6d1d1bb491680bdb9f664ed10a9cce1a9cfa 100644
+--- a/src/main/java/net/minecraft/network/chat/ChatType.java
++++ b/src/main/java/net/minecraft/network/chat/ChatType.java
+@@ -26,6 +26,7 @@ public record ChatType(ChatTypeDecoration chat, ChatTypeDecoration narration) {
+ public static final ResourceKey<ChatType> TEAM_MSG_COMMAND_INCOMING = create("team_msg_command_incoming");
+ public static final ResourceKey<ChatType> TEAM_MSG_COMMAND_OUTGOING = create("team_msg_command_outgoing");
+ public static final ResourceKey<ChatType> EMOTE_COMMAND = create("emote_command");
++ public static final ResourceKey<ChatType> RAW = create("raw"); // Paper
+
+ private static ResourceKey<ChatType> create(String id) {
+ return ResourceKey.create(Registries.CHAT_TYPE, new ResourceLocation(id));
+@@ -39,6 +40,7 @@ public record ChatType(ChatTypeDecoration chat, ChatTypeDecoration narration) {
+ messageTypeRegisterable.register(TEAM_MSG_COMMAND_INCOMING, new ChatType(ChatTypeDecoration.teamMessage("chat.type.team.text"), ChatTypeDecoration.withSender("chat.type.text.narrate")));
+ messageTypeRegisterable.register(TEAM_MSG_COMMAND_OUTGOING, new ChatType(ChatTypeDecoration.teamMessage("chat.type.team.sent"), ChatTypeDecoration.withSender("chat.type.text.narrate")));
+ messageTypeRegisterable.register(EMOTE_COMMAND, new ChatType(ChatTypeDecoration.withSender("chat.type.emote"), ChatTypeDecoration.withSender("chat.type.emote")));
++ messageTypeRegisterable.register(RAW, new ChatType(new ChatTypeDecoration("%s", java.util.List.of(ChatTypeDecoration.Parameter.CONTENT), Style.EMPTY), new ChatTypeDecoration("%s", java.util.List.of(ChatTypeDecoration.Parameter.CONTENT), Style.EMPTY))); // Paper
+ }
+
+ public static ChatType.Bound bind(ResourceKey<ChatType> typeKey, Entity entity) {
diff --git a/src/main/java/net/minecraft/network/chat/Component.java b/src/main/java/net/minecraft/network/chat/Component.java
index 8f5e07047f88138422ae82143a80427be869a760..37fc353c3e59dd5af2fd6c58ac084fb0e6e155d7 100644
--- a/src/main/java/net/minecraft/network/chat/Component.java
@@ -2169,7 +2189,7 @@ index 5f051cb22ae77f4d8994b07ac5b963bd0ff05673..7952635a963e28cb670c8f4869664103
list.forEach((loader) -> {
Registry<?> registry = loader.getFirst();
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 9b34e401040a45393afbb9e984ff421a89f744a0..3250a9310b57351d6d832a8ef42837d990cf6c99 100644
+index d2a858f4e15920649aaa39fdebfad5b50a788cc5..049755ed087a764cd1f0d7df82c21eef7538fbbf 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -194,6 +194,7 @@ import org.bukkit.craftbukkit.SpigotTimings; // Spigot
@@ -2282,7 +2302,7 @@ index 9b34e401040a45393afbb9e984ff421a89f744a0..3250a9310b57351d6d832a8ef42837d9
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index ba89c0d7ae99e53350249365d0e035e6f14e1c5f..dc87e56cfcd59bc1505f5b3c0363038e790271a0 100644
+index d06430d59259849715e1457a75fd4f52406a34c2..a0856fc649c50309258f015e623502dd46aeeab4 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -161,6 +161,7 @@ import net.minecraft.world.scores.Score;
@@ -2387,7 +2407,7 @@ index ba89c0d7ae99e53350249365d0e035e6f14e1c5f..dc87e56cfcd59bc1505f5b3c0363038e
// CraftBukkit end
this.chatVisibility = packet.chatVisibility();
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1bfb51b58c 100644
+index a1a499f8b2a5a12e60b40d716dd539bc438d0128..8205b7cdc235ae7ebd4db6fe9383f5eeb0132438 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -187,6 +187,8 @@ import net.minecraft.world.phys.shapes.VoxelShape;
@@ -2399,7 +2419,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
import com.mojang.datafixers.util.Pair;
import java.util.Arrays;
import java.util.concurrent.ExecutionException;
-@@ -252,7 +254,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -254,7 +256,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private static final int NO_BLOCK_UPDATES_TO_ACK = -1;
private static final int TRACKED_MESSAGE_DISCONNECT_THRESHOLD = 4096;
private static final Component CHAT_VALIDATION_FAILED = Component.translatable("multiplayer.disconnect.chat_validation_failed");
@@ -2408,7 +2428,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
private final MinecraftServer server;
public ServerPlayer player;
private int tickCount;
-@@ -440,14 +442,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -442,14 +444,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
return this.server.isSingleplayerOwner(this.player.getGameProfile());
}
@@ -2432,7 +2452,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
// CraftBukkit start - fire PlayerKickEvent
if (this.processedDisconnect) {
return;
-@@ -456,7 +461,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -458,7 +463,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
Waitable waitable = new Waitable() {
@Override
protected Object evaluate() {
@@ -2441,7 +2461,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
return null;
}
};
-@@ -473,9 +478,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -475,9 +480,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
return;
}
@@ -2453,7 +2473,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
if (this.cserver.getServer().isRunning()) {
this.cserver.getPluginManager().callEvent(event);
-@@ -487,7 +492,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -489,7 +494,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
this.player.kickLeaveMessage = event.getLeaveMessage(); // CraftBukkit - SPIGOT-3034: Forward leave message to PlayerQuitEvent
// Send the possibly modified leave message
@@ -2462,7 +2482,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
// CraftBukkit end
this.connection.send(new ClientboundDisconnectPacket(ichatbasecomponent), PacketSendListener.thenRun(() -> {
-@@ -1786,9 +1791,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1788,9 +1793,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
*/
this.player.disconnect();
@@ -2477,7 +2497,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
}
// CraftBukkit end
this.player.getTextFilter().leave();
-@@ -1885,11 +1892,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1887,11 +1894,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
CompletableFuture<FilteredText> completablefuture = this.filterTextPacket(playerchatmessage.signedContent());
@@ -2491,7 +2511,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
this.broadcastChatMessage(playerchatmessage1);
}, this.server.chatExecutor); // CraftBukkit - async chat
-@@ -1995,7 +2002,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1997,7 +2004,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
Optional<LastSeenMessages> optional = this.unpackAndApplyLastSeen(acknowledgment);
if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales
@@ -2500,7 +2520,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
return Optional.empty();
} else {
this.player.resetLastActionTime();
-@@ -2053,7 +2060,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2055,7 +2062,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.handleCommand(s);
} else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) {
// Do nothing, this is coming from a plugin
@@ -2514,7 +2534,7 @@ index ac24831757556215b0723d0fe7dc0ee0c47745db..e2c735f674db15dde5e5baea04af0a1b
Player player = this.getCraftPlayer();
AsyncPlayerChatEvent event = new AsyncPlayerChatEvent(async, player, s, new LazyPlayerSet(this.server));
String originalFormat = event.getFormat(), originalMessage = event.getMessage();
-@@ -2183,7 +2195,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2179,7 +2191,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
});
} else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) { // Re-add "Command Only" flag check
@@ -2825,7 +2845,7 @@ index 4c62df5a3781ec9df4a5c5f1b528649e6e8a62d1..affd1b8c7589ba59330dc0b6fc803cce
}
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 f0c08f3a5094e1faaed70ffdc0eb5b6dd16ed500..8b26e90c0e7affb23fe8f92d757fe3a690b858ec 100644
+index 0a4da811ff200268f40accad7d1f232c80201309..5bd28e1f475aeadaa626a4e9e9e2a1b3a28675f4 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
@@ -211,22 +211,22 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
@@ -2878,10 +2898,10 @@ index 614e567eb1ef10ac7514909a8425e29ac3627d3d..60596c4ac2ebb8caf19d65591624275b
}
collection = icons;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index d4ad78d3da64bda424d754f514af192543fb6f0b..1ad584aedc0212a1e65affcbb518162328042719 100644
+index b7c6c204795592dd5480338043d0da521a916190..fef313265a5e3f2aea5ed8f767782f4157ec7435 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -611,8 +611,10 @@ public final class CraftServer implements Server {
+@@ -612,8 +612,10 @@ public final class CraftServer implements Server {
}
@Override
@@ -2892,7 +2912,7 @@ index d4ad78d3da64bda424d754f514af192543fb6f0b..1ad584aedc0212a1e65affcbb5181623
}
@Override
-@@ -1468,7 +1470,15 @@ public final class CraftServer implements Server {
+@@ -1469,7 +1471,15 @@ public final class CraftServer implements Server {
return this.configuration.getInt("settings.spawn-radius", -1);
}
@@ -2908,7 +2928,7 @@ index d4ad78d3da64bda424d754f514af192543fb6f0b..1ad584aedc0212a1e65affcbb5181623
public String getShutdownMessage() {
return this.configuration.getString("settings.shutdown-message");
}
-@@ -1636,7 +1646,20 @@ public final class CraftServer implements Server {
+@@ -1637,7 +1647,20 @@ public final class CraftServer implements Server {
}
@Override
@@ -2929,7 +2949,7 @@ index d4ad78d3da64bda424d754f514af192543fb6f0b..1ad584aedc0212a1e65affcbb5181623
Set<CommandSender> recipients = new HashSet<>();
for (Permissible permissible : this.getPluginManager().getPermissionSubscriptions(permission)) {
if (permissible instanceof CommandSender && permissible.hasPermission(permission)) {
-@@ -1644,14 +1667,14 @@ public final class CraftServer implements Server {
+@@ -1645,14 +1668,14 @@ public final class CraftServer implements Server {
}
}
@@ -2946,7 +2966,7 @@ index d4ad78d3da64bda424d754f514af192543fb6f0b..1ad584aedc0212a1e65affcbb5181623
for (CommandSender recipient : recipients) {
recipient.sendMessage(message);
-@@ -1914,6 +1937,14 @@ public final class CraftServer implements Server {
+@@ -1915,6 +1938,14 @@ public final class CraftServer implements Server {
return CraftInventoryCreator.INSTANCE.createInventory(owner, type);
}
@@ -2961,7 +2981,7 @@ index d4ad78d3da64bda424d754f514af192543fb6f0b..1ad584aedc0212a1e65affcbb5181623
@Override
public Inventory createInventory(InventoryHolder owner, InventoryType type, String title) {
Preconditions.checkArgument(type != null, "InventoryType cannot be null");
-@@ -1928,13 +1959,28 @@ public final class CraftServer implements Server {
+@@ -1929,13 +1960,28 @@ public final class CraftServer implements Server {
return CraftInventoryCreator.INSTANCE.createInventory(owner, size);
}
@@ -2990,7 +3010,7 @@ index d4ad78d3da64bda424d754f514af192543fb6f0b..1ad584aedc0212a1e65affcbb5181623
public Merchant createMerchant(String title) {
return new CraftMerchantCustom(title == null ? InventoryType.MERCHANT.getDefaultTitle() : title);
}
-@@ -1999,6 +2045,17 @@ public final class CraftServer implements Server {
+@@ -2000,6 +2046,17 @@ public final class CraftServer implements Server {
return Thread.currentThread().equals(console.serverThread) || this.console.hasStopped() || !org.spigotmc.AsyncCatcher.enabled; // All bets are off if we have shut down (e.g. due to watchdog)
}
@@ -3008,7 +3028,7 @@ index d4ad78d3da64bda424d754f514af192543fb6f0b..1ad584aedc0212a1e65affcbb5181623
@Override
public String getMotd() {
return this.console.getMotd();
-@@ -2433,4 +2490,53 @@ public final class CraftServer implements Server {
+@@ -2434,4 +2491,53 @@ public final class CraftServer implements Server {
return this.spigot;
}
// Spigot end
@@ -3134,7 +3154,7 @@ index 153143b06fc088f3142a8fa17f153d8a344169d8..d01388bbadf3069357cf52463f4104a1
// Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index 2cd2456e73543490d98f0318883f51a7d9bcaa34..a210752cbf3f97b3782f85b3330972e8becfd2f3 100644
+index e8fb9e3454282ad328e6bc0d078142285d9cfa76..ab22205c758768cd0c8a4fc6bca3d7de2e823078 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -20,6 +20,12 @@ public class Main {
@@ -3244,10 +3264,10 @@ index 0beb96dc896f63003e1b1ae458b73902bdbe648a..102eb86bad3000f258775ac06ecd1a6d
public String getCustomName() {
EnchantmentTableBlockEntity enchant = this.getSnapshot();
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-index 833c1a96a956503d997a80364433c45bfa7c5a96..6ca423ca58f486eec05c55faf055e0cdbabde709 100644
+index 8ea2349ffcfa55bd20343edd4551aa26c88901a6..a19504cf5c98b4d8070dc1ffe322b84e1896d84a 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-@@ -25,6 +25,23 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
+@@ -27,6 +27,23 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
this.back = new CraftSignSide(this.getSnapshot().getBackText());
}
@@ -3271,7 +3291,7 @@ index 833c1a96a956503d997a80364433c45bfa7c5a96..6ca423ca58f486eec05c55faf055e0cd
@Override
public String[] getLines() {
return this.front.getLines();
-@@ -114,6 +131,20 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
+@@ -120,6 +137,20 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
((CraftPlayer) player).getHandle().openTextEdit(handle, Side.FRONT == side);
}
@@ -3653,10 +3673,10 @@ index 446fdca49a5a6999626a7ee3a1d5c168b15a09dd..f9863e138994f6c7a7975a852f106faa
public boolean isOp() {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679dcaa3d34 100644
+index 9e884e903f877f8fef036307142cee3b574e829b..498fb1db3091013cbd58aabf8361f961c8a3e755 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -292,14 +292,39 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -294,14 +294,39 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getDisplayName() {
@@ -3696,7 +3716,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
@Override
public String getPlayerListName() {
return this.getHandle().listName == null ? getName() : CraftChatMessage.fromComponent(this.getHandle().listName);
-@@ -318,42 +343,42 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -320,42 +345,42 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
@@ -3748,7 +3768,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
this.getHandle().connection.send(packet);
}
-@@ -385,6 +410,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -387,6 +412,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.disconnect(message == null ? "" : message);
}
@@ -3772,7 +3792,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
@Override
public void setCompassTarget(Location loc) {
Preconditions.checkArgument(loc != null, "Location cannot be null");
-@@ -679,6 +721,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -681,6 +723,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(packet);
}
@@ -3797,7 +3817,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
@Override
public void sendSignChange(Location loc, String[] lines) {
this.sendSignChange(loc, lines, DyeColor.BLACK);
-@@ -702,6 +762,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -704,6 +764,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (this.getHandle().connection == null) return;
Component[] components = CraftSign.sanitizeLines(lines);
@@ -3809,7 +3829,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
SignBlockEntity sign = new SignBlockEntity(CraftLocation.toBlockPosition(loc), Blocks.OAK_SIGN.defaultBlockState());
SignText text = sign.getFrontText();
text = text.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData()));
-@@ -711,7 +776,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -713,7 +778,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
sign.setText(text, true);
@@ -3819,7 +3839,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
}
@Override
-@@ -1636,7 +1702,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1668,7 +1734,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setResourcePack(String url) {
@@ -3828,7 +3848,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
}
@Override
-@@ -1651,7 +1717,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1683,7 +1749,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setResourcePack(String url, byte[] hash, boolean force) {
@@ -3837,7 +3857,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
}
@Override
-@@ -1667,6 +1733,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1699,6 +1765,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
@@ -3859,7 +3879,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
public void addChannel(String channel) {
Preconditions.checkState(this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel);
channel = StandardMessenger.validateAndCorrectChannel(channel);
-@@ -2065,6 +2146,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2097,6 +2178,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return (this.getHandle().clientViewDistance == null) ? Bukkit.getViewDistance() : this.getHandle().clientViewDistance;
}
@@ -3872,7 +3892,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
@Override
public int getPing() {
return this.getHandle().latency;
-@@ -2115,6 +2202,252 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2147,6 +2234,252 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().allowsListing();
}
@@ -4126,7 +4146,7 @@ index 14bb6b7555f4e9d69b50e0c54d50e770e21d6ed5..845288cc687e7cc8a7ec2cb632c8c679
private final Player.Spigot spigot = new Player.Spigot()
{
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTextDisplay.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTextDisplay.java
-index 2becf197a5c2d94f23f72a9b20cb2cd05a0807df..99096c1e3f045e4a99335faedfb8e77e99690299 100644
+index 1cd2af11e8fd43ebc9fd5e0dfc53ac2de4532399..7bfb83d3ac38c5c270d77d9794a55a363ac6302b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTextDisplay.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTextDisplay.java
@@ -38,6 +38,17 @@ public class CraftTextDisplay extends CraftDisplay implements TextDisplay {
@@ -4148,10 +4168,10 @@ index 2becf197a5c2d94f23f72a9b20cb2cd05a0807df..99096c1e3f045e4a99335faedfb8e77e
@Override
public int getLineWidth() {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 41dc65eeabcece351423209c6289890bfda4de5c..8c9e545b8508172be51c9f244d7067509d32aef9 100644
+index f0e5a161db33fbef97d8f29cb1ac8ea32e8e837f..db30af9b6b9e737066c8a011e4dfe377f800f523 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -851,9 +851,9 @@ public class CraftEventFactory {
+@@ -877,9 +877,9 @@ public class CraftEventFactory {
return event;
}
@@ -4163,7 +4183,7 @@ index 41dc65eeabcece351423209c6289890bfda4de5c..8c9e545b8508172be51c9f244d706750
event.setKeepInventory(keepInventory);
event.setKeepLevel(victim.keepLevel); // SPIGOT-2222: pre-set keepLevel
org.bukkit.World world = entity.getWorld();
-@@ -878,7 +878,7 @@ public class CraftEventFactory {
+@@ -904,7 +904,7 @@ public class CraftEventFactory {
* Server methods
*/
public static ServerListPingEvent callServerListPingEvent(Server craftServer, InetAddress address, String motd, int numPlayers, int maxPlayers) {
@@ -4173,7 +4193,7 @@ index 41dc65eeabcece351423209c6289890bfda4de5c..8c9e545b8508172be51c9f244d706750
return event;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
-index 51caf09aa96b6e1f3e856061050fd6128fa736d9..301e89f638e38ad216d545a3cb5b7375695e6fe6 100644
+index bfaa48cfda08c2716f61032b71d38285a9f715e8..1b526fff47e5a3d9a5325c73966dd2bf3dbbdc19 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
@@ -72,6 +72,13 @@ public class CraftContainer extends AbstractContainerMenu {
@@ -4295,26 +4315,26 @@ index 4dd9a80af9901287ab6740b072f2b89678c3d0cb..b2586684295b295a3196a2a9cf724cec
public String getTitle() {
return this.title;
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-index fb58cfd68c8ababbf9486c9a5a1795b1ac9d5817..b187c4f436ac44a529675869dbf5bfddc4fac86f 100644
+index 87f57266d4cb3a89a38cf7871e5872d29f6d15b9..45872e28cabc655c170bee163d471acf5d913c00 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -437,4 +437,17 @@ public final class CraftItemFactory implements ItemFactory {
- public Material updateMaterial(ItemMeta meta, Material material) throws IllegalArgumentException {
- return ((CraftMetaItem) meta).updateMaterial(material);
+@@ -456,4 +456,17 @@ public final class CraftItemFactory implements ItemFactory {
+
+ return CraftMagicNumbers.getMaterial(nmsItem);
}
+
-+ // Paper start
++ // Paper start - Adventure
+ @Override
+ public net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowItem> asHoverEvent(final ItemStack item, final java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowItem> op) {
+ final net.minecraft.nbt.CompoundTag tag = CraftItemStack.asNMSCopy(item).getTag();
-+ return net.kyori.adventure.text.event.HoverEvent.showItem(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowItem.of(item.getType().getKey(), item.getAmount(), io.papermc.paper.adventure.PaperAdventure.asBinaryTagHolder(tag))));
++ return net.kyori.adventure.text.event.HoverEvent.showItem(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowItem.showItem(item.getType().getKey(), item.getAmount(), io.papermc.paper.adventure.PaperAdventure.asBinaryTagHolder(tag))));
+ }
+
+ @Override
+ public [email protected] Component displayName(@org.jetbrains.annotations.NotNull ItemStack itemStack) {
+ return io.papermc.paper.adventure.PaperAdventure.asAdventure(CraftItemStack.asNMSCopy(itemStack).getDisplayName());
+ }
-+ // Paper end
++ // Paper end - Adventure
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java
index 9e05a8515c5f6f340182e91150fcad8bbf80a22b..adf22ce4f0bcd3bd57dc2030c6c92d3df96566e3 100644
@@ -4758,7 +4778,7 @@ index b47f18b1e448807a17ca9f2ae9609680233da837..9683d7d103af66fffd68c11abc38fb4f
}
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java
-index b49cc2880fbecfd48d07c2e390c9e2aa2e09b848..de5f382656f9fd08f6ae1795c69743c604d62d5c 100644
+index 6c6d41569e0c7e4d4d17b63b81b955a6dc30afa0..ef1b0b716b11327a8f2856f51545aaba355ce74e 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java
@@ -31,6 +31,21 @@ final class CraftObjective extends CraftScoreboardComponent implements Objective
@@ -4781,28 +4801,28 @@ index b49cc2880fbecfd48d07c2e390c9e2aa2e09b848..de5f382656f9fd08f6ae1795c69743c6
+ }
+ // Paper end
@Override
- public String getDisplayName() throws IllegalStateException {
+ public String getDisplayName() {
this.checkState();
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
-index f978617eaa74ff1fa0ab0acec3b6ccd14e2db55d..2471a6d0b7a8086cf4c0a41b10c05ed50d790d11 100644
+index e9cdca6d5fac186ef18167e183518ecade7b4471..3f09420ba9268ac1dc5440c0739744370c0de319 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
@@ -27,6 +27,33 @@ public final class CraftScoreboard implements org.bukkit.scoreboard.Scoreboard {
- public CraftObjective registerNewObjective(String name, String criteria) throws IllegalArgumentException {
+ public CraftObjective registerNewObjective(String name, String criteria) {
return this.registerNewObjective(name, criteria, name);
}
-+ // Paper start
++ // Paper start - Adventure
+ @Override
+ public CraftObjective registerNewObjective(String name, String criteria, net.kyori.adventure.text.Component displayName) {
-+ return registerNewObjective(name, CraftCriteria.getFromBukkit(criteria), displayName, RenderType.INTEGER);
++ return this.registerNewObjective(name, CraftCriteria.getFromBukkit(criteria), displayName, RenderType.INTEGER);
+ }
+ @Override
+ public CraftObjective registerNewObjective(String name, String criteria, net.kyori.adventure.text.Component displayName, RenderType renderType) {
-+ return registerNewObjective(name, CraftCriteria.getFromBukkit(criteria), displayName, renderType);
++ return this.registerNewObjective(name, CraftCriteria.getFromBukkit(criteria), displayName, renderType);
+ }
+ @Override
+ public CraftObjective registerNewObjective(String name, Criteria criteria, net.kyori.adventure.text.Component displayName) throws IllegalArgumentException {
-+ return registerNewObjective(name, criteria, displayName, RenderType.INTEGER);
++ return this.registerNewObjective(name, criteria, displayName, RenderType.INTEGER);
+ }
+ @Override
+ public CraftObjective registerNewObjective(String name, Criteria criteria, net.kyori.adventure.text.Component displayName, RenderType renderType) throws IllegalArgumentException {
@@ -4814,33 +4834,32 @@ index f978617eaa74ff1fa0ab0acec3b6ccd14e2db55d..2471a6d0b7a8086cf4c0a41b10c05ed5
+ Preconditions.checkArgument(renderType != null, "RenderType cannot be null");
+ Preconditions.checkArgument(name.length() <= Short.MAX_VALUE, "The name '%s' is longer than the limit of 32767 characters (%s)", name, name.length());
+ Preconditions.checkArgument(this.board.getObjective(name) == null, "An objective of name '%s' already exists", name);
-+ net.minecraft.world.scores.Objective objective = board.addObjective(name, ((CraftCriteria) criteria).criteria, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType));
++ net.minecraft.world.scores.Objective objective = this.board.addObjective(name, ((CraftCriteria) criteria).criteria, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType));
+ return new CraftObjective(this, objective);
+ }
-+ // Paper end
++ // Paper end - Adventure
@Override
- public CraftObjective registerNewObjective(String name, String criteria, String displayName) throws IllegalArgumentException {
-@@ -45,16 +72,7 @@ public final class CraftScoreboard implements org.bukkit.scoreboard.Scoreboard {
+ public CraftObjective registerNewObjective(String name, String criteria, String displayName) {
+@@ -45,15 +72,7 @@ public final class CraftScoreboard implements org.bukkit.scoreboard.Scoreboard {
@Override
- public CraftObjective registerNewObjective(String name, Criteria criteria, String displayName, RenderType renderType) throws IllegalArgumentException {
+ public CraftObjective registerNewObjective(String name, Criteria criteria, String displayName, RenderType renderType) {
- Preconditions.checkArgument(name != null, "Objective name cannot be null");
- Preconditions.checkArgument(criteria != null, "Criteria cannot be null");
- Preconditions.checkArgument(displayName != null, "Display name cannot be null");
- Preconditions.checkArgument(renderType != null, "RenderType cannot be null");
- Preconditions.checkArgument(name.length() <= Short.MAX_VALUE, "The name '%s' is longer than the limit of 32767 characters (%s)", name, name.length());
-- Preconditions.checkArgument(displayName.length() <= 128, "The display name '%s' is longer than the limit of 128 characters (%s)", displayName, displayName.length());
- Preconditions.checkArgument(this.board.getObjective(name) == null, "An objective of name '%s' already exists", name);
-
- net.minecraft.world.scores.Objective objective = this.board.addObjective(name, ((CraftCriteria) criteria).criteria, CraftChatMessage.fromStringOrNull(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType));
- return new CraftObjective(this, objective);
-+ return registerNewObjective(name, criteria, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(displayName), renderType); // Paper
++ return this.registerNewObjective(name, criteria, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(displayName), renderType); // Paper - Adventure
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-index 4de9d57559e3787089a542fd912e5b28973fe73e..772206a43950db2726bd79911438e2aec2d7189c 100644
+index 5540a766bc7edf8985058e29cc419c2c6b1d4428..baff11728120fda1740d5e15163760f50fe1cd1d 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
@@ -26,6 +26,63 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
@@ -4906,7 +4925,7 @@ index 4de9d57559e3787089a542fd912e5b28973fe73e..772206a43950db2726bd79911438e2ae
+ // Paper end
@Override
- public String getDisplayName() throws IllegalStateException {
+ public String getDisplayName() {
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java b/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java
index 78ea79b66cc9e90402ef5cdc2e5e04e0c74b1c26..4fede2161792ba3e7cdf0cc5a1f533188becc6f7 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java
diff --git a/patches/server/0011-Paper-command.patch b/patches/server/0011-Paper-command.patch
index 7be53c5664..e001415eb4 100644
--- a/patches/server/0011-Paper-command.patch
+++ b/patches/server/0011-Paper-command.patch
@@ -615,10 +615,10 @@ index 2ac30ef2dd72582f2b7f6a05b1f94b12b44fafc9..a01d423f44b3e547b4fa4d6654f9df63
this.setPvpAllowed(dedicatedserverproperties.pvp);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 1ad584aedc0212a1e65affcbb518162328042719..c50f9e73d4301db8cc1043237ca8767fafea9828 100644
+index fef313265a5e3f2aea5ed8f767782f4157ec7435..06cfbdfaa849cac2decf8900bb0dc28a11f3fead 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -937,6 +937,7 @@ public final class CraftServer implements Server {
+@@ -938,6 +938,7 @@ public final class CraftServer implements Server {
this.commandMap.clearCommands();
this.reloadData();
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
@@ -626,7 +626,7 @@ index 1ad584aedc0212a1e65affcbb518162328042719..c50f9e73d4301db8cc1043237ca8767f
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
-@@ -2530,6 +2531,34 @@ public final class CraftServer implements Server {
+@@ -2531,6 +2532,34 @@ public final class CraftServer implements Server {
// Paper end
// Paper start
diff --git a/patches/server/0013-Paper-Plugins.patch b/patches/server/0013-Paper-Plugins.patch
index cafc6f09bd..23687aafc8 100644
--- a/patches/server/0013-Paper-Plugins.patch
+++ b/patches/server/0013-Paper-Plugins.patch
@@ -6972,10 +6972,10 @@ index 35e7f8e7b19c217fa5f3f55abb0f8b9cd6b16f18..72c2f0bf9434e09a0dd51294d3a2200f
Bootstrap.validate();
Util.startTimerHackThread();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index c50f9e73d4301db8cc1043237ca8767fafea9828..533017ee385cd070178af14cffb4dc0e600b28d8 100644
+index 06cfbdfaa849cac2decf8900bb0dc28a11f3fead..b8cc3cd61472b1b9103316b79a40e7893d333ee4 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -271,7 +271,8 @@ public final class CraftServer implements Server {
+@@ -272,7 +272,8 @@ public final class CraftServer implements Server {
private final CraftCommandMap commandMap = new CraftCommandMap(this);
private final SimpleHelpMap helpMap = new SimpleHelpMap(this);
private final StandardMessenger messenger = new StandardMessenger();
@@ -6985,7 +6985,7 @@ index c50f9e73d4301db8cc1043237ca8767fafea9828..533017ee385cd070178af14cffb4dc0e
private final StructureManager structureManager;
protected final DedicatedServer console;
protected final DedicatedPlayerList playerList;
-@@ -421,24 +422,7 @@ public final class CraftServer implements Server {
+@@ -422,24 +423,7 @@ public final class CraftServer implements Server {
}
public void loadPlugins() {
@@ -7011,7 +7011,7 @@ index c50f9e73d4301db8cc1043237ca8767fafea9828..533017ee385cd070178af14cffb4dc0e
}
public void enablePlugins(PluginLoadOrder type) {
-@@ -527,15 +511,17 @@ public final class CraftServer implements Server {
+@@ -528,15 +512,17 @@ public final class CraftServer implements Server {
private void enablePlugin(Plugin plugin) {
try {
List<Permission> perms = plugin.getDescription().getPermissions();
@@ -7035,7 +7035,7 @@ index c50f9e73d4301db8cc1043237ca8767fafea9828..533017ee385cd070178af14cffb4dc0e
this.pluginManager.enablePlugin(plugin);
} catch (Throwable ex) {
-@@ -961,6 +947,7 @@ public final class CraftServer implements Server {
+@@ -962,6 +948,7 @@ public final class CraftServer implements Server {
"This plugin is not properly shutting down its async tasks when it is being reloaded. This may cause conflicts with the newly loaded version of the plugin"
));
}
diff --git a/patches/server/0014-Timings-v2.patch b/patches/server/0014-Timings-v2.patch
index 88fb14354d..0c6b3dba6c 100644
--- a/patches/server/0014-Timings-v2.patch
+++ b/patches/server/0014-Timings-v2.patch
@@ -732,7 +732,7 @@ index fc4dcd801480fe6d89a985de411baa9a3a66f6ef..4a1148a76020089caf01f888f87afdbb
} catch (Exception exception) {
if (listener.shouldPropagateHandlingExceptions()) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 3250a9310b57351d6d832a8ef42837d990cf6c99..f0cd94f877a83485ab8e96e1c4e00bf658f227b7 100644
+index 049755ed087a764cd1f0d7df82c21eef7538fbbf..6994fff6ce9b946adba7dabf84b165f404495257 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -189,7 +189,7 @@ import org.bukkit.event.player.AsyncPlayerChatPreviewEvent;
@@ -1270,10 +1270,10 @@ index 7be97441aed66fa3a21d13ad2211b3e0e08120c0..7cb5abfa89f842194325d26c6e95b494
this.entityManager.saveAll();
} else {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index e2c735f674db15dde5e5baea04af0a1bfb51b58c..6aa687542ee86b1c8273d9ed26bca0999a742c64 100644
+index 8205b7cdc235ae7ebd4db6fe9383f5eeb0132438..0c8bf95ae50a089a5d075d965b4df655aaece4e6 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -339,7 +339,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -341,7 +341,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void tick() {
@@ -1281,7 +1281,7 @@ index e2c735f674db15dde5e5baea04af0a1bfb51b58c..6aa687542ee86b1c8273d9ed26bca099
if (this.ackBlockChangesUpTo > -1) {
this.send(new ClientboundBlockChangedAckPacket(this.ackBlockChangesUpTo));
this.ackBlockChangesUpTo = -1;
-@@ -420,7 +419,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -422,7 +421,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854
this.disconnect(Component.translatable("multiplayer.disconnect.idling"));
}
@@ -1289,7 +1289,7 @@ index e2c735f674db15dde5e5baea04af0a1bfb51b58c..6aa687542ee86b1c8273d9ed26bca099
}
-@@ -2147,7 +2145,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2143,7 +2141,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
private void handleCommand(String s) {
@@ -1298,7 +1298,7 @@ index e2c735f674db15dde5e5baea04af0a1bfb51b58c..6aa687542ee86b1c8273d9ed26bca099
if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s);
-@@ -2157,7 +2155,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2153,7 +2151,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.cserver.getPluginManager().callEvent(event);
if (event.isCancelled()) {
@@ -1307,7 +1307,7 @@ index e2c735f674db15dde5e5baea04af0a1bfb51b58c..6aa687542ee86b1c8273d9ed26bca099
return;
}
-@@ -2170,7 +2168,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2166,7 +2164,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
return;
} finally {
@@ -1341,7 +1341,7 @@ index d3dc7752aadf36985660d04dcb4377a69dfeddff..b922654c0b0b1b0d03beb20bb1944b81
public UserWhiteList getWhiteList() {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 923b9243d97f9a741009f443d2c126b638fbb753..bbc5ef297b740ab769e8c030e5af6f573259d953 100644
+index 78c7c779209972186b1244fb678d7208b38e30e3..8fdac0e7bb0b9374ebdb82673d0579fff22af5e3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -134,7 +134,6 @@ import org.bukkit.craftbukkit.event.CraftPortalEvent;
@@ -1632,10 +1632,10 @@ index 0eb09ce5c850d85ffd7229d27cf06b3e0edda11b..cc1d7626a82881c4410d65c6a33dadae
};
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 533017ee385cd070178af14cffb4dc0e600b28d8..f5a973a54e9f194891aac409151933f1779b8d28 100644
+index b8cc3cd61472b1b9103316b79a40e7893d333ee4..4167b82564c51000e1ea9bffb234145775fc2993 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -371,7 +371,7 @@ public final class CraftServer implements Server {
+@@ -372,7 +372,7 @@ public final class CraftServer implements Server {
this.saveCommandsConfig();
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
@@ -1644,7 +1644,7 @@ index 533017ee385cd070178af14cffb4dc0e600b28d8..f5a973a54e9f194891aac409151933f1
this.overrideSpawnLimits();
console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose"));
-@@ -2447,12 +2447,31 @@ public final class CraftServer implements Server {
+@@ -2448,12 +2448,31 @@ public final class CraftServer implements Server {
private final org.bukkit.Server.Spigot spigot = new org.bukkit.Server.Spigot()
{
@@ -1846,10 +1846,10 @@ index b0ffa23faf62629043dfd613315eaf9c5fcc2cfe..00000000000000000000000000000000
- }
-}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 845288cc687e7cc8a7ec2cb632c8c679dcaa3d34..57d714cc8724db1fe75ec5acf6cb0f20dc9bce12 100644
+index 498fb1db3091013cbd58aabf8361f961c8a3e755..cf87f197d860567746dcae2a15946fed0b1a1d85 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2523,6 +2523,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2555,6 +2555,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
CraftPlayer.this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundSystemChatPacket(components, position == net.md_5.bungee.api.ChatMessageType.ACTION_BAR));
}
diff --git a/patches/server/0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch b/patches/server/0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch
index 7ca507dfa1..7827f411b0 100644
--- a/patches/server/0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch
+++ b/patches/server/0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch
@@ -7,10 +7,10 @@ Subject: [PATCH] Add command line option to load extra plugin jars not in the
ex: java -jar paperclip.jar nogui -add-plugin=/path/to/plugin.jar -add-plugin=/path/to/another/plugin_jar.jar
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index f5a973a54e9f194891aac409151933f1779b8d28..a3bd22e4b37a03800e3261b769433d47d0c21ff7 100644
+index 4167b82564c51000e1ea9bffb234145775fc2993..6e2a6901ce9204b232afa1ff390dfe1a453b20a2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -425,6 +425,35 @@ public final class CraftServer implements Server {
+@@ -426,6 +426,35 @@ public final class CraftServer implements Server {
io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.INSTANCE.enter(io.papermc.paper.plugin.entrypoint.Entrypoint.PLUGIN); // Paper - replace implementation
}
@@ -47,7 +47,7 @@ index f5a973a54e9f194891aac409151933f1779b8d28..a3bd22e4b37a03800e3261b769433d47
if (type == PluginLoadOrder.STARTUP) {
this.helpMap.clear();
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index a210752cbf3f97b3782f85b3330972e8becfd2f3..1d86415570b906ecf2f2c6915694ee26210d2219 100644
+index ab22205c758768cd0c8a4fc6bca3d7de2e823078..ff955d3a20bf953770cc81f8b89a6d4425a5f813 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -159,6 +159,12 @@ public class Main {
diff --git a/patches/server/0019-Rewrite-chunk-system.patch b/patches/server/0019-Rewrite-chunk-system.patch
index 0cc773795d..138a61ce46 100644
--- a/patches/server/0019-Rewrite-chunk-system.patch
+++ b/patches/server/0019-Rewrite-chunk-system.patch
@@ -16829,7 +16829,7 @@ index 72c2f0bf9434e09a0dd51294d3a2200f1e0ed1b1..5d56c35d6d3478dbc53e4f5c3547d4dc
DedicatedServer dedicatedserver1 = new DedicatedServer(optionset, worldLoader.get(), thread, convertable_conversionsession, resourcepackrepository, worldstem, dedicatedserversettings, DataFixers.getDataFixer(), services, LoggerChunkProgressListener::new);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index f0cd94f877a83485ab8e96e1c4e00bf658f227b7..bea4e947577ee2f5fd680eb932409283f8504ee7 100644
+index 6994fff6ce9b946adba7dabf84b165f404495257..ce9f408ff7394d931bc015c08e9db8221b8f7f39 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -300,7 +300,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -20180,7 +20180,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e
@Override
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index dc87e56cfcd59bc1505f5b3c0363038e790271a0..172ea32dfc93b2a2f28b5cdd520c07f8a04f2665 100644
+index a0856fc649c50309258f015e623502dd46aeeab4..5a18f4649b64d47f429eb6c1dbb6238aab3eacd2 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -260,6 +260,48 @@ public class ServerPlayer extends Player {
@@ -20485,10 +20485,10 @@ index e96a0ca47e4701ba187555bd92c968345bc85677..73b96f804079288e9c5fcc11da54e61e
+ // Paper end
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 6aa687542ee86b1c8273d9ed26bca0999a742c64..142ffdf61b8f69e9d948b75a424de97ee31e1a87 100644
+index 0c8bf95ae50a089a5d075d965b4df655aaece4e6..713cd247615f91fc0f762e59eae35a376ffce754 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -788,6 +788,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -790,6 +790,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.disconnect(Component.translatable("disconnect.spam"));
return;
}
@@ -20654,7 +20654,7 @@ index 12e72ad737b1219fcdf88d344d41621d9fd5feec..e0bfeebeaac1aaea64bc07cdfdf7790e
if (flag1) {
++this.converted;
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index bbc5ef297b740ab769e8c030e5af6f573259d953..17841455d5afd60eca367591b06e22f69ee23ae4 100644
+index 8fdac0e7bb0b9374ebdb82673d0579fff22af5e3..48ac0559e32a1b6b26a00978cf9ef6a1c13e674b 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -327,6 +327,58 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -22646,10 +22646,10 @@ index bf4b2f89d3a7133155c6272379c742318b2c1514..33677ec811ceab939c419bf7d31b9958
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index a3bd22e4b37a03800e3261b769433d47d0c21ff7..db1895c2227fd41d9d6ce3f8f0ca2ceb41610f9d 100644
+index 6e2a6901ce9204b232afa1ff390dfe1a453b20a2..2d0d6dbcb515de0d81079a1d6b68c9b2bd973893 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1184,7 +1184,7 @@ public final class CraftServer implements Server {
+@@ -1185,7 +1185,7 @@ public final class CraftServer implements Server {
this.console.addLevel(internal);
this.getServer().prepareLevels(internal.getChunkSource().chunkMap.progressListener, internal);
@@ -22658,7 +22658,7 @@ index a3bd22e4b37a03800e3261b769433d47d0c21ff7..db1895c2227fd41d9d6ce3f8f0ca2ceb
this.pluginManager.callEvent(new WorldLoadEvent(internal.getWorld()));
return internal.getWorld();
-@@ -1228,7 +1228,7 @@ public final class CraftServer implements Server {
+@@ -1229,7 +1229,7 @@ public final class CraftServer implements Server {
}
handle.getChunkSource().close(save);
@@ -22667,7 +22667,7 @@ index a3bd22e4b37a03800e3261b769433d47d0c21ff7..db1895c2227fd41d9d6ce3f8f0ca2ceb
handle.convertable.close();
} catch (Exception ex) {
this.getLogger().log(Level.SEVERE, null, ex);
-@@ -2059,7 +2059,7 @@ public final class CraftServer implements Server {
+@@ -2060,7 +2060,7 @@ public final class CraftServer implements Server {
@Override
public boolean isPrimaryThread() {
@@ -22796,10 +22796,10 @@ index d01388bbadf3069357cf52463f4104a1be4d2b56..b3dfa35bc41191883814c78693a0d958
// Spigot start
private final org.bukkit.World.Spigot spigot = new org.bukkit.World.Spigot()
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 57d714cc8724db1fe75ec5acf6cb0f20dc9bce12..5eb25bb87443b533029ac49dead86173b7ab55eb 100644
+index cf87f197d860567746dcae2a15946fed0b1a1d85..3b1dbfe6f03e62ac9e12066d41516de157f99719 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -193,6 +193,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -195,6 +195,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.firstPlayed = System.currentTimeMillis();
}
@@ -22849,7 +22849,7 @@ index 57d714cc8724db1fe75ec5acf6cb0f20dc9bce12..5eb25bb87443b533029ac49dead86173
return this.getHandle().getGameProfile();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
-index 2f0dea0f9540d07f8b38029652fd66c1871dd97c..a7fe78e655a0f4a2c4464e334ea04cf95b9afcd0 100644
+index 02173e8d859d6731836239e0d2dff2be4680e7d1..c3972ba41ad61af4c423e6f942ac984dc61716f0 100644
--- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
@@ -265,7 +265,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator {
diff --git a/patches/server/0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch b/patches/server/0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch
index 0b09e566b0..073f6932ba 100644
--- a/patches/server/0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch
+++ b/patches/server/0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch
@@ -19,10 +19,10 @@ index bea4e947577ee2f5fd680eb932409283f8504ee7..b9a49f92e38daf4f80b6d3bf465eb9d2
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index db1895c2227fd41d9d6ce3f8f0ca2ceb41610f9d..4a45d0d4d2e8d7bd0728225a70b9d469058bfa3e 100644
+index 2d0d6dbcb515de0d81079a1d6b68c9b2bd973893..d5731088df47fa49e3248dfbcd755de7cd91efbd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -262,7 +262,7 @@ import org.yaml.snakeyaml.error.MarkedYAMLException;
+@@ -263,7 +263,7 @@ import org.yaml.snakeyaml.error.MarkedYAMLException;
import net.md_5.bungee.api.chat.BaseComponent; // Spigot
public final class CraftServer implements Server {
@@ -32,11 +32,11 @@ index db1895c2227fd41d9d6ce3f8f0ca2ceb41610f9d..4a45d0d4d2e8d7bd0728225a70b9d469
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index 1d86415570b906ecf2f2c6915694ee26210d2219..d9424ce7726eba4a352444b53d31c788d0923049 100644
+index ff955d3a20bf953770cc81f8b89a6d4425a5f813..268192b06592eaa56a454e0f02b2d848f766d9ac 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -240,12 +240,25 @@ public class Main {
- deadline.add(Calendar.DAY_OF_YEAR, -7);
+ deadline.add(Calendar.DAY_OF_YEAR, -21);
if (buildDate.before(deadline.getTime())) {
System.err.println("*** Error, this build is outdated ***");
- System.err.println("*** Please download a new build as per instructions from https://www.spigotmc.org/go/outdated-spigot ***");
diff --git a/patches/server/0030-Player-affects-spawning-API.patch b/patches/server/0030-Player-affects-spawning-API.patch
index b8c4e8dee4..9876f7d4a6 100644
--- a/patches/server/0030-Player-affects-spawning-API.patch
+++ b/patches/server/0030-Player-affects-spawning-API.patch
@@ -137,10 +137,10 @@ index be6e3e21ad62da01e5e2dd78e300cbc8efdbeb42..ea98625fe7c00743b8df74a24e6d4b75
for(Player player : this.players()) {
if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 5eb25bb87443b533029ac49dead86173b7ab55eb..7bcf858bf9a0ab97a89efc26a22376c46229d1ca 100644
+index 3b1dbfe6f03e62ac9e12066d41516de157f99719..d5f858f07a0b93e439acf676f4c5eefa61f50db0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2202,8 +2202,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2234,8 +2234,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getLocale() {
return this.getHandle().locale;
diff --git a/patches/server/0031-Further-improve-server-tick-loop.patch b/patches/server/0031-Further-improve-server-tick-loop.patch
index f13069d771..337c022360 100644
--- a/patches/server/0031-Further-improve-server-tick-loop.patch
+++ b/patches/server/0031-Further-improve-server-tick-loop.patch
@@ -145,10 +145,10 @@ index b9a49f92e38daf4f80b6d3bf465eb9d249606976..71c8bb318b2e99b7d0b91196ac0b1b5b
this.startMetricsRecordingTick();
this.profiler.push("tick");
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 4a45d0d4d2e8d7bd0728225a70b9d469058bfa3e..68692c36a0db6ac3048dcfac91c154974e5e917f 100644
+index d5731088df47fa49e3248dfbcd755de7cd91efbd..9b725fe12c6f81b02ebea7a12a7c1312a27c6cb1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2472,6 +2472,17 @@ public final class CraftServer implements Server {
+@@ -2473,6 +2473,17 @@ public final class CraftServer implements Server {
return CraftMagicNumbers.INSTANCE;
}
diff --git a/patches/server/0032-Only-refresh-abilities-if-needed.patch b/patches/server/0032-Only-refresh-abilities-if-needed.patch
index d22500a8e2..046893c840 100644
--- a/patches/server/0032-Only-refresh-abilities-if-needed.patch
+++ b/patches/server/0032-Only-refresh-abilities-if-needed.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Only refresh abilities if needed
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 7bcf858bf9a0ab97a89efc26a22376c46229d1ca..908cff4daf9c4218c8f93fdb7df9e9fa65b06d6f 100644
+index d5f858f07a0b93e439acf676f4c5eefa61f50db0..bd570b123d571437e8b2af8c1e68e0d5d66ee37b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1877,12 +1877,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1909,12 +1909,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setFlying(boolean value) {
diff --git a/patches/server/0045-Implement-PlayerLocaleChangeEvent.patch b/patches/server/0045-Implement-PlayerLocaleChangeEvent.patch
index d6af279094..c26fe860cd 100644
--- a/patches/server/0045-Implement-PlayerLocaleChangeEvent.patch
+++ b/patches/server/0045-Implement-PlayerLocaleChangeEvent.patch
@@ -30,10 +30,10 @@ index 1ef48b8415242942f00c6a76faa1de2865e11358..bcf0d4cfbfbae254bc74ad6389af372a
this.locale = packet.language;
// Paper start
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 908cff4daf9c4218c8f93fdb7df9e9fa65b06d6f..705734e2f26f8deab8ac9ad929d7b5e29181ace3 100644
+index bd570b123d571437e8b2af8c1e68e0d5d66ee37b..f5e4713bd9f6d0661f4e8d45c0b7cfffcb2bce57 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2202,8 +2202,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2234,8 +2234,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getLocale() {
diff --git a/patches/server/0052-Ensure-commands-are-not-ran-async.patch b/patches/server/0052-Ensure-commands-are-not-ran-async.patch
index 1c3081a40c..cbf81f326b 100644
--- a/patches/server/0052-Ensure-commands-are-not-ran-async.patch
+++ b/patches/server/0052-Ensure-commands-are-not-ran-async.patch
@@ -21,10 +21,10 @@ character.
Co-authored-by: Jake Potrebic <[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 142ffdf61b8f69e9d948b75a424de97ee31e1a87..bd6b4a13b18bd13a6024c92a247503a87102e7c5 100644
+index 713cd247615f91fc0f762e59eae35a376ffce754..c69a2da951af082b8dc90baf35b7e020ffda0b5e 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2044,7 +2044,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2046,7 +2046,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
return true;
}
@@ -33,7 +33,7 @@ index 142ffdf61b8f69e9d948b75a424de97ee31e1a87..bd6b4a13b18bd13a6024c92a247503a8
for (int i = 0; i < message.length(); ++i) {
if (!SharedConstants.isAllowedChatCharacter(message.charAt(i))) {
return true;
-@@ -2061,7 +2061,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2063,7 +2063,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
OutgoingChatMessage outgoing = OutgoingChatMessage.create(original);
@@ -42,7 +42,7 @@ index 142ffdf61b8f69e9d948b75a424de97ee31e1a87..bd6b4a13b18bd13a6024c92a247503a8
this.handleCommand(s);
} else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) {
// Do nothing, this is coming from a plugin
-@@ -2151,7 +2151,29 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2147,7 +2147,29 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
}
@@ -74,10 +74,10 @@ index 142ffdf61b8f69e9d948b75a424de97ee31e1a87..bd6b4a13b18bd13a6024c92a247503a8
if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 68692c36a0db6ac3048dcfac91c154974e5e917f..06bb2fd95dd0193101f8ee4e9082df0c079a3dd7 100644
+index 9b725fe12c6f81b02ebea7a12a7c1312a27c6cb1..40c874d8f6a4d281078aadc34602bfbc6389df2a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -885,6 +885,28 @@ public final class CraftServer implements Server {
+@@ -886,6 +886,28 @@ public final class CraftServer implements Server {
Preconditions.checkArgument(commandLine != null, "commandLine cannot be null");
org.spigotmc.AsyncCatcher.catchOp("command dispatch"); // Spigot
@@ -107,10 +107,10 @@ index 68692c36a0db6ac3048dcfac91c154974e5e917f..06bb2fd95dd0193101f8ee4e9082df0c
return true;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 705734e2f26f8deab8ac9ad929d7b5e29181ace3..d96e0bb4277d83602d4062dc33e6e420a28bf2da 100644
+index f5e4713bd9f6d0661f4e8d45c0b7cfffcb2bce57..d9031a89cc087fef8c39bcb93c68d07b8b2ab474 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -490,7 +490,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -492,7 +492,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (this.getHandle().connection == null) return;
diff --git a/patches/server/0054-Expose-server-CommandMap.patch b/patches/server/0054-Expose-server-CommandMap.patch
index 630c4232a6..59d197fc04 100644
--- a/patches/server/0054-Expose-server-CommandMap.patch
+++ b/patches/server/0054-Expose-server-CommandMap.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose server CommandMap
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 06bb2fd95dd0193101f8ee4e9082df0c079a3dd7..bb7f5364a3aa9680cd0cef1bd3e12ccf69491358 100644
+index 40c874d8f6a4d281078aadc34602bfbc6389df2a..a4d530e81a319ea53122760e352083b9708f9f04 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2034,6 +2034,7 @@ public final class CraftServer implements Server {
+@@ -2035,6 +2035,7 @@ public final class CraftServer implements Server {
return this.helpMap;
}
diff --git a/patches/server/0056-Player-Tab-List-and-Title-APIs.patch b/patches/server/0056-Player-Tab-List-and-Title-APIs.patch
index 0f3a1843f3..6fadafb931 100644
--- a/patches/server/0056-Player-Tab-List-and-Title-APIs.patch
+++ b/patches/server/0056-Player-Tab-List-and-Title-APIs.patch
@@ -63,7 +63,7 @@ index bd808eb312ade7122973a47f4b96505829511da5..bf0f9cab7c66c089f35b851e799ba4a4
// Paper end
buf.writeComponent(this.text);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index d96e0bb4277d83602d4062dc33e6e420a28bf2da..268cd764c1543a9a7e43013f47a81aaa5a55d108 100644
+index d9031a89cc087fef8c39bcb93c68d07b8b2ab474..b6f8885196f806174f7d611c778fc1f74129d6d4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1,5 +1,6 @@
@@ -73,7 +73,7 @@ index d96e0bb4277d83602d4062dc33e6e420a28bf2da..268cd764c1543a9a7e43013f47a81aaa
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import com.google.common.io.BaseEncoding;
-@@ -332,6 +333,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -334,6 +335,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
diff --git a/patches/server/0058-Add-velocity-warnings.patch b/patches/server/0058-Add-velocity-warnings.patch
index 9212f03f1f..ddd530562c 100644
--- a/patches/server/0058-Add-velocity-warnings.patch
+++ b/patches/server/0058-Add-velocity-warnings.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add velocity warnings
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index bb7f5364a3aa9680cd0cef1bd3e12ccf69491358..bc8d567d549ae8fb3a972cb93b50de82daf9fb49 100644
+index a4d530e81a319ea53122760e352083b9708f9f04..81758ba9193fad39a291c635c41d2cdbef34c1c2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -298,6 +298,7 @@ public final class CraftServer implements Server {
+@@ -299,6 +299,7 @@ public final class CraftServer implements Server {
public boolean ignoreVanillaPermissions = false;
private final List<CraftPlayer> playerView;
public int reloadCount;
diff --git a/patches/server/0059-Configurable-inter-world-teleportation-safety.patch b/patches/server/0059-Configurable-inter-world-teleportation-safety.patch
index a6d5ccab2c..1e45747e48 100644
--- a/patches/server/0059-Configurable-inter-world-teleportation-safety.patch
+++ b/patches/server/0059-Configurable-inter-world-teleportation-safety.patch
@@ -16,10 +16,10 @@ The wanted destination was on top of the emerald block however the player ended
This only is the case if the player is teleporting between worlds.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 268cd764c1543a9a7e43013f47a81aaa5a55d108..78d31da062792c12f069e929ebe89ab5a624b7d8 100644
+index b6f8885196f806174f7d611c778fc1f74129d6d4..3ec282a272257996fad17c3ac23b334aca344bb0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1158,7 +1158,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1160,7 +1160,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
entity.connection.teleport(to);
} else {
// The respawn reason should never be used if the passed location is non null.
diff --git a/patches/server/0065-Complete-resource-pack-API.patch b/patches/server/0065-Complete-resource-pack-API.patch
index 0c45491c5d..e1dea6c95b 100644
--- a/patches/server/0065-Complete-resource-pack-API.patch
+++ b/patches/server/0065-Complete-resource-pack-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Complete resource pack API
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index bd6b4a13b18bd13a6024c92a247503a87102e7c5..f4972161eace2af0c857374a7fa36a98fa0fb857 100644
+index c69a2da951af082b8dc90baf35b7e020ffda0b5e..cad7df80d4914b533ce9db1a10b5923b5ffe578b 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1758,8 +1758,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1760,8 +1760,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
ServerGamePacketListenerImpl.LOGGER.info("Disconnecting {} due to resource pack rejection", this.player.getName());
this.disconnect(Component.translatable("multiplayer.requiredTexturePrompt.disconnect"));
}
@@ -23,10 +23,10 @@ index bd6b4a13b18bd13a6024c92a247503a87102e7c5..f4972161eace2af0c857374a7fa36a98
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 78d31da062792c12f069e929ebe89ab5a624b7d8..c64bc467994609d6cc49c598435cac997ea619e5 100644
+index 3ec282a272257996fad17c3ac23b334aca344bb0..87c597ad5e7cc76db7a5da4e3d97e044ce9f8594 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -187,6 +187,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -189,6 +189,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private double healthScale = 20;
private CraftWorldBorder clientWorldBorder = null;
private BorderChangeListener clientWorldBorderListener = this.createWorldBorderListener();
@@ -37,7 +37,7 @@ index 78d31da062792c12f069e929ebe89ab5a624b7d8..c64bc467994609d6cc49c598435cac99
public CraftPlayer(CraftServer server, ServerPlayer entity) {
super(server, entity);
-@@ -2325,6 +2329,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2357,6 +2361,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean getAffectsSpawning() {
return this.getHandle().affectsSpawning;
}
diff --git a/patches/server/0066-Default-loading-permissions.yml-before-plugins.patch b/patches/server/0066-Default-loading-permissions.yml-before-plugins.patch
index 016734009a..ff1052ed5c 100644
--- a/patches/server/0066-Default-loading-permissions.yml-before-plugins.patch
+++ b/patches/server/0066-Default-loading-permissions.yml-before-plugins.patch
@@ -16,10 +16,10 @@ modify that. Under the previous logic, plugins were unable (cleanly) override pe
A config option has been added for those who depend on the previous behavior, but I don't expect that.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index bc8d567d549ae8fb3a972cb93b50de82daf9fb49..7ad781b0270b95bae7f28fdad1e94a1ea75090fc 100644
+index 81758ba9193fad39a291c635c41d2cdbef34c1c2..49dada0a2b97552f080cda0b928f284ff02a25a3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -459,6 +459,7 @@ public final class CraftServer implements Server {
+@@ -460,6 +460,7 @@ public final class CraftServer implements Server {
if (type == PluginLoadOrder.STARTUP) {
this.helpMap.clear();
this.helpMap.initializeGeneralTopics();
@@ -27,7 +27,7 @@ index bc8d567d549ae8fb3a972cb93b50de82daf9fb49..7ad781b0270b95bae7f28fdad1e94a1e
}
Plugin[] plugins = this.pluginManager.getPlugins();
-@@ -478,7 +479,7 @@ public final class CraftServer implements Server {
+@@ -479,7 +480,7 @@ public final class CraftServer implements Server {
this.commandMap.registerServerAliases();
DefaultPermissions.registerCorePermissions();
CraftDefaultPermissions.registerCorePermissions();
diff --git a/patches/server/0067-Allow-Reloading-of-Custom-Permissions.patch b/patches/server/0067-Allow-Reloading-of-Custom-Permissions.patch
index 889bfaa12d..9f92b3f146 100644
--- a/patches/server/0067-Allow-Reloading-of-Custom-Permissions.patch
+++ b/patches/server/0067-Allow-Reloading-of-Custom-Permissions.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Allow Reloading of Custom Permissions
https://github.com/PaperMC/Paper/issues/49
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 7ad781b0270b95bae7f28fdad1e94a1ea75090fc..89ba5fb4be6ae481b1765506ed6a0bd37faaa9b6 100644
+index 49dada0a2b97552f080cda0b928f284ff02a25a3..3ce3ecec506930910c0c39a16d89e94ab79ae6f3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2638,5 +2638,23 @@ public final class CraftServer implements Server {
+@@ -2639,5 +2639,23 @@ public final class CraftServer implements Server {
}
return this.adventure$audiences;
}
diff --git a/patches/server/0068-Remove-Metadata-on-reload.patch b/patches/server/0068-Remove-Metadata-on-reload.patch
index 170bae4de0..e2a0ea4a9a 100644
--- a/patches/server/0068-Remove-Metadata-on-reload.patch
+++ b/patches/server/0068-Remove-Metadata-on-reload.patch
@@ -7,10 +7,10 @@ Metadata is not meant to persist reload as things break badly with non primitive
This will remove metadata on reload so it does not crash everything if a plugin uses it.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 89ba5fb4be6ae481b1765506ed6a0bd37faaa9b6..05cb57584949679130bf7c5d7d3524463d6c9e7b 100644
+index 3ce3ecec506930910c0c39a16d89e94ab79ae6f3..7d6b5007c386ec174ccaf0abc48862f2f7cd8789 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -972,8 +972,16 @@ public final class CraftServer implements Server {
+@@ -973,8 +973,16 @@ public final class CraftServer implements Server {
world.spigotConfig.init(); // Spigot
}
diff --git a/patches/server/0069-Handle-Item-Meta-Inconsistencies.patch b/patches/server/0069-Handle-Item-Meta-Inconsistencies.patch
index edebc4ad01..0d40e0bab2 100644
--- a/patches/server/0069-Handle-Item-Meta-Inconsistencies.patch
+++ b/patches/server/0069-Handle-Item-Meta-Inconsistencies.patch
@@ -18,7 +18,7 @@ For consistency, the old API methods now forward to use the
ItemMeta API equivalents, and should deprecate the old API's.
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index c2b93eaf73ce038559611c272b6e3ecc2bcb903b..940caf9b7526019ace656ff88146f198ba6b62ed 100644
+index 3f18fb61a47dda559a6997af9c6c043423dd206a..c33660718c0ea281d7bcdb15df0568d4d46547e2 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -156,6 +156,23 @@ public final class ItemStack {
@@ -53,7 +53,7 @@ index c2b93eaf73ce038559611c272b6e3ecc2bcb903b..940caf9b7526019ace656ff88146f198
this.getItem().verifyTagAfterLoad(this.tag);
}
-@@ -810,6 +828,7 @@ public final class ItemStack {
+@@ -814,6 +832,7 @@ public final class ItemStack {
public void setTag(@Nullable CompoundTag nbt) {
this.tag = nbt;
@@ -61,7 +61,7 @@ index c2b93eaf73ce038559611c272b6e3ecc2bcb903b..940caf9b7526019ace656ff88146f198
if (this.getItem().canBeDepleted()) {
this.setDamageValue(this.getDamageValue());
}
-@@ -1107,6 +1126,7 @@ public final class ItemStack {
+@@ -1111,6 +1130,7 @@ public final class ItemStack {
ListTag nbttaglist = this.tag.getList("Enchantments", 10);
nbttaglist.add(EnchantmentHelper.storeEnchantment(EnchantmentHelper.getEnchantmentId(enchantment), (byte) level));
diff --git a/patches/server/0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch b/patches/server/0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch
index 685c26f0e1..a9bb4ac32a 100644
--- a/patches/server/0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch
+++ b/patches/server/0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch
@@ -44,10 +44,10 @@ index d8ecc90465dfc54319d7f2478979e9aaee42f5a2..45a93601ff9ec79db0ceefb92eecfc97
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index c64bc467994609d6cc49c598435cac997ea619e5..8b594be03e0627789e5b724cbc08329795ed46e5 100644
+index 87c597ad5e7cc76db7a5da4e3d97e044ce9f8594..875784e3d1d89c8fd5e4e3f9cec2e37c93e17570 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2122,6 +2122,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2154,6 +2154,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setRealHealth(double health) {
diff --git a/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch b/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch
index d91e65ee95..8e81fc3161 100644
--- a/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch
+++ b/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch
@@ -22,10 +22,10 @@ index a5d57cc862036012d83b090bb1b3ccf4115a88b3..21068f766b75c414d5818073b7dca083
static final ServerboundInteractPacket.Action ATTACK_ACTION = new ServerboundInteractPacket.Action() {
@Override
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index b6e86042d050cf95c8c9a94809bcf49736e5bd9a..3fb87f80087747c6f888e8bb0bf3deb40aa9419e 100644
+index cad7df80d4914b533ce9db1a10b5923b5ffe578b..ae66a8a222bc27986bab0f7896e0eacfd6044b31 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2544,8 +2544,37 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2543,8 +2543,37 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
});
}
}
diff --git a/patches/server/0105-Add-setting-for-proxy-online-mode-status.patch b/patches/server/0105-Add-setting-for-proxy-online-mode-status.patch
index 702880edc6..896a2f68aa 100644
--- a/patches/server/0105-Add-setting-for-proxy-online-mode-status.patch
+++ b/patches/server/0105-Add-setting-for-proxy-online-mode-status.patch
@@ -43,10 +43,10 @@ index da98f074ccd5a40c635824112c97fd174c393cb1..6599f874d9f97e9ef4862039ecad7277
} else {
String[] astring1 = astring;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 05cb57584949679130bf7c5d7d3524463d6c9e7b..a8b26d4360f57665afe8e39ab1ba87a7d6d15867 100644
+index 7d6b5007c386ec174ccaf0abc48862f2f7cd8789..0a0ea4d8159a5ee8ca640d8c39f2ff78889a4712 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1743,7 +1743,7 @@ public final class CraftServer implements Server {
+@@ -1744,7 +1744,7 @@ public final class CraftServer implements Server {
// Spigot Start
GameProfile profile = null;
// Only fetch an online UUID in online mode
diff --git a/patches/server/0107-Configurable-packet-in-spam-threshold.patch b/patches/server/0107-Configurable-packet-in-spam-threshold.patch
index 43dcb64cef..3691d66528 100644
--- a/patches/server/0107-Configurable-packet-in-spam-threshold.patch
+++ b/patches/server/0107-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 3fb87f80087747c6f888e8bb0bf3deb40aa9419e..50872f8d2a9046f7fee57b5d0e9c5af48927dafc 100644
+index ae66a8a222bc27986bab0f7896e0eacfd6044b31..a73395c9c599f4f83738672a925e2852ca784cf7 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1598,13 +1598,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1600,13 +1600,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Spigot start - limit place/interactions
private int limitedPackets;
private long lastLimitedPacket = -1;
diff --git a/patches/server/0108-Configurable-flying-kick-messages.patch b/patches/server/0108-Configurable-flying-kick-messages.patch
index a7a46a8d7b..3f30166732 100644
--- a/patches/server/0108-Configurable-flying-kick-messages.patch
+++ b/patches/server/0108-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 3ac549815895e6cbb43cbfc04377337f8b7ebd43..c33b94701a8c4f3198671405d32467d9645bf87f 100644
+index a73395c9c599f4f83738672a925e2852ca784cf7..631eaf856daa09151e62e192296ba143213d6f29 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 implements ServerPlayerConnection, Tic
+@@ -357,7 +357,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (this.clientIsFloating && !this.player.isSleeping() && !this.player.isPassenger() && !this.player.isDeadOrDying()) {
if (++this.aboveGroundTickCount > 80) {
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating too long!", this.player.getName().getString());
@@ -17,7 +17,7 @@ index 3ac549815895e6cbb43cbfc04377337f8b7ebd43..c33b94701a8c4f3198671405d32467d9
return;
}
} else {
-@@ -374,7 +374,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -376,7 +376,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (this.clientVehicleIsFloating && this.player.getRootVehicle().getControllingPassenger() == this.player) {
if (++this.aboveGroundVehicleTickCount > 80) {
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating a vehicle too long!", this.player.getName().getString());
diff --git a/patches/server/0109-Add-EntityZapEvent.patch b/patches/server/0109-Add-EntityZapEvent.patch
index 6b94eb3102..bf45bb8885 100644
--- a/patches/server/0109-Add-EntityZapEvent.patch
+++ b/patches/server/0109-Add-EntityZapEvent.patch
@@ -28,10 +28,10 @@ index f9704b20e71564ac721a24655b2792c689edf6ba..e04f3f1159c5d5fa2e3956a36e95f8af
entitywitch.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch.blockPosition()), MobSpawnType.CONVERSION, (SpawnGroupData) null, (CompoundTag) null);
entitywitch.setNoAi(this.isNoAi());
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 8c9e545b8508172be51c9f244d7067509d32aef9..e9355d4594d1a3d1dbbdd7be5207f1a384546d5d 100644
+index db30af9b6b9e737066c8a011e4dfe377f800f523..3849e30f8fad46feefaa901283ad776a93561e23 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1212,6 +1212,14 @@ public class CraftEventFactory {
+@@ -1238,6 +1238,14 @@ public class CraftEventFactory {
return !event.isCancelled();
}
diff --git a/patches/server/0112-Allow-Reloading-of-Command-Aliases.patch b/patches/server/0112-Allow-Reloading-of-Command-Aliases.patch
index 55dce61ef3..fd3f5a08a8 100644
--- a/patches/server/0112-Allow-Reloading-of-Command-Aliases.patch
+++ b/patches/server/0112-Allow-Reloading-of-Command-Aliases.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Allow Reloading of Command Aliases
Reload the aliases stored in commands.yml
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index a8b26d4360f57665afe8e39ab1ba87a7d6d15867..9acc18ca45cc4e55bcd8a1624f27245a7ae81096 100644
+index 0a0ea4d8159a5ee8ca640d8c39f2ff78889a4712..6014cf7de9a6a41b0c5ff03bfd2c88d55edd53e3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2664,5 +2664,24 @@ public final class CraftServer implements Server {
+@@ -2665,5 +2665,24 @@ public final class CraftServer implements Server {
DefaultPermissions.registerCorePermissions();
CraftDefaultPermissions.registerCorePermissions();
}
diff --git a/patches/server/0113-Add-source-to-PlayerExpChangeEvent.patch b/patches/server/0113-Add-source-to-PlayerExpChangeEvent.patch
index f3b78dba30..319781402a 100644
--- a/patches/server/0113-Add-source-to-PlayerExpChangeEvent.patch
+++ b/patches/server/0113-Add-source-to-PlayerExpChangeEvent.patch
@@ -18,10 +18,10 @@ index 93c83cfedc7d3a169ad0504aa6e63f600873501b..9dffdfe5bbd0517e9a2c6a6770eea07b
--this.count;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index e9355d4594d1a3d1dbbdd7be5207f1a384546d5d..5fe27d6aad6d904234543bd5fc8fe3d7c1852840 100644
+index 3849e30f8fad46feefaa901283ad776a93561e23..505f4658dc7b92bf22071e43963ce66f5f2f655b 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1165,6 +1165,17 @@ public class CraftEventFactory {
+@@ -1191,6 +1191,17 @@ public class CraftEventFactory {
return event;
}
diff --git a/patches/server/0114-Add-ProjectileCollideEvent.patch b/patches/server/0114-Add-ProjectileCollideEvent.patch
index 594a0fd09b..57c4eb52fe 100644
--- a/patches/server/0114-Add-ProjectileCollideEvent.patch
+++ b/patches/server/0114-Add-ProjectileCollideEvent.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add ProjectileCollideEvent
Deprecated now and replaced with ProjectileHitEvent
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 5fe27d6aad6d904234543bd5fc8fe3d7c1852840..515e8886d04668598b6725ba11f75f40ed35d4e7 100644
+index 505f4658dc7b92bf22071e43963ce66f5f2f655b..ceb8d024888425248cb40eb3fbbe39fc4be1207b 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1309,6 +1309,17 @@ public class CraftEventFactory {
+@@ -1335,6 +1335,17 @@ public class CraftEventFactory {
return CraftItemStack.asNMSCopy(bitem);
}
@@ -27,7 +27,7 @@ index 5fe27d6aad6d904234543bd5fc8fe3d7c1852840..515e8886d04668598b6725ba11f75f40
public static ProjectileLaunchEvent callProjectileLaunchEvent(Entity entity) {
Projectile bukkitEntity = (Projectile) entity.getBukkitEntity();
ProjectileLaunchEvent event = new ProjectileLaunchEvent(bukkitEntity);
-@@ -1333,8 +1344,15 @@ public class CraftEventFactory {
+@@ -1359,8 +1370,15 @@ public class CraftEventFactory {
if (position.getType() == HitResult.Type.ENTITY) {
hitEntity = ((EntityHitResult) position).getEntity().getBukkitEntity();
}
diff --git a/patches/server/0120-String-based-Action-Bar-API.patch b/patches/server/0120-String-based-Action-Bar-API.patch
index e4226df63e..2d13d5e023 100644
--- a/patches/server/0120-String-based-Action-Bar-API.patch
+++ b/patches/server/0120-String-based-Action-Bar-API.patch
@@ -26,10 +26,10 @@ index 32ef3edebe94a2014168b7e438752a80b2687e5f..ab6c58eed6707ab7b0aa3e7549a871ad
// Paper end
buf.writeComponent(this.text);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 8b594be03e0627789e5b724cbc08329795ed46e5..1ad53070a0725daa0622598de82382dd3e26624d 100644
+index 875784e3d1d89c8fd5e4e3f9cec2e37c93e17570..bef8c20e784244acf17128a68adfe5612812a612 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -338,6 +338,29 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -340,6 +340,29 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// Paper start
diff --git a/patches/server/0121-Properly-fix-item-duplication-bug.patch b/patches/server/0121-Properly-fix-item-duplication-bug.patch
index fdbc6ba392..025a46dc3e 100644
--- a/patches/server/0121-Properly-fix-item-duplication-bug.patch
+++ b/patches/server/0121-Properly-fix-item-duplication-bug.patch
@@ -6,7 +6,7 @@ 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 b4ea4c63a6cd767684d6c3c68a192a90c82d2e91..6051ad00973c80ad3478e2ff9063c268489f358b 100644
+index 9e182c4cdf54c9ca7701660df72052d5c8936a55..5c855a15f7847ca37c263755f643eeb1fd79668b 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2392,7 +2392,7 @@ public class ServerPlayer extends Player {
@@ -19,10 +19,10 @@ index b4ea4c63a6cd767684d6c3c68a192a90c82d2e91..6051ad00973c80ad3478e2ff9063c268
@Override
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 2deb6ba6ec38314d65500a1ef15269401d90a1c2..38d8a2d5fa3e911c99e3e06c99ea18afbe89c0b3 100644
+index 631eaf856daa09151e62e192296ba143213d6f29..12ce6ef8163fa46c1f5bc1f88011cd862b8bad89 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3152,7 +3152,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3160,7 +3160,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
public final boolean isDisconnected() {
diff --git a/patches/server/0122-Firework-API-s.patch b/patches/server/0122-Firework-API-s.patch
index ac1814d178..16b867bd75 100644
--- a/patches/server/0122-Firework-API-s.patch
+++ b/patches/server/0122-Firework-API-s.patch
@@ -44,10 +44,10 @@ index b16add0be6ac782a7e40be0cdeea4c1829a19d4e..288910fb168ddc5d3a61971778b8038a
@Override
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
-index da12a95c230129a3a57dc3d2d7d64012dd8bbae6..9bea5e94c246d843f3d67680ffb57075bd9d3467 100644
+index ac7371882d15746e9353865635d0bb716f890c53..ba570f1c9654e1004e068a1efe2118f36c954505 100644
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
-@@ -221,6 +221,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
+@@ -217,6 +217,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
if (flag1) {
object = new FireworkRocketEntity(world, projectile, shooter, shooter.getX(), shooter.getEyeY() - 0.15000000596046448D, shooter.getZ(), true);
diff --git a/patches/server/0131-Add-option-to-make-parrots-stay-on-shoulders-despite.patch b/patches/server/0131-Add-option-to-make-parrots-stay-on-shoulders-despite.patch
index 86d217d44d..08e8aee95b 100644
--- a/patches/server/0131-Add-option-to-make-parrots-stay-on-shoulders-despite.patch
+++ b/patches/server/0131-Add-option-to-make-parrots-stay-on-shoulders-despite.patch
@@ -14,10 +14,10 @@ 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 7a4b763e4b7005cf7df75ca9217897faed433b39..c5df103a1addefb1c11132a4b406bcdf3e8f455f 100644
+index 12ce6ef8163fa46c1f5bc1f88011cd862b8bad89..42994574854cae3ca288c8ab7698a95a44693314 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2332,6 +2332,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2331,6 +2331,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
switch (packet.getAction()) {
case PRESS_SHIFT_KEY:
this.player.setShiftKeyDown(true);
diff --git a/patches/server/0132-Add-configuration-option-to-prevent-player-names-fro.patch b/patches/server/0132-Add-configuration-option-to-prevent-player-names-fro.patch
index 6913a31864..aa6e08e49e 100644
--- a/patches/server/0132-Add-configuration-option-to-prevent-player-names-fro.patch
+++ b/patches/server/0132-Add-configuration-option-to-prevent-player-names-fro.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add configuration option to prevent player names from being
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 9acc18ca45cc4e55bcd8a1624f27245a7ae81096..fd608bb0423b7dc2076035210cb816134c9ce4c0 100644
+index 6014cf7de9a6a41b0c5ff03bfd2c88d55edd53e3..14d51e174f6acdc3606faa5ccd6ba3f1e8cf4749 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2683,5 +2683,10 @@ public final class CraftServer implements Server {
+@@ -2684,5 +2684,10 @@ public final class CraftServer implements Server {
commandMap.registerServerAliases();
return true;
}
diff --git a/patches/server/0133-Use-TerminalConsoleAppender-for-console-improvements.patch b/patches/server/0133-Use-TerminalConsoleAppender-for-console-improvements.patch
index 09fbbbb252..4a6fe9c6d3 100644
--- a/patches/server/0133-Use-TerminalConsoleAppender-for-console-improvements.patch
+++ b/patches/server/0133-Use-TerminalConsoleAppender-for-console-improvements.patch
@@ -389,10 +389,10 @@ index bc96f426d488d2a206b763dccdc4034fe24f269d..82db70c548336ada2af556251b8ae8d1
this.bans = new UserBanList(PlayerList.USERBANLIST_FILE);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index fd608bb0423b7dc2076035210cb816134c9ce4c0..059d43512dae19515abdeeb49c36c7e8b7f64cf5 100644
+index 14d51e174f6acdc3606faa5ccd6ba3f1e8cf4749..8f407e9abe705a18e8b47902291ece9c42eab51c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -43,7 +43,6 @@ import java.util.logging.Level;
+@@ -44,7 +44,6 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.imageio.ImageIO;
@@ -400,7 +400,7 @@ index fd608bb0423b7dc2076035210cb816134c9ce4c0..059d43512dae19515abdeeb49c36c7e8
import net.minecraft.advancements.Advancement;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
-@@ -1311,9 +1310,13 @@ public final class CraftServer implements Server {
+@@ -1312,9 +1311,13 @@ public final class CraftServer implements Server {
return this.logger;
}
@@ -415,7 +415,7 @@ index fd608bb0423b7dc2076035210cb816134c9ce4c0..059d43512dae19515abdeeb49c36c7e8
@Override
public PluginCommand getPluginCommand(String name) {
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index b74b300fbb27fe93b150ecba874e05dfa57a1371..21b1636ca97865c05de26dfca7e4f86b8e66dee8 100644
+index 4646911b65129d49b2398c7d86f2d6aa9213fe97..c5a403bc04fcb7a0fbc1dd1fe9ebf374e6a62af3 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -13,7 +13,6 @@ import java.util.logging.Logger;
diff --git a/patches/server/0139-Add-UnknownCommandEvent.patch b/patches/server/0139-Add-UnknownCommandEvent.patch
index 170735d169..0397d711b1 100644
--- a/patches/server/0139-Add-UnknownCommandEvent.patch
+++ b/patches/server/0139-Add-UnknownCommandEvent.patch
@@ -83,10 +83,10 @@ index 2fdfc17ef3daf9fb5cc32c807292c71e256d5356..e3394864e29357fec036f9e616472aea
b1 = 0;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 059d43512dae19515abdeeb49c36c7e8b7f64cf5..e72b64dd855a824a2bb8b8791df845f1d9f000e1 100644
+index 8f407e9abe705a18e8b47902291ece9c42eab51c..06c215af9d6d4e73cd2bb6d799c35b890cc48e50 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -525,6 +525,7 @@ public final class CraftServer implements Server {
+@@ -526,6 +526,7 @@ public final class CraftServer implements Server {
}
node = clone;
}
@@ -94,7 +94,7 @@ index 059d43512dae19515abdeeb49c36c7e8b7f64cf5..e72b64dd855a824a2bb8b8791df845f1
dispatcher.getDispatcher().getRoot().addChild(node);
} else {
-@@ -914,7 +915,13 @@ public final class CraftServer implements Server {
+@@ -915,7 +916,13 @@ public final class CraftServer implements Server {
// Spigot start
if (!org.spigotmc.SpigotConfig.unknownCommandMessage.isEmpty()) {
diff --git a/patches/server/0140-Basic-PlayerProfile-API.patch b/patches/server/0140-Basic-PlayerProfile-API.patch
index 39ae6dc72a..c00b0cb45f 100644
--- a/patches/server/0140-Basic-PlayerProfile-API.patch
+++ b/patches/server/0140-Basic-PlayerProfile-API.patch
@@ -631,10 +631,10 @@ index 4038bb76339d43f18770624bd7fecc79b8d7f2a9..2456edc11b29a92b1648937cd3dd6a9a
String s1 = name.toLowerCase(Locale.ROOT);
GameProfileCache.GameProfileInfo usercache_usercacheentry = (GameProfileCache.GameProfileInfo) this.profilesByName.get(s1);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index e72b64dd855a824a2bb8b8791df845f1d9f000e1..2bed3141b49789324e4e7bbec802f50ac3745edf 100644
+index 06c215af9d6d4e73cd2bb6d799c35b890cc48e50..648c29d0c06655e88f450872e8bc672f38eaec26 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -260,6 +260,9 @@ import org.yaml.snakeyaml.error.MarkedYAMLException;
+@@ -261,6 +261,9 @@ import org.yaml.snakeyaml.error.MarkedYAMLException;
import net.md_5.bungee.api.chat.BaseComponent; // Spigot
@@ -644,7 +644,7 @@ index e72b64dd855a824a2bb8b8791df845f1d9f000e1..2bed3141b49789324e4e7bbec802f50a
public final class CraftServer implements Server {
private final String serverName = "Paper"; // Paper
private final String serverVersion;
-@@ -302,6 +305,7 @@ public final class CraftServer implements Server {
+@@ -303,6 +306,7 @@ public final class CraftServer implements Server {
static {
ConfigurationSerialization.registerClass(CraftOfflinePlayer.class);
ConfigurationSerialization.registerClass(CraftPlayerProfile.class);
@@ -652,7 +652,7 @@ index e72b64dd855a824a2bb8b8791df845f1d9f000e1..2bed3141b49789324e4e7bbec802f50a
CraftItemFactory.instance();
}
-@@ -2698,5 +2702,37 @@ public final class CraftServer implements Server {
+@@ -2699,5 +2703,37 @@ public final class CraftServer implements Server {
public boolean suggestPlayerNamesWhenNullTabCompletions() {
return io.papermc.paper.configuration.GlobalConfiguration.get().commands.suggestPlayerNamesWhenNullTabCompletions;
}
diff --git a/patches/server/0146-Implement-ensureServerConversions-API.patch b/patches/server/0146-Implement-ensureServerConversions-API.patch
index 439122668f..2567b6e615 100644
--- a/patches/server/0146-Implement-ensureServerConversions-API.patch
+++ b/patches/server/0146-Implement-ensureServerConversions-API.patch
@@ -7,18 +7,18 @@ 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 b187c4f436ac44a529675869dbf5bfddc4fac86f..878f69460aed825d5d3204030af2aaa731a99875 100644
+index 45872e28cabc655c170bee163d471acf5d913c00..7e9e365fdce960bb266a4616d4bdc6d434cb2187 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -449,5 +449,11 @@ public final class CraftItemFactory implements ItemFactory {
- public [email protected] Component displayName(@org.jetbrains.annotations.NotNull ItemStack itemStack) {
+@@ -469,4 +469,11 @@ public final class CraftItemFactory implements ItemFactory {
return io.papermc.paper.adventure.PaperAdventure.asAdventure(CraftItemStack.asNMSCopy(itemStack).getDisplayName());
}
+ // Paper end - Adventure
+
-+ // Paper start
++ // Paper start - ensure server conversions API
+ @Override
+ public ItemStack ensureServerConversions(ItemStack item) {
+ return CraftItemStack.asCraftMirror(CraftItemStack.asNMSCopy(item));
+ }
- // Paper end
++ // Paper end - ensure server conversions API
}
diff --git a/patches/server/0147-Implement-getI18NDisplayName.patch b/patches/server/0147-Implement-getI18NDisplayName.patch
index 4f1cfccf20..57dc64608b 100644
--- a/patches/server/0147-Implement-getI18NDisplayName.patch
+++ b/patches/server/0147-Implement-getI18NDisplayName.patch
@@ -8,14 +8,15 @@ 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 878f69460aed825d5d3204030af2aaa731a99875..f8475390d69bef6f3eca5a57d5f44021fabf4942 100644
+index 7e9e365fdce960bb266a4616d4bdc6d434cb2187..5aece14ec931f4c564e847a2797e92da8ffb569b 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -455,5 +455,18 @@ public final class CraftItemFactory implements ItemFactory {
- public ItemStack ensureServerConversions(ItemStack item) {
+@@ -476,4 +476,19 @@ public final class CraftItemFactory implements ItemFactory {
return CraftItemStack.asCraftMirror(CraftItemStack.asNMSCopy(item));
}
+ // Paper end - ensure server conversions API
+
++ // Paper start - add getI18NDisplayName
+ @Override
+ public String getI18NDisplayName(ItemStack item) {
+ net.minecraft.world.item.ItemStack nms = null;
@@ -28,5 +29,5 @@ index 878f69460aed825d5d3204030af2aaa731a99875..f8475390d69bef6f3eca5a57d5f44021
+
+ return nms != null ? net.minecraft.locale.Language.getInstance().getOrDefault(nms.getItem().getDescriptionId(nms)) : null;
+ }
- // Paper end
++ // Paper end - add getI18NDisplayName
}
diff --git a/patches/server/0149-Fix-this-stupid-bullshit.patch b/patches/server/0149-Fix-this-stupid-bullshit.patch
index 9bf2cda44e..9280b6f54a 100644
--- a/patches/server/0149-Fix-this-stupid-bullshit.patch
+++ b/patches/server/0149-Fix-this-stupid-bullshit.patch
@@ -31,12 +31,12 @@ index 8ff786c366332588a2df053438f23cc9fb7e2b84..c887d34171f89c731d76c4ca92c70be2
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 21b1636ca97865c05de26dfca7e4f86b8e66dee8..65c7b9bd1f8dcbe87f75967f35ac91b6a2016844 100644
+index c5a403bc04fcb7a0fbc1dd1fe9ebf374e6a62af3..c79afabed432ca9094967ae0e48b04133dc4c51b 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -257,10 +257,12 @@ public class Main {
Calendar deadline = Calendar.getInstance();
- deadline.add(Calendar.DAY_OF_YEAR, -7);
+ deadline.add(Calendar.DAY_OF_YEAR, -21);
if (buildDate.before(deadline.getTime())) {
- System.err.println("*** Error, this build is outdated ***");
+ // Paper start - This is some stupid bullshit
diff --git a/patches/server/0156-Add-PlayerJumpEvent.patch b/patches/server/0156-Add-PlayerJumpEvent.patch
index 996b320854..cfc42eb3af 100644
--- a/patches/server/0156-Add-PlayerJumpEvent.patch
+++ b/patches/server/0156-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 c5df103a1addefb1c11132a4b406bcdf3e8f455f..c720c85361110083b2dd622ab52791ded1f784a1 100644
+index 42994574854cae3ca288c8ab7698a95a44693314..79769e770e04f0852fabed7dc7367e87bd5be310 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1292,7 +1292,34 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1294,7 +1294,34 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
boolean flag = d7 > 0.0D;
if (this.player.onGround() && !packet.isOnGround() && flag) {
diff --git a/patches/server/0157-handle-ServerboundKeepAlivePacket-async.patch b/patches/server/0157-handle-ServerboundKeepAlivePacket-async.patch
index 7855e7bce2..797cfb76b8 100644
--- a/patches/server/0157-handle-ServerboundKeepAlivePacket-async.patch
+++ b/patches/server/0157-handle-ServerboundKeepAlivePacket-async.patch
@@ -15,10 +15,10 @@ also adding some additional logging in order to help work out what is causing
random disconnections for clients.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index c720c85361110083b2dd622ab52791ded1f784a1..04bff597b77e37ee90abecc2dabf8919c1ef4082 100644
+index 79769e770e04f0852fabed7dc7367e87bd5be310..924f520702723b3f44ac990f6222102119d16e9c 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3111,14 +3111,18 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3119,14 +3119,18 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleKeepAlive(ServerboundKeepAlivePacket packet) {
diff --git a/patches/server/0158-Expose-client-protocol-version-and-virtual-host.patch b/patches/server/0158-Expose-client-protocol-version-and-virtual-host.patch
index aa06a97466..e0c54ccb61 100644
--- a/patches/server/0158-Expose-client-protocol-version-and-virtual-host.patch
+++ b/patches/server/0158-Expose-client-protocol-version-and-virtual-host.patch
@@ -90,10 +90,10 @@ index 77d7f070cce1a47e41b5d4f5a1cc8c778352a126..a3b610cb1ed97a635677bc46ccdf0463
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 1ad53070a0725daa0622598de82382dd3e26624d..afe1de50ef9123df5138f29b0cfc75a8a7923af1 100644
+index bef8c20e784244acf17128a68adfe5612812a612..1adad65a3a9a547a4383cc0caa21a6445d072200 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -284,6 +284,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -286,6 +286,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
diff --git a/patches/server/0159-revert-serverside-behavior-of-keepalives.patch b/patches/server/0159-revert-serverside-behavior-of-keepalives.patch
index fff61a500a..ac989d98a2 100644
--- a/patches/server/0159-revert-serverside-behavior-of-keepalives.patch
+++ b/patches/server/0159-revert-serverside-behavior-of-keepalives.patch
@@ -17,10 +17,10 @@ from networking or during connections flood of chunk packets on slower clients,
at the cost of dead connections being kept open for longer.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 04bff597b77e37ee90abecc2dabf8919c1ef4082..e206753e5b34b6ab7bd241a77a67e0cdcfa662d1 100644
+index 924f520702723b3f44ac990f6222102119d16e9c..31bbd7f9db45f73e34b3cddcf4e66ccd034a1d10 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -259,7 +259,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -261,7 +261,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
public ServerPlayer player;
private int tickCount;
private int ackBlockChangesUpTo = -1;
@@ -29,7 +29,7 @@ index 04bff597b77e37ee90abecc2dabf8919c1ef4082..e206753e5b34b6ab7bd241a77a67e0cd
private boolean keepAlivePending;
private long keepAliveChallenge;
// CraftBukkit start - multithreaded fields
-@@ -297,6 +297,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -299,6 +299,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private final LastSeenMessagesValidator lastSeenMessages;
private final MessageSignatureCache messageSignatureCache;
private final FutureChain chatMessageChain;
@@ -37,7 +37,7 @@ index 04bff597b77e37ee90abecc2dabf8919c1ef4082..e206753e5b34b6ab7bd241a77a67e0cd
public ServerGamePacketListenerImpl(MinecraftServer server, Connection connection, ServerPlayer player) {
this.lastChatTimeStamp = new AtomicReference(Instant.EPOCH);
-@@ -388,18 +389,25 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -390,18 +391,25 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
this.server.getProfiler().push("keepAlive");
diff --git a/patches/server/0166-AsyncTabCompleteEvent.patch b/patches/server/0166-AsyncTabCompleteEvent.patch
index a8ba5d754b..bc02f2631c 100644
--- a/patches/server/0166-AsyncTabCompleteEvent.patch
+++ b/patches/server/0166-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 e206753e5b34b6ab7bd241a77a67e0cdcfa662d1..1d593c32abbae6ca59bad0075993c58e18a01c72 100644
+index 31bbd7f9db45f73e34b3cddcf4e66ccd034a1d10..e97e0ea9c44a959c17849eac3fcecf4eff04d275 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -788,12 +788,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -790,12 +790,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
@@ -38,7 +38,7 @@ index e206753e5b34b6ab7bd241a77a67e0cdcfa662d1..1d593c32abbae6ca59bad0075993c58e
return;
}
// Paper start
-@@ -804,18 +808,45 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -806,18 +810,45 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
// Paper end
// CraftBukkit end
@@ -91,10 +91,10 @@ index e206753e5b34b6ab7bd241a77a67e0cdcfa662d1..1d593c32abbae6ca59bad0075993c58e
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 2bed3141b49789324e4e7bbec802f50ac3745edf..ffeaa65893c576203c7b342a8689a45d3d0722bb 100644
+index 648c29d0c06655e88f450872e8bc672f38eaec26..57674358b958226ff575eafffa872e76d6f0f5fa 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2148,7 +2148,7 @@ public final class CraftServer implements Server {
+@@ -2149,7 +2149,7 @@ public final class CraftServer implements Server {
offers = this.tabCompleteChat(player, message);
}
diff --git a/patches/server/0168-Ability-to-apply-mending-to-XP-API.patch b/patches/server/0168-Ability-to-apply-mending-to-XP-API.patch
index 48a291d844..353ed12fb2 100644
--- a/patches/server/0168-Ability-to-apply-mending-to-XP-API.patch
+++ b/patches/server/0168-Ability-to-apply-mending-to-XP-API.patch
@@ -14,10 +14,10 @@ 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 afe1de50ef9123df5138f29b0cfc75a8a7923af1..3abaf7072089b06287f959cbc356acc4c912605b 100644
+index 1adad65a3a9a547a4383cc0caa21a6445d072200..063150563e35a3eeb6999f1b5b34de3f60318f66 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1506,7 +1506,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1538,7 +1538,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
@Override
diff --git a/patches/server/0181-Player.setPlayerProfile-API.patch b/patches/server/0181-Player.setPlayerProfile-API.patch
index 1c36c6a3f2..2a55311803 100644
--- a/patches/server/0181-Player.setPlayerProfile-API.patch
+++ b/patches/server/0181-Player.setPlayerProfile-API.patch
@@ -9,10 +9,10 @@ This can be useful for changing name or skins after a player has logged in.
public-f net.minecraft.world.entity.player.Player gameProfile
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 1d593c32abbae6ca59bad0075993c58e18a01c72..da4c4e917cb850d03a4eb51ec9777e93932b552c 100644
+index e97e0ea9c44a959c17849eac3fcecf4eff04d275..3580ce27843ab4e379360e2f63c8783e66384956 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1538,7 +1538,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1540,7 +1540,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.internalTeleport(dest.getX(), dest.getY(), dest.getZ(), dest.getYaw(), dest.getPitch(), Collections.emptySet());
}
@@ -40,10 +40,10 @@ index 6b31b0894e52ad6fc397624e50587ec04e46c099..0c7f280bae81bbb492d5780a43e5ffda
playerName = gameProfile.getName();
uniqueId = gameProfile.getId();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-index f0a81fa99f5923813858b77c9a1c682418c928ff..712006c27570dcbcefe173484e74d1bb0763e926 100644
+index b17fe83bcd7bde44ee8c1f872fffa8bf40707c50..aac78c13361b19efa7b43a0c95458390f1ba8340 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-@@ -79,8 +79,8 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
+@@ -81,8 +81,8 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
}
@Override
@@ -55,10 +55,10 @@ index f0a81fa99f5923813858b77c9a1c682418c928ff..712006c27570dcbcefe173484e74d1bb
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 3abaf7072089b06287f959cbc356acc4c912605b..39bf1e520f54abdf83dd9fd16d2f1aec58cc551b 100644
+index 063150563e35a3eeb6999f1b5b34de3f60318f66..f0c07965f129c17a3258964b7bf73f9f9b6fc63e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -86,6 +86,7 @@ import net.minecraft.world.food.FoodData;
+@@ -88,6 +88,7 @@ import net.minecraft.world.food.FoodData;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.level.GameType;
import net.minecraft.world.level.block.Blocks;
@@ -66,7 +66,7 @@ index 3abaf7072089b06287f959cbc356acc4c912605b..39bf1e520f54abdf83dd9fd16d2f1aec
import net.minecraft.world.level.block.entity.SignBlockEntity;
import net.minecraft.world.level.block.entity.SignText;
import net.minecraft.world.level.border.BorderChangeListener;
-@@ -267,11 +268,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -269,11 +270,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return server.getPlayer(getUniqueId()) != null;
}
@@ -78,7 +78,7 @@ index 3abaf7072089b06287f959cbc356acc4c912605b..39bf1e520f54abdf83dd9fd16d2f1aec
@Override
public InetSocketAddress getAddress() {
if (this.getHandle().connection == null) return null;
-@@ -1656,8 +1652,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1688,8 +1684,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private void untrackAndHideEntity(org.bukkit.entity.Entity entity) {
// Remove this entity from the hidden player's EntityTrackerEntry
@@ -95,7 +95,7 @@ index 3abaf7072089b06287f959cbc356acc4c912605b..39bf1e520f54abdf83dd9fd16d2f1aec
ChunkMap.TrackedEntity entry = tracker.entityMap.get(other.getId());
if (entry != null) {
entry.removePlayer(this.getHandle());
-@@ -1670,8 +1673,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1702,8 +1705,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(new ClientboundPlayerInfoRemovePacket(List.of(otherPlayer.getUUID())));
}
}
@@ -104,7 +104,7 @@ index 3abaf7072089b06287f959cbc356acc4c912605b..39bf1e520f54abdf83dd9fd16d2f1aec
}
void resetAndHideEntity(org.bukkit.entity.Entity entity) {
-@@ -1748,8 +1749,38 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1780,8 +1781,38 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (entry != null && !entry.seenBy.contains(this.getHandle().connection)) {
entry.updatePlayer(this.getHandle());
}
@@ -144,7 +144,7 @@ index 3abaf7072089b06287f959cbc356acc4c912605b..39bf1e520f54abdf83dd9fd16d2f1aec
}
void resetAndShowEntity(org.bukkit.entity.Entity entity) {
-@@ -1762,6 +1793,36 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1794,6 +1825,36 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.trackAndShowEntity(entity);
}
}
diff --git a/patches/server/0182-getPlayerUniqueId-API.patch b/patches/server/0182-getPlayerUniqueId-API.patch
index 43e520a130..4fc282154c 100644
--- a/patches/server/0182-getPlayerUniqueId-API.patch
+++ b/patches/server/0182-getPlayerUniqueId-API.patch
@@ -9,10 +9,10 @@ In Offline Mode, will return an Offline UUID
This is a more performant way to obtain a UUID for a name than loading an OfflinePlayer
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index ffeaa65893c576203c7b342a8689a45d3d0722bb..78a2fdb466c56d75568af5f7d5398baf4ba8532c 100644
+index 57674358b958226ff575eafffa872e76d6f0f5fa..b78c1362a2396f950f50e7ee093bbdd6ab1823f7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1746,6 +1746,25 @@ public final class CraftServer implements Server {
+@@ -1747,6 +1747,25 @@ public final class CraftServer implements Server {
return recipients.size();
}
diff --git a/patches/server/0186-Flag-to-disable-the-channel-limit.patch b/patches/server/0186-Flag-to-disable-the-channel-limit.patch
index 8f153348d9..a7577e7da4 100644
--- a/patches/server/0186-Flag-to-disable-the-channel-limit.patch
+++ b/patches/server/0186-Flag-to-disable-the-channel-limit.patch
@@ -9,10 +9,10 @@ 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 39bf1e520f54abdf83dd9fd16d2f1aec58cc551b..b89714e6f136cb661b962911988c04481ddb0801 100644
+index f0c07965f129c17a3258964b7bf73f9f9b6fc63e..8dee7e74434356885b81e2a36664f8324ceacf57 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -191,6 +191,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -193,6 +193,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper start
private org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus;
private String resourcePackHash;
@@ -20,7 +20,7 @@ index 39bf1e520f54abdf83dd9fd16d2f1aec58cc551b..b89714e6f136cb661b962911988c0448
// Paper end
public CraftPlayer(CraftServer server, ServerPlayer entity) {
-@@ -2031,7 +2032,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2063,7 +2064,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
public void addChannel(String channel) {
diff --git a/patches/server/0187-Add-openSign-method-to-HumanEntity.patch b/patches/server/0187-Add-openSign-method-to-HumanEntity.patch
index 00dc3cdb02..239906049f 100644
--- a/patches/server/0187-Add-openSign-method-to-HumanEntity.patch
+++ b/patches/server/0187-Add-openSign-method-to-HumanEntity.patch
@@ -5,30 +5,19 @@ Subject: [PATCH] Add openSign method to HumanEntity
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-index 6ca423ca58f486eec05c55faf055e0cdbabde709..f48b5204e59ab0c840fc08ecb9abf5facbae9be1 100644
+index a19504cf5c98b4d8070dc1ffe322b84e1896d84a..f1ba0fd5d17fb1a26cf09848d4125ecfab39eddb 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-@@ -120,7 +120,7 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
- super.applyTo(sign);
- }
-
-- public static void openSign(Sign sign, Player player, Side side) {
-+ public static void openSign(Sign sign, org.bukkit.entity.HumanEntity player, Side side) { // Paper - change move open sign to HumanEntity
- Preconditions.checkArgument(sign != null, "sign == null");
- Preconditions.checkArgument(side != null, "side == null");
- Preconditions.checkArgument(sign.isPlaced(), "Sign must be placed");
-@@ -128,7 +128,8 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
-
- SignBlockEntity handle = ((CraftSign<?>) sign).getTileEntity();
+@@ -134,6 +134,7 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
+ return;
+ }
-- ((CraftPlayer) player).getHandle().openTextEdit(handle, Side.FRONT == side);
+ handle.setAllowedPlayerEditor(player.getUniqueId()); // Paper
-+ ((org.bukkit.craftbukkit.entity.CraftHumanEntity) player).getHandle().openTextEdit(handle, Side.FRONT == side); // Paper - change move open sign to HumanEntity
+ ((CraftPlayer) player).getHandle().openTextEdit(handle, Side.FRONT == side);
}
- // Paper start
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
-index 2f5704b19148f390402c0823030806ba96860286..f59733b6918dcbbb2190f76d8b8841a2d8818cdf 100644
+index 2f5704b19148f390402c0823030806ba96860286..74f1af3dccddf52965e5c91277be3592649e8cfa 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -626,6 +626,12 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
@@ -38,7 +27,7 @@ index 2f5704b19148f390402c0823030806ba96860286..f59733b6918dcbbb2190f76d8b8841a2
+ // Paper start - move open sign method to HumanEntity
+ @Override
+ public void openSign(final org.bukkit.block.Sign sign, final org.bukkit.block.sign.Side side) {
-+ org.bukkit.craftbukkit.block.CraftSign.openSign(sign, this, side);
++ org.bukkit.craftbukkit.block.CraftSign.openSign(sign, (CraftPlayer) this, side);
+ }
+ // Paper end
@Override
diff --git a/patches/server/0213-Add-config-to-disable-ender-dragon-legacy-check.patch b/patches/server/0213-Add-config-to-disable-ender-dragon-legacy-check.patch
index 36e5817b26..31b5023020 100644
--- a/patches/server/0213-Add-config-to-disable-ender-dragon-legacy-check.patch
+++ b/patches/server/0213-Add-config-to-disable-ender-dragon-legacy-check.patch
@@ -5,17 +5,17 @@ Subject: [PATCH] Add config to disable ender dragon legacy check
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-index c2b0eaaa1c4b74d04ba1781711208cbebd7b356c..35304d7a60348a2b4e1eec43418086086502e4ab 100644
+index 077a3085045333551e67145e010c5074a35d1f9c..bf405efcd44b9d6fdc838d722d67ff7f78ceedce 100644
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-@@ -97,6 +97,10 @@ public class EndDragonFight {
- }
-
- public EndDragonFight(ServerLevel world, long gatewaysSeed, EndDragonFight.Data data, BlockPos origin) {
+@@ -106,6 +106,10 @@ public class EndDragonFight {
+ this.ticksSinceLastPlayerScan = 21;
+ this.skipArenaLoadedCheck = false;
+ this.needsStateScanning = true;
+ // Paper start
+ this.needsStateScanning = world.paperConfig().entities.spawning.scanForLegacyEnderDragon;
+ if (!this.needsStateScanning) this.dragonKilled = true;
+ // Paper end
this.level = world;
this.origin = origin;
- this.validPlayer = EntitySelector.ENTITY_STILL_ALIVE.and(EntitySelector.withinDistance((double)origin.getX(), (double)(128 + origin.getY()), (double)origin.getZ(), 192.0D));
+ this.validPlayer = EntitySelector.ENTITY_STILL_ALIVE.and(EntitySelector.withinDistance((double) origin.getX(), (double) (128 + origin.getY()), (double) origin.getZ(), 192.0D));
diff --git a/patches/server/0215-InventoryCloseEvent-Reason-API.patch b/patches/server/0215-InventoryCloseEvent-Reason-API.patch
index 6dfe8b2c54..6177e8309a 100644
--- a/patches/server/0215-InventoryCloseEvent-Reason-API.patch
+++ b/patches/server/0215-InventoryCloseEvent-Reason-API.patch
@@ -29,7 +29,7 @@ index 68257f257dd3b167e237482c8d149590103896b2..33ce550ea68d4862e0966ed827200cf4
}
// 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 dda3b911fcaa294ec7b8e9d696880fcb8325f69c..8e2340ca473c8cacfe9d888091834986bad101ce 100644
+index 3842caf61e388aa65b3a18c587480a7dabb8341b..bd7b8ede44a5971b034ffb75fbddbadda8f42702 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -682,7 +682,7 @@ public class ServerPlayer extends Player {
@@ -75,10 +75,10 @@ index dda3b911fcaa294ec7b8e9d696880fcb8325f69c..8e2340ca473c8cacfe9d888091834986
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 da4c4e917cb850d03a4eb51ec9777e93932b552c..c6a1b0b23d6591c482fc63abc15e5cdbce072a28 100644
+index 3580ce27843ab4e379360e2f63c8783e66384956..b87df5c04ad2c9abe112cccfde27c04f7e3a78e7 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -220,6 +220,7 @@ import org.bukkit.event.inventory.ClickType;
+@@ -222,6 +222,7 @@ import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
@@ -86,7 +86,7 @@ index da4c4e917cb850d03a4eb51ec9777e93932b552c..c6a1b0b23d6591c482fc63abc15e5cdb
import org.bukkit.event.inventory.InventoryCreativeEvent;
import org.bukkit.event.inventory.InventoryType.SlotType;
import org.bukkit.event.inventory.SmithItemEvent;
-@@ -2682,10 +2683,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2681,10 +2682,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleContainerClose(ServerboundContainerClosePacket packet) {
@@ -173,10 +173,10 @@ index f59733b6918dcbbb2190f76d8b8841a2d8818cdf..ba6105a970381d642cd7955754cc4713
@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 b89714e6f136cb661b962911988c04481ddb0801..3bdb53c3a41da6d4d3a641f790741a3c79e1734a 100644
+index 8dee7e74434356885b81e2a36664f8324ceacf57..10493d2cced7603f1d3910ff6e428d23abc45c24 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1188,7 +1188,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1190,7 +1190,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Close any foreign inventory
if (this.getHandle().containerMenu != this.getHandle().inventoryMenu) {
@@ -186,10 +186,10 @@ index b89714e6f136cb661b962911988c04481ddb0801..3bdb53c3a41da6d4d3a641f790741a3c
// Check if the fromWorld and toWorld are the same.
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 515e8886d04668598b6725ba11f75f40ed35d4e7..251f09a79092cce312dc107c9f2f712cbb287ce9 100644
+index ceb8d024888425248cb40eb3fbbe39fc4be1207b..4942ea5a66af310eac646a6be20e997d53ab99fb 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1278,7 +1278,7 @@ public class CraftEventFactory {
+@@ -1304,7 +1304,7 @@ public class CraftEventFactory {
public static AbstractContainerMenu callInventoryOpenEvent(ServerPlayer player, AbstractContainerMenu container, boolean cancelled) {
if (player.containerMenu != player.inventoryMenu) { // fire INVENTORY_CLOSE if one already open
@@ -198,7 +198,7 @@ index 515e8886d04668598b6725ba11f75f40ed35d4e7..251f09a79092cce312dc107c9f2f712c
}
CraftServer server = player.level().getCraftServer();
-@@ -1452,8 +1452,18 @@ public class CraftEventFactory {
+@@ -1478,8 +1478,18 @@ public class CraftEventFactory {
return event;
}
diff --git a/patches/server/0217-Refresh-player-inventory-when-cancelling-PlayerInter.patch b/patches/server/0217-Refresh-player-inventory-when-cancelling-PlayerInter.patch
index 02d467825c..3155759687 100644
--- a/patches/server/0217-Refresh-player-inventory-when-cancelling-PlayerInter.patch
+++ b/patches/server/0217-Refresh-player-inventory-when-cancelling-PlayerInter.patch
@@ -16,10 +16,10 @@ Refresh the player inventory when PlayerInteractEntityEvent is
cancelled to avoid this problem.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index c6a1b0b23d6591c482fc63abc15e5cdbce072a28..c0c9c45dd550a323ae6c6dbe72de90a7d1258878 100644
+index b87df5c04ad2c9abe112cccfde27c04f7e3a78e7..189f6f41a09b09ba9fa2131857918898086256ba 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2564,6 +2564,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2563,6 +2563,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
if (event.isCancelled()) {
diff --git a/patches/server/0225-Vanished-players-don-t-have-rights.patch b/patches/server/0225-Vanished-players-don-t-have-rights.patch
index bc2cfbc658..cfe16400a9 100644
--- a/patches/server/0225-Vanished-players-don-t-have-rights.patch
+++ b/patches/server/0225-Vanished-players-don-t-have-rights.patch
@@ -89,10 +89,10 @@ index 1beff41c02fb4c22b5474da7c514be2f50f16055..8a53284a5846b25864352e18a5e6b2de
public boolean isClientSide() {
return this.isClientSide;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 251f09a79092cce312dc107c9f2f712cbb287ce9..6c64de07bda20df15809dadc69d0d8ad05028677 100644
+index 4942ea5a66af310eac646a6be20e997d53ab99fb..53af54ffecd7fdb20588d75a8c32003cb89a75b1 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1315,6 +1315,14 @@ public class CraftEventFactory {
+@@ -1341,6 +1341,14 @@ public class CraftEventFactory {
Projectile projectile = (Projectile) entity.getBukkitEntity();
org.bukkit.entity.Entity collided = position.getEntity().getBukkitEntity();
com.destroystokyo.paper.event.entity.ProjectileCollideEvent event = new com.destroystokyo.paper.event.entity.ProjectileCollideEvent(projectile, collided);
diff --git a/patches/server/0232-Break-up-and-make-tab-spam-limits-configurable.patch b/patches/server/0232-Break-up-and-make-tab-spam-limits-configurable.patch
index 5687cfb843..fe3c7bc317 100644
--- a/patches/server/0232-Break-up-and-make-tab-spam-limits-configurable.patch
+++ b/patches/server/0232-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 c0c9c45dd550a323ae6c6dbe72de90a7d1258878..7e9955db343f2539210c4f89cf566db1e4e3600d 100644
+index 189f6f41a09b09ba9fa2131857918898086256ba..739239c9ee8c3642a6d96238c11dddf7a848e4fd 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -265,6 +265,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -267,6 +267,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private long keepAliveChallenge;
// CraftBukkit start - multithreaded fields
private final AtomicInteger chatSpamTickCount = new AtomicInteger();
@@ -33,7 +33,7 @@ index c0c9c45dd550a323ae6c6dbe72de90a7d1258878..7e9955db343f2539210c4f89cf566db1
// CraftBukkit end
private int dropSpamTickCount;
private double firstGoodX;
-@@ -413,6 +414,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -415,6 +416,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.server.getProfiler().pop();
// CraftBukkit start
for (int spam; (spam = this.chatSpamTickCount.get()) > 0 && !this.chatSpamTickCount.compareAndSet(spam, spam - 1); ) ;
@@ -41,7 +41,7 @@ index c0c9c45dd550a323ae6c6dbe72de90a7d1258878..7e9955db343f2539210c4f89cf566db1
/* Use thread-safe field access instead
if (this.chatSpamTickCount > 0) {
--this.chatSpamTickCount;
-@@ -797,7 +799,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -799,7 +801,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
public void handleCustomCommandSuggestions(ServerboundCommandSuggestionPacket packet) {
// PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - run this async
// CraftBukkit start
diff --git a/patches/server/0236-Add-Early-Warning-Feature-to-WatchDog.patch b/patches/server/0236-Add-Early-Warning-Feature-to-WatchDog.patch
index 6236ac5d34..b6200046c0 100644
--- a/patches/server/0236-Add-Early-Warning-Feature-to-WatchDog.patch
+++ b/patches/server/0236-Add-Early-Warning-Feature-to-WatchDog.patch
@@ -33,10 +33,10 @@ index 24f62f9c4d288297d7a324e806745cc1449d7b4c..29eadf85e11c2261218fa406b29455da
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics();
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 78a2fdb466c56d75568af5f7d5398baf4ba8532c..b4df2dccee19bc529bcd76698ce0009e35bc271d 100644
+index b78c1362a2396f950f50e7ee093bbdd6ab1823f7..2a4cddc0ed4d71b6db9112ff1397da5ddb433c1d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -934,6 +934,7 @@ public final class CraftServer implements Server {
+@@ -935,6 +935,7 @@ public final class CraftServer implements Server {
@Override
public void reload() {
@@ -44,7 +44,7 @@ index 78a2fdb466c56d75568af5f7d5398baf4ba8532c..b4df2dccee19bc529bcd76698ce0009e
this.reloadCount++;
this.configuration = YamlConfiguration.loadConfiguration(this.getConfigFile());
this.commandsConfiguration = YamlConfiguration.loadConfiguration(this.getCommandsConfigFile());
-@@ -1023,6 +1024,7 @@ public final class CraftServer implements Server {
+@@ -1024,6 +1025,7 @@ public final class CraftServer implements Server {
this.enablePlugins(PluginLoadOrder.STARTUP);
this.enablePlugins(PluginLoadOrder.POSTWORLD);
this.getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.RELOAD));
diff --git a/patches/server/0251-Expose-attack-cooldown-methods-for-Player.patch b/patches/server/0251-Expose-attack-cooldown-methods-for-Player.patch
index e04153cbce..42c4e5e940 100644
--- a/patches/server/0251-Expose-attack-cooldown-methods-for-Player.patch
+++ b/patches/server/0251-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 3bdb53c3a41da6d4d3a641f790741a3c79e1734a..3421f446849bd4feded248406bd4748416e4d9fa 100644
+index 10493d2cced7603f1d3910ff6e428d23abc45c24..cd52349a272f4e0b440f6e1bc96e072687117e9f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2785,6 +2785,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2817,6 +2817,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.adventure$pointers;
}
diff --git a/patches/server/0252-Improve-death-events.patch b/patches/server/0252-Improve-death-events.patch
index b3412cc1cf..92655f4be4 100644
--- a/patches/server/0252-Improve-death-events.patch
+++ b/patches/server/0252-Improve-death-events.patch
@@ -19,7 +19,7 @@ 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 8e2340ca473c8cacfe9d888091834986bad101ce..0282a467268564c55d9d6e10b0602f952b2ca7ae 100644
+index bd7b8ede44a5971b034ffb75fbddbadda8f42702..41e0b2826bae59e48fef7e35caeb3ce6e46031ea 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -243,6 +243,10 @@ public class ServerPlayer extends Player {
@@ -392,10 +392,10 @@ index 719f68f96e58ddcdd3592131c691d21263c81915..a35a0952ce8e1fc42e92734786d531c7
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 3421f446849bd4feded248406bd4748416e4d9fa..7db1f6ae9ee30293086f6b0d5fe86965f278c87e 100644
+index cd52349a272f4e0b440f6e1bc96e072687117e9f..2a4dff1b9bf64b5fc073bbc943def71b289f7730 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2285,7 +2285,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2317,7 +2317,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void sendHealthUpdate() {
FoodData foodData = this.getHandle().getFoodData();
@@ -412,10 +412,10 @@ index 3421f446849bd4feded248406bd4748416e4d9fa..7db1f6ae9ee30293086f6b0d5fe86965
public void injectScaledMaxHealth(Collection<AttributeInstance> collection, boolean force) {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 6c64de07bda20df15809dadc69d0d8ad05028677..9064f07fcbe0067c4b78cde026e58ae68f1aa4b9 100644
+index 53af54ffecd7fdb20588d75a8c32003cb89a75b1..eaca76dfec9cbe3cbb9972a0c9cf30599816fcda 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -837,9 +837,16 @@ public class CraftEventFactory {
+@@ -863,9 +863,16 @@ public class CraftEventFactory {
public static EntityDeathEvent callEntityDeathEvent(net.minecraft.world.entity.LivingEntity victim, List<org.bukkit.inventory.ItemStack> drops) {
CraftLivingEntity entity = (CraftLivingEntity) victim.getBukkitEntity();
EntityDeathEvent event = new EntityDeathEvent(entity, drops, victim.getExpReward());
@@ -432,7 +432,7 @@ index 6c64de07bda20df15809dadc69d0d8ad05028677..9064f07fcbe0067c4b78cde026e58ae6
victim.expToDrop = event.getDroppedExp();
for (org.bukkit.inventory.ItemStack stack : event.getDrops()) {
-@@ -856,8 +863,15 @@ public class CraftEventFactory {
+@@ -882,8 +889,15 @@ public class CraftEventFactory {
PlayerDeathEvent event = new PlayerDeathEvent(entity, drops, victim.getExpReward(), 0, deathMessage, stringDeathMessage); // Paper - Adventure
event.setKeepInventory(keepInventory);
event.setKeepLevel(victim.keepLevel); // SPIGOT-2222: pre-set keepLevel
@@ -448,7 +448,7 @@ index 6c64de07bda20df15809dadc69d0d8ad05028677..9064f07fcbe0067c4b78cde026e58ae6
victim.keepLevel = event.getKeepLevel();
victim.newLevel = event.getNewLevel();
-@@ -874,6 +888,31 @@ public class CraftEventFactory {
+@@ -900,6 +914,31 @@ public class CraftEventFactory {
return event;
}
diff --git a/patches/server/0253-Allow-chests-to-be-placed-with-NBT-data.patch b/patches/server/0253-Allow-chests-to-be-placed-with-NBT-data.patch
index 6ccfe198c9..1fad6b599e 100644
--- a/patches/server/0253-Allow-chests-to-be-placed-with-NBT-data.patch
+++ b/patches/server/0253-Allow-chests-to-be-placed-with-NBT-data.patch
@@ -5,10 +5,10 @@ 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 940caf9b7526019ace656ff88146f198ba6b62ed..7d80eded30109982fd3a1b815ba5dff4b699689a 100644
+index c33660718c0ea281d7bcdb15df0568d4d46547e2..0caf3eeb7984e842f7a0bdfed3021d0b231a0dd0 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -377,6 +377,7 @@ public final class ItemStack {
+@@ -381,6 +381,7 @@ public final class ItemStack {
enuminteractionresult = InteractionResult.FAIL; // cancel placement
// PAIL: Remove this when MC-99075 fixed
placeEvent.getPlayer().updateInventory();
diff --git a/patches/server/0272-Add-option-to-prevent-players-from-moving-into-unloa.patch b/patches/server/0272-Add-option-to-prevent-players-from-moving-into-unloa.patch
index 34528efa33..d9f09b7bcb 100644
--- a/patches/server/0272-Add-option-to-prevent-players-from-moving-into-unloa.patch
+++ b/patches/server/0272-Add-option-to-prevent-players-from-moving-into-unloa.patch
@@ -6,10 +6,10 @@ 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 7e9955db343f2539210c4f89cf566db1e4e3600d..9a6caf7b445b033c30f8972ebcc9947b99fa44ef 100644
+index 739239c9ee8c3642a6d96238c11dddf7a848e4fd..67e423040969a175983dba5bacd675f6b57e88ff 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -567,9 +567,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -569,9 +569,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
double d0 = entity.getX();
double d1 = entity.getY();
double d2 = entity.getZ();
@@ -22,7 +22,7 @@ index 7e9955db343f2539210c4f89cf566db1e4e3600d..9a6caf7b445b033c30f8972ebcc9947b
float f = Mth.wrapDegrees(packet.getYRot());
float f1 = Mth.wrapDegrees(packet.getXRot());
double d6 = d3 - this.vehicleFirstGoodX;
-@@ -604,6 +604,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -606,6 +606,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
@@ -39,7 +39,7 @@ index 7e9955db343f2539210c4f89cf566db1e4e3600d..9a6caf7b445b033c30f8972ebcc9947b
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});
-@@ -1257,9 +1267,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1259,9 +1269,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.allowedPlayerTicks = 20; // CraftBukkit
} else {
this.awaitingTeleportTime = this.tickCount;
@@ -52,7 +52,7 @@ index 7e9955db343f2539210c4f89cf566db1e4e3600d..9a6caf7b445b033c30f8972ebcc9947b
float f = Mth.wrapDegrees(packet.getYRot(this.player.getYRot()));
float f1 = Mth.wrapDegrees(packet.getXRot(this.player.getXRot()));
-@@ -1314,6 +1324,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1316,6 +1326,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
} else {
speed = this.player.getAbilities().walkingSpeed * 10f;
}
diff --git a/patches/server/0277-Restore-custom-InventoryHolder-support.patch b/patches/server/0277-Restore-custom-InventoryHolder-support.patch
index 47ca419c2a..dde06f4b18 100644
--- a/patches/server/0277-Restore-custom-InventoryHolder-support.patch
+++ b/patches/server/0277-Restore-custom-InventoryHolder-support.patch
@@ -161,7 +161,7 @@ index 0000000000000000000000000000000000000000..224d4b2cc45b0d02230a76caee9c8857
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
-index 301e89f638e38ad216d545a3cb5b7375695e6fe6..081e6c7ce4a0185ba75e48bbb581fd531cdb10a8 100644
+index 1b526fff47e5a3d9a5325c73966dd2bf3dbbdc19..633e6f4922ccaf59979a22885162f42c65bf628a 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
@@ -49,7 +49,7 @@ public class CraftContainer extends AbstractContainerMenu {
@@ -182,7 +182,7 @@ index 301e89f638e38ad216d545a3cb5b7375695e6fe6..081e6c7ce4a0185ba75e48bbb581fd53
}
// Paper end
-@@ -246,6 +246,10 @@ public class CraftContainer extends AbstractContainerMenu {
+@@ -247,6 +247,10 @@ public class CraftContainer extends AbstractContainerMenu {
this.lastSlots = delegate.lastSlots;
this.slots = delegate.slots;
this.remoteSlots = delegate.remoteSlots;
diff --git a/patches/server/0280-Don-t-allow-digging-into-unloaded-chunks.patch b/patches/server/0280-Don-t-allow-digging-into-unloaded-chunks.patch
index 93d7118207..90e9493175 100644
--- a/patches/server/0280-Don-t-allow-digging-into-unloaded-chunks.patch
+++ b/patches/server/0280-Don-t-allow-digging-into-unloaded-chunks.patch
@@ -59,10 +59,10 @@ index 7adf7d1248680e591638298f13f5ae88788f5e4c..bdf11a98614c9c12d3112f437651be81
this.level.destroyBlockProgress(this.player.getId(), pos, -1);
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 9a6caf7b445b033c30f8972ebcc9947b99fa44ef..42ef3a732ae94502ad921b881f55d6882de2199c 100644
+index 67e423040969a175983dba5bacd675f6b57e88ff..f3a786825b76dc70170ec57db1b3baa9c5033c34 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1662,6 +1662,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1664,6 +1664,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
case START_DESTROY_BLOCK:
case ABORT_DESTROY_BLOCK:
case STOP_DESTROY_BLOCK:
diff --git a/patches/server/0281-Make-the-default-permission-message-configurable.patch b/patches/server/0281-Make-the-default-permission-message-configurable.patch
index c63565225d..98e26f28a4 100644
--- a/patches/server/0281-Make-the-default-permission-message-configurable.patch
+++ b/patches/server/0281-Make-the-default-permission-message-configurable.patch
@@ -18,10 +18,10 @@ index e3467aaf6d0c8d486b84362e3c20b3fe631b50ff..8f16640fc2f1233c10392d7e32a54d78
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index b4df2dccee19bc529bcd76698ce0009e35bc271d..d8f53e9cefcd286687f092fd09714a62263567f1 100644
+index 2a4cddc0ed4d71b6db9112ff1397da5ddb433c1d..4b3749c20f0530f3b1268827dfe8f7ee898322fb 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2724,6 +2724,16 @@ public final class CraftServer implements Server {
+@@ -2725,6 +2725,16 @@ public final class CraftServer implements Server {
return io.papermc.paper.configuration.GlobalConfiguration.get().commands.suggestPlayerNamesWhenNullTabCompletions;
}
diff --git a/patches/server/0286-Book-Size-Limits.patch b/patches/server/0286-Book-Size-Limits.patch
index e53230aea8..d00222c92d 100644
--- a/patches/server/0286-Book-Size-Limits.patch
+++ b/patches/server/0286-Book-Size-Limits.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Book Size Limits
Puts some limits on the size of books.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 42ef3a732ae94502ad921b881f55d6882de2199c..5b99f5147ae44b3e9f0310a2a133d8b1d6ab5614 100644
+index f3a786825b76dc70170ec57db1b3baa9c5033c34..d85f9e09820594edcf984cede8711069566ec5fe 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1124,6 +1124,45 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1126,6 +1126,45 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleEditBook(ServerboundEditBookPacket packet) {
diff --git a/patches/server/0289-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch b/patches/server/0289-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
index 74747f2574..5afc1b5ca0 100644
--- a/patches/server/0289-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
+++ b/patches/server/0289-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
@@ -40,10 +40,10 @@ index 2bccba03bb12cf17a82c1e54c2bb10535b7c8964..5657493e215a17f3132f9d4114248751
GameProfileCache usercache = this.server.getProfileCache();
String s;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-index 712006c27570dcbcefe173484e74d1bb0763e926..ef48315b98aa39ed245fb7619cf594bfb767931a 100644
+index aac78c13361b19efa7b43a0c95458390f1ba8340..f572a74b85df36a6da76b78ec29d807273867537 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-@@ -249,6 +249,61 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
+@@ -261,6 +261,61 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
return this.getData() != null;
}
@@ -106,10 +106,10 @@ index 712006c27570dcbcefe173484e74d1bb0763e926..ef48315b98aa39ed245fb7619cf594bf
public Location getLastDeathLocation() {
if (this.getData().contains("LastDeathLocation", 10)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 7db1f6ae9ee30293086f6b0d5fe86965f278c87e..7afaa37d1d6d98fa79f91493897cfe68daf4698c 100644
+index 2a4dff1b9bf64b5fc073bbc943def71b289f7730..22b8b61f260f91d7c79b3772af3134a81db304ac 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -192,6 +192,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -194,6 +194,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus;
private String resourcePackHash;
private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit
@@ -117,7 +117,7 @@ index 7db1f6ae9ee30293086f6b0d5fe86965f278c87e..7afaa37d1d6d98fa79f91493897cfe68
// Paper end
public CraftPlayer(CraftServer server, ServerPlayer entity) {
-@@ -1903,6 +1904,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1935,6 +1936,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.firstPlayed = firstPlayed;
}
@@ -136,7 +136,7 @@ index 7db1f6ae9ee30293086f6b0d5fe86965f278c87e..7afaa37d1d6d98fa79f91493897cfe68
public void readExtraData(CompoundTag nbttagcompound) {
this.hasPlayedBefore = true;
if (nbttagcompound.contains("bukkit")) {
-@@ -1925,6 +1938,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1957,6 +1970,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setExtraData(CompoundTag nbttagcompound) {
@@ -145,7 +145,7 @@ index 7db1f6ae9ee30293086f6b0d5fe86965f278c87e..7afaa37d1d6d98fa79f91493897cfe68
if (!nbttagcompound.contains("bukkit")) {
nbttagcompound.put("bukkit", new CompoundTag());
}
-@@ -1939,6 +1954,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1971,6 +1986,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
data.putLong("firstPlayed", this.getFirstPlayed());
data.putLong("lastPlayed", System.currentTimeMillis());
data.putString("lastKnownName", handle.getScoreboardName());
diff --git a/patches/server/0291-Block-Entity-remove-from-being-called-on-Players.patch b/patches/server/0291-Block-Entity-remove-from-being-called-on-Players.patch
index 006d672e57..21558cd9a9 100644
--- a/patches/server/0291-Block-Entity-remove-from-being-called-on-Players.patch
+++ b/patches/server/0291-Block-Entity-remove-from-being-called-on-Players.patch
@@ -12,10 +12,10 @@ Player we will look at limiting the scope of this change. It appears to
be unintentional in the few cases we've seen so far.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 7afaa37d1d6d98fa79f91493897cfe68daf4698c..de73f58180c083557a73078c45e57dbabf5429e8 100644
+index 22b8b61f260f91d7c79b3772af3134a81db304ac..4714d063f18806187fbd39315467ce467e30c6a2 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2832,6 +2832,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2864,6 +2864,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void resetCooldown() {
getHandle().resetAttackStrengthTicker();
}
diff --git a/patches/server/0294-Implement-Brigadier-Mojang-API.patch b/patches/server/0294-Implement-Brigadier-Mojang-API.patch
index e6f44bc5b0..988c33f366 100644
--- a/patches/server/0294-Implement-Brigadier-Mojang-API.patch
+++ b/patches/server/0294-Implement-Brigadier-Mojang-API.patch
@@ -10,7 +10,7 @@ Adds CommandRegisteredEvent
- Allows manipulating the CommandNode to add more children/metadata for the client
diff --git a/build.gradle.kts b/build.gradle.kts
-index cfaa988f64c4b994b918e2f947c58dd8743a9dfb..527e39bcd6aea7560b5d8ef37377c2f37da5c1ca 100644
+index e6d66db4b5fe4385c34329897c8277e4bc814129..6807a91d4d55dc90e2820caa855a44844c87b7e2 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -14,6 +14,7 @@ val alsoShade: Configuration by configurations.creating
@@ -131,10 +131,10 @@ index b7f1569c662df13f278fc704cabec0400ba7c382..87ce129e1d592bcf68169feb559f44d5
if (commandnode2.canUse(source)) {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 5b99f5147ae44b3e9f0310a2a133d8b1d6ab5614..1dceea00a4299904b7205ef38f8993d092f5ff69 100644
+index d85f9e09820594edcf984cede8711069566ec5fe..9a134d65ebb4d004cc1a92fd832975e307667a03 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -840,8 +840,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -842,8 +842,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
ParseResults<CommandSourceStack> parseresults = this.server.getCommands().getDispatcher().parse(stringreader, this.player.createCommandSourceStack());
this.server.getCommands().getDispatcher().getCompletionSuggestions(parseresults).thenAccept((suggestions) -> {
@@ -149,7 +149,7 @@ index 5b99f5147ae44b3e9f0310a2a133d8b1d6ab5614..1dceea00a4299904b7205ef38f8993d0
});
});
}
-@@ -856,7 +860,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -858,7 +862,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
builder.suggest(completion.suggestion(), PaperAdventure.asVanilla(completion.tooltip()));
}
});
diff --git a/patches/server/0296-Limit-Client-Sign-length-more.patch b/patches/server/0296-Limit-Client-Sign-length-more.patch
index 3d62de6f3b..9dc79d8f90 100644
--- a/patches/server/0296-Limit-Client-Sign-length-more.patch
+++ b/patches/server/0296-Limit-Client-Sign-length-more.patch
@@ -22,10 +22,10 @@ it only impacts data sent from the client.
Set -DPaper.maxSignLength=XX to change limit or -1 to disable
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 1dceea00a4299904b7205ef38f8993d092f5ff69..417852dd515f436aabb89468a2b282b044e5de06 100644
+index 9a134d65ebb4d004cc1a92fd832975e307667a03..9358e4edc7265326c0ec32e60f596b0f61ee690f 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -300,6 +300,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -302,6 +302,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private final MessageSignatureCache messageSignatureCache;
private final FutureChain chatMessageChain;
private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit
@@ -33,7 +33,7 @@ index 1dceea00a4299904b7205ef38f8993d092f5ff69..417852dd515f436aabb89468a2b282b0
public ServerGamePacketListenerImpl(MinecraftServer server, Connection connection, ServerPlayer player) {
this.lastChatTimeStamp = new AtomicReference(Instant.EPOCH);
-@@ -3201,7 +3202,19 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3209,7 +3210,19 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleSignUpdate(ServerboundSignUpdatePacket packet) {
diff --git a/patches/server/0309-Fix-CB-call-to-changed-postToMainThread-method.patch b/patches/server/0309-Fix-CB-call-to-changed-postToMainThread-method.patch
index e71d2edf34..3e9ba415e3 100644
--- a/patches/server/0309-Fix-CB-call-to-changed-postToMainThread-method.patch
+++ b/patches/server/0309-Fix-CB-call-to-changed-postToMainThread-method.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix CB call to changed postToMainThread method
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 417852dd515f436aabb89468a2b282b044e5de06..bd70158d200f0bd9e52e46c9b5c8c7261a1646f5 100644
+index 9358e4edc7265326c0ec32e60f596b0f61ee690f..7f63eef706021e05ddb01ddc38ce672e5b0a5531 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -515,7 +515,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -517,7 +517,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
Objects.requireNonNull(this.connection);
// CraftBukkit - Don't wait
diff --git a/patches/server/0314-Expose-the-internal-current-tick.patch b/patches/server/0314-Expose-the-internal-current-tick.patch
index 140456ee75..c5f2e9e9d5 100644
--- a/patches/server/0314-Expose-the-internal-current-tick.patch
+++ b/patches/server/0314-Expose-the-internal-current-tick.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose the internal current tick
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index d8f53e9cefcd286687f092fd09714a62263567f1..7aa2682a8f6086550a3f27072dc7ec2425b3c116 100644
+index 4b3749c20f0530f3b1268827dfe8f7ee898322fb..7dae9866289e776c57e498121f79c1154809822d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2765,5 +2765,10 @@ public final class CraftServer implements Server {
+@@ -2766,5 +2766,10 @@ public final class CraftServer implements Server {
profile.getProperties().putAll(((CraftPlayer)player).getHandle().getGameProfile().getProperties());
return new com.destroystokyo.paper.profile.CraftPlayerProfile(profile);
}
diff --git a/patches/server/0342-Anti-Xray.patch b/patches/server/0342-Anti-Xray.patch
index 8a99efafe2..a77dd1cfb2 100644
--- a/patches/server/0342-Anti-Xray.patch
+++ b/patches/server/0342-Anti-Xray.patch
@@ -1573,10 +1573,10 @@ index b738e1f7debac7d70910d5ac908ca9d4f60640d5..269ebe8e8826a0c89e471cb59b503900
public CraftChunk(net.minecraft.world.level.chunk.LevelChunk chunk) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 7aa2682a8f6086550a3f27072dc7ec2425b3c116..3ad73272d67c1ffc0cdb1f119132490318c79abf 100644
+index 7dae9866289e776c57e498121f79c1154809822d..e5eedc1ff0b60414406bb0b131e3b0170991f046 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2294,7 +2294,7 @@ public final class CraftServer implements Server {
+@@ -2295,7 +2295,7 @@ public final class CraftServer implements Server {
public ChunkGenerator.ChunkData createChunkData(World world) {
Preconditions.checkArgument(world != null, "World cannot be null");
ServerLevel handle = ((CraftWorld) world).getHandle();
diff --git a/patches/server/0352-add-hand-to-BlockMultiPlaceEvent.patch b/patches/server/0352-add-hand-to-BlockMultiPlaceEvent.patch
index 4539f1ff9f..84df7607c8 100644
--- a/patches/server/0352-add-hand-to-BlockMultiPlaceEvent.patch
+++ b/patches/server/0352-add-hand-to-BlockMultiPlaceEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] add hand to BlockMultiPlaceEvent
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 9064f07fcbe0067c4b78cde026e58ae68f1aa4b9..2739c8424da929642d5ae029bfd75f8c302ac767 100644
+index eaca76dfec9cbe3cbb9972a0c9cf30599816fcda..ee7a7b80f96712830ea92daefb4454df70def170 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -374,13 +374,18 @@ public class CraftEventFactory {
+@@ -399,13 +399,18 @@ public class CraftEventFactory {
}
org.bukkit.inventory.ItemStack item;
diff --git a/patches/server/0358-Add-tick-times-API-and-mspt-command.patch b/patches/server/0358-Add-tick-times-API-and-mspt-command.patch
index b605afbe92..1b6a0d57fc 100644
--- a/patches/server/0358-Add-tick-times-API-and-mspt-command.patch
+++ b/patches/server/0358-Add-tick-times-API-and-mspt-command.patch
@@ -184,10 +184,10 @@ index cd57953e31c1f0f51553be113d84760f24b061b0..36112a1ab7306deb3cc38b103f22f7c1
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 3ad73272d67c1ffc0cdb1f119132490318c79abf..286eb9b9618798e0937fc73c846b92b1d64bb8f3 100644
+index e5eedc1ff0b60414406bb0b131e3b0170991f046..6b7dc90df1d023d867f0eec30edd0e49f49899a1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2549,6 +2549,16 @@ public final class CraftServer implements Server {
+@@ -2550,6 +2550,16 @@ public final class CraftServer implements Server {
net.minecraft.server.MinecraftServer.getServer().tps15.getAverage()
};
}
diff --git a/patches/server/0359-Expose-MinecraftServer-isRunning.patch b/patches/server/0359-Expose-MinecraftServer-isRunning.patch
index 3bf1e4f1e8..ae812ac0f7 100644
--- a/patches/server/0359-Expose-MinecraftServer-isRunning.patch
+++ b/patches/server/0359-Expose-MinecraftServer-isRunning.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Expose MinecraftServer#isRunning
This allows for plugins to detect if the server is actually turning off in onDisable rather than just plugins reloading.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 286eb9b9618798e0937fc73c846b92b1d64bb8f3..97474f1835bb92446b2d63db40791310676d936c 100644
+index 6b7dc90df1d023d867f0eec30edd0e49f49899a1..8d104a58a5ebe4e019d398f17286527f2d33dac7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2780,5 +2780,10 @@ public final class CraftServer implements Server {
+@@ -2781,5 +2781,10 @@ public final class CraftServer implements Server {
public int getCurrentTick() {
return net.minecraft.server.MinecraftServer.currentTick;
}
diff --git a/patches/server/0376-Implement-Player-Client-Options-API.patch b/patches/server/0376-Implement-Player-Client-Options-API.patch
index 8f1008004a..a06124fba4 100644
--- a/patches/server/0376-Implement-Player-Client-Options-API.patch
+++ b/patches/server/0376-Implement-Player-Client-Options-API.patch
@@ -116,10 +116,10 @@ index 65d17836785774d0f196321ba741ffd05a9db36e..fd34a2ace2efc819b06674ceab44ff78
if (getMainArm() != packet.mainHand()) {
PlayerChangedMainHandEvent event = new PlayerChangedMainHandEvent(this.getBukkitEntity(), getMainArm() == HumanoidArm.LEFT ? MainHand.LEFT : MainHand.RIGHT);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index de73f58180c083557a73078c45e57dbabf5429e8..0e5ff317d541a077f822bc0229e71915c2faf3c0 100644
+index 4714d063f18806187fbd39315467ce467e30c6a2..8094fbb1aa84c93cf6660e2c7a32772bfc3ec62f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -601,6 +601,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -603,6 +603,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
connection.disconnect(message == null ? net.kyori.adventure.text.Component.empty() : message);
}
}
diff --git a/patches/server/0383-Fix-numerous-item-duplication-issues-and-teleport-is.patch b/patches/server/0383-Fix-numerous-item-duplication-issues-and-teleport-is.patch
index 8480bfdbdb..c89c279fdd 100644
--- a/patches/server/0383-Fix-numerous-item-duplication-issues-and-teleport-is.patch
+++ b/patches/server/0383-Fix-numerous-item-duplication-issues-and-teleport-is.patch
@@ -16,7 +16,7 @@ So even if something NEW comes up, it would be impossible to drop the
same item twice because the source was destroyed.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index e1e9bc47e2e666ac5355d3b6a91a1a2dbd46e691..f5c1de9671bf823a7f2fa78acfa8f9065d6eb517 100644
+index d7cf9ca3a1002463b09ed709f3003d0528a3ff0b..ce4b2ec2ad6138b754ced976521d1c73eb4193a8 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2449,11 +2449,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -135,10 +135,10 @@ index a35a0952ce8e1fc42e92734786d531c7e10b34d7..498c6664fcfb028111031691348bfa2e
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 2739c8424da929642d5ae029bfd75f8c302ac767..9a9896e9424298c564a11a541448b54198461e62 100644
+index ee7a7b80f96712830ea92daefb4454df70def170..81c77354a856956283fc149980a9a09e99b544f5 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -840,6 +840,11 @@ public class CraftEventFactory {
+@@ -866,6 +866,11 @@ public class CraftEventFactory {
}
public static EntityDeathEvent callEntityDeathEvent(net.minecraft.world.entity.LivingEntity victim, List<org.bukkit.inventory.ItemStack> drops) {
@@ -150,7 +150,7 @@ index 2739c8424da929642d5ae029bfd75f8c302ac767..9a9896e9424298c564a11a541448b541
CraftLivingEntity entity = (CraftLivingEntity) victim.getBukkitEntity();
EntityDeathEvent event = new EntityDeathEvent(entity, drops, victim.getExpReward());
populateFields(victim, event); // Paper - make cancellable
-@@ -853,11 +858,13 @@ public class CraftEventFactory {
+@@ -879,11 +884,13 @@ public class CraftEventFactory {
playDeathSound(victim, event);
// Paper end
victim.expToDrop = event.getDroppedExp();
diff --git a/patches/server/0385-Validate-PickItem-Packet-and-kick-for-invalid.patch b/patches/server/0385-Validate-PickItem-Packet-and-kick-for-invalid.patch
index 500133b919..796c20196d 100644
--- a/patches/server/0385-Validate-PickItem-Packet-and-kick-for-invalid.patch
+++ b/patches/server/0385-Validate-PickItem-Packet-and-kick-for-invalid.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Validate PickItem Packet and kick for invalid
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index bd70158d200f0bd9e52e46c9b5c8c7261a1646f5..fbc5b78c0356d2bbe7a5eb48424e9d701251ac25 100644
+index 7f63eef706021e05ddb01ddc38ce672e5b0a5531..2f220a0b42aae276f9fb7a3f4ec5d2890b61af16 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -967,7 +967,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -969,7 +969,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handlePickItem(ServerboundPickItemPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
diff --git a/patches/server/0386-Expose-game-version.patch b/patches/server/0386-Expose-game-version.patch
index bc91dbb336..579424680b 100644
--- a/patches/server/0386-Expose-game-version.patch
+++ b/patches/server/0386-Expose-game-version.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose game version
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 97474f1835bb92446b2d63db40791310676d936c..d0545e5543f60ca30ca885407cca442365644e84 100644
+index 8d104a58a5ebe4e019d398f17286527f2d33dac7..c3855d89f7d9b8c17b53d7ed34734d32f338fbc5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -579,6 +579,13 @@ public final class CraftServer implements Server {
+@@ -580,6 +580,13 @@ public final class CraftServer implements Server {
return this.bukkitVersion;
}
diff --git a/patches/server/0389-misc-debugging-dumps.patch b/patches/server/0389-misc-debugging-dumps.patch
index a6b7eb769d..bd189e26bd 100644
--- a/patches/server/0389-misc-debugging-dumps.patch
+++ b/patches/server/0389-misc-debugging-dumps.patch
@@ -74,10 +74,10 @@ index 0c7f280bae81bbb492d5780a43e5ffda0f58756a..238a7bc87ab49da1f0fa3c733dd512fd
this.connection.send(new ClientboundDisconnectPacket(ichatmutablecomponent));
this.connection.disconnect(ichatmutablecomponent);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index d0545e5543f60ca30ca885407cca442365644e84..11a254484d078769085b278eb338d320d30b5a5a 100644
+index c3855d89f7d9b8c17b53d7ed34734d32f338fbc5..704572fb2b62afccf0a130b8430c78d306587b65 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1025,6 +1025,7 @@ public final class CraftServer implements Server {
+@@ -1026,6 +1026,7 @@ public final class CraftServer implements Server {
plugin.getDescription().getFullName(),
"This plugin is not properly shutting down its async tasks when it is being reloaded. This may cause conflicts with the newly loaded version of the plugin"
));
diff --git a/patches/server/0390-Prevent-teleporting-dead-entities.patch b/patches/server/0390-Prevent-teleporting-dead-entities.patch
index a19b886516..b71bb4acbf 100644
--- a/patches/server/0390-Prevent-teleporting-dead-entities.patch
+++ b/patches/server/0390-Prevent-teleporting-dead-entities.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Prevent teleporting dead entities
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index fbc5b78c0356d2bbe7a5eb48424e9d701251ac25..5257f7f32f5fea130fb391e32300d803a7fbb3a8 100644
+index 2f220a0b42aae276f9fb7a3f4ec5d2890b61af16..b7c1bc87b91c1056419681a09624efefc924815f 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1615,6 +1615,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1617,6 +1617,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
public void internalTeleport(double d0, double d1, double d2, float f, float f1, Set<RelativeMovement> set) { // Paper
diff --git a/patches/server/0392-Implement-Mob-Goal-API.patch b/patches/server/0392-Implement-Mob-Goal-API.patch
index 0cc6e5c1f4..bde7867729 100644
--- a/patches/server/0392-Implement-Mob-Goal-API.patch
+++ b/patches/server/0392-Implement-Mob-Goal-API.patch
@@ -792,10 +792,10 @@ index 4379b9948f1eecfe6fd7dea98e298ad5f761019a..3f081183521603824430709886a9cc31
LOOK,
JUMP,
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 11a254484d078769085b278eb338d320d30b5a5a..94f938225f665a9b75e910ae2c8bb4617191d0aa 100644
+index 704572fb2b62afccf0a130b8430c78d306587b65..900e38b7ac712cdbc64ec580ee7f2e09e1ceccc3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2793,5 +2793,11 @@ public final class CraftServer implements Server {
+@@ -2794,5 +2794,11 @@ public final class CraftServer implements Server {
public boolean isStopping() {
return net.minecraft.server.MinecraftServer.getServer().hasStopped();
}
diff --git a/patches/server/0394-Option-for-maximum-exp-value-when-merging-orbs.patch b/patches/server/0394-Option-for-maximum-exp-value-when-merging-orbs.patch
index 4758b635d4..fcbdeef565 100644
--- a/patches/server/0394-Option-for-maximum-exp-value-when-merging-orbs.patch
+++ b/patches/server/0394-Option-for-maximum-exp-value-when-merging-orbs.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Option for maximum exp value when merging orbs
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 9a9896e9424298c564a11a541448b54198461e62..274c88c8bc2b1936e4db003709c17bcc73cf6b27 100644
+index 81c77354a856956283fc149980a9a09e99b544f5..f120e9f2fa6919419f354f164d415a16a19ea9b0 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -661,16 +661,30 @@ public class CraftEventFactory {
+@@ -686,16 +686,30 @@ public class CraftEventFactory {
net.minecraft.world.entity.ExperienceOrb xp = (net.minecraft.world.entity.ExperienceOrb) entity;
double radius = world.spigotConfig.expMerge;
if (radius > 0) {
diff --git a/patches/server/0395-ExperienceOrbMergeEvent.patch b/patches/server/0395-ExperienceOrbMergeEvent.patch
index ba42e31bb5..464fea9bcf 100644
--- a/patches/server/0395-ExperienceOrbMergeEvent.patch
+++ b/patches/server/0395-ExperienceOrbMergeEvent.patch
@@ -9,10 +9,10 @@ Plugins can cancel this if they want to ensure experience orbs do not lose impor
metadata such as spawn reason, or conditionally move data from source to target.
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 274c88c8bc2b1936e4db003709c17bcc73cf6b27..722160b12bbeb2f4ffe1c0a2916042f5a0bad6d5 100644
+index f120e9f2fa6919419f354f164d415a16a19ea9b0..10eb0eed4bf0cc93e4e32c282735c2863f10837c 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -671,7 +671,7 @@ public class CraftEventFactory {
+@@ -696,7 +696,7 @@ public class CraftEventFactory {
if (e instanceof net.minecraft.world.entity.ExperienceOrb) {
net.minecraft.world.entity.ExperienceOrb loopItem = (net.minecraft.world.entity.ExperienceOrb) e;
// Paper start
diff --git a/patches/server/0399-Wait-for-Async-Tasks-during-shutdown.patch b/patches/server/0399-Wait-for-Async-Tasks-during-shutdown.patch
index 7ba39bcc93..77d4f566df 100644
--- a/patches/server/0399-Wait-for-Async-Tasks-during-shutdown.patch
+++ b/patches/server/0399-Wait-for-Async-Tasks-during-shutdown.patch
@@ -22,10 +22,10 @@ index f4ad35b55cacd5c1c3e4d81d4a9cf9675349ce79..53876c0d957e2d151e93744eff606060
// CraftBukkit end
if (this.getConnection() != null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 94f938225f665a9b75e910ae2c8bb4617191d0aa..3f94c9aa16ba5a6bba0f7711acf6eae3201666fd 100644
+index 900e38b7ac712cdbc64ec580ee7f2e09e1ceccc3..6134dfb1b64c8ab88053f62aea5341ead2563db7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1035,6 +1035,31 @@ public final class CraftServer implements Server {
+@@ -1036,6 +1036,31 @@ public final class CraftServer implements Server {
org.spigotmc.WatchdogThread.hasStarted = true; // Paper - Disable watchdog early timeout on reload
}
diff --git a/patches/server/0412-Prevent-position-desync-in-playerconnection-causing-.patch b/patches/server/0412-Prevent-position-desync-in-playerconnection-causing-.patch
index ed135cb3c3..36409ceb07 100644
--- a/patches/server/0412-Prevent-position-desync-in-playerconnection-causing-.patch
+++ b/patches/server/0412-Prevent-position-desync-in-playerconnection-causing-.patch
@@ -14,10 +14,10 @@ behaviour, we need to move all of this dangerous logic outside
of the move call and into an appropriate place in the tick method.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 5257f7f32f5fea130fb391e32300d803a7fbb3a8..ae91463a28de87f939ad7dde1674dcb1139ef197 100644
+index b7c1bc87b91c1056419681a09624efefc924815f..7e2f2c503f0af6b63ae496beb7cd9b34e61b16c9 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1441,6 +1441,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1443,6 +1443,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.player.move(MoverType.PLAYER, new Vec3(d6, d7, d8));
this.player.onGround = packet.isOnGround(); // CraftBukkit - SPIGOT-5810, SPIGOT-5835, SPIGOT-6828: reset by this.player.move
diff --git a/patches/server/0416-Add-and-implement-PlayerRecipeBookClickEvent.patch b/patches/server/0416-Add-and-implement-PlayerRecipeBookClickEvent.patch
index 59a4e9be18..ec8e865f9b 100644
--- a/patches/server/0416-Add-and-implement-PlayerRecipeBookClickEvent.patch
+++ b/patches/server/0416-Add-and-implement-PlayerRecipeBookClickEvent.patch
@@ -5,25 +5,51 @@ Subject: [PATCH] Add and implement PlayerRecipeBookClickEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ae91463a28de87f939ad7dde1674dcb1139ef197..d48dfd41d81ccd0931a410b9e2b9a11b604a451b 100644
+index 7e2f2c503f0af6b63ae496beb7cd9b34e61b16c9..dbae4102766837af9b173773c3d1a09439a1d606 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3117,9 +3117,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3116,16 +3116,40 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (!this.player.containerMenu.stillValid(this.player)) {
ServerGamePacketListenerImpl.LOGGER.debug("Player {} interacted with invalid menu {}", this.player, this.player.containerMenu);
} else {
-- this.server.getRecipeManager().byKey(packet.getRecipe()).ifPresent((irecipe) -> {
-- ((RecipeBookMenu) this.player.containerMenu).handlePlacement(packet.isShiftDown(), irecipe, this.player);
-- });
-+ // Paper start - fire event for clicking recipes in the recipe book
-+ com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent event = new com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent(
-+ player.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftNamespacedKey.fromMinecraft(packet.getRecipe()), packet.isShiftDown());
-+ if (event.callEvent() && this.player.containerMenu instanceof RecipeBookMenu<?> recipeBookMenu) { // check if inventory changed during event handling
-+ this.server.getRecipeManager().byKey(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(event.getRecipe())).ifPresent((irecipe) -> {
-+ recipeBookMenu.handlePlacement(event.isMakeAll(), irecipe, this.player);
-+ });
++ // Paper start
++ ResourceLocation recipeName = packet.getRecipe();
++ boolean makeAll = packet.isShiftDown();
++ com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent paperEvent = new com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent(
++ this.player.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftNamespacedKey.fromMinecraft(recipeName), makeAll
++ );
++ if (!paperEvent.callEvent()) {
++ return;
+ }
++ recipeName = CraftNamespacedKey.toMinecraft(paperEvent.getRecipe());
++ makeAll = paperEvent.isMakeAll();
++ if (org.bukkit.event.player.PlayerRecipeBookClickEvent.getHandlerList().getRegisteredListeners().length > 0) {
+ // Paper end
+ // CraftBukkit start - implement PlayerRecipeBookClickEvent
+- org.bukkit.inventory.Recipe recipe = this.cserver.getRecipe(CraftNamespacedKey.fromMinecraft(packet.getRecipe()));
++ org.bukkit.inventory.Recipe recipe = this.cserver.getRecipe(CraftNamespacedKey.fromMinecraft(recipeName)); // Paper
+ if (recipe == null) {
+ return;
+ }
+- org.bukkit.event.player.PlayerRecipeBookClickEvent event = CraftEventFactory.callRecipeBookClickEvent(this.player, recipe, packet.isShiftDown());
++ // Paper start
++ org.bukkit.event.player.PlayerRecipeBookClickEvent event = CraftEventFactory.callRecipeBookClickEvent(this.player, recipe, makeAll);
++ recipeName = CraftNamespacedKey.toMinecraft(((org.bukkit.Keyed) event.getRecipe()).getKey());
++ makeAll = event.isShiftClick();
++ }
++ if (!(this.player.containerMenu instanceof RecipeBookMenu<?>)) {
++ return;
++ }
++ // Paper end
+
+ // Cast to keyed should be safe as the recipe will never be a MerchantRecipe.
+- this.server.getRecipeManager().byKey(CraftNamespacedKey.toMinecraft(((org.bukkit.Keyed) event.getRecipe()).getKey())).ifPresent((irecipe) -> {
+- ((RecipeBookMenu) this.player.containerMenu).handlePlacement(event.isShiftClick(), irecipe, this.player);
++ // Paper start
++ final boolean finalMakeAll = makeAll;
++ this.server.getRecipeManager().byKey(recipeName).ifPresent((irecipe) -> {
++ ((RecipeBookMenu) this.player.containerMenu).handlePlacement(finalMakeAll, irecipe, this.player);
++ // Paper end
+ });
+ // CraftBukkit end
}
- }
- }
diff --git a/patches/server/0418-Add-permission-for-command-blocks.patch b/patches/server/0418-Add-permission-for-command-blocks.patch
index 81c928a4ad..83a241e57c 100644
--- a/patches/server/0418-Add-permission-for-command-blocks.patch
+++ b/patches/server/0418-Add-permission-for-command-blocks.patch
@@ -18,10 +18,10 @@ index 58a1a54b676922ef0862dcab98e7aada5de80311..cf47536a2e37d53406fc9cb3f09095e0
return false;
} else if (this.player.blockActionRestricted(this.level, pos, this.gameModeForPlayer)) {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index d48dfd41d81ccd0931a410b9e2b9a11b604a451b..bd7407f9c294fc5157ec2644e9440f799a19935e 100644
+index dbae4102766837af9b173773c3d1a09439a1d606..f7c21abf2a783dc69c7fbe5719b4ca563a9deb65 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -878,7 +878,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -880,7 +880,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (!this.server.isCommandBlockEnabled()) {
this.player.sendSystemMessage(Component.translatable("advMode.notEnabled"));
@@ -30,7 +30,7 @@ index d48dfd41d81ccd0931a410b9e2b9a11b604a451b..bd7407f9c294fc5157ec2644e9440f79
this.player.sendSystemMessage(Component.translatable("advMode.notAllowed"));
} else {
BaseCommandBlock commandblocklistenerabstract = null;
-@@ -945,7 +945,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -947,7 +947,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (!this.server.isCommandBlockEnabled()) {
this.player.sendSystemMessage(Component.translatable("advMode.notEnabled"));
diff --git a/patches/server/0420-Fix-Per-World-Difficulty-Remembering-Difficulty.patch b/patches/server/0420-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
index 10a3d145c0..743a59c8ce 100644
--- a/patches/server/0420-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
+++ b/patches/server/0420-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
@@ -8,7 +8,7 @@ makes it so that the server keeps the last difficulty used instead
of restoring the server.properties every single load.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 53876c0d957e2d151e93744eff60606096f02e66..53c0246acda9fe1242710260e250429ae51eceb8 100644
+index 7668cceb6dcf0eafbd00abb24deaefe9729d261a..d1555152399221947283a68c2054cf4a93377666 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -798,7 +798,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -76,7 +76,7 @@ index 6a4c7783146ff6b6703e9ae814134a8d1086cf7f..1ffd3854239862414e6ceecf2764ba3d
@Override
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 6dcac005b57234983d0ed05fe825a16c98eb4557..2040b2defecb484ee7b46a885e924483387ee8fe 100644
+index 15a70bad66eb2508f58ff184061c2d19e45297e1..f80645fe0e1f9ad2a70ea33c5dc6a8c02ff262ec 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1203,7 +1203,7 @@ public class ServerPlayer extends Player {
@@ -89,10 +89,10 @@ index 6dcac005b57234983d0ed05fe825a16c98eb4557..2040b2defecb484ee7b46a885e924483
playerlist.sendPlayerPermissionLevel(this);
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index bd7407f9c294fc5157ec2644e9440f799a19935e..087278f151c5ae45b64cf3b7318528bd90155b24 100644
+index f7c21abf2a783dc69c7fbe5719b4ca563a9deb65..a3d7f9cc074ce83815938a77c6119af95790d7e7 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3355,7 +3355,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3381,7 +3381,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
public void handleChangeDifficulty(ServerboundChangeDifficultyPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (this.player.hasPermissions(2) || this.isSingleplayerOwner()) {
@@ -102,10 +102,10 @@ index bd7407f9c294fc5157ec2644e9440f799a19935e..087278f151c5ae45b64cf3b7318528bd
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 3f94c9aa16ba5a6bba0f7711acf6eae3201666fd..0135e667fc745015882a00248a523396814093e6 100644
+index 6134dfb1b64c8ab88053f62aea5341ead2563db7..a910974f8e6f6f5a4cc63d8060a62ac21dfe0d01 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -974,8 +974,8 @@ public final class CraftServer implements Server {
+@@ -975,8 +975,8 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
for (ServerLevel world : this.console.getAllLevels()) {
diff --git a/patches/server/0424-Add-Plugin-Tickets-to-API-Chunk-Methods.patch b/patches/server/0424-Add-Plugin-Tickets-to-API-Chunk-Methods.patch
index 27f64b8902..a992c7b86e 100644
--- a/patches/server/0424-Add-Plugin-Tickets-to-API-Chunk-Methods.patch
+++ b/patches/server/0424-Add-Plugin-Tickets-to-API-Chunk-Methods.patch
@@ -22,10 +22,10 @@ wants it to collect even faster, they can restore that setting back to 1 instead
Not adding it to .getType() though to keep behavior consistent with vanilla for performance reasons.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 0135e667fc745015882a00248a523396814093e6..bc809752e187b3b2e5ecdc514e19596a5ec4c338 100644
+index a910974f8e6f6f5a4cc63d8060a62ac21dfe0d01..878fab611ed590e815f268af11dff27cef8d7fde 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -379,7 +379,7 @@ public final class CraftServer implements Server {
+@@ -380,7 +380,7 @@ public final class CraftServer implements Server {
this.overrideSpawnLimits();
console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose"));
@@ -34,7 +34,7 @@ index 0135e667fc745015882a00248a523396814093e6..bc809752e187b3b2e5ecdc514e19596a
this.minimumAPI = this.configuration.getString("settings.minimum-api");
this.loadIcon();
-@@ -954,7 +954,7 @@ public final class CraftServer implements Server {
+@@ -955,7 +955,7 @@ public final class CraftServer implements Server {
this.console.setMotd(config.motd);
this.overrideSpawnLimits();
this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose"));
diff --git a/patches/server/0436-Add-PrepareResultEvent.patch b/patches/server/0436-Add-PrepareResultEvent.patch
index 531bf60a72..ba35d9fc85 100644
--- a/patches/server/0436-Add-PrepareResultEvent.patch
+++ b/patches/server/0436-Add-PrepareResultEvent.patch
@@ -94,10 +94,10 @@ index 8734a129244271b370f965fcbf488a14ce04684a..00f01ab2eff69c18b50ec07b7623af66
private void setupRecipeList(Container input, ItemStack stack) {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 722160b12bbeb2f4ffe1c0a2916042f5a0bad6d5..ad14e77c163c52e57bd21a60aee4cc729ed1236d 100644
+index 10eb0eed4bf0cc93e4e32c282735c2863f10837c..7dc806760dbb26befde605d991d57660862484a1 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1641,26 +1641,53 @@ public class CraftEventFactory {
+@@ -1667,26 +1667,53 @@ public class CraftEventFactory {
return event;
}
diff --git a/patches/server/0448-Brand-support.patch b/patches/server/0448-Brand-support.patch
index e184ab9da4..857acc4848 100644
--- a/patches/server/0448-Brand-support.patch
+++ b/patches/server/0448-Brand-support.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Brand support
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 087278f151c5ae45b64cf3b7318528bd90155b24..435f02e4189754c60f589d13feae8fbc138e4afc 100644
+index a3d7f9cc074ce83815938a77c6119af95790d7e7..6f43de26f3d757dc14572c2d42dd8b6694e9fb0a 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -302,6 +302,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -304,6 +304,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit
private static final int MAX_SIGN_LINE_LENGTH = Integer.getInteger("Paper.maxSignLength", 80); // Paper
@@ -17,7 +17,7 @@ index 087278f151c5ae45b64cf3b7318528bd90155b24..435f02e4189754c60f589d13feae8fbc
public ServerGamePacketListenerImpl(MinecraftServer server, Connection connection, ServerPlayer player) {
this.lastChatTimeStamp = new AtomicReference(Instant.EPOCH);
this.lastSeenMessages = new LastSeenMessagesValidator(20);
-@@ -3310,6 +3312,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3336,6 +3338,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private static final ResourceLocation CUSTOM_REGISTER = new ResourceLocation("register");
private static final ResourceLocation CUSTOM_UNREGISTER = new ResourceLocation("unregister");
@@ -26,7 +26,7 @@ index 087278f151c5ae45b64cf3b7318528bd90155b24..435f02e4189754c60f589d13feae8fbc
@Override
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
-@@ -3337,6 +3341,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3363,6 +3367,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
try {
byte[] data = new byte[packet.data.readableBytes()];
packet.data.readBytes(data);
@@ -42,7 +42,7 @@ index 087278f151c5ae45b64cf3b7318528bd90155b24..435f02e4189754c60f589d13feae8fbc
this.cserver.getMessenger().dispatchIncomingMessage(this.player.getBukkitEntity(), packet.identifier.toString(), data);
} catch (Exception ex) {
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t dispatch custom payload", ex);
-@@ -3346,6 +3359,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3372,6 +3385,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
@@ -56,10 +56,10 @@ index 087278f151c5ae45b64cf3b7318528bd90155b24..435f02e4189754c60f589d13feae8fbc
return (!this.player.joining && !this.connection.isConnected()) || this.processedDisconnect; // Paper
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 0e5ff317d541a077f822bc0229e71915c2faf3c0..d6bf91d33b4491a051ae977d24f90c68dcfb433c 100644
+index 8094fbb1aa84c93cf6660e2c7a32772bfc3ec62f..82229144f798eab2aacadb71250765c4e956b701 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2949,6 +2949,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2981,6 +2981,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
};
diff --git a/patches/server/0454-Add-BellRingEvent.patch b/patches/server/0454-Add-BellRingEvent.patch
index 5d94e91a63..fd04ce804b 100644
--- a/patches/server/0454-Add-BellRingEvent.patch
+++ b/patches/server/0454-Add-BellRingEvent.patch
@@ -7,10 +7,10 @@ Add a new event, BellRingEvent, to trigger whenever a player rings a
village bell. Passes along the bell block and the player who rang it.
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index ad14e77c163c52e57bd21a60aee4cc729ed1236d..0104ccb2bede7c2297261c022e04ffec6327eb85 100644
+index 7dc806760dbb26befde605d991d57660862484a1..ab6f24426031d47d25fcf94421569a3276cdca9a 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -340,10 +340,11 @@ public class CraftEventFactory {
+@@ -365,10 +365,11 @@ public class CraftEventFactory {
return tradeSelectEvent;
}
diff --git a/patches/server/0459-PortalCreateEvent-needs-to-know-its-entity.patch b/patches/server/0459-PortalCreateEvent-needs-to-know-its-entity.patch
index d4898a5e3e..c6b3bbabfa 100644
--- a/patches/server/0459-PortalCreateEvent-needs-to-know-its-entity.patch
+++ b/patches/server/0459-PortalCreateEvent-needs-to-know-its-entity.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] PortalCreateEvent needs to know its entity
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index dcb01c399d2b30d907bfc51584215d9300b6d23e..5ebc5e760ac43b88678977ced06b8d72f8358a68 100644
+index ee274fb9c8292a807e438902cc5d7f49c30d6627..34e54233d54f21cf4304c39e53aa6a7fb06a67cf 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -448,7 +448,7 @@ public final class ItemStack {
+@@ -452,7 +452,7 @@ public final class ItemStack {
net.minecraft.world.level.block.state.BlockState block = world.getBlockState(newblockposition);
if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically
diff --git a/patches/server/0462-Create-HoverEvent-from-ItemStack-Entity.patch b/patches/server/0462-Create-HoverEvent-from-ItemStack-Entity.patch
index 042efb92e7..c1ff218feb 100644
--- a/patches/server/0462-Create-HoverEvent-from-ItemStack-Entity.patch
+++ b/patches/server/0462-Create-HoverEvent-from-ItemStack-Entity.patch
@@ -5,14 +5,15 @@ Subject: [PATCH] Create HoverEvent from ItemStack Entity
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-index f8475390d69bef6f3eca5a57d5f44021fabf4942..21f5c0f2fc10b5f5752e214a08e858227bdcf2ce 100644
+index 5aece14ec931f4c564e847a2797e92da8ffb569b..ff05e29bdc8d21e9e6ddb4cb23f8fc9396481ffc 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -468,5 +468,40 @@ public final class CraftItemFactory implements ItemFactory {
-
+@@ -491,4 +491,41 @@ public final class CraftItemFactory implements ItemFactory {
return nms != null ? net.minecraft.locale.Language.getInstance().getOrDefault(nms.getItem().getDescriptionId(nms)) : null;
}
+ // Paper end - add getI18NDisplayName
+
++ // Paper start - bungee hover events
+ @Override
+ public net.md_5.bungee.api.chat.hover.content.Content hoverContentOf(ItemStack itemStack) {
+ net.md_5.bungee.api.chat.ItemTag itemTag = net.md_5.bungee.api.chat.ItemTag.ofNbt(CraftItemStack.asNMSCopy(itemStack).getOrCreateTag().toString());
@@ -47,5 +48,5 @@ index f8475390d69bef6f3eca5a57d5f44021fabf4942..21f5c0f2fc10b5f5752e214a08e85822
+ entity.getUniqueId().toString(),
+ new net.md_5.bungee.api.chat.TextComponent(customName));
+ }
- // Paper end
++ // Paper end - bungee hover events
}
diff --git a/patches/server/0464-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch b/patches/server/0464-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch
index 9334e3beb9..b9058e61ed 100644
--- a/patches/server/0464-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch
+++ b/patches/server/0464-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch
@@ -9,10 +9,10 @@ as this is how Vanilla teleports entities.
Cancel any pending motion when teleported.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 435f02e4189754c60f589d13feae8fbc138e4afc..be4e9a35b8bf557d254ca63376ec3a0d2882a807 100644
+index 6f43de26f3d757dc14572c2d42dd8b6694e9fb0a..4341fdd364194690a4f2329bbf4415c455a144bf 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -760,7 +760,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -762,7 +762,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
return;
}
@@ -21,7 +21,7 @@ index 435f02e4189754c60f589d13feae8fbc138e4afc..be4e9a35b8bf557d254ca63376ec3a0d
this.lastGoodX = this.awaitingPositionFromClient.x;
this.lastGoodY = this.awaitingPositionFromClient.y;
this.lastGoodZ = this.awaitingPositionFromClient.z;
-@@ -1659,7 +1659,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1661,7 +1661,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// CraftBukkit end
this.awaitingTeleportTime = this.tickCount;
@@ -31,7 +31,7 @@ index 435f02e4189754c60f589d13feae8fbc138e4afc..be4e9a35b8bf557d254ca63376ec3a0d
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index a40aa3e70b5d38fb2be4c916fcb6f7fded5e5ccc..4cac7ae766e71fedfd2be8d17741ffd40ae1cee4 100644
+index ffd7e11b16604050e87a6b8aac08948fd3311bd1..fca862584439c87b049af4cdd9f79fe4ee30ea40 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -159,6 +159,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
diff --git a/patches/server/0469-Lazily-track-plugin-scoreboards-by-default.patch b/patches/server/0469-Lazily-track-plugin-scoreboards-by-default.patch
index 37ef8c7f81..6716cd5857 100644
--- a/patches/server/0469-Lazily-track-plugin-scoreboards-by-default.patch
+++ b/patches/server/0469-Lazily-track-plugin-scoreboards-by-default.patch
@@ -14,7 +14,7 @@ this breaks your workflow you can always force all scoreboards to be tracked wit
settings.track-plugin-scoreboards in paper.yml.
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
-index 2471a6d0b7a8086cf4c0a41b10c05ed50d790d11..e233eef291f64622947b0b6c4559639e510c087f 100644
+index 3f09420ba9268ac1dc5440c0739744370c0de319..052389310826ee6b97cf27dfd952e0101fb2d097 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
@@ -18,6 +18,7 @@ import org.bukkit.scoreboard.Team;
@@ -29,17 +29,17 @@ index 2471a6d0b7a8086cf4c0a41b10c05ed50d790d11..e233eef291f64622947b0b6c4559639e
Preconditions.checkArgument(renderType != null, "RenderType cannot be null");
Preconditions.checkArgument(name.length() <= Short.MAX_VALUE, "The name '%s' is longer than the limit of 32767 characters (%s)", name, name.length());
Preconditions.checkArgument(this.board.getObjective(name) == null, "An objective of name '%s' already exists", name);
-+ // Paper start - the block comment from the old registerNewObjective didnt cause a conflict when rebasing, so this block wasn't added to the adventure registerNewObjective
++ // Paper start - lazily track plugin scoreboards
+ if (((CraftCriteria) criteria).criteria != net.minecraft.world.scores.criteria.ObjectiveCriteria.DUMMY && !this.registeredGlobally) {
+ net.minecraft.server.MinecraftServer.getServer().server.getScoreboardManager().registerScoreboardForVanilla(this);
+ this.registeredGlobally = true;
+ }
+ // Paper end
- net.minecraft.world.scores.Objective objective = board.addObjective(name, ((CraftCriteria) criteria).criteria, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType));
+ net.minecraft.world.scores.Objective objective = this.board.addObjective(name, ((CraftCriteria) criteria).criteria, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType));
return new CraftObjective(this, objective);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
-index d3855731f9b63357ebe4f8f4d5941b5353dff935..6fcb2356b471c5a61faa0813a891c3898683d01f 100644
+index 282cb5e41fed48df890eaa30e42563289e065caa..afc43b52698db4bf7d89a576c2cbca0ddc9e04e2 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
@@ -30,6 +30,7 @@ public final class CraftScoreboardManager implements ScoreboardManager {
diff --git a/patches/server/0473-Reset-Ender-Crystals-on-Dragon-Spawn.patch b/patches/server/0473-Reset-Ender-Crystals-on-Dragon-Spawn.patch
index b1477cf8eb..7835fd9104 100644
--- a/patches/server/0473-Reset-Ender-Crystals-on-Dragon-Spawn.patch
+++ b/patches/server/0473-Reset-Ender-Crystals-on-Dragon-Spawn.patch
@@ -11,14 +11,14 @@ This ensures the crystals/pillars are in expected state when the dragon spawns.
See #3522
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-index 35304d7a60348a2b4e1eec43418086086502e4ab..cae4c52e239bdbb916d69e14617814fd08279f1b 100644
+index bf405efcd44b9d6fdc838d722d67ff7f78ceedce..f39344cb45f3134ef368d7569b24ba68308268db 100644
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-@@ -412,6 +412,7 @@ public class EndDragonFight {
- enderDragon.moveTo((double)this.origin.getX(), (double)(128 + this.origin.getY()), (double)this.origin.getZ(), this.level.random.nextFloat() * 360.0F, 0.0F);
- this.level.addFreshEntity(enderDragon);
- this.dragonUUID = enderDragon.getUUID();
+@@ -467,6 +467,7 @@ public class EndDragonFight {
+ entityenderdragon.moveTo((double) this.origin.getX(), (double) (128 + this.origin.getY()), (double) this.origin.getZ(), this.level.random.nextFloat() * 360.0F, 0.0F);
+ this.level.addFreshEntity(entityenderdragon);
+ this.dragonUUID = entityenderdragon.getUUID();
+ this.resetSpikeCrystals(); // Paper
}
- return enderDragon;
+ return entityenderdragon;
diff --git a/patches/server/0474-Fix-for-large-move-vectors-crashing-server.patch b/patches/server/0474-Fix-for-large-move-vectors-crashing-server.patch
index e2509eb52e..2191615073 100644
--- a/patches/server/0474-Fix-for-large-move-vectors-crashing-server.patch
+++ b/patches/server/0474-Fix-for-large-move-vectors-crashing-server.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Fix for large move vectors crashing server
Check movement distance also based on current position.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index be4e9a35b8bf557d254ca63376ec3a0d2882a807..20ab6c5736abeb6978c8f09ce0ff624a4ba3a978 100644
+index 4341fdd364194690a4f2329bbf4415c455a144bf..7d70b03b7b5e283ce5cbeb99d2cb61a48cc70932 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -567,9 +567,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -569,9 +569,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (entity != this.player && entity.getControllingPassenger() == this.player && entity == this.lastVehicle) {
ServerLevel worldserver = this.player.serverLevel();
@@ -22,7 +22,7 @@ index be4e9a35b8bf557d254ca63376ec3a0d2882a807..20ab6c5736abeb6978c8f09ce0ff624a
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
-@@ -579,8 +579,19 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -581,8 +581,19 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
double d7 = d4 - this.vehicleFirstGoodY;
double d8 = d5 - this.vehicleFirstGoodZ;
double d9 = entity.getDeltaMovement().lengthSqr();
@@ -44,7 +44,7 @@ index be4e9a35b8bf557d254ca63376ec3a0d2882a807..20ab6c5736abeb6978c8f09ce0ff624a
// CraftBukkit start - handle custom speeds and skipped ticks
this.allowedPlayerTicks += (System.currentTimeMillis() / 50) - this.lastTick;
-@@ -626,9 +637,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -628,9 +639,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
boolean flag = worldserver.noCollision(entity, entity.getBoundingBox().deflate(0.0625D));
@@ -57,7 +57,7 @@ index be4e9a35b8bf557d254ca63376ec3a0d2882a807..20ab6c5736abeb6978c8f09ce0ff624a
boolean flag1 = entity.verticalCollisionBelow;
if (entity instanceof LivingEntity) {
-@@ -1351,7 +1362,18 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1353,7 +1364,18 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
double d7 = d1 - this.firstGoodY;
double d8 = d2 - this.firstGoodZ;
double d9 = this.player.getDeltaMovement().lengthSqr();
@@ -77,7 +77,7 @@ index be4e9a35b8bf557d254ca63376ec3a0d2882a807..20ab6c5736abeb6978c8f09ce0ff624a
if (this.player.isSleeping()) {
if (d10 > 1.0D) {
-@@ -1403,9 +1425,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1405,9 +1427,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
AABB axisalignedbb = this.player.getBoundingBox();
diff --git a/patches/server/0480-Player-elytra-boost-API.patch b/patches/server/0480-Player-elytra-boost-API.patch
index 9f36308d6e..3eccd760ac 100644
--- a/patches/server/0480-Player-elytra-boost-API.patch
+++ b/patches/server/0480-Player-elytra-boost-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Player elytra boost API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index d6bf91d33b4491a051ae977d24f90c68dcfb433c..aae9a897ce3abd045fb2d17f565ef2e38490257a 100644
+index 82229144f798eab2aacadb71250765c4e956b701..800c6da91f6a2bdb932cc7192bde7b974fce83f9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -623,6 +623,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -625,6 +625,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
throw new RuntimeException("Unknown settings type");
}
diff --git a/patches/server/0483-Add-getOfflinePlayerIfCached-String.patch b/patches/server/0483-Add-getOfflinePlayerIfCached-String.patch
index c60b3e54b4..f7825d907e 100644
--- a/patches/server/0483-Add-getOfflinePlayerIfCached-String.patch
+++ b/patches/server/0483-Add-getOfflinePlayerIfCached-String.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add getOfflinePlayerIfCached(String)
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index bc809752e187b3b2e5ecdc514e19596a5ec4c338..62d44490887480b522d811befb4c104e1cee9663 100644
+index 878fab611ed590e815f268af11dff27cef8d7fde..1dc93c013eb34b395e7a0523ccd185ec1372be19 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1830,6 +1830,28 @@ public final class CraftServer implements Server {
+@@ -1831,6 +1831,28 @@ public final class CraftServer implements Server {
return result;
}
diff --git a/patches/server/0485-Toggle-for-removing-existing-dragon.patch b/patches/server/0485-Toggle-for-removing-existing-dragon.patch
index 3ea483fce0..5d91962290 100644
--- a/patches/server/0485-Toggle-for-removing-existing-dragon.patch
+++ b/patches/server/0485-Toggle-for-removing-existing-dragon.patch
@@ -5,15 +5,15 @@ Subject: [PATCH] Toggle for removing existing dragon
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-index cae4c52e239bdbb916d69e14617814fd08279f1b..58823aeb8316628be716051b74307b01c37ad8a0 100644
+index f39344cb45f3134ef368d7569b24ba68308268db..1fad121f0559cf5c40ccbf7290bfb600b17dc219 100644
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-@@ -195,7 +195,7 @@ public class EndDragonFight {
- this.dragonUUID = enderDragon.getUUID();
- LOGGER.info("Found that there's a dragon still alive ({})", (Object)enderDragon);
+@@ -209,7 +209,7 @@ public class EndDragonFight {
+ this.dragonUUID = entityenderdragon.getUUID();
+ EndDragonFight.LOGGER.info("Found that there's a dragon still alive ({})", entityenderdragon);
this.dragonKilled = false;
-- if (!bl) {
-+ if (!bl && this.level.paperConfig().entities.behavior.shouldRemoveDragon) {
- LOGGER.info("But we didn't have a portal, let's remove it.");
- enderDragon.discard();
+- if (!flag) {
++ if (!flag && this.level.paperConfig().entities.behavior.shouldRemoveDragon) {
+ EndDragonFight.LOGGER.info("But we didn't have a portal, let's remove it.");
+ entityenderdragon.discard();
this.dragonUUID = null;
diff --git a/patches/server/0490-Add-API-for-quit-reason.patch b/patches/server/0490-Add-API-for-quit-reason.patch
index e332954472..f58db3c972 100644
--- a/patches/server/0490-Add-API-for-quit-reason.patch
+++ b/patches/server/0490-Add-API-for-quit-reason.patch
@@ -25,7 +25,7 @@ index 959d39e81cdde6fda90fcc95f842146448b4c6e4..a1467e8edd3ca66c306d01e0688a9fec
Connection.LOGGER.debug("Failed to sent packet", throwable);
ConnectionProtocol enumprotocol = this.getCurrentProtocol();
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index c22acc5e6333f8cc9b734bff48bb9ff7a00bfd4d..abde8074da754667d65f3894097ad2255c97f3f0 100644
+index e087b62f88157d57eb037feb0d39c076b286f755..0b81878a951643af1ce785b3adcca9b3eec7f1c3 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -275,6 +275,7 @@ public class ServerPlayer extends Player {
@@ -37,10 +37,10 @@ index c22acc5e6333f8cc9b734bff48bb9ff7a00bfd4d..abde8074da754667d65f3894097ad225
private final java.util.concurrent.atomic.AtomicReference<io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances> viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 20ab6c5736abeb6978c8f09ce0ff624a4ba3a978..f5850d85aa5c3917ed058b41cfeb32089f9d392e 100644
+index 7d70b03b7b5e283ce5cbeb99d2cb61a48cc70932..c6a1e8246ac22e83121cb17eee8e00ab1dd48306 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -507,6 +507,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -509,6 +509,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
final Component ichatbasecomponent = PaperAdventure.asVanilla(event.reason()); // Paper - Adventure
// CraftBukkit end
diff --git a/patches/server/0494-Fix-Player-spawnParticle-x-y-z-precision-loss.patch b/patches/server/0494-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
index 49268e0324..6a7ef09afd 100644
--- a/patches/server/0494-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
+++ b/patches/server/0494-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix Player spawnParticle x/y/z precision loss
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index aae9a897ce3abd045fb2d17f565ef2e38490257a..6c6e5e296f000ff031efe8ec2e334edaf9630210 100644
+index 800c6da91f6a2bdb932cc7192bde7b974fce83f9..7d64f73867f76ecd61cb14dfd8b15ddce918574d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2478,7 +2478,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2510,7 +2510,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (data != null) {
Preconditions.checkArgument(particle.getDataType().isInstance(data), "data (%s) should be %s", data.getClass(), particle.getDataType());
}
diff --git a/patches/server/0503-Limit-recipe-packets.patch b/patches/server/0503-Limit-recipe-packets.patch
index 68ca8f357c..9cc31e1551 100644
--- a/patches/server/0503-Limit-recipe-packets.patch
+++ b/patches/server/0503-Limit-recipe-packets.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Limit recipe packets
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index f5850d85aa5c3917ed058b41cfeb32089f9d392e..15e98935d333a5538438ed239fe8f4a590d4fe97 100644
+index c6a1e8246ac22e83121cb17eee8e00ab1dd48306..c1636c313994dc4b3ae4c19fc66137bd080a501c 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -266,6 +266,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -268,6 +268,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// CraftBukkit start - multithreaded fields
private final AtomicInteger chatSpamTickCount = new AtomicInteger();
private final java.util.concurrent.atomic.AtomicInteger tabSpamLimiter = new java.util.concurrent.atomic.AtomicInteger(); // Paper - configurable tab spam limits
@@ -16,7 +16,7 @@ index f5850d85aa5c3917ed058b41cfeb32089f9d392e..15e98935d333a5538438ed239fe8f4a5
// CraftBukkit end
private int dropSpamTickCount;
private double firstGoodX;
-@@ -418,6 +419,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -420,6 +421,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// CraftBukkit start
for (int spam; (spam = this.chatSpamTickCount.get()) > 0 && !this.chatSpamTickCount.compareAndSet(spam, spam - 1); ) ;
if (tabSpamLimiter.get() > 0) tabSpamLimiter.getAndDecrement(); // Paper - split to seperate variable
@@ -24,7 +24,7 @@ index f5850d85aa5c3917ed058b41cfeb32089f9d392e..15e98935d333a5538438ed239fe8f4a5
/* Use thread-safe field access instead
if (this.chatSpamTickCount > 0) {
--this.chatSpamTickCount;
-@@ -3136,6 +3138,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3135,6 +3137,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) {
diff --git a/patches/server/0508-Add-OBSTRUCTED-reason-to-BedEnterResult.patch b/patches/server/0508-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
index 5b29675101..2615ae803b 100644
--- a/patches/server/0508-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
+++ b/patches/server/0508-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add OBSTRUCTED reason to BedEnterResult
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 0104ccb2bede7c2297261c022e04ffec6327eb85..f92346b735967b488bc19ac5727338df75186248 100644
+index ab6f24426031d47d25fcf94421569a3276cdca9a..a82a5fd54a962fdcf86f2bc139085ed526cade5e 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -275,6 +275,10 @@ public class CraftEventFactory {
+@@ -300,6 +300,10 @@ public class CraftEventFactory {
return BedEnterResult.TOO_FAR_AWAY;
case NOT_SAFE:
return BedEnterResult.NOT_SAFE;
diff --git a/patches/server/0520-Fix-interact-event-not-being-called-sometimes.patch b/patches/server/0520-Fix-interact-event-not-being-called-sometimes.patch
index b43e990cdf..9637f2fe59 100644
--- a/patches/server/0520-Fix-interact-event-not-being-called-sometimes.patch
+++ b/patches/server/0520-Fix-interact-event-not-being-called-sometimes.patch
@@ -11,10 +11,10 @@ Subject: [PATCH] Fix interact event not being called sometimes
Co-authored-by: Moulberry <[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 15e98935d333a5538438ed239fe8f4a590d4fe97..9e8f22b9c5d445afb20a467e94d54c1da3549d50 100644
+index c1636c313994dc4b3ae4c19fc66137bd080a501c..ec1d92a71518b9329e81f12bc8ccef846fefc168 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1837,7 +1837,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1839,7 +1839,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
MutableComponent ichatmutablecomponent = Component.translatable("build.tooHigh", i - 1).withStyle(ChatFormatting.RED);
this.player.sendSystemMessage(ichatmutablecomponent, true);
@@ -23,13 +23,15 @@ index 15e98935d333a5538438ed239fe8f4a590d4fe97..9e8f22b9c5d445afb20a467e94d54c1d
this.player.swing(enumhand, true);
}
}
-@@ -2471,11 +2471,18 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
-
+@@ -2468,13 +2468,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
double d3 = player.gameMode.getGameModeForPlayer() == GameType.CREATIVE ? 5.0D : 4.5D;
// SPIGOT-5607: Only call interact event if no block or entity is being clicked. Use bukkit ray trace method, because it handles blocks and entities at the same time
-- org.bukkit.util.RayTraceResult result = this.player.level().getWorld().rayTrace(origin, origin.getDirection(), d3, org.bukkit.FluidCollisionMode.NEVER, false, 0.1, entity -> entity != this.player.getBukkitEntity() && this.player.getBukkitEntity().canSee(entity));
-+ org.bukkit.util.RayTraceResult result = this.player.level().getWorld().rayTrace(origin, origin.getDirection(), d3, org.bukkit.FluidCollisionMode.NEVER, false, 0.0, entity -> entity != this.player.getBukkitEntity() && this.player.getBukkitEntity().canSee(entity)); // Paper - change raySize from 0.1 to 0.0
-
+ // SPIGOT-7429: Make sure to call PlayerInteractEvent for spectators and non-pickable entities
+- org.bukkit.util.RayTraceResult result = this.player.level().getWorld().rayTrace(origin, origin.getDirection(), d3, org.bukkit.FluidCollisionMode.NEVER, false, 0.1, entity -> {
++ org.bukkit.util.RayTraceResult result = this.player.level().getWorld().rayTrace(origin, origin.getDirection(), d3, org.bukkit.FluidCollisionMode.NEVER, false, 0.0, entity -> { // Paper - change raySize from 0.1 to 0.0
+ Entity handle = ((CraftEntity) entity).getHandle();
+ return entity != this.player.getBukkitEntity() && this.player.getBukkitEntity().canSee(entity) && !handle.isSpectator() && handle.isPickable() && !handle.isPassengerOfSameVehicle(player);
+ });
if (result == null) {
CraftEventFactory.callPlayerInteractEvent(this.player, Action.LEFT_CLICK_AIR, this.player.getInventory().getSelected(), InteractionHand.MAIN_HAND);
- }
diff --git a/patches/server/0527-Implemented-BlockFailedDispenseEvent.patch b/patches/server/0527-Implemented-BlockFailedDispenseEvent.patch
index 9767db1a25..02c992577a 100644
--- a/patches/server/0527-Implemented-BlockFailedDispenseEvent.patch
+++ b/patches/server/0527-Implemented-BlockFailedDispenseEvent.patch
@@ -32,10 +32,10 @@ index 1415ad60163f6584619cc7caa61f1848d6ebaa93..801c4c120e98584bcf218a4ef9bd66d7
} else {
ItemStack itemstack = tileentitydispenser.getItem(i);
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index f92346b735967b488bc19ac5727338df75186248..a7a58cd44238f2eb9d472667abe9e230cad8e9bd 100644
+index a82a5fd54a962fdcf86f2bc139085ed526cade5e..5c6650892892228dd8e9b4fbd62f4f014d6ddff3 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1962,4 +1962,12 @@ public class CraftEventFactory {
+@@ -1995,4 +1995,12 @@ public class CraftEventFactory {
Bukkit.getPluginManager().callEvent(event);
return event;
}
diff --git a/patches/server/0534-Add-sendOpLevel-API.patch b/patches/server/0534-Add-sendOpLevel-API.patch
index d64b8c3468..0e04617c8e 100644
--- a/patches/server/0534-Add-sendOpLevel-API.patch
+++ b/patches/server/0534-Add-sendOpLevel-API.patch
@@ -32,10 +32,10 @@ index 13e2fb9e48ed8722b68b2ce2994d9d84bb22cee4..600bb44d97b477960108ea8cd84a8e73
public boolean isWhiteListed(GameProfile profile) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 6c6e5e296f000ff031efe8ec2e334edaf9630210..7a11d68ee2a1f0f57d9e1f9e98b704e05f5d773c 100644
+index 7d64f73867f76ecd61cb14dfd8b15ddce918574d..2ab0c6561fc79eee25538d6ffcb3a14eb6442373 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -637,6 +637,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -639,6 +639,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
? (org.bukkit.entity.Firework) entity.getBukkitEntity()
: null;
}
diff --git a/patches/server/0542-Implement-BlockPreDispenseEvent.patch b/patches/server/0542-Implement-BlockPreDispenseEvent.patch
index 0289f22d94..22f893a72f 100644
--- a/patches/server/0542-Implement-BlockPreDispenseEvent.patch
+++ b/patches/server/0542-Implement-BlockPreDispenseEvent.patch
@@ -17,10 +17,10 @@ index 9ec043ff2cd38e589066a3eb7f42834e4e7592cf..4720b884e1e311f44a012f1219fe648a
tileentitydispenser.setItem(i, idispensebehavior.dispense(sourceblock, itemstack));
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index a7a58cd44238f2eb9d472667abe9e230cad8e9bd..215aec90e2915a5ab38d6b3c612f90dc1f42730c 100644
+index 5c6650892892228dd8e9b4fbd62f4f014d6ddff3..1886310fe234ec615055d49ac0c2c77bc4fc7a60 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1969,5 +1969,11 @@ public class CraftEventFactory {
+@@ -2002,5 +2002,11 @@ public class CraftEventFactory {
io.papermc.paper.event.block.BlockFailedDispenseEvent event = new io.papermc.paper.event.block.BlockFailedDispenseEvent(block);
return event.callEvent();
}
diff --git a/patches/server/0544-Add-toggle-for-always-placing-the-dragon-egg.patch b/patches/server/0544-Add-toggle-for-always-placing-the-dragon-egg.patch
index 76a5cc04c4..19801f064b 100644
--- a/patches/server/0544-Add-toggle-for-always-placing-the-dragon-egg.patch
+++ b/patches/server/0544-Add-toggle-for-always-placing-the-dragon-egg.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for always placing the dragon egg
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-index 58823aeb8316628be716051b74307b01c37ad8a0..2be95e545ca85cf94b1e847ff452cd586c4eea05 100644
+index 1fad121f0559cf5c40ccbf7290bfb600b17dc219..f88e0480972abe41e71227d36505e11d6b9aa992 100644
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-@@ -356,7 +356,7 @@ public class EndDragonFight {
+@@ -407,7 +407,7 @@ public class EndDragonFight {
this.dragonEvent.setVisible(false);
this.spawnExitPortal(true);
this.spawnNewGateway();
diff --git a/patches/server/0546-Add-dropLeash-variable-to-EntityUnleashEvent.patch b/patches/server/0546-Add-dropLeash-variable-to-EntityUnleashEvent.patch
index 41c6f9f0ca..bc6c44b2e2 100644
--- a/patches/server/0546-Add-dropLeash-variable-to-EntityUnleashEvent.patch
+++ b/patches/server/0546-Add-dropLeash-variable-to-EntityUnleashEvent.patch
@@ -122,10 +122,10 @@ index 16784fcc853e23689a854e7dc6c03ed8182a164e..4eb97572a97a8d98af37c4223f42fc63
flag1 = true;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 215aec90e2915a5ab38d6b3c612f90dc1f42730c..4010be07b2cd47e12081bfc8bbb18b274742eec0 100644
+index 1886310fe234ec615055d49ac0c2c77bc4fc7a60..e7e113b9d45dda50a38215088a846cc468a53344 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1564,8 +1564,10 @@ public class CraftEventFactory {
+@@ -1590,8 +1590,10 @@ public class CraftEventFactory {
return itemInHand;
}
diff --git a/patches/server/0548-add-DragonEggFormEvent.patch b/patches/server/0548-add-DragonEggFormEvent.patch
index e4abf96236..7a813b289f 100644
--- a/patches/server/0548-add-DragonEggFormEvent.patch
+++ b/patches/server/0548-add-DragonEggFormEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] add DragonEggFormEvent
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-index 2be95e545ca85cf94b1e847ff452cd586c4eea05..eab54838ba540f41cc59a359dd00ba80d82c771e 100644
+index f88e0480972abe41e71227d36505e11d6b9aa992..b5d69bde512f832374acd5e6b94268ea327b01b2 100644
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-@@ -356,9 +356,23 @@ public class EndDragonFight {
+@@ -407,9 +407,23 @@ public class EndDragonFight {
this.dragonEvent.setVisible(false);
this.spawnExitPortal(true);
this.spawnNewGateway();
diff --git a/patches/server/0552-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/server/0552-Allow-adding-items-to-BlockDropItemEvent.patch
index 09853a2cb3..fa629d404f 100644
--- a/patches/server/0552-Allow-adding-items-to-BlockDropItemEvent.patch
+++ b/patches/server/0552-Allow-adding-items-to-BlockDropItemEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Allow adding items to BlockDropItemEvent
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 4010be07b2cd47e12081bfc8bbb18b274742eec0..f7d078f557b0be8db0b2ef7e5ff2094909686047 100644
+index e7e113b9d45dda50a38215088a846cc468a53344..ecf0a23435532cc6a771ef04787bbef190699edb 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -424,13 +424,30 @@ public class CraftEventFactory {
+@@ -449,13 +449,30 @@ public class CraftEventFactory {
}
public static void handleBlockDropItemEvent(Block block, BlockState state, ServerPlayer player, List<ItemEntity> items) {
diff --git a/patches/server/0567-Allow-using-signs-inside-spawn-protection.patch b/patches/server/0567-Allow-using-signs-inside-spawn-protection.patch
index d01c202ac6..29a0c08e20 100644
--- a/patches/server/0567-Allow-using-signs-inside-spawn-protection.patch
+++ b/patches/server/0567-Allow-using-signs-inside-spawn-protection.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Allow using signs inside spawn protection
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index d52c0a729a98cac6250d40232cea816f050599f1..a45ff8591eb87c228f6cc535bef3e8d88537916f 100644
+index ec1d92a71518b9329e81f12bc8ccef846fefc168..bf80dda7cb227f56a3a38bbd821e2ec57bcbcec6 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1829,7 +1829,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1831,7 +1831,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
int i = this.player.level().getMaxBuildHeight();
if (blockposition.getY() < i) {
diff --git a/patches/server/0568-Expand-world-key-API.patch b/patches/server/0568-Expand-world-key-API.patch
index b9a2b26e88..8ab718d7fd 100644
--- a/patches/server/0568-Expand-world-key-API.patch
+++ b/patches/server/0568-Expand-world-key-API.patch
@@ -20,10 +20,10 @@ index 0452a59d6eec947589b4791c977327046f7b0d6e..f50d48d737aa7a6561a8868a607a68dc
// Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 62d44490887480b522d811befb4c104e1cee9663..8fd06d9ad547ba45b46674e6e432b6a28abbcfe2 100644
+index 1dc93c013eb34b395e7a0523ccd185ec1372be19..7326ed1b913c6d9b1e122564101bd67b6bdc489a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1156,9 +1156,15 @@ public final class CraftServer implements Server {
+@@ -1157,9 +1157,15 @@ public final class CraftServer implements Server {
File folder = new File(this.getWorldContainer(), name);
World world = this.getWorld(name);
@@ -41,7 +41,7 @@ index 62d44490887480b522d811befb4c104e1cee9663..8fd06d9ad547ba45b46674e6e432b6a2
if (folder.exists()) {
Preconditions.checkArgument(folder.isDirectory(), "File (%s) exists and isn't a folder", name);
-@@ -1245,7 +1251,7 @@ public final class CraftServer implements Server {
+@@ -1246,7 +1252,7 @@ public final class CraftServer implements Server {
} else if (name.equals(levelName + "_the_end")) {
worldKey = net.minecraft.world.level.Level.END;
} else {
@@ -50,7 +50,7 @@ index 62d44490887480b522d811befb4c104e1cee9663..8fd06d9ad547ba45b46674e6e432b6a2
}
ServerLevel internal = (ServerLevel) new ServerLevel(this.console, console.executor, worldSession, worlddata, worldKey, worlddimension, this.getServer().progressListenerFactory.create(11),
-@@ -1337,6 +1343,15 @@ public final class CraftServer implements Server {
+@@ -1338,6 +1344,15 @@ public final class CraftServer implements Server {
return null;
}
diff --git a/patches/server/0573-Don-t-ignore-result-of-PlayerEditBookEvent.patch b/patches/server/0573-Don-t-ignore-result-of-PlayerEditBookEvent.patch
index f4f8bb0888..f3a44549e3 100644
--- a/patches/server/0573-Don-t-ignore-result-of-PlayerEditBookEvent.patch
+++ b/patches/server/0573-Don-t-ignore-result-of-PlayerEditBookEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Don't ignore result of PlayerEditBookEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index a45ff8591eb87c228f6cc535bef3e8d88537916f..b78ce824bba3ce690a41059af0929c443e91fa12 100644
+index bf80dda7cb227f56a3a38bbd821e2ec57bcbcec6..36ca9558a4c8d40e7220b69f0ae0a65ffe74eaee 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1290,7 +1290,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1292,7 +1292,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
itemstack.addTagElement("pages", nbttaglist);
diff --git a/patches/server/0583-fix-PlayerItemHeldEvent-firing-twice.patch b/patches/server/0583-fix-PlayerItemHeldEvent-firing-twice.patch
index 4522f422b5..8f552e3404 100644
--- a/patches/server/0583-fix-PlayerItemHeldEvent-firing-twice.patch
+++ b/patches/server/0583-fix-PlayerItemHeldEvent-firing-twice.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] fix PlayerItemHeldEvent firing twice
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index b78ce824bba3ce690a41059af0929c443e91fa12..2f9fe15fe34f44825d21ae840708fcbd89b76732 100644
+index 36ca9558a4c8d40e7220b69f0ae0a65ffe74eaee..25eefd856fb228b939b6ee4ae87f676e7419d9f4 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2043,6 +2043,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2045,6 +2045,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (this.player.isImmobile()) return; // CraftBukkit
if (packet.getSlot() >= 0 && packet.getSlot() < Inventory.getSelectionSize()) {
diff --git a/patches/server/0591-add-RespawnFlags-to-PlayerRespawnEvent.patch b/patches/server/0591-add-RespawnFlags-to-PlayerRespawnEvent.patch
index 6064ddb356..f261f7cf6c 100644
--- a/patches/server/0591-add-RespawnFlags-to-PlayerRespawnEvent.patch
+++ b/patches/server/0591-add-RespawnFlags-to-PlayerRespawnEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] add RespawnFlags to PlayerRespawnEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 736838326f88e87fcb4586bd372661051375fba2..948666f36c4e2f8571e8ceb7703566d9db233616 100644
+index 25eefd856fb228b939b6ee4ae87f676e7419d9f4..e95574ecd4cee2515920f1445d8812b0fba7dc5e 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2790,7 +2790,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2789,7 +2789,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
case PERFORM_RESPAWN:
if (this.player.wonGame) {
this.player.wonGame = false;
diff --git a/patches/server/0601-Add-basic-Datapack-API.patch b/patches/server/0601-Add-basic-Datapack-API.patch
index 05edf9cc94..cbac98f237 100644
--- a/patches/server/0601-Add-basic-Datapack-API.patch
+++ b/patches/server/0601-Add-basic-Datapack-API.patch
@@ -92,10 +92,10 @@ index 0000000000000000000000000000000000000000..cf4374493c11057451a62a655514415c
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 8fd06d9ad547ba45b46674e6e432b6a28abbcfe2..46ce9117dc88b2b32d4914dc22547ed36f48c3cb 100644
+index 7326ed1b913c6d9b1e122564101bd67b6bdc489a..112ec37cbb7b3ad262cce8d624f0da313935f8d9 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -300,6 +300,7 @@ public final class CraftServer implements Server {
+@@ -301,6 +301,7 @@ public final class CraftServer implements Server {
public boolean ignoreVanillaPermissions = false;
private final List<CraftPlayer> playerView;
public int reloadCount;
@@ -103,7 +103,7 @@ index 8fd06d9ad547ba45b46674e6e432b6a28abbcfe2..46ce9117dc88b2b32d4914dc22547ed3
public static Exception excessiveVelEx; // Paper - Velocity warnings
static {
-@@ -387,6 +388,7 @@ public final class CraftServer implements Server {
+@@ -388,6 +389,7 @@ public final class CraftServer implements Server {
if (this.configuration.getBoolean("settings.use-map-color-cache")) {
MapPalette.setMapColorCache(new CraftMapColorCache(this.logger));
}
@@ -111,7 +111,7 @@ index 8fd06d9ad547ba45b46674e6e432b6a28abbcfe2..46ce9117dc88b2b32d4914dc22547ed3
}
public boolean getCommandBlockOverride(String command) {
-@@ -2861,5 +2863,11 @@ public final class CraftServer implements Server {
+@@ -2862,5 +2864,11 @@ public final class CraftServer implements Server {
public com.destroystokyo.paper.entity.ai.MobGoals getMobGoals() {
return mobGoals;
}
diff --git a/patches/server/0603-additions-to-PlayerGameModeChangeEvent.patch b/patches/server/0603-additions-to-PlayerGameModeChangeEvent.patch
index 891ac72cc7..fbe09ff2fe 100644
--- a/patches/server/0603-additions-to-PlayerGameModeChangeEvent.patch
+++ b/patches/server/0603-additions-to-PlayerGameModeChangeEvent.patch
@@ -45,7 +45,7 @@ index aee8618e27b893b72931e925724dd683d2e6d2aa..5cb15e2209d7b315904a1fc6d650ce1e
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index fba3ac571fafd5c738d0dcfd5492112817c443e3..a340a190b223efb6fafba3c7c9e996818709d6e9 100644
+index 03bb3c6a7cca2c5363d8c4a8836fea865b571df0..0162c504673f5809b28ca58177773c005460f039 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1885,8 +1885,16 @@ public class ServerPlayer extends Player {
@@ -131,10 +131,10 @@ index c256423e9dc9d1837b847da44fb2920c58842c8b..0cb9803e30702de1cc530c1205fe9bbb
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 948666f36c4e2f8571e8ceb7703566d9db233616..27b3b8f53eb0ba62bf17b8b685a04fa4701844c7 100644
+index e95574ecd4cee2515920f1445d8812b0fba7dc5e..363e16f3d8069d2828cd7437c7aed4cccccd9002 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2799,7 +2799,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2798,7 +2798,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.player = this.server.getPlayerList().respawn(this.player, false, RespawnReason.DEATH);
if (this.server.isHardcore()) {
@@ -144,10 +144,10 @@ index 948666f36c4e2f8571e8ceb7703566d9db233616..27b3b8f53eb0ba62bf17b8b685a04fa4
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 7a11d68ee2a1f0f57d9e1f9e98b704e05f5d773c..a31e3681d76c114165a32de521380698c01656e9 100644
+index 2ab0c6561fc79eee25538d6ffcb3a14eb6442373..e446bfc7e61889df964643e9928771fd4b2c2fdd 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1531,7 +1531,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1563,7 +1563,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
Preconditions.checkArgument(mode != null, "GameMode cannot be null");
if (this.getHandle().connection == null) return;
diff --git a/patches/server/0606-Move-range-check-for-block-placing-up.patch b/patches/server/0606-Move-range-check-for-block-placing-up.patch
index 64e172aeba..bffb7846e3 100644
--- a/patches/server/0606-Move-range-check-for-block-placing-up.patch
+++ b/patches/server/0606-Move-range-check-for-block-placing-up.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Move range check for block placing up
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 0f3f1a9ac004127e58fe18958158826bd648bac9..8a5a8da2962b51e0a8c83ce045eb8e86929c820d 100644
+index 363e16f3d8069d2828cd7437c7aed4cccccd9002..5156aed4bc166898aa1cbc30d70b802d0b2ac4b7 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1815,6 +1815,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1817,6 +1817,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (itemstack.isItemEnabled(worldserver.enabledFeatures())) {
BlockHitResult movingobjectpositionblock = packet.getHitResult();
Vec3 vec3d = movingobjectpositionblock.getLocation();
diff --git a/patches/server/0607-Fix-and-optimise-world-force-upgrading.patch b/patches/server/0607-Fix-and-optimise-world-force-upgrading.patch
index 64b71f7df2..b3ba746299 100644
--- a/patches/server/0607-Fix-and-optimise-world-force-upgrading.patch
+++ b/patches/server/0607-Fix-and-optimise-world-force-upgrading.patch
@@ -275,7 +275,7 @@ index 98385550084c9f975e494668961bac6ccb0700ab..1147044f2c4c2e9510cb6e5c38b6abe8
Main.LOGGER.info("Forcing world upgrade! {}", session.getLevelId()); // CraftBukkit
WorldUpgrader worldupgrader = new WorldUpgrader(session, dataFixer, dimensionOptionsRegistry, eraseCache);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 39dd0ef9af89d4a752f101740ae58797fb2adc4d..5fa98801e2e64d4e2d948af5f131ed32b96c0510 100644
+index aa23f1c88d91b9476c276e644572c20c17b3855c..5fa98801e2e64d4e2d948af5f131ed32b96c0510 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -552,11 +552,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -285,7 +285,7 @@ index 39dd0ef9af89d4a752f101740ae58797fb2adc4d..5fa98801e2e64d4e2d948af5f131ed32
- if (this.options.has("forceUpgrade")) {
- net.minecraft.server.Main.forceUpgrade(worldSession, DataFixers.getDataFixer(), this.options.has("eraseCache"), () -> {
- return true;
-- }, iregistry);
+- }, dimensions);
- }
+ // Paper - move down
@@ -362,10 +362,10 @@ index 29da08c58200c24fd03003937d30eb41234cabc9..d3d4d10a77af51cff4da201201bac325
public synchronized RegionFile getRegionFileIfLoaded(ChunkPos chunkcoordintpair) {
return this.regionCache.getAndMoveToFirst(ChunkPos.asLong(chunkcoordintpair.getRegionX(), chunkcoordintpair.getRegionZ()));
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 46ce9117dc88b2b32d4914dc22547ed36f48c3cb..dae06c2e4da219000f532293a0d31902d81ab187 100644
+index 112ec37cbb7b3ad262cce8d624f0da313935f8d9..ff3fcaa91b7cd50eaff3bdb1ae15d222b197ba97 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1233,9 +1233,7 @@ public final class CraftServer implements Server {
+@@ -1234,9 +1234,7 @@ public final class CraftServer implements Server {
worlddata.checkName(name);
worlddata.setModdedInfo(this.console.getServerModName(), this.console.getModdedStatus().shouldReportAsModified());
@@ -376,7 +376,7 @@ index 46ce9117dc88b2b32d4914dc22547ed36f48c3cb..dae06c2e4da219000f532293a0d31902
long j = BiomeManager.obfuscateSeed(creator.seed());
List<CustomSpawner> list = ImmutableList.of(new PhantomSpawner(), new PatrolSpawner(), new CatSpawner(), new VillageSiege(), new WanderingTraderSpawner(worlddata));
-@@ -1246,6 +1244,13 @@ public final class CraftServer implements Server {
+@@ -1247,6 +1245,13 @@ public final class CraftServer implements Server {
biomeProvider = generator.getDefaultBiomeProvider(worldInfo);
}
diff --git a/patches/server/0609-Add-Unix-domain-socket-support.patch b/patches/server/0609-Add-Unix-domain-socket-support.patch
index 430b2c8d62..594680e9a3 100644
--- a/patches/server/0609-Add-Unix-domain-socket-support.patch
+++ b/patches/server/0609-Add-Unix-domain-socket-support.patch
@@ -91,10 +91,10 @@ index 29a0a720f22f56ca3d844efef1ecde3980fb1c12..838244e3680ea6020701e10bafbde7f5
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 49e950a285fb9d09ce9fedf0f9ed091ae7a516a7..be48014d35f0f661e8ca829217bd7c7c99b2d5dc 100644
+index 5156aed4bc166898aa1cbc30d70b802d0b2ac4b7..0f8c29375790599f75d3d4535a417bafba916396 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2634,6 +2634,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2633,6 +2633,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Spigot Start
public SocketAddress getRawAddress()
{
diff --git a/patches/server/0615-Add-PlayerKickEvent-causes.patch b/patches/server/0615-Add-PlayerKickEvent-causes.patch
index 24b260aace..757630a677 100644
--- a/patches/server/0615-Add-PlayerKickEvent-causes.patch
+++ b/patches/server/0615-Add-PlayerKickEvent-causes.patch
@@ -88,10 +88,10 @@ index c68bac4727f6b2ca95fc8c438303097af14286f2..bb629ec263959c8268de88ca807bddb6
return Component.translatable("commands.kick.success", serverPlayer.getDisplayName(), reason);
}, true);
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31ff7709fe 100644
+index 0f8c29375790599f75d3d4535a417bafba916396..bc609a16fed44f0a96025fb3b75eec039107338c 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -362,7 +362,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -364,7 +364,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (this.clientIsFloating && !this.player.isSleeping() && !this.player.isPassenger() && !this.player.isDeadOrDying()) {
if (++this.aboveGroundTickCount > 80) {
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating too long!", this.player.getName().getString());
@@ -100,7 +100,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
} else {
-@@ -381,7 +381,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -383,7 +383,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (this.clientVehicleIsFloating && this.player.getRootVehicle().getControllingPassenger() == this.player) {
if (++this.aboveGroundVehicleTickCount > 80) {
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked for floating a vehicle too long!", this.player.getName().getString());
@@ -109,7 +109,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
} else {
-@@ -403,7 +403,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -405,7 +405,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (this.keepAlivePending) {
if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info
@@ -118,7 +118,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
} else {
if (elapsedTime >= 15000L) { // 15 seconds
-@@ -433,7 +433,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -435,7 +435,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
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
@@ -127,7 +127,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
}
-@@ -456,16 +456,26 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -458,16 +458,26 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
return this.server.isSingleplayerOwner(this.player.getGameProfile());
}
@@ -157,7 +157,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
// Paper end
// CraftBukkit start - fire PlayerKickEvent
if (this.processedDisconnect) {
-@@ -475,7 +485,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -477,7 +487,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
Waitable waitable = new Waitable() {
@Override
protected Object evaluate() {
@@ -166,7 +166,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return null;
}
};
-@@ -494,7 +504,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -496,7 +506,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
net.kyori.adventure.text.Component leaveMessage = net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? this.player.getBukkitEntity().displayName() : net.kyori.adventure.text.Component.text(this.player.getScoreboardName())); // Paper - Adventure
@@ -175,7 +175,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
if (this.cserver.getServer().isRunning()) {
this.cserver.getPluginManager().callEvent(event);
-@@ -564,7 +574,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -566,7 +576,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
public void handleMoveVehicle(ServerboundMoveVehiclePacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (ServerGamePacketListenerImpl.containsInvalidValues(packet.getX(), packet.getY(), packet.getZ(), packet.getYRot(), packet.getXRot())) {
@@ -184,7 +184,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
} else {
Entity entity = this.player.getRootVehicle();
-@@ -770,7 +780,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -772,7 +782,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (packet.getId() == this.awaitingTeleport) {
if (this.awaitingPositionFromClient == null) {
@@ -193,7 +193,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
-@@ -827,13 +837,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -829,13 +839,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - run this async
// CraftBukkit start
if (this.chatSpamTickCount.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamLimit && !this.server.getPlayerList().isOp(this.player.getGameProfile())) { // Paper start - split and make configurable
@@ -209,7 +209,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
// Paper end
-@@ -986,7 +996,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -988,7 +998,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Paper start - validate pick item position
if (!(packet.getSlot() >= 0 && packet.getSlot() < this.player.getInventory().items.size())) {
ServerGamePacketListenerImpl.LOGGER.warn("{} tried to set an invalid carried item", this.player.getName().getString());
@@ -218,7 +218,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
this.player.getInventory().pickSlot(packet.getSlot()); // Paper - Diff above if changed
-@@ -1169,7 +1179,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1171,7 +1181,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length;
if (byteLength > 256 * 4) {
ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send a book with with a page too large!");
@@ -227,7 +227,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
byteTotal += byteLength;
-@@ -1192,14 +1202,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1194,14 +1204,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (byteTotal > byteAllowed) {
ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size());
@@ -244,7 +244,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
this.lastBookTick = MinecraftServer.currentTick;
-@@ -1323,7 +1333,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1325,7 +1335,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
public void handleMovePlayer(ServerboundMovePlayerPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (ServerGamePacketListenerImpl.containsInvalidValues(packet.getX(0.0D), packet.getY(0.0D), packet.getZ(0.0D), packet.getYRot(0.0F), packet.getXRot(0.0F))) {
@@ -253,7 +253,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
} else {
ServerLevel worldserver = this.player.serverLevel();
-@@ -1737,7 +1747,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1739,7 +1749,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.dropCount++;
if (this.dropCount >= 20) {
ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " dropped their items too quickly!");
@@ -262,7 +262,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
}
-@@ -1949,7 +1959,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1951,7 +1961,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (packet.getAction() == ServerboundResourcePackPacket.Action.DECLINED && this.server.isResourcePackRequired()) {
ServerGamePacketListenerImpl.LOGGER.info("Disconnecting {} due to resource pack rejection", this.player.getName());
@@ -271,7 +271,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
// Paper start
PlayerResourcePackStatusEvent.Status packStatus = PlayerResourcePackStatusEvent.Status.values()[packet.action.ordinal()];
-@@ -2065,7 +2075,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2067,7 +2077,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.player.resetLastActionTime();
} else {
ServerGamePacketListenerImpl.LOGGER.warn("{} tried to set an invalid carried item", this.player.getName().getString());
@@ -280,7 +280,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
}
-@@ -2078,7 +2088,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2080,7 +2090,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
// CraftBukkit end
if (ServerGamePacketListenerImpl.isChatMessageIllegal(packet.message())) {
@@ -289,7 +289,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
} else {
Optional<LastSeenMessages> optional = this.tryHandleChat(packet.message(), packet.timeStamp(), packet.lastSeenMessages());
-@@ -2112,7 +2122,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2114,7 +2124,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleChatCommand(ServerboundChatCommandPacket packet) {
if (ServerGamePacketListenerImpl.isChatMessageIllegal(packet.command())) {
@@ -298,7 +298,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
} else {
Optional<LastSeenMessages> optional = this.tryHandleChat(packet.command(), packet.timeStamp(), packet.lastSeenMessages());
-@@ -2167,7 +2177,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2169,7 +2179,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private void handleMessageDecodeFailure(SignedMessageChain.DecodeException exception) {
if (exception.shouldDisconnect()) {
@@ -307,7 +307,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
} else {
this.player.sendSystemMessage(exception.getComponent().copy().withStyle(ChatFormatting.RED));
}
-@@ -2198,7 +2208,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2200,7 +2210,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private Optional<LastSeenMessages> tryHandleChat(String message, Instant timestamp, LastSeenMessages.Update acknowledgment) {
if (!this.updateChatOrder(timestamp)) {
ServerGamePacketListenerImpl.LOGGER.warn("{} sent out-of-order chat: '{}'", this.player.getName().getString(), message);
@@ -316,7 +316,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return Optional.empty();
} else {
Optional<LastSeenMessages> optional = this.unpackAndApplyLastSeen(acknowledgment);
-@@ -2221,7 +2231,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2223,7 +2233,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (optional.isEmpty()) {
ServerGamePacketListenerImpl.LOGGER.warn("Failed to validate message acknowledgements from {}", this.player.getName().getString());
@@ -325,7 +325,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
return optional;
-@@ -2444,7 +2454,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2440,7 +2450,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// this.chatSpamTickCount += 20;
if (this.chatSpamTickCount.addAndGet(20) > 200 && !this.server.getPlayerList().isOp(this.player.getGameProfile())) {
// CraftBukkit end
@@ -334,7 +334,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
}
-@@ -2456,7 +2466,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2452,7 +2462,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
synchronized (this.lastSeenMessages) {
if (!this.lastSeenMessages.applyOffset(packet.offset())) {
ServerGamePacketListenerImpl.LOGGER.warn("Failed to validate message acknowledgements from {}", this.player.getName().getString());
@@ -343,7 +343,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
}
-@@ -2606,7 +2616,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2605,7 +2615,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
if (i > 4096) {
@@ -352,7 +352,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
}
-@@ -2652,7 +2662,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2651,7 +2661,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Spigot Start
if ( entity == this.player && !this.player.isSpectator() )
{
@@ -361,7 +361,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
// Spigot End
-@@ -2751,7 +2761,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2750,7 +2760,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// CraftBukkit end
}
} else {
@@ -370,7 +370,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
ServerGamePacketListenerImpl.LOGGER.warn("Player {} tried to attack an invalid entity", ServerGamePacketListenerImpl.this.player.getName().getString());
}
}
-@@ -3160,7 +3170,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3159,7 +3169,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Paper start
if (!org.bukkit.Bukkit.isPrimaryThread()) {
if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) {
@@ -379,7 +379,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
return;
}
}
-@@ -3331,7 +3341,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3357,7 +3367,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
} else if (!this.isSingleplayerOwner()) {
// Paper start - This needs to be handled on the main thread for plugins
server.submit(() -> {
@@ -388,7 +388,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
});
// Paper end
}
-@@ -3377,7 +3387,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3403,7 +3413,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
} catch (Exception ex) {
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t register custom payload", ex);
@@ -397,7 +397,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
} else if (packet.identifier.equals(CUSTOM_UNREGISTER)) {
try {
-@@ -3387,7 +3397,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3413,7 +3423,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
} catch (Exception ex) {
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t unregister custom payload", ex);
@@ -406,7 +406,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
} else {
try {
-@@ -3405,7 +3415,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3431,7 +3441,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.cserver.getMessenger().dispatchIncomingMessage(this.player.getBukkitEntity(), packet.identifier.toString(), data);
} catch (Exception ex) {
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t dispatch custom payload", ex);
@@ -415,7 +415,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
}
}
-@@ -3447,7 +3457,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3473,7 +3483,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (!Objects.equals(profilepublickey_a, profilepublickey_a1)) {
if (profilepublickey_a != null && profilepublickey_a1.expiresAt().isBefore(profilepublickey_a.expiresAt())) {
@@ -424,7 +424,7 @@ index be48014d35f0f661e8ca829217bd7c7c99b2d5dc..8906946d79737b6b03e5570ad3a90c31
} else {
try {
SignatureValidator signaturevalidator = this.server.getProfileKeySignatureValidator();
-@@ -3460,7 +3470,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3486,7 +3496,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.resetPlayerChatState(remotechatsession_a.validate(this.player.getGameProfile(), signaturevalidator, Duration.ZERO));
} catch (ProfilePublicKey.ValidationException profilepublickey_b) {
ServerGamePacketListenerImpl.LOGGER.error("Failed to validate profile key: {}", profilepublickey_b.getMessage());
@@ -491,10 +491,10 @@ index 984c288abf94d9fe47fada33722fea035b832f3b..addd20237b87c9a87bb09fd7addb101a
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index a31e3681d76c114165a32de521380698c01656e9..4d469a85d573493e2fe972e060165e9776ce74f9 100644
+index e446bfc7e61889df964643e9928771fd4b2c2fdd..0177065e849d25954737712cb0156fdb79a89156 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -583,7 +583,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -585,7 +585,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
org.spigotmc.AsyncCatcher.catchOp("player kick"); // Spigot
if (this.getHandle().connection == null) return;
@@ -503,7 +503,7 @@ index a31e3681d76c114165a32de521380698c01656e9..4d469a85d573493e2fe972e060165e97
}
// Paper start
-@@ -595,10 +595,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -597,10 +597,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void kick(final net.kyori.adventure.text.Component message) {
@@ -520,7 +520,7 @@ index a31e3681d76c114165a32de521380698c01656e9..4d469a85d573493e2fe972e060165e97
}
}
-@@ -669,7 +674,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -671,7 +676,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper start - improve chat handling
if (ServerGamePacketListenerImpl.isChatMessageIllegal(msg)) {
diff --git a/patches/server/0632-Ensure-disconnect-for-book-edit-is-called-on-main.patch b/patches/server/0632-Ensure-disconnect-for-book-edit-is-called-on-main.patch
index b08d7c49e9..f7d9bc80b7 100644
--- a/patches/server/0632-Ensure-disconnect-for-book-edit-is-called-on-main.patch
+++ b/patches/server/0632-Ensure-disconnect-for-book-edit-is-called-on-main.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Ensure disconnect for book edit is called on main
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index d71ccba82dd3ce23c10b519290d80cf42accc748..463759c91432294701954c49d5978b9e26607b4d 100644
+index bc609a16fed44f0a96025fb3b75eec039107338c..e7d8f3521de27ef6886f4ed2affd0066e55c9de1 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1209,7 +1209,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1211,7 +1211,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Paper end
// CraftBukkit start
if (this.lastBookTick + 20 > MinecraftServer.currentTick) {
diff --git a/patches/server/0636-Adds-PlayerArmSwingEvent.patch b/patches/server/0636-Adds-PlayerArmSwingEvent.patch
index e8f8b219c9..f83880d135 100644
--- a/patches/server/0636-Adds-PlayerArmSwingEvent.patch
+++ b/patches/server/0636-Adds-PlayerArmSwingEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Adds PlayerArmSwingEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 606304a3079eba252ef5e54afcc8935986308c16..cfedfc023c91e714f2ae574539939b73da342108 100644
+index e7d8f3521de27ef6886f4ed2affd0066e55c9de1..c0c74f9b851bacc4079bc156b80bc7e2950c45e3 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2501,7 +2501,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2500,7 +2500,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
} // Paper end
// Arm swing animation
diff --git a/patches/server/0637-Fixes-kick-event-leave-message-not-being-sent.patch b/patches/server/0637-Fixes-kick-event-leave-message-not-being-sent.patch
index 01f0b23ee1..ea5bf61f81 100644
--- a/patches/server/0637-Fixes-kick-event-leave-message-not-being-sent.patch
+++ b/patches/server/0637-Fixes-kick-event-leave-message-not-being-sent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fixes kick event leave message not being sent
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 7d5de33442fe4ba53c51cc7356323622c2c3022f..478dbba3519f8d2fdd4b203756403761ccad553b 100644
+index e100534a676bd950513f3b9217e4949b65f20960..0a25e2bb95fa249fa5cde1a174702bb311a45171 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -270,7 +270,6 @@ public class ServerPlayer extends Player {
@@ -17,10 +17,10 @@ index 7d5de33442fe4ba53c51cc7356323622c2c3022f..478dbba3519f8d2fdd4b203756403761
public boolean isRealPlayer; // Paper
public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<ServerPlayer> cachedSingleHashSet; // Paper
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 482655fb5d6b84cd7969b1443a8dcd247dd5c9c4..e2870dbcd41063d0386e14576a12acaa8b21976a 100644
+index c0c74f9b851bacc4079bc156b80bc7e2950c45e3..5ed9ab2e261d64234c388d4bfdc27d31cf112117 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -514,7 +514,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -516,7 +516,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Do not kick the player
return;
}
@@ -28,7 +28,7 @@ index 482655fb5d6b84cd7969b1443a8dcd247dd5c9c4..e2870dbcd41063d0386e14576a12acaa
// Send the possibly modified leave message
final Component ichatbasecomponent = PaperAdventure.asVanilla(event.reason()); // Paper - Adventure
// CraftBukkit end
-@@ -523,7 +522,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -525,7 +524,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.connection.send(new ClientboundDisconnectPacket(ichatbasecomponent), PacketSendListener.thenRun(() -> {
this.connection.disconnect(ichatbasecomponent);
}));
@@ -37,7 +37,7 @@ index 482655fb5d6b84cd7969b1443a8dcd247dd5c9c4..e2870dbcd41063d0386e14576a12acaa
this.connection.setReadOnly();
MinecraftServer minecraftserver = this.server;
Connection networkmanager = this.connection;
-@@ -1986,6 +1985,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1988,6 +1987,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void onDisconnect(Component reason) {
@@ -49,7 +49,7 @@ index 482655fb5d6b84cd7969b1443a8dcd247dd5c9c4..e2870dbcd41063d0386e14576a12acaa
// CraftBukkit start - Rarely it would send a disconnect line twice
if (this.processedDisconnect) {
return;
-@@ -2003,7 +2007,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2005,7 +2009,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.player.disconnect();
// Paper start - Adventure
diff --git a/patches/server/0645-Add-System.out-err-catcher.patch b/patches/server/0645-Add-System.out-err-catcher.patch
index 89031ed58b..d386ddaed0 100644
--- a/patches/server/0645-Add-System.out-err-catcher.patch
+++ b/patches/server/0645-Add-System.out-err-catcher.patch
@@ -105,10 +105,10 @@ index 0000000000000000000000000000000000000000..a8e813ca89b033f061e695288b3383bd
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index dae06c2e4da219000f532293a0d31902d81ab187..f7f37c9dc14d87c0d2fa89a0f6e0e47dc51abcea 100644
+index ff3fcaa91b7cd50eaff3bdb1ae15d222b197ba97..fc8d0b81054cad7dbfebd29b2d92a52952357fc2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -302,6 +302,7 @@ public final class CraftServer implements Server {
+@@ -303,6 +303,7 @@ public final class CraftServer implements Server {
public int reloadCount;
private final io.papermc.paper.datapack.PaperDatapackManager datapackManager; // Paper
public static Exception excessiveVelEx; // Paper - Velocity warnings
diff --git a/patches/server/0649-Prevent-AFK-kick-while-watching-end-credits.patch b/patches/server/0649-Prevent-AFK-kick-while-watching-end-credits.patch
index 4bf9873939..9dccdbeb2b 100644
--- a/patches/server/0649-Prevent-AFK-kick-while-watching-end-credits.patch
+++ b/patches/server/0649-Prevent-AFK-kick-while-watching-end-credits.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Prevent AFK kick while watching end credits.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index e2870dbcd41063d0386e14576a12acaa8b21976a..9d6107e014e424dc786f33c3d3685e36746799e2 100644
+index 5ed9ab2e261d64234c388d4bfdc27d31cf112117..d4f989c409d16864ffc0535afed546a2a7325ffc 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -431,7 +431,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -433,7 +433,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
--this.dropSpamTickCount;
}
diff --git a/patches/server/0651-Add-PlayerSetSpawnEvent.patch b/patches/server/0651-Add-PlayerSetSpawnEvent.patch
index fe57c76d30..4bb614bbbf 100644
--- a/patches/server/0651-Add-PlayerSetSpawnEvent.patch
+++ b/patches/server/0651-Add-PlayerSetSpawnEvent.patch
@@ -187,10 +187,10 @@ index 1a27b7faa22e6b3dc5fce329ed06425de56c4315..b9903c29bdea8d1e3b6fce0e97be6bd9
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 4d469a85d573493e2fe972e060165e9776ce74f9..002ea991ba890d4e2f2485b3da75b53d7127c89c 100644
+index 0177065e849d25954737712cb0156fdb79a89156..a8da7ff2f8e2cf0195731f5034afa94fcd248340 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1320,9 +1320,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1322,9 +1322,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setBedSpawnLocation(Location location, boolean override) {
if (location == null) {
diff --git a/patches/server/0655-Added-EntityDamageItemEvent.patch b/patches/server/0655-Added-EntityDamageItemEvent.patch
index ebccfbe78e..d53c44314c 100644
--- a/patches/server/0655-Added-EntityDamageItemEvent.patch
+++ b/patches/server/0655-Added-EntityDamageItemEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Added EntityDamageItemEvent
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 5ebc5e760ac43b88678977ced06b8d72f8358a68..037d9a64772b42ab3852a1a1d8b3532cbb0d161f 100644
+index 34e54233d54f21cf4304c39e53aa6a7fb06a67cf..afbf619feb35751046131e7b22791e789d16427f 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -592,7 +592,7 @@ public final class ItemStack {
+@@ -596,7 +596,7 @@ public final class ItemStack {
return this.getItem().getMaxDamage();
}
@@ -17,7 +17,7 @@ index 5ebc5e760ac43b88678977ced06b8d72f8358a68..037d9a64772b42ab3852a1a1d8b3532c
if (!this.isDamageableItem()) {
return false;
} else {
-@@ -610,8 +610,8 @@ public final class ItemStack {
+@@ -614,8 +614,8 @@ public final class ItemStack {
amount -= k;
// CraftBukkit start
@@ -28,7 +28,7 @@ index 5ebc5e760ac43b88678977ced06b8d72f8358a68..037d9a64772b42ab3852a1a1d8b3532c
event.getPlayer().getServer().getPluginManager().callEvent(event);
if (amount != event.getDamage() || event.isCancelled()) {
-@@ -622,6 +622,14 @@ public final class ItemStack {
+@@ -626,6 +626,14 @@ public final class ItemStack {
}
amount = event.getDamage();
@@ -43,7 +43,7 @@ index 5ebc5e760ac43b88678977ced06b8d72f8358a68..037d9a64772b42ab3852a1a1d8b3532c
}
// CraftBukkit end
if (amount <= 0) {
-@@ -629,8 +637,8 @@ public final class ItemStack {
+@@ -633,8 +641,8 @@ public final class ItemStack {
}
}
@@ -54,7 +54,7 @@ index 5ebc5e760ac43b88678977ced06b8d72f8358a68..037d9a64772b42ab3852a1a1d8b3532c
}
j = this.getDamageValue() + amount;
-@@ -642,7 +650,7 @@ public final class ItemStack {
+@@ -646,7 +654,7 @@ public final class ItemStack {
public <T extends LivingEntity> void hurtAndBreak(int amount, T entity, Consumer<T> breakCallback) {
if (!entity.level().isClientSide && (!(entity instanceof net.minecraft.world.entity.player.Player) || !((net.minecraft.world.entity.player.Player) entity).getAbilities().instabuild)) {
if (this.isDamageableItem()) {
diff --git a/patches/server/0670-Add-ItemFactory-getSpawnEgg-API.patch b/patches/server/0670-Add-ItemFactory-getSpawnEgg-API.patch
index b9440112fb..e5dbfedc65 100644
--- a/patches/server/0670-Add-ItemFactory-getSpawnEgg-API.patch
+++ b/patches/server/0670-Add-ItemFactory-getSpawnEgg-API.patch
@@ -5,16 +5,18 @@ Subject: [PATCH] Add ItemFactory#getSpawnEgg API
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-index 21f5c0f2fc10b5f5752e214a08e858227bdcf2ce..583cd4726a1b60e8f11bf8a28cc3c655fa8c1b90 100644
+index ff05e29bdc8d21e9e6ddb4cb23f8fc9396481ffc..3b02bf4e5b657af9debb432ab412fe50e1f7b922 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -503,5 +503,17 @@ public final class CraftItemFactory implements ItemFactory {
- entity.getUniqueId().toString(),
+@@ -528,4 +528,19 @@ public final class CraftItemFactory implements ItemFactory {
new net.md_5.bungee.api.chat.TextComponent(customName));
}
+ // Paper end - bungee hover events
+
-+ @Override
-+ public ItemStack getSpawnEgg(org.bukkit.entity.EntityType type) {
++ // Paper start - old getSpawnEgg API
++ // @Override // used to override, upstream added conflicting method, is called via Commodore now
++ @Deprecated
++ public ItemStack getSpawnEgg0(org.bukkit.entity.EntityType type) {
+ if (type == null) {
+ return null;
+ }
@@ -24,5 +26,26 @@ index 21f5c0f2fc10b5f5752e214a08e858227bdcf2ce..583cd4726a1b60e8f11bf8a28cc3c655
+ net.minecraft.world.item.SpawnEggItem eggItem = net.minecraft.world.item.SpawnEggItem.byId(nmsType);
+ return eggItem == null ? null : new net.minecraft.world.item.ItemStack(eggItem).asBukkitMirror();
+ }
- // Paper end
++ // Paper end
}
+diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+index cacd9b59741c31e70e898e7af91a1a6ed3f87f07..b7d09079411f70353f44df3c623a0076367cf603 100644
+--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
++++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+@@ -467,6 +467,16 @@ public class Commodore
+ return;
+ }
+ // Paper end
++
++ // Paper start - ItemFactory#getSpawnEgg (paper had original method that returned ItemStack, upstream added identical but returned Material)
++ if (owner.equals("org/bukkit/inventory/ItemFactory") && name.equals("getSpawnEgg") && desc.equals("(Lorg/bukkit/entity/EntityType;)Lorg/bukkit/inventory/ItemStack;")) {
++ super.visitInsn(Opcodes.SWAP); // has 1 param, this moves the owner instance to the top for the checkcast
++ super.visitTypeInsn(Opcodes.CHECKCAST, CB_PACKAGE + "/inventory/CraftItemFactory");
++ super.visitInsn(Opcodes.SWAP); // moves param back to the the top of stack
++ super.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CB_PACKAGE + "/inventory/CraftItemFactory", "getSpawnEgg0", desc, false);
++ return;
++ }
++ // Paper end - ItemFactory#getSpawnEgg
+ if ( modern )
+ {
+ if ( owner.equals( "org/bukkit/Material" ) )
diff --git a/patches/server/0671-Add-critical-damage-API.patch b/patches/server/0671-Add-critical-damage-API.patch
index ba7fd6474f..97a7c92c89 100644
--- a/patches/server/0671-Add-critical-damage-API.patch
+++ b/patches/server/0671-Add-critical-damage-API.patch
@@ -71,10 +71,10 @@ index a0d688128a1268fa1acf7c339cde15df5dce1c82..372b9ec0c8eddf4a01b4b8203a88401d
int k = entity.getRemainingFireTicks();
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index f7d078f557b0be8db0b2ef7e5ff2094909686047..f40ff2f248e3cacc924d90e9f90692b5bde7ea53 100644
+index ecf0a23435532cc6a771ef04787bbef190699edb..b46a37bab1ddab70dc0567df26668e28d5844469 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -990,7 +990,7 @@ public class CraftEventFactory {
+@@ -1016,7 +1016,7 @@ public class CraftEventFactory {
} else {
damageCause = DamageCause.ENTITY_EXPLOSION;
}
@@ -83,7 +83,7 @@ index f7d078f557b0be8db0b2ef7e5ff2094909686047..f40ff2f248e3cacc924d90e9f90692b5
}
event.setCancelled(cancelled);
-@@ -1022,7 +1022,7 @@ public class CraftEventFactory {
+@@ -1048,7 +1048,7 @@ public class CraftEventFactory {
cause = DamageCause.SONIC_BOOM;
}
@@ -92,7 +92,7 @@ index f7d078f557b0be8db0b2ef7e5ff2094909686047..f40ff2f248e3cacc924d90e9f90692b5
} else if (source.is(DamageTypes.FELL_OUT_OF_WORLD)) {
EntityDamageEvent event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.VOID, modifiers, modifierFunctions);
event.setCancelled(cancelled);
-@@ -1092,7 +1092,7 @@ public class CraftEventFactory {
+@@ -1118,7 +1118,7 @@ public class CraftEventFactory {
} else {
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager.getHandle(), source.getMsgId()));
}
@@ -101,7 +101,7 @@ index f7d078f557b0be8db0b2ef7e5ff2094909686047..f40ff2f248e3cacc924d90e9f90692b5
event.setCancelled(cancelled);
CraftEventFactory.callEvent(event);
if (!event.isCancelled()) {
-@@ -1141,20 +1141,28 @@ public class CraftEventFactory {
+@@ -1167,20 +1167,28 @@ public class CraftEventFactory {
}
if (cause != null) {
diff --git a/patches/server/0680-Improve-and-expand-AsyncCatcher.patch b/patches/server/0680-Improve-and-expand-AsyncCatcher.patch
index 88f2cca0de..8cffa38f71 100644
--- a/patches/server/0680-Improve-and-expand-AsyncCatcher.patch
+++ b/patches/server/0680-Improve-and-expand-AsyncCatcher.patch
@@ -17,10 +17,10 @@ Async catch modifications to critical entity state
Co-authored-by: Jake Potrebic <[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 9d6107e014e424dc786f33c3d3685e36746799e2..a1114ae100a5216883756822b8d0f2df077b819d 100644
+index d4f989c409d16864ffc0535afed546a2a7325ffc..03d75644a2f2a76022bb8f18d64ccbd35fc93d4a 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1656,6 +1656,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1658,6 +1658,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
public void internalTeleport(double d0, double d1, double d2, float f, float f1, Set<RelativeMovement> set) { // Paper
diff --git a/patches/server/0681-Add-paper-mobcaps-and-paper-playermobcaps.patch b/patches/server/0681-Add-paper-mobcaps-and-paper-playermobcaps.patch
index afc492a031..4e8ee012ce 100644
--- a/patches/server/0681-Add-paper-mobcaps-and-paper-playermobcaps.patch
+++ b/patches/server/0681-Add-paper-mobcaps-and-paper-playermobcaps.patch
@@ -278,10 +278,10 @@ index a3461824fd2162d509facf6f64c5008e3f0fd42b..d4f99f4592a86e2d8344bc2c44711fef
// Paper start - add parameters and int ret type
spawnCategoryForChunk(group, world, chunk, checker, runner, Integer.MAX_VALUE, null);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index f7f37c9dc14d87c0d2fa89a0f6e0e47dc51abcea..18feaee5cbc2ad9440e8183b19cb5dbb2b24df25 100644
+index fc8d0b81054cad7dbfebd29b2d92a52952357fc2..eb221cd9fff4f5fd6c30ba36dc43434d791d4956 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2200,6 +2200,11 @@ public final class CraftServer implements Server {
+@@ -2201,6 +2201,11 @@ public final class CraftServer implements Server {
@Override
public int getSpawnLimit(SpawnCategory spawnCategory) {
diff --git a/patches/server/0713-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch b/patches/server/0713-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
index 538d614beb..b27c7a7e6e 100644
--- a/patches/server/0713-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
+++ b/patches/server/0713-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Don't respond to ServerboundCommandSuggestionPacket when
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index a1114ae100a5216883756822b8d0f2df077b819d..87c97beb46fdd0b8b78713ce3a64dd98ea3eead0 100644
+index 03d75644a2f2a76022bb8f18d64ccbd35fc93d4a..bf854ded3a13bbabb78ec521c1a1ac12195dc383 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -847,6 +847,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -849,6 +849,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
// Paper end
// CraftBukkit end
diff --git a/patches/server/0716-Prevent-softlocked-end-exit-portal-generation.patch b/patches/server/0716-Prevent-softlocked-end-exit-portal-generation.patch
index 4b7141d625..9cbe871fbc 100644
--- a/patches/server/0716-Prevent-softlocked-end-exit-portal-generation.patch
+++ b/patches/server/0716-Prevent-softlocked-end-exit-portal-generation.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Prevent softlocked end exit portal generation
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-index eab54838ba540f41cc59a359dd00ba80d82c771e..17b5386d147dc007c487da3561ea5a5d3cd6db22 100644
+index b5d69bde512f832374acd5e6b94268ea327b01b2..f67fcaff1994e5eb1195d1ec6d5a27d01c12d7a7 100644
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-@@ -412,6 +412,11 @@ public class EndDragonFight {
+@@ -466,6 +466,11 @@ public class EndDragonFight {
}
}
@@ -17,6 +17,6 @@ index eab54838ba540f41cc59a359dd00ba80d82c771e..17b5386d147dc007c487da3561ea5a5d
+ this.portalLocation = this.portalLocation.atY(this.level.getMinBuildHeight() + 1);
+ }
+ // Paper end
- endPodiumFeature.place(FeatureConfiguration.NONE, this.level, this.level.getChunkSource().getGenerator(), RandomSource.create(), this.portalLocation);
+ worldgenendtrophy.place(FeatureConfiguration.NONE, this.level, this.level.getChunkSource().getGenerator(), RandomSource.create(), this.portalLocation);
}
diff --git a/patches/server/0735-Hide-unnecessary-itemmeta-from-clients.patch b/patches/server/0735-Hide-unnecessary-itemmeta-from-clients.patch
index 20f2fdc55f..ee0b7d16fb 100644
--- a/patches/server/0735-Hide-unnecessary-itemmeta-from-clients.patch
+++ b/patches/server/0735-Hide-unnecessary-itemmeta-from-clients.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Hide unnecessary itemmeta from clients
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
-index 485ed6cfdb2bb0c06dd639f6cad26cd3112c618d..3212a4cfb0c7e0003981097e813ebbe2601cdfec 100644
+index 24f0d61a2fa9ac95dd26443a978209b53baf10b1..31fa0f4fbf195d0db7a89a060b1cc4fd30dc5ab0 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -340,7 +340,7 @@ public class ServerEntity {
@@ -18,10 +18,10 @@ index 485ed6cfdb2bb0c06dd639f6cad26cd3112c618d..3212a4cfb0c7e0003981097e813ebbe2
}
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index c199598128c5d1be4f2953e0a67634cb5b22dec8..53a994606253e502e8427f11108c5427b8b6b8b4 100644
+index bf854ded3a13bbabb78ec521c1a1ac12195dc383..3a59cbb7fdd9b5fc75ed850d049caecf47b600b8 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2715,8 +2715,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2714,8 +2714,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Refresh the current entity metadata
entity.getEntityData().refresh(player);
// SPIGOT-7136 - Allays
diff --git a/patches/server/0740-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/server/0740-Allow-delegation-to-vanilla-chunk-gen.patch
index e8d1e04124..d3760b7cf2 100644
--- a/patches/server/0740-Allow-delegation-to-vanilla-chunk-gen.patch
+++ b/patches/server/0740-Allow-delegation-to-vanilla-chunk-gen.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Allow delegation to vanilla chunk gen
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 18feaee5cbc2ad9440e8183b19cb5dbb2b24df25..e6b70fcd96b99558342de82a1235c6de923219fe 100644
+index eb221cd9fff4f5fd6c30ba36dc43434d791d4956..d55a300b11fcdf7f0c502f95ae7c992cf3e13aff 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2380,6 +2380,88 @@ public final class CraftServer implements Server {
+@@ -2381,6 +2381,88 @@ public final class CraftServer implements Server {
return new OldCraftChunkData(world.getMinHeight(), world.getMaxHeight(), handle.registryAccess().registryOrThrow(Registries.BIOME), world); // Paper - Anti-Xray - Add parameters
}
diff --git a/patches/server/0742-Optimise-collision-checking-in-player-move-packet-ha.patch b/patches/server/0742-Optimise-collision-checking-in-player-move-packet-ha.patch
index 8343f3caa3..d938d49277 100644
--- a/patches/server/0742-Optimise-collision-checking-in-player-move-packet-ha.patch
+++ b/patches/server/0742-Optimise-collision-checking-in-player-move-packet-ha.patch
@@ -8,10 +8,10 @@ Move collision logic to just the hasNewCollision call instead of getCubes + hasN
CHECK ME
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac301efe79 100644
+index 3a59cbb7fdd9b5fc75ed850d049caecf47b600b8..60950d7d3ef288da4e3ea9a6cde3e31c06d33557 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -647,7 +647,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -649,7 +649,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
return;
}
@@ -20,7 +20,7 @@ index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac
d6 = d3 - this.vehicleLastGoodX; // Paper - diff on change, used for checking large move vectors above
d7 = d4 - this.vehicleLastGoodY - 1.0E-6D; // Paper - diff on change, used for checking large move vectors above
-@@ -663,6 +663,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -665,6 +665,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
entity.move(MoverType.PLAYER, new Vec3(d6, d7, d8));
@@ -28,7 +28,7 @@ index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac
double d11 = d7;
d6 = d3 - entity.getX();
-@@ -676,16 +677,24 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -678,16 +679,24 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
boolean flag2 = false;
if (d10 > org.spigotmc.SpigotConfig.movedWronglyThreshold) { // Spigot
@@ -56,7 +56,7 @@ index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac
entity.absMoveTo(d0, d1, d2, f, f1);
this.player.absMoveTo(d0, d1, d2, this.player.getYRot(), this.player.getXRot()); // CraftBukkit
this.connection.send(new ClientboundMoveVehiclePacket(entity));
-@@ -771,7 +780,32 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -773,7 +782,32 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
private boolean noBlocksAround(Entity entity) {
@@ -90,7 +90,7 @@ index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac
}
@Override
-@@ -1347,7 +1381,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1349,7 +1383,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
if (this.awaitingPositionFromClient != null) {
@@ -99,7 +99,7 @@ index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac
this.awaitingTeleportTime = this.tickCount;
this.teleport(this.awaitingPositionFromClient.x, this.awaitingPositionFromClient.y, this.awaitingPositionFromClient.z, this.player.getYRot(), this.player.getXRot());
}
-@@ -1440,7 +1474,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1442,7 +1476,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
}
@@ -108,7 +108,7 @@ index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac
d6 = d0 - this.lastGoodX; // Paper - diff on change, used for checking large move vectors above
d7 = d1 - this.lastGoodY; // Paper - diff on change, used for checking large move vectors above
-@@ -1482,6 +1516,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1484,6 +1518,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.player.move(MoverType.PLAYER, new Vec3(d6, d7, d8));
this.player.onGround = packet.isOnGround(); // CraftBukkit - SPIGOT-5810, SPIGOT-5835, SPIGOT-6828: reset by this.player.move
@@ -116,7 +116,7 @@ index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac
// Paper start - prevent position desync
if (this.awaitingPositionFromClient != null) {
return; // ... thanks Mojang for letting move calls teleport across dimensions.
-@@ -1500,11 +1535,23 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1502,11 +1537,23 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
boolean flag2 = false;
if (!this.player.isChangingDimension() && d10 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.gameMode.isCreative() && this.player.gameMode.getGameModeForPlayer() != GameType.SPECTATOR) { // Spigot
@@ -142,7 +142,7 @@ index 913cd79d9a382d9464ce20a95f91f0e0122fc71b..58ee55afb11b0c64b78014424bbcb5ac
this.internalTeleport(d3, d4, d5, f, f1, Collections.emptySet()); // CraftBukkit - SPIGOT-1807: Don't call teleport event, when the client thinks the player is falling, because the chunks are not loaded on the client yet.
this.player.doCheckFallDamage(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5, packet.isOnGround());
} else {
-@@ -1590,6 +1637,26 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1592,6 +1639,26 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
}
diff --git a/patches/server/0748-Improve-scoreboard-entries.patch b/patches/server/0748-Improve-scoreboard-entries.patch
index 561724f7cd..441d410c2b 100644
--- a/patches/server/0748-Improve-scoreboard-entries.patch
+++ b/patches/server/0748-Improve-scoreboard-entries.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Improve scoreboard entries
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java
-index de5f382656f9fd08f6ae1795c69743c604d62d5c..97cb29beea1d133f683d7cff7a26805b09f63096 100644
+index ef1b0b716b11327a8f2856f51545aaba355ce74e..442ed17a4c91fe5ccf567f2af518569b945aa36c 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java
-@@ -146,6 +146,14 @@ final class CraftObjective extends CraftScoreboardComponent implements Objective
+@@ -145,6 +145,14 @@ final class CraftObjective extends CraftScoreboardComponent implements Objective
return new CraftScore(this, entry);
}
@@ -21,10 +21,10 @@ index de5f382656f9fd08f6ae1795c69743c604d62d5c..97cb29beea1d133f683d7cff7a26805b
+ // Paper end
+
@Override
- public void unregister() throws IllegalStateException {
+ public void unregister() {
CraftScoreboard scoreboard = this.checkState();
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
-index e233eef291f64622947b0b6c4559639e510c087f..13190c4265bb83e682dede7e982ebcd19d80e334 100644
+index 052389310826ee6b97cf27dfd952e0101fb2d097..a8c5bfc54ed2b8bd873f124c7080d73fe73a86ad 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java
@@ -233,4 +233,23 @@ public final class CraftScoreboard implements org.bukkit.scoreboard.Scoreboard {
@@ -52,10 +52,10 @@ index e233eef291f64622947b0b6c4559639e510c087f..13190c4265bb83e682dede7e982ebcd1
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-index 772206a43950db2726bd79911438e2aec2d7189c..47031a6f1b7e261bb034968f83c0c496b89d1361 100644
+index baff11728120fda1740d5e15163760f50fe1cd1d..4d65d1a0dd52aaeeeef8acf2b0023f27257f60a2 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-@@ -309,6 +309,26 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
+@@ -304,6 +304,26 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
}
}
diff --git a/patches/server/0760-Expose-vanilla-BiomeProvider-from-WorldInfo.patch b/patches/server/0760-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
index c53d96847b..63f9d7fecc 100644
--- a/patches/server/0760-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
+++ b/patches/server/0760-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
@@ -18,10 +18,10 @@ index ebd092a3f3c745b3a2f69fd72c04be7a2ab214a2..91a66fb66e9df5d5878315afa9d357a3
biomeProvider = gen.getDefaultBiomeProvider(worldInfo);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index e6b70fcd96b99558342de82a1235c6de923219fe..6ecaf821a908b68182879b5da1cbbd82939a785b 100644
+index d55a300b11fcdf7f0c502f95ae7c992cf3e13aff..65e8f35f9bec25f8d21e35af95d021b31f47075e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1240,7 +1240,7 @@ public final class CraftServer implements Server {
+@@ -1241,7 +1241,7 @@ public final class CraftServer implements Server {
List<CustomSpawner> list = ImmutableList.of(new PhantomSpawner(), new PatrolSpawner(), new CatSpawner(), new VillageSiege(), new WanderingTraderSpawner(worlddata));
LevelStem worlddimension = iregistry.get(actualDimension);
diff --git a/patches/server/0763-Multiple-Entries-with-Scoreboards.patch b/patches/server/0763-Multiple-Entries-with-Scoreboards.patch
index 66769fb534..2a4558b8f3 100644
--- a/patches/server/0763-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/server/0763-Multiple-Entries-with-Scoreboards.patch
@@ -70,10 +70,10 @@ index 610d312b9c8f6c8d1f102e8ba2fe9fc2cc3e98c5..3a4a0727ad44322e3ba85512cd077808
public void onObjectiveAdded(Objective objective) {
super.onObjectiveAdded(objective);
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-index 47031a6f1b7e261bb034968f83c0c496b89d1361..7098b77fe4275e39694ed7d8fb031b9397302b9f 100644
+index 4d65d1a0dd52aaeeeef8acf2b0023f27257f60a2..9c3520524cfb903da6a5401760394ec1b49a1825 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-@@ -234,6 +234,21 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
+@@ -229,6 +229,21 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
scoreboard.board.addPlayerToTeam(entry, team);
}
@@ -93,9 +93,9 @@ index 47031a6f1b7e261bb034968f83c0c496b89d1361..7098b77fe4275e39694ed7d8fb031b93
+ // Paper end
+
@Override
- public boolean removePlayer(OfflinePlayer player) throws IllegalStateException, IllegalArgumentException {
+ public boolean removePlayer(OfflinePlayer player) {
Preconditions.checkArgument(player != null, "OfflinePlayer cannot be null");
-@@ -253,6 +268,28 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
+@@ -248,6 +263,28 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
return true;
}
diff --git a/patches/server/0768-Kick-on-main-for-illegal-chat.patch b/patches/server/0768-Kick-on-main-for-illegal-chat.patch
index c621bcc64c..08406201d7 100644
--- a/patches/server/0768-Kick-on-main-for-illegal-chat.patch
+++ b/patches/server/0768-Kick-on-main-for-illegal-chat.patch
@@ -7,10 +7,10 @@ Makes the PlayerKickEvent fire on the main thread for
illegal characters or chat out-of-order errors.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 58ee55afb11b0c64b78014424bbcb5ac301efe79..69cec44550b8d7ac14498f410e48a5d82056f174 100644
+index 60950d7d3ef288da4e3ea9a6cde3e31c06d33557..aeabaa196d5347dd070e9132fd869e00c9792276 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2165,7 +2165,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2167,7 +2167,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
// CraftBukkit end
if (ServerGamePacketListenerImpl.isChatMessageIllegal(packet.message())) {
@@ -20,7 +20,7 @@ index 58ee55afb11b0c64b78014424bbcb5ac301efe79..69cec44550b8d7ac14498f410e48a5d8
} else {
Optional<LastSeenMessages> optional = this.tryHandleChat(packet.message(), packet.timeStamp(), packet.lastSeenMessages());
-@@ -2199,7 +2201,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2201,7 +2203,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleChatCommand(ServerboundChatCommandPacket packet) {
if (ServerGamePacketListenerImpl.isChatMessageIllegal(packet.command())) {
@@ -30,7 +30,7 @@ index 58ee55afb11b0c64b78014424bbcb5ac301efe79..69cec44550b8d7ac14498f410e48a5d8
} else {
Optional<LastSeenMessages> optional = this.tryHandleChat(packet.command(), packet.timeStamp(), packet.lastSeenMessages());
-@@ -2285,7 +2289,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2287,7 +2291,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private Optional<LastSeenMessages> tryHandleChat(String message, Instant timestamp, LastSeenMessages.Update acknowledgment) {
if (!this.updateChatOrder(timestamp)) {
ServerGamePacketListenerImpl.LOGGER.warn("{} sent out-of-order chat: '{}'", this.player.getName().getString(), message);
diff --git a/patches/server/0769-Multi-Block-Change-API-Implementation.patch b/patches/server/0769-Multi-Block-Change-API-Implementation.patch
index 0600bd3ec8..7dbdf083cf 100644
--- a/patches/server/0769-Multi-Block-Change-API-Implementation.patch
+++ b/patches/server/0769-Multi-Block-Change-API-Implementation.patch
@@ -24,10 +24,10 @@ index f96d61bdeb556665d6e6e5023f9d77fd82204e89..e3f355c85eb7cc8c1683e3009502c10a
public void write(FriendlyByteBuf buf) {
buf.writeLong(this.sectionPos.asLong());
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 002ea991ba890d4e2f2485b3da75b53d7127c89c..32266b6e1011c21510a13a53ab1568988ce73522 100644
+index a8da7ff2f8e2cf0195731f5034afa94fcd248340..22bb914d65bec1a324f14a44a0fb946fd64cd4ab 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -888,6 +888,32 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -890,6 +890,32 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(packet);
}
diff --git a/patches/server/0775-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/server/0775-API-for-creating-command-sender-which-forwards-feedb.patch
index 15535c8e38..63b75b6f2b 100644
--- a/patches/server/0775-API-for-creating-command-sender-which-forwards-feedb.patch
+++ b/patches/server/0775-API-for-creating-command-sender-which-forwards-feedb.patch
@@ -122,10 +122,10 @@ index 0000000000000000000000000000000000000000..e3a5f1ec376319bdfda87fa27ae217bf
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 6ecaf821a908b68182879b5da1cbbd82939a785b..c0c88a974955e378c1df678a00d345a61e7f9336 100644
+index 65e8f35f9bec25f8d21e35af95d021b31f47075e..3d9bf78a1a0f04d96008a2601c1f82c8af690094 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2031,6 +2031,13 @@ public final class CraftServer implements Server {
+@@ -2032,6 +2032,13 @@ public final class CraftServer implements Server {
return console.console;
}
diff --git a/patches/server/0778-Fix-cancelled-powdered-snow-bucket-placement.patch b/patches/server/0778-Fix-cancelled-powdered-snow-bucket-placement.patch
index b6ede7ccfc..a17a9169aa 100644
--- a/patches/server/0778-Fix-cancelled-powdered-snow-bucket-placement.patch
+++ b/patches/server/0778-Fix-cancelled-powdered-snow-bucket-placement.patch
@@ -20,19 +20,19 @@ index e581dc10f3c805f7f8b6e4c842092609e7e1a0f8..b0204af850ee182773ad458208cccd94
}
return InteractionResult.FAIL;
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 037d9a64772b42ab3852a1a1d8b3532cbb0d161f..671af924e54e96e91a284103d5f347853ce338b6 100644
+index afbf619feb35751046131e7b22791e789d16427f..f62585f3112886c927f1f65f982b9db9194457e9 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -352,7 +352,7 @@ public final class ItemStack {
+@@ -353,7 +353,7 @@ public final class ItemStack {
int oldCount = this.getCount();
ServerLevel world = (ServerLevel) context.getLevel();
-- if (!(this.getItem() instanceof BucketItem || this.getItem() instanceof SolidBucketItem)) { // if not bucket
-+ if (!(this.getItem() instanceof BucketItem/* || this.getItem() instanceof SolidBucketItem*/)) { // if not bucket // Paper - capture block states for snow buckets
+- if (!(item instanceof BucketItem || item instanceof SolidBucketItem)) { // if not bucket
++ if (!(item instanceof BucketItem/* || item instanceof SolidBucketItem*/)) { // if not bucket // Paper - capture block states for snow buckets
world.captureBlockStates = true;
// special case bonemeal
- if (this.getItem() == Items.BONE_MEAL) {
-@@ -408,7 +408,7 @@ public final class ItemStack {
+ if (item == Items.BONE_MEAL) {
+@@ -412,7 +412,7 @@ public final class ItemStack {
world.capturedBlockStates.clear();
if (blocks.size() > 1) {
placeEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callBlockMultiPlaceEvent(world, entityhuman, enumhand, blocks, blockposition.getX(), blockposition.getY(), blockposition.getZ());
diff --git a/patches/server/0779-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch b/patches/server/0779-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
index b86e8e3be8..8c367b0d11 100644
--- a/patches/server/0779-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
+++ b/patches/server/0779-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add missing Validate calls to CraftServer#getSpawnLimit
Copies appropriate checks from CraftWorld#getSpawnLimit
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index c0c88a974955e378c1df678a00d345a61e7f9336..f5c267c9f58f1e4580cd6dfd29e0cd4e089b236c 100644
+index 3d9bf78a1a0f04d96008a2601c1f82c8af690094..a294fc8019f95059a1c6a2d300d63319d53496af 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2208,6 +2208,8 @@ public final class CraftServer implements Server {
+@@ -2209,6 +2209,8 @@ public final class CraftServer implements Server {
@Override
public int getSpawnLimit(SpawnCategory spawnCategory) {
// Paper start
diff --git a/patches/server/0780-Add-GameEvent-tags.patch b/patches/server/0780-Add-GameEvent-tags.patch
index 221575f12c..afeb377743 100644
--- a/patches/server/0780-Add-GameEvent-tags.patch
+++ b/patches/server/0780-Add-GameEvent-tags.patch
@@ -46,10 +46,10 @@ index 0000000000000000000000000000000000000000..e7d9fd2702a1ce96596580fff8f5ee4f
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index f5c267c9f58f1e4580cd6dfd29e0cd4e089b236c..98d6e9dd76c30d5688605a4086afd01457669628 100644
+index a294fc8019f95059a1c6a2d300d63319d53496af..b5ebe75bf670e949dbc01cff67738b0686b78371 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2629,6 +2629,15 @@ public final class CraftServer implements Server {
+@@ -2630,6 +2630,15 @@ public final class CraftServer implements Server {
return (org.bukkit.Tag<T>) new CraftEntityTag(BuiltInRegistries.ENTITY_TYPE, entityTagKey);
}
}
@@ -65,7 +65,7 @@ index f5c267c9f58f1e4580cd6dfd29e0cd4e089b236c..98d6e9dd76c30d5688605a4086afd014
default -> throw new IllegalArgumentException();
}
-@@ -2661,6 +2670,13 @@ public final class CraftServer implements Server {
+@@ -2662,6 +2671,13 @@ public final class CraftServer implements Server {
net.minecraft.core.Registry<EntityType<?>> entityTags = BuiltInRegistries.ENTITY_TYPE;
return entityTags.getTags().map(pair -> (org.bukkit.Tag<T>) new CraftEntityTag(entityTags, pair.getFirst())).collect(ImmutableList.toImmutableList());
}
diff --git a/patches/server/0786-Put-world-into-worldlist-before-initing-the-world.patch b/patches/server/0786-Put-world-into-worldlist-before-initing-the-world.patch
index 5435f60e03..8642fd9b72 100644
--- a/patches/server/0786-Put-world-into-worldlist-before-initing-the-world.patch
+++ b/patches/server/0786-Put-world-into-worldlist-before-initing-the-world.patch
@@ -23,10 +23,10 @@ index a9240274b903f23a5d0b2414b3bc7a984845b6cd..9b720d3407802eac986c2044892d5b70
if (worlddata.getCustomBossEvents() != null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 98d6e9dd76c30d5688605a4086afd01457669628..fd7cc379ebc762133e14a4cc3c464f17ec706cfa 100644
+index b5ebe75bf670e949dbc01cff67738b0686b78371..0576d449f353e9cb93f613f85bef0e93e51f5bab 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1269,10 +1269,11 @@ public final class CraftServer implements Server {
+@@ -1270,10 +1270,11 @@ public final class CraftServer implements Server {
return null;
}
diff --git a/patches/server/0788-Custom-Potion-Mixes.patch b/patches/server/0788-Custom-Potion-Mixes.patch
index 8316a53631..aa329b1411 100644
--- a/patches/server/0788-Custom-Potion-Mixes.patch
+++ b/patches/server/0788-Custom-Potion-Mixes.patch
@@ -164,10 +164,10 @@ index 424406d2692856cfd82b6f3b7b6228fa3bd20c2f..c57efcb9a79337ec791e4e8f6671612f
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index fd7cc379ebc762133e14a4cc3c464f17ec706cfa..6e9f3db637a61d29e3ef8b3e390e143d2ad281ee 100644
+index 0576d449f353e9cb93f613f85bef0e93e51f5bab..575c4a4baaecbcbd16727138a96aab8bcaee6795 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -303,6 +303,7 @@ public final class CraftServer implements Server {
+@@ -304,6 +304,7 @@ public final class CraftServer implements Server {
private final io.papermc.paper.datapack.PaperDatapackManager datapackManager; // Paper
public static Exception excessiveVelEx; // Paper - Velocity warnings
private final io.papermc.paper.logging.SysoutCatcher sysoutCatcher = new io.papermc.paper.logging.SysoutCatcher(); // Paper
@@ -175,7 +175,7 @@ index fd7cc379ebc762133e14a4cc3c464f17ec706cfa..6e9f3db637a61d29e3ef8b3e390e143d
static {
ConfigurationSerialization.registerClass(CraftOfflinePlayer.class);
-@@ -330,7 +331,7 @@ public final class CraftServer implements Server {
+@@ -331,7 +332,7 @@ public final class CraftServer implements Server {
Enchantments.SHARPNESS.getClass();
org.bukkit.enchantments.Enchantment.stopAcceptingRegistrations();
@@ -184,7 +184,7 @@ index fd7cc379ebc762133e14a4cc3c464f17ec706cfa..6e9f3db637a61d29e3ef8b3e390e143d
MobEffects.BLINDNESS.getClass();
PotionEffectType.stopAcceptingRegistrations();
// Ugly hack :(
-@@ -2988,5 +2989,10 @@ public final class CraftServer implements Server {
+@@ -2989,5 +2990,10 @@ public final class CraftServer implements Server {
return datapackManager;
}
diff --git a/patches/server/0795-Don-t-allow-vehicle-movement-from-players-while-tele.patch b/patches/server/0795-Don-t-allow-vehicle-movement-from-players-while-tele.patch
index 1f7066313d..f2d111af4d 100644
--- a/patches/server/0795-Don-t-allow-vehicle-movement-from-players-while-tele.patch
+++ b/patches/server/0795-Don-t-allow-vehicle-movement-from-players-while-tele.patch
@@ -7,10 +7,10 @@ Bring the vehicle move packet behavior in line with the
regular player move packet.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 69cec44550b8d7ac14498f410e48a5d82056f174..a5f6fed7774c7ea3b9cae59f72d2ea4b435af641 100644
+index aeabaa196d5347dd070e9132fd869e00c9792276..655dc1cda9a498466ffef68d41bde5030dfe53c3 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -576,6 +576,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -578,6 +578,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.disconnect(Component.translatable("multiplayer.disconnect.invalid_vehicle_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_VEHICLE_MOVEMENT); // Paper - kick event cause
} else {
Entity entity = this.player.getRootVehicle();
diff --git a/patches/server/0798-Implement-enchantWithLevels-API.patch b/patches/server/0798-Implement-enchantWithLevels-API.patch
index ffa67d357d..6999d72cfe 100644
--- a/patches/server/0798-Implement-enchantWithLevels-API.patch
+++ b/patches/server/0798-Implement-enchantWithLevels-API.patch
@@ -5,13 +5,13 @@ Subject: [PATCH] Implement enchantWithLevels API
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-index 583cd4726a1b60e8f11bf8a28cc3c655fa8c1b90..849e93a8a0645de4c3e6ab8047815d78a722d4f6 100644
+index 3b02bf4e5b657af9debb432ab412fe50e1f7b922..4c0b250bb9e3cf52173b563b36fd27d9e893e154 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -439,6 +439,21 @@ public final class CraftItemFactory implements ItemFactory {
+@@ -458,6 +458,21 @@ public final class CraftItemFactory implements ItemFactory {
}
- // Paper start
+ // Paper start - Adventure
+ @Override
+ public ItemStack enchantWithLevels(ItemStack itemStack, int levels, boolean allowTreasure, java.util.Random random) {
+ Preconditions.checkArgument(itemStack != null, "Argument 'itemStack' must not be null");
diff --git a/patches/server/0799-Fix-saving-in-unloadWorld.patch b/patches/server/0799-Fix-saving-in-unloadWorld.patch
index 4c76d650b2..d047059e5f 100644
--- a/patches/server/0799-Fix-saving-in-unloadWorld.patch
+++ b/patches/server/0799-Fix-saving-in-unloadWorld.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Fix saving in unloadWorld
Change savingDisabled to false to ensure ServerLevel's saving logic gets called when unloadWorld is called with save = true
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 6e9f3db637a61d29e3ef8b3e390e143d2ad281ee..884a7dd2ee3e0dc671cb111a9493bd1a8d3f7d0a 100644
+index 575c4a4baaecbcbd16727138a96aab8bcaee6795..cc85f098bca750a6511477c0a57f2f75af182f0f 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1317,7 +1317,7 @@ public final class CraftServer implements Server {
+@@ -1318,7 +1318,7 @@ public final class CraftServer implements Server {
try {
if (save) {
diff --git a/patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch b/patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch
index 83e3a32637..26f87acfb8 100644
--- a/patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch
+++ b/patches/server/0802-Fix-new-block-data-for-EntityChangeBlockEvent.patch
@@ -196,10 +196,10 @@ index b13d89b1516130507402cd3b4bdb9f3c2a36e807..936644ec4a57e51a1c11a5bf4e8449ab
}
// CraftBukkit end
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index f40ff2f248e3cacc924d90e9f90692b5bde7ea53..ff4dc2a8ab7a158f985599e37da5999cae97d42d 100644
+index b46a37bab1ddab70dc0567df26668e28d5844469..7ec74be4ac660c85a3c9a1d60de45dfa374c9c1f 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1357,11 +1357,11 @@ public class CraftEventFactory {
+@@ -1383,11 +1383,11 @@ public class CraftEventFactory {
return event;
}
diff --git a/patches/server/0810-Prevent-tile-entity-copies-loading-chunks.patch b/patches/server/0810-Prevent-tile-entity-copies-loading-chunks.patch
index 75d7222fff..6803da9cc1 100644
--- a/patches/server/0810-Prevent-tile-entity-copies-loading-chunks.patch
+++ b/patches/server/0810-Prevent-tile-entity-copies-loading-chunks.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Prevent tile entity copies loading chunks
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 66ac999f9dda064136dea32542b6ff662ff7979c..94af08c8b3bc8e47e0c0f9347b256e02b6a29242 100644
+index 655dc1cda9a498466ffef68d41bde5030dfe53c3..4700a1f41a1ff97076bb837fd2b3bc226512b3e2 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3318,7 +3318,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3344,7 +3344,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
BlockPos blockposition = BlockEntity.getPosFromTag(nbttagcompound);
if (this.player.level().isLoaded(blockposition)) {
diff --git a/patches/server/0813-Pass-ServerLevel-for-gamerule-callbacks.patch b/patches/server/0813-Pass-ServerLevel-for-gamerule-callbacks.patch
index 31e9312196..e546b9e9fd 100644
--- a/patches/server/0813-Pass-ServerLevel-for-gamerule-callbacks.patch
+++ b/patches/server/0813-Pass-ServerLevel-for-gamerule-callbacks.patch
@@ -18,10 +18,10 @@ index 9a45921cbb1e7a39e6ef46cc93c14766ee8229ad..8115cf64a30b6438721769df6045e1b7
if (dedicatedserverproperties.enableQuery) {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 94af08c8b3bc8e47e0c0f9347b256e02b6a29242..c4b67ed3b1bdedc21d75883d9ed6fd0244f3390f 100644
+index 4700a1f41a1ff97076bb837fd2b3bc226512b3e2..92f9ee5897045e052c51805112c8478d32380c08 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2908,7 +2908,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2907,7 +2907,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.player = this.server.getPlayerList().respawn(this.player, false, RespawnReason.DEATH);
if (this.server.isHardcore()) {
this.player.setGameMode(GameType.SPECTATOR, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.HARDCORE_DEATH, null); // Paper
diff --git a/patches/server/0814-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/server/0814-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
index 12659c668e..6566872ef6 100644
--- a/patches/server/0814-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
+++ b/patches/server/0814-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add pre-unbreaking amount to PlayerItemDamageEvent
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 671af924e54e96e91a284103d5f347853ce338b6..90e4f8d21822cb0dc8bda586803f8c086f0fbeee 100644
+index f62585f3112886c927f1f65f982b9db9194457e9..cc58df88fc3788dcfb7e429ef899b3d558a931cc 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -608,10 +608,11 @@ public final class ItemStack {
+@@ -612,10 +612,11 @@ public final class ItemStack {
}
}
diff --git a/patches/server/0815-WorldCreator-keepSpawnLoaded.patch b/patches/server/0815-WorldCreator-keepSpawnLoaded.patch
index 76eb1a946a..900a92ca9e 100644
--- a/patches/server/0815-WorldCreator-keepSpawnLoaded.patch
+++ b/patches/server/0815-WorldCreator-keepSpawnLoaded.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] WorldCreator#keepSpawnLoaded
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 884a7dd2ee3e0dc671cb111a9493bd1a8d3f7d0a..c27fc3c75c55fdc418dce8aef98faa237af4c727 100644
+index cc85f098bca750a6511477c0a57f2f75af182f0f..2282d0ae19c3428a32d4645caaa2d543cbd866fb 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1276,6 +1276,7 @@ public final class CraftServer implements Server {
+@@ -1277,6 +1277,7 @@ public final class CraftServer implements Server {
internal.setSpawnSettings(true, true);
// Paper - move up
diff --git a/patches/server/0823-Do-not-accept-invalid-client-settings.patch b/patches/server/0823-Do-not-accept-invalid-client-settings.patch
index f1ed4ee86f..c2c5f72c55 100644
--- a/patches/server/0823-Do-not-accept-invalid-client-settings.patch
+++ b/patches/server/0823-Do-not-accept-invalid-client-settings.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Do not accept invalid client settings
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index c4b67ed3b1bdedc21d75883d9ed6fd0244f3390f..c9e29f3e455f9a04ede1713feea885ec71cae5e6 100644
+index 92f9ee5897045e052c51805112c8478d32380c08..aae750e2b6067a8fccff7e70b3b0422bd609904a 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3460,6 +3460,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3486,6 +3486,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleClientInformation(ServerboundClientInformationPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
diff --git a/patches/server/0825-Fix-OfflinePlayer-getBedSpawnLocation.patch b/patches/server/0825-Fix-OfflinePlayer-getBedSpawnLocation.patch
index 450ba848ef..13111af547 100644
--- a/patches/server/0825-Fix-OfflinePlayer-getBedSpawnLocation.patch
+++ b/patches/server/0825-Fix-OfflinePlayer-getBedSpawnLocation.patch
@@ -8,10 +8,10 @@ instance of CraftOfflinePlayer the world was incorrect
due to the logic for reading the NBT not being up-to-date.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-index ef48315b98aa39ed245fb7619cf594bfb767931a..2856b861a1207ef94ae5671c5898f08fedd14475 100644
+index f572a74b85df36a6da76b78ec29d807273867537..aa070258c1f2546ac68869cb62c8752c80c758ab 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-@@ -34,6 +34,7 @@ import org.bukkit.profile.PlayerProfile;
+@@ -36,6 +36,7 @@ import org.bukkit.profile.PlayerProfile;
@SerializableAs("Player")
public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializable {
@@ -19,7 +19,7 @@ index ef48315b98aa39ed245fb7619cf594bfb767931a..2856b861a1207ef94ae5671c5898f08f
private final GameProfile profile;
private final CraftServer server;
private final PlayerDataStorage storage;
-@@ -318,11 +319,20 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
+@@ -330,11 +331,20 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
if (data == null) return null;
if (data.contains("SpawnX") && data.contains("SpawnY") && data.contains("SpawnZ")) {
diff --git a/patches/server/0830-Throw-exception-on-world-create-while-being-ticked.patch b/patches/server/0830-Throw-exception-on-world-create-while-being-ticked.patch
index 4df4344992..fbdcc9b82f 100644
--- a/patches/server/0830-Throw-exception-on-world-create-while-being-ticked.patch
+++ b/patches/server/0830-Throw-exception-on-world-create-while-being-ticked.patch
@@ -45,10 +45,10 @@ index 910523399b1fae64808b292cfb45bed56719fcb3..66bb92ca535b559d3bca89b9bc841f8f
this.profiler.popPush("connection");
MinecraftTimings.connectionTimer.startTiming(); // Spigot
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index c27fc3c75c55fdc418dce8aef98faa237af4c727..398812a53abaad6a3551d45b624ec9340b5f52dd 100644
+index 2282d0ae19c3428a32d4645caaa2d543cbd866fb..48130600572c216f071893e2925dd1758e143751 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -871,6 +871,11 @@ public final class CraftServer implements Server {
+@@ -872,6 +872,11 @@ public final class CraftServer implements Server {
return new ArrayList<World>(this.worlds.values());
}
@@ -60,7 +60,7 @@ index c27fc3c75c55fdc418dce8aef98faa237af4c727..398812a53abaad6a3551d45b624ec934
public DedicatedPlayerList getHandle() {
return this.playerList;
}
-@@ -1152,6 +1157,7 @@ public final class CraftServer implements Server {
+@@ -1153,6 +1158,7 @@ public final class CraftServer implements Server {
@Override
public World createWorld(WorldCreator creator) {
Preconditions.checkState(this.console.getAllLevels().iterator().hasNext(), "Cannot create additional worlds on STARTUP");
@@ -68,7 +68,7 @@ index c27fc3c75c55fdc418dce8aef98faa237af4c727..398812a53abaad6a3551d45b624ec934
Preconditions.checkArgument(creator != null, "WorldCreator cannot be null");
String name = creator.name();
-@@ -1291,6 +1297,7 @@ public final class CraftServer implements Server {
+@@ -1292,6 +1298,7 @@ public final class CraftServer implements Server {
@Override
public boolean unloadWorld(World world, boolean save) {
diff --git a/patches/server/0837-Don-t-broadcast-messages-to-command-blocks.patch b/patches/server/0837-Don-t-broadcast-messages-to-command-blocks.patch
index d85fba5cc7..70b52ee7b4 100644
--- a/patches/server/0837-Don-t-broadcast-messages-to-command-blocks.patch
+++ b/patches/server/0837-Don-t-broadcast-messages-to-command-blocks.patch
@@ -20,10 +20,10 @@ index e05eb08a9c229b371887676da510df948b896a85..ceeedbd88c56c08ec8b047c9ca2f14cc
Date date = new Date();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 398812a53abaad6a3551d45b624ec9340b5f52dd..295d6bec7b2fc943197b315ebd09b159ea670a79 100644
+index 48130600572c216f071893e2925dd1758e143751..f5f69968aa80c58b5325d4b6a3d03439149b7375 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1793,7 +1793,7 @@ public final class CraftServer implements Server {
+@@ -1794,7 +1794,7 @@ public final class CraftServer implements Server {
// Paper end
Set<CommandSender> recipients = new HashSet<>();
for (Permissible permissible : this.getPluginManager().getPermissionSubscriptions(permission)) {
diff --git a/patches/server/0840-Don-t-print-component-in-resource-pack-rejection-mes.patch b/patches/server/0840-Don-t-print-component-in-resource-pack-rejection-mes.patch
index 917c4e14fe..4a218bdcb8 100644
--- a/patches/server/0840-Don-t-print-component-in-resource-pack-rejection-mes.patch
+++ b/patches/server/0840-Don-t-print-component-in-resource-pack-rejection-mes.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Don't print component in resource pack rejection message
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 45cd5a5026ba5a1221adac51755522357f204b61..0661f0a2f4a58092ca059027defa0842eb921473 100644
+index aae750e2b6067a8fccff7e70b3b0422bd609904a..ae7e333ff9da224422b61b3b8c2d409144f18b9d 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2035,7 +2035,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2037,7 +2037,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
public void handleResourcePackResponse(ServerboundResourcePackPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (packet.getAction() == ServerboundResourcePackPacket.Action.DECLINED && this.server.isResourcePackRequired()) {
diff --git a/patches/server/0844-Add-some-minimal-debug-information-to-chat-packet-er.patch b/patches/server/0844-Add-some-minimal-debug-information-to-chat-packet-er.patch
index 5788af2cc9..b47f885404 100644
--- a/patches/server/0844-Add-some-minimal-debug-information-to-chat-packet-er.patch
+++ b/patches/server/0844-Add-some-minimal-debug-information-to-chat-packet-er.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add some minimal debug information to chat packet errors
TODO: potentially add some kick leeway
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 0661f0a2f4a58092ca059027defa0842eb921473..ddde8721ca8dee386a54040f5fc57f25de71d2a2 100644
+index ae7e333ff9da224422b61b3b8c2d409144f18b9d..7b42f4be71566f9d91496ae05177e5d5f398ac9a 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2293,7 +2293,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2295,7 +2295,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private Optional<LastSeenMessages> tryHandleChat(String message, Instant timestamp, LastSeenMessages.Update acknowledgment) {
if (!this.updateChatOrder(timestamp)) {
diff --git a/patches/server/0846-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch b/patches/server/0846-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
index 3f308e6f71..3b8b782960 100644
--- a/patches/server/0846-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
+++ b/patches/server/0846-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix Spigot Config not using commands.spam-exclusions
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ddde8721ca8dee386a54040f5fc57f25de71d2a2..f30c7b2dfd7b768dd98f4dfa532d54da8a1d9257 100644
+index 7b42f4be71566f9d91496ae05177e5d5f398ac9a..81ba625e01dad1373ef7d5377bb28f9f0b0ae34e 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2540,7 +2540,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2536,7 +2536,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
// Spigot end
// this.chatSpamTickCount += 20;
diff --git a/patches/server/0847-More-Teleport-API.patch b/patches/server/0847-More-Teleport-API.patch
index 097c59bec2..4c0b9328b2 100644
--- a/patches/server/0847-More-Teleport-API.patch
+++ b/patches/server/0847-More-Teleport-API.patch
@@ -7,10 +7,10 @@ Subject: [PATCH] More Teleport API
public net.minecraft.server.network.ServerGamePacketListenerImpl internalTeleport(DDDFFLjava/util/Set;Z)V
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index f30c7b2dfd7b768dd98f4dfa532d54da8a1d9257..94d78b8854deba8cf7c862ab1a095c576209ea6e 100644
+index 81ba625e01dad1373ef7d5377bb28f9f0b0ae34e..9a5ec7667b99ab271ff9824d3f250c11d5836ac3 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1711,11 +1711,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1713,11 +1713,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
return false; // CraftBukkit - Return event status
}
@@ -74,10 +74,10 @@ index cc72d960d9a5f9481ec2214b1549a344907a68da..94b41e9e3abe9cfbe09af67b03bc841f
// Let the server handle cross world teleports
if (location.getWorld() != null && !location.getWorld().equals(this.getWorld())) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 32266b6e1011c21510a13a53ab1568988ce73522..8c98546d13ded3142cc3250391db86694e5835f4 100644
+index 22bb914d65bec1a324f14a44a0fb946fd64cd4ab..38ffa052f3d900c518c6689bae93e8e34ee52cb9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1209,13 +1209,101 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1211,13 +1211,101 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setRotation(float yaw, float pitch) {
@@ -180,7 +180,7 @@ index 32266b6e1011c21510a13a53ab1568988ce73522..8c98546d13ded3142cc3250391db8669
location.checkFinite();
ServerPlayer entity = this.getHandle();
-@@ -1228,7 +1316,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1230,7 +1318,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return false;
}
@@ -189,7 +189,7 @@ index 32266b6e1011c21510a13a53ab1568988ce73522..8c98546d13ded3142cc3250391db8669
return false;
}
-@@ -1246,7 +1334,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1248,7 +1336,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// If this player is riding another entity, we must dismount before teleporting.
@@ -198,7 +198,7 @@ index 32266b6e1011c21510a13a53ab1568988ce73522..8c98546d13ded3142cc3250391db8669
// SPIGOT-5509: Wakeup, similar to riding
if (this.isSleeping()) {
-@@ -1262,13 +1350,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1264,13 +1352,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
ServerLevel toWorld = ((CraftWorld) to.getWorld()).getHandle();
// Close any foreign inventory
diff --git a/patches/server/0850-Send-block-entities-after-destroy-prediction.patch b/patches/server/0850-Send-block-entities-after-destroy-prediction.patch
index 4e14c8d078..6c5d93fca7 100644
--- a/patches/server/0850-Send-block-entities-after-destroy-prediction.patch
+++ b/patches/server/0850-Send-block-entities-after-destroy-prediction.patch
@@ -57,10 +57,10 @@ index 96fde7b84ce4d195d0c54deff71df9fcf8447979..6cc9c28032cafd15d884223a01208ce6
}
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 94d78b8854deba8cf7c862ab1a095c576209ea6e..c60906e122e058a19248b0e629531d8ec27146ca 100644
+index 9a5ec7667b99ab271ff9824d3f250c11d5836ac3..11e37de9481d82bcc9de4aae82a04acd6659f869 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1857,8 +1857,28 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1859,8 +1859,28 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
return;
}
// Paper end - Don't allow digging in unloaded chunks
diff --git a/patches/server/0852-Custom-Chat-Completion-Suggestions-API.patch b/patches/server/0852-Custom-Chat-Completion-Suggestions-API.patch
index 7b67326aff..fbdc7eb48d 100644
--- a/patches/server/0852-Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/server/0852-Custom-Chat-Completion-Suggestions-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Custom Chat Completion Suggestions API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 8c98546d13ded3142cc3250391db86694e5835f4..d7327b7e57c5075eb687331c7244d0aae1ac7c98 100644
+index 38ffa052f3d900c518c6689bae93e8e34ee52cb9..689a4b5768f57b3705d72a345a64b9c0094197b6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -649,6 +649,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -651,6 +651,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().getServer().getPlayerList().sendPlayerPermissionLevel(this.getHandle(), level, false);
}
diff --git a/patches/server/0857-Add-Velocity-IP-Forwarding-Support.patch b/patches/server/0857-Add-Velocity-IP-Forwarding-Support.patch
index b793e34155..6ec422b4fb 100644
--- a/patches/server/0857-Add-Velocity-IP-Forwarding-Support.patch
+++ b/patches/server/0857-Add-Velocity-IP-Forwarding-Support.patch
@@ -213,10 +213,10 @@ index 3fcd7bfdb8945b276c94a263e9da6b85ce470366..3431b1132e55c53cda7cf47f021f2306
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 295d6bec7b2fc943197b315ebd09b159ea670a79..7f955f8a42b6c917dbd6f3533927a7295c1c5e20 100644
+index f5f69968aa80c58b5325d4b6a3d03439149b7375..cd4c2e4c0d9d9003273fe04bbe9a61b3024547dd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -800,7 +800,7 @@ public final class CraftServer implements Server {
+@@ -801,7 +801,7 @@ public final class CraftServer implements Server {
@Override
public long getConnectionThrottle() {
// Spigot Start - Automatically set connection throttle for bungee configurations
diff --git a/patches/server/0869-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch b/patches/server/0869-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
index 793883a2f4..c9938548a4 100644
--- a/patches/server/0869-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
+++ b/patches/server/0869-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
@@ -7,7 +7,7 @@ Subject: [PATCH] Mitigate effects of WorldCreator#keepSpawnLoaded ret type
TODO: Remove in 1.21?
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-index cacd9b59741c31e70e898e7af91a1a6ed3f87f07..2ee82c316c3a6a79e1d722dfd00c22baa83c0299 100644
+index b7d09079411f70353f44df3c623a0076367cf603..d2f4d7d129c692d92de74598dd94ea2d6a9f0d28 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
@@ -466,6 +466,12 @@ public class Commodore
@@ -21,5 +21,5 @@ index cacd9b59741c31e70e898e7af91a1a6ed3f87f07..2ee82c316c3a6a79e1d722dfd00c22ba
+ return;
+ }
// Paper end
- if ( modern )
- {
+
+ // Paper start - ItemFactory#getSpawnEgg (paper had original method that returned ItemStack, upstream added identical but returned Material)
diff --git a/patches/server/0877-Correctly-handle-interactions-with-items-on-cooldown.patch b/patches/server/0877-Correctly-handle-interactions-with-items-on-cooldown.patch
index ab58d7ba9d..1aa068e733 100644
--- a/patches/server/0877-Correctly-handle-interactions-with-items-on-cooldown.patch
+++ b/patches/server/0877-Correctly-handle-interactions-with-items-on-cooldown.patch
@@ -30,10 +30,10 @@ index 14bbc86bbaad49b2af16f3b171eb667c28eda702..34ecfb89372f459117db99d57a7edd6f
this.interactResult = event.useItemInHand() == Event.Result.DENY;
this.interactPosition = blockposition.immutable();
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index f40ff2f248e3cacc924d90e9f90692b5bde7ea53..295014956cd50054d1c039e0de4dfe54c43a5835 100644
+index 7ec74be4ac660c85a3c9a1d60de45dfa374c9c1f..e2a346d2cd813dd64ab61403e531f9ebf221d4b4 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -517,7 +517,13 @@ public class CraftEventFactory {
+@@ -542,7 +542,13 @@ public class CraftEventFactory {
return CraftEventFactory.callPlayerInteractEvent(who, action, position, direction, itemstack, false, hand, null);
}
@@ -47,7 +47,7 @@ index f40ff2f248e3cacc924d90e9f90692b5bde7ea53..295014956cd50054d1c039e0de4dfe54
Player player = (who == null) ? null : (Player) who.getBukkitEntity();
CraftItemStack itemInHand = CraftItemStack.asCraftMirror(itemstack);
-@@ -552,6 +558,11 @@ public class CraftEventFactory {
+@@ -577,6 +583,11 @@ public class CraftEventFactory {
if (cancelledBlock) {
event.setUseInteractedBlock(Event.Result.DENY);
}
diff --git a/patches/server/0879-Elder-Guardian-appearance-API.patch b/patches/server/0879-Elder-Guardian-appearance-API.patch
index 82b78ed56e..8d5a7f4e0a 100644
--- a/patches/server/0879-Elder-Guardian-appearance-API.patch
+++ b/patches/server/0879-Elder-Guardian-appearance-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Elder Guardian appearance API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index d7327b7e57c5075eb687331c7244d0aae1ac7c98..0c5ba227bd1bd6eec15e8b3f0acfb082eacd2e02 100644
+index 689a4b5768f57b3705d72a345a64b9c0094197b6..fc9f386c07a0e99b6424420a13aba712070eeca6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -3112,6 +3112,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -3144,6 +3144,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// Paper end
diff --git a/patches/server/0894-ensure-reset-EnderDragon-boss-event-name.patch b/patches/server/0894-ensure-reset-EnderDragon-boss-event-name.patch
index 0f1fd322ef..1f9fc08b58 100644
--- a/patches/server/0894-ensure-reset-EnderDragon-boss-event-name.patch
+++ b/patches/server/0894-ensure-reset-EnderDragon-boss-event-name.patch
@@ -6,20 +6,27 @@ Subject: [PATCH] ensure reset EnderDragon boss event name
Fix MC-257487
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-index 17b5386d147dc007c487da3561ea5a5d3cd6db22..e2cd77d9de9709aa50f4b6febabe21bfcf94dc5d 100644
+index f67fcaff1994e5eb1195d1ec6d5a27d01c12d7a7..02d5a5b799bfe90993bc6868369d31f43d5b7fd6 100644
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-@@ -69,7 +69,8 @@ public class EndDragonFight {
+@@ -73,6 +73,7 @@ public class EndDragonFight {
private static final int GATEWAY_DISTANCE = 96;
public static final int DRAGON_SPAWN_Y = 128;
private final Predicate<Entity> validPlayer;
-- public final ServerBossEvent dragonEvent = (ServerBossEvent)(new ServerBossEvent(Component.translatable("entity.minecraft.ender_dragon"), BossEvent.BossBarColor.PINK, BossEvent.BossBarOverlay.PROGRESS)).setPlayBossMusic(true).setCreateWorldFog(true);
+ private static final Component DEFAULT_BOSS_EVENT_NAME = Component.translatable("entity.minecraft.ender_dragon"); // Paper
-+ public final ServerBossEvent dragonEvent = (ServerBossEvent)(new ServerBossEvent(DEFAULT_BOSS_EVENT_NAME, BossEvent.BossBarColor.PINK, BossEvent.BossBarOverlay.PROGRESS)).setPlayBossMusic(true).setCreateWorldFog(true); // Paper
+ public final ServerBossEvent dragonEvent;
public final ServerLevel level;
private final BlockPos origin;
- private final ObjectArrayList<Integer> gateways = new ObjectArrayList<>();
-@@ -443,6 +444,10 @@ public class EndDragonFight {
+@@ -101,7 +102,7 @@ public class EndDragonFight {
+ }
+
+ public EndDragonFight(ServerLevel world, long gatewaysSeed, EndDragonFight.Data data, BlockPos origin) {
+- this.dragonEvent = (ServerBossEvent) (new ServerBossEvent(Component.translatable("entity.minecraft.ender_dragon"), BossEvent.BossBarColor.PINK, BossEvent.BossBarOverlay.PROGRESS)).setPlayBossMusic(true).setCreateWorldFog(true);
++ this.dragonEvent = (ServerBossEvent) (new ServerBossEvent(DEFAULT_BOSS_EVENT_NAME, BossEvent.BossBarColor.PINK, BossEvent.BossBarOverlay.PROGRESS)).setPlayBossMusic(true).setCreateWorldFog(true); // Paper
+ this.gateways = new ObjectArrayList();
+ this.ticksSinceLastPlayerScan = 21;
+ this.skipArenaLoadedCheck = false;
+@@ -498,6 +499,10 @@ public class EndDragonFight {
this.ticksSinceDragonSeen = 0;
if (dragon.hasCustomName()) {
this.dragonEvent.setName(dragon.getDisplayName());
diff --git a/patches/server/0896-Add-Player-Warden-Warning-API.patch b/patches/server/0896-Add-Player-Warden-Warning-API.patch
index 8fa41762ef..1293f8183e 100644
--- a/patches/server/0896-Add-Player-Warden-Warning-API.patch
+++ b/patches/server/0896-Add-Player-Warden-Warning-API.patch
@@ -10,10 +10,10 @@ public net.minecraft.world.entity.monster.warden.WardenSpawnTracker cooldownTick
public net.minecraft.world.entity.monster.warden.WardenSpawnTracker increaseWarningLevel()V
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 0c5ba227bd1bd6eec15e8b3f0acfb082eacd2e02..d1db06cab4c74610f5e3815ae615e9423b92c124 100644
+index fc9f386c07a0e99b6424420a13aba712070eeca6..84e8a147db89bf2f962aeb9b9cddf3abbf67a2b4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -3117,6 +3117,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -3149,6 +3149,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void showElderGuardian(boolean silent) {
if (getHandle().connection != null) getHandle().connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.GUARDIAN_ELDER_EFFECT, silent ? 0F : 1F));
}
diff --git a/patches/server/0908-Properly-resend-entities.patch b/patches/server/0908-Properly-resend-entities.patch
index db1b7f6ee1..1f77d5ced5 100644
--- a/patches/server/0908-Properly-resend-entities.patch
+++ b/patches/server/0908-Properly-resend-entities.patch
@@ -82,10 +82,10 @@ index d088479d160dbd2fc90b48a30553be141db8eef2..15add3f4dfd718ec09bb1db4f2222346
public static class DataItem<T> {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 172892b1e40916c26fdaf203543f6d456f69f4c4..62099692e5c19b2061e0b96b7e562452698d5710 100644
+index 11e37de9481d82bcc9de4aae82a04acd6659f869..afdef7501e6071932d569657d60a39305f5ca4be 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2806,7 +2806,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2805,7 +2805,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Entity in bucket - SPIGOT-4048 and SPIGOT-6859a
if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
diff --git a/patches/server/0910-fix-Instruments.patch b/patches/server/0910-fix-Instruments.patch
index 177350915b..05b603bf71 100644
--- a/patches/server/0910-fix-Instruments.patch
+++ b/patches/server/0910-fix-Instruments.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] fix Instruments
properly handle Player#playNote
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index d1db06cab4c74610f5e3815ae615e9423b92c124..1b776dc69369c1ce8042e379e8064c00f17f0c43 100644
+index 84e8a147db89bf2f962aeb9b9cddf3abbf67a2b4..3f1ac596a4f20245e6a128451e9811bfbcd111f8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -723,29 +723,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -725,29 +725,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (this.getHandle().connection == null) return;
diff --git a/patches/server/0915-Improve-logging-and-errors.patch b/patches/server/0915-Improve-logging-and-errors.patch
index e740800baa..e07c007658 100644
--- a/patches/server/0915-Improve-logging-and-errors.patch
+++ b/patches/server/0915-Improve-logging-and-errors.patch
@@ -22,10 +22,10 @@ index f6e423a76d4c9cf639f1d44af80d33cf3072f6b5..135fc81414446f24c3adad71f5199c78
Properties properties;
Properties properties1;
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 62099692e5c19b2061e0b96b7e562452698d5710..fc5369ba071434ab4fd6a5192a7cfa6709934a0f 100644
+index afdef7501e6071932d569657d60a39305f5ca4be..3d2ca3ae49a85a91773510ca93d60b9b098e39ba 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3595,7 +3595,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3621,7 +3621,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.resetPlayerChatState(remotechatsession_a.validate(this.player.getGameProfile(), signaturevalidator, Duration.ZERO));
} catch (ProfilePublicKey.ValidationException profilepublickey_b) {
diff --git a/patches/server/0918-Add-missing-SpigotConfig-logCommands-check.patch b/patches/server/0918-Add-missing-SpigotConfig-logCommands-check.patch
index 0a9fb0d1c1..1a4d7c4c10 100644
--- a/patches/server/0918-Add-missing-SpigotConfig-logCommands-check.patch
+++ b/patches/server/0918-Add-missing-SpigotConfig-logCommands-check.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add missing SpigotConfig logCommands check
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index a53d44f26c3cf51ae4a4219a0e9ecec50666e53d..8cfde7c8b2e45fd2856e7d7bdae75dd379f464f8 100644
+index 3d2ca3ae49a85a91773510ca93d60b9b098e39ba..4947265c3b7a9da8782be3ae8d35ef99c5836e81 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2257,7 +2257,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2259,7 +2259,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private void performChatCommand(ServerboundChatCommandPacket packet, LastSeenMessages lastSeenMessages) {
// CraftBukkit start
String command = "/" + packet.command();
diff --git a/patches/server/0920-Flying-Fall-Damage.patch b/patches/server/0920-Flying-Fall-Damage.patch
index 64788275cc..28abd420c8 100644
--- a/patches/server/0920-Flying-Fall-Damage.patch
+++ b/patches/server/0920-Flying-Fall-Damage.patch
@@ -26,10 +26,10 @@ index 53487f0a4fe672298c3b83d24a2a603641afcde8..58152160d609d0e9d105153aeb166a56
} else {
if (fallDistance >= 2.0F) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 1b776dc69369c1ce8042e379e8064c00f17f0c43..34512d3b4ba2d6e4f7a07536c65d40c2a7cf24aa 100644
+index 3f1ac596a4f20245e6a128451e9811bfbcd111f8..0464b29dbad466f0e80a8b42284731a6798eab02 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2334,6 +2334,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2366,6 +2366,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().onUpdateAbilities();
}
diff --git a/patches/server/0921-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch b/patches/server/0921-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
index 3297569e90..807bc860c2 100644
--- a/patches/server/0921-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
+++ b/patches/server/0921-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
@@ -130,10 +130,10 @@ index da4609caecc8183d02c301c7cedbca52ed39323f..716021520c228b5bbced525b751f5d41
// See BlockStateFactory#createBlockState(World, BlockPosition, IBlockData, TileEntity)
private static CraftBlockState getBlockState(World world, BlockPos blockPosition, net.minecraft.world.level.block.state.BlockState blockData, BlockEntity tileEntity) {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index f55705610aa9b12bca8a7ae280ea271aee38daa4..44212a65f0943e72b56e7654e2d181e6d825899d 100644
+index e2a346d2cd813dd64ab61403e531f9ebf221d4b4..ee382cae3feca1de40d95faf6af023c8a7df05b9 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -992,7 +992,7 @@ public class CraftEventFactory {
+@@ -1018,7 +1018,7 @@ public class CraftEventFactory {
CraftEventFactory.entityDamage = null;
EntityDamageEvent event;
if (damager == null) {
diff --git a/patches/server/0924-Use-single-player-info-update-packet-on-join.patch b/patches/server/0924-Use-single-player-info-update-packet-on-join.patch
index 54a1d392bf..139aa8bdd8 100644
--- a/patches/server/0924-Use-single-player-info-update-packet-on-join.patch
+++ b/patches/server/0924-Use-single-player-info-update-packet-on-join.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Use single player info update packet on join
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index f69e7b30517b6ea328f61426ce55b31ae2f1dfdb..4269fe1437f477411be563ff9b578453ecfd21fe 100644
+index 4947265c3b7a9da8782be3ae8d35ef99c5836e81..c072cccb0a80019ce2f6c9e73f965ca26f8bc42c 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3610,7 +3610,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3636,7 +3636,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.signedMessageDecoder = session.createMessageDecoder(this.player.getUUID());
this.chatMessageChain.append((executor) -> {
this.player.setChatSession(session);
diff --git a/patches/server/0926-Win-Screen-API.patch b/patches/server/0926-Win-Screen-API.patch
index 9c090fc443..ac16a7c152 100644
--- a/patches/server/0926-Win-Screen-API.patch
+++ b/patches/server/0926-Win-Screen-API.patch
@@ -7,10 +7,10 @@ Subject: [PATCH] Win Screen API
public net.minecraft.server.level.ServerPlayer seenCredits
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 34512d3b4ba2d6e4f7a07536c65d40c2a7cf24aa..0a20b01493ee742e1203b4cc69300ddc98a128ce 100644
+index 0464b29dbad466f0e80a8b42284731a6798eab02..9e9d810c934c0d33c2903077fb0870f2273ef85b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1212,6 +1212,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1214,6 +1214,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(packet);
}
diff --git a/patches/server/0932-Add-EntityFertilizeEggEvent.patch b/patches/server/0932-Add-EntityFertilizeEggEvent.patch
index 190472324b..d32f3e6081 100644
--- a/patches/server/0932-Add-EntityFertilizeEggEvent.patch
+++ b/patches/server/0932-Add-EntityFertilizeEggEvent.patch
@@ -69,10 +69,10 @@ index c0f19138c6a00ce6ae837c972ae4af522ddd2895..a6d98f64910c816a5c11867d12698f5c
world.addFreshEntity(entityitem);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 295014956cd50054d1c039e0de4dfe54c43a5835..b118d412e5b98973af63b89d8b4f6420b404e06f 100644
+index ee382cae3feca1de40d95faf6af023c8a7df05b9..3362ded586f723ef1f89ad6dfa872ae468f92933 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -2014,4 +2014,29 @@ public class CraftEventFactory {
+@@ -2047,4 +2047,29 @@ public class CraftEventFactory {
return event.callEvent();
}
// Paper end
diff --git a/patches/server/0937-Fix-text-display-error-on-spawn.patch b/patches/server/0937-Fix-text-display-error-on-spawn.patch
index cb6ccd7e5e..4849e726e6 100644
--- a/patches/server/0937-Fix-text-display-error-on-spawn.patch
+++ b/patches/server/0937-Fix-text-display-error-on-spawn.patch
@@ -5,15 +5,15 @@ Subject: [PATCH] Fix text display error on spawn
diff --git a/src/main/java/net/minecraft/world/entity/Display.java b/src/main/java/net/minecraft/world/entity/Display.java
-index a291b809e39483ab350a1c861d160cb514281695..b7e77397c3c20d8112e17c8aed24e2186c1a72bc 100644
+index f7eeccbcb4c119f46ebb82284a109f48008c68cd..2a5a4027e5d0d9d48a727834f3f5af65ea83aa23 100644
--- a/src/main/java/net/minecraft/world/entity/Display.java
+++ b/src/main/java/net/minecraft/world/entity/Display.java
-@@ -800,7 +800,7 @@ public abstract class Display extends Entity {
- byte b = loadFlag((byte)0, nbt, "shadow", (byte)1);
- b = loadFlag(b, nbt, "see_through", (byte)2);
- b = loadFlag(b, nbt, "default_background", (byte)4);
-- Optional<Display.TextDisplay.Align> optional = Display.TextDisplay.Align.CODEC.decode(NbtOps.INSTANCE, nbt.get("alignment")).resultOrPartial(Util.prefix("Display entity", Display.LOGGER::error)).map(Pair::getFirst);
-+ Optional<Display.TextDisplay.Align> optional = Display.TextDisplay.Align.CODEC.decode(NbtOps.INSTANCE, nbt.get("alignment")).result().map(Pair::getFirst); // Paper
+@@ -694,7 +694,7 @@ public abstract class Display extends Entity {
+ Logger logger = Display.LOGGER;
+
+ Objects.requireNonNull(logger);
+- Optional<Display.TextDisplay.Align> optional = dataresult.resultOrPartial(Util.prefix("Display entity", logger::error)).map(Pair::getFirst);
++ Optional<Display.TextDisplay.Align> optional = dataresult.result().map(Pair::getFirst); // Paper - hide error message
+
if (optional.isPresent()) {
- byte var10000;
- switch ((Display.TextDisplay.Align)optional.get()) {
+ byte b1;
diff --git a/patches/server/0942-Optimize-Hoppers.patch b/patches/server/0942-Optimize-Hoppers.patch
index ff204328c0..6265c6bf6a 100644
--- a/patches/server/0942-Optimize-Hoppers.patch
+++ b/patches/server/0942-Optimize-Hoppers.patch
@@ -25,10 +25,10 @@ index c5f3dc74888919e82e2ffbb8d648b7640aa6b690..80cf4852e4010eeeadaf920ab927a40d
this.profiler.push(() -> {
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 90e4f8d21822cb0dc8bda586803f8c086f0fbeee..22e148867a2832035546148fc5aa27b9d4de3c64 100644
+index cc58df88fc3788dcfb7e429ef899b3d558a931cc..b3c99bb1da54209a21b090d31713167fd9729654 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -719,10 +719,16 @@ public final class ItemStack {
+@@ -723,10 +723,16 @@ public final class ItemStack {
}
public ItemStack copy() {
diff --git a/patches/server/0943-Fix-beehives-generating-from-using-bonemeal.patch b/patches/server/0943-Fix-beehives-generating-from-using-bonemeal.patch
index 73fe5e036a..f6e73d0190 100644
--- a/patches/server/0943-Fix-beehives-generating-from-using-bonemeal.patch
+++ b/patches/server/0943-Fix-beehives-generating-from-using-bonemeal.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix beehives generating from using bonemeal
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 22e148867a2832035546148fc5aa27b9d4de3c64..6a25b768ea2e99acdda781cdc0ab7bf80b45912c 100644
+index b3c99bb1da54209a21b090d31713167fd9729654..c9363f01b3c2369d5c63e50977c28a3fa760bae1 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -392,6 +392,7 @@ public final class ItemStack {
+@@ -396,6 +396,7 @@ public final class ItemStack {
}
for (CraftBlockState blockstate : blocks) {
world.setBlock(blockstate.getPosition(),blockstate.getHandle(), blockstate.getFlag()); // SPIGOT-7248 - manual update to avoid physics where appropriate
diff --git a/patches/server/0945-Treat-sequence-violations-like-they-should-be.patch b/patches/server/0945-Treat-sequence-violations-like-they-should-be.patch
index ff6e249616..c73068144d 100644
--- a/patches/server/0945-Treat-sequence-violations-like-they-should-be.patch
+++ b/patches/server/0945-Treat-sequence-violations-like-they-should-be.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Treat sequence violations like they should be
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 65c768a911b2e634ae4c8ee4f210a031731e357d..d9161ccea1c0af96e2718defba68e098c22082a3 100644
+index c072cccb0a80019ce2f6c9e73f965ca26f8bc42c..54ea5cfdb6fba3c66349b80e21e66b44c4dbba53 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2127,6 +2127,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2129,6 +2129,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
public void ackBlockChangesUpTo(int sequence) {
if (sequence < 0) {
diff --git a/patches/server/0947-Prevent-causing-expired-keys-from-impacting-new-join.patch b/patches/server/0947-Prevent-causing-expired-keys-from-impacting-new-join.patch
index bff86d9c16..a5713a5087 100644
--- a/patches/server/0947-Prevent-causing-expired-keys-from-impacting-new-join.patch
+++ b/patches/server/0947-Prevent-causing-expired-keys-from-impacting-new-join.patch
@@ -24,10 +24,10 @@ index 23e0e6937e28f09271a4ec7c35e0076a576cf3d3..4aa8b483841028fbcc43f9ed47730881
UPDATE_GAME_MODE((serialized, buf) -> {
serialized.gameMode = GameType.byId(buf.readVarInt());
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 57ae23b3f3982f21908d7bbb3be9f7ff20b57e5c..819d043c6cbf304a9348e05bc868d1d821bcc568 100644
+index 54ea5cfdb6fba3c66349b80e21e66b44c4dbba53..7ee70536cfb621702388bd13dddf08f0224ba6bb 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -296,6 +296,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -298,6 +298,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private final AtomicReference<Instant> lastChatTimeStamp;
@Nullable
private RemoteChatSession chatSession;
@@ -35,7 +35,7 @@ index 57ae23b3f3982f21908d7bbb3be9f7ff20b57e5c..819d043c6cbf304a9348e05bc868d1d8
private SignedMessageChain.Decoder signedMessageDecoder;
private final LastSeenMessagesValidator lastSeenMessages;
private final MessageSignatureCache messageSignatureCache;
-@@ -436,6 +437,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -438,6 +439,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause
}
@@ -49,7 +49,7 @@ index 57ae23b3f3982f21908d7bbb3be9f7ff20b57e5c..819d043c6cbf304a9348e05bc868d1d8
}
public void resetPosition() {
-@@ -3608,6 +3616,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3634,6 +3642,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private void resetPlayerChatState(RemoteChatSession session) {
this.chatSession = session;
diff --git a/patches/server/0954-Fix-DamageCause-for-Falling-Blocks.patch b/patches/server/0954-Fix-DamageCause-for-Falling-Blocks.patch
index b351a0532e..8704b34118 100644
--- a/patches/server/0954-Fix-DamageCause-for-Falling-Blocks.patch
+++ b/patches/server/0954-Fix-DamageCause-for-Falling-Blocks.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix DamageCause for Falling Blocks
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index b118d412e5b98973af63b89d8b4f6420b404e06f..e78e41fe5e3721b0cc465009984d4816c9d809eb 100644
+index 3362ded586f723ef1f89ad6dfa872ae468f92933..32587ddf2440cbb16884ed8140f8827357a44cba 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1032,6 +1032,11 @@ public class CraftEventFactory {
+@@ -1058,6 +1058,11 @@ public class CraftEventFactory {
} else if (source.is(DamageTypes.SONIC_BOOM)) {
cause = DamageCause.SONIC_BOOM;
}
diff --git a/patches/server/0960-Expand-PlayerItemMendEvent.patch b/patches/server/0960-Expand-PlayerItemMendEvent.patch
index e085643456..caafa86ce8 100644
--- a/patches/server/0960-Expand-PlayerItemMendEvent.patch
+++ b/patches/server/0960-Expand-PlayerItemMendEvent.patch
@@ -33,10 +33,10 @@ index 8d8fe55a05eea237a8af99ed15ab16d6167daa77..eca634792d2a7cc649675e3394e84dba
return k > 0 ? this.repairPlayerItems(player, k) : 0;
} else {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 0a20b01493ee742e1203b4cc69300ddc98a128ce..5b201d2c21f04e0223970035e0631f8f92ea0d3a 100644
+index 9e9d810c934c0d33c2903077fb0870f2273ef85b..25a35d7273fdb1f472b4ea92cebf93ff8e39c79a 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1704,11 +1704,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1736,11 +1736,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
orb.setPosRaw(handle.getX(), handle.getY(), handle.getZ());
int i = Math.min(orb.xpToDurability(amount), itemstack.getDamageValue());
@@ -51,10 +51,10 @@ index 0a20b01493ee742e1203b4cc69300ddc98a128ce..5b201d2c21f04e0223970035e0631f8f
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index e78e41fe5e3721b0cc465009984d4816c9d809eb..85885b835cd661d6dcacf7f6501cc6b1ffb9f137 100644
+index 32587ddf2440cbb16884ed8140f8827357a44cba..36027749504b239285c57630c0500dfb5a6126ef 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -1268,10 +1268,10 @@ public class CraftEventFactory {
+@@ -1294,10 +1294,10 @@ public class CraftEventFactory {
return event;
}
diff --git a/patches/server/0963-Fix-block-place-logic.patch b/patches/server/0963-Fix-block-place-logic.patch
index fb08ea3804..2d077f1757 100644
--- a/patches/server/0963-Fix-block-place-logic.patch
+++ b/patches/server/0963-Fix-block-place-logic.patch
@@ -22,10 +22,10 @@ index b0204af850ee182773ad458208cccd946ad148d5..ebee8de2ed831755b6fd154f6cc77ac9
if ((entityhuman == null || !entityhuman.getAbilities().instabuild) && itemstack != ItemStack.EMPTY) { // CraftBukkit
itemstack.shrink(1);
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 6a25b768ea2e99acdda781cdc0ab7bf80b45912c..5f0e01060e1d8716e7514a25cbe68b732efaa8ef 100644
+index c9363f01b3c2369d5c63e50977c28a3fa760bae1..6f00794aec16db3e7a466f4b446d38bdb2623e8b 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -463,13 +463,7 @@ public final class ItemStack {
+@@ -467,13 +467,7 @@ public final class ItemStack {
if (tileentity instanceof JukeboxBlockEntity) {
JukeboxBlockEntity tileentityjukebox = (JukeboxBlockEntity) tileentity;
diff --git a/patches/server/0964-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch b/patches/server/0964-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch
index bb91243734..af0d52e28f 100644
--- a/patches/server/0964-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch
+++ b/patches/server/0964-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix spigot sound playing for BlockItem ItemStacks
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 5f0e01060e1d8716e7514a25cbe68b732efaa8ef..ae9b821d71d2868ba4eb3c73558fdcd6caf264e3 100644
+index 6f00794aec16db3e7a466f4b446d38bdb2623e8b..2223aba0841280c5205ab0963c406449f85fa433 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -514,7 +514,11 @@ public final class ItemStack {
+@@ -518,7 +518,11 @@ public final class ItemStack {
// SPIGOT-1288 - play sound stripped from ItemBlock
if (this.item instanceof BlockItem) {
diff --git a/patches/server/0967-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch b/patches/server/0967-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch
index e9017a42c1..608f9bea3f 100644
--- a/patches/server/0967-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch
+++ b/patches/server/0967-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Don't enforce icanhasbukkit default if alias block exists
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 7f955f8a42b6c917dbd6f3533927a7295c1c5e20..d5c7b4292b244e0e3c12491c3facc90066425f15 100644
+index cd4c2e4c0d9d9003273fe04bbe9a61b3024547dd..144e843191bc955d37ee1524746304fbe0d79149 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -354,7 +354,11 @@ public final class CraftServer implements Server {
+@@ -355,7 +355,11 @@ public final class CraftServer implements Server {
}
this.commandsConfiguration = YamlConfiguration.loadConfiguration(this.getCommandsConfigFile());
this.commandsConfiguration.options().copyDefaults(true);
diff --git a/patches/server/0972-Folia-scheduler-and-owned-region-API.patch b/patches/server/0972-Folia-scheduler-and-owned-region-API.patch
index 230a05b965..1c46bd1009 100644
--- a/patches/server/0972-Folia-scheduler-and-owned-region-API.patch
+++ b/patches/server/0972-Folia-scheduler-and-owned-region-API.patch
@@ -1158,7 +1158,7 @@ index 8547e7ff2f1f5b7701fb0f3c3010c14601a5f83e..fff7ad7a45f310783ac96b44575ad3db
this.players.remove(entityplayer);
this.playersByName.remove(entityplayer.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 8218169014a7af183e6b0058fe08af18ca047448..131d88eed13741a5438910b9acc7ffa53d56e86a 100644
+index 1e5d17f955f4c46973928310db987119c15c707b..99e28690aa8705da91e6def598e11a1c98612fa9 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -246,11 +246,23 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1224,10 +1224,10 @@ index 8218169014a7af183e6b0058fe08af18ca047448..131d88eed13741a5438910b9acc7ffa5
public void setLevelCallback(EntityInLevelCallback changeListener) {
this.levelCallback = changeListener;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index d5c7b4292b244e0e3c12491c3facc90066425f15..a05c1bc8874ef5e380544a6a344c848e37da49c4 100644
+index 144e843191bc955d37ee1524746304fbe0d79149..d62cdda5ef3691a54ce34729920bad8e16c7a883 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -305,6 +305,76 @@ public final class CraftServer implements Server {
+@@ -306,6 +306,76 @@ public final class CraftServer implements Server {
private final io.papermc.paper.logging.SysoutCatcher sysoutCatcher = new io.papermc.paper.logging.SysoutCatcher(); // Paper
private final CraftPotionBrewer potionBrewer = new CraftPotionBrewer(); // Paper
diff --git a/patches/server/0974-Properly-Cancel-Usable-Items.patch b/patches/server/0974-Properly-Cancel-Usable-Items.patch
index a51b429994..3ec9d65f4f 100644
--- a/patches/server/0974-Properly-Cancel-Usable-Items.patch
+++ b/patches/server/0974-Properly-Cancel-Usable-Items.patch
@@ -10,7 +10,7 @@ The underlying issue of this is that the client modifies their synced data value
them in order for the client to reset their using item state.
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-index 1635fee928d64f4d2c336dca6675ed4641918830..afcee1e5bf1f735f3c893ec0b835dc5cd9759b7b 100644
+index 34ecfb89372f459117db99d57a7edd6f681bbe8a..baf3e79489e310f443788bc917c553ae7ea86c89 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -562,6 +562,7 @@ public class ServerPlayerGameMode {
@@ -34,10 +34,10 @@ index 1635fee928d64f4d2c336dca6675ed4641918830..afcee1e5bf1f735f3c893ec0b835dc5c
return enuminteractionresult;
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 1d0e439c00ac4ab72dc656038c9271b1240acc88..b777547cb9f8edf4e7b3c2cfb894f8cd1b1a35a5 100644
+index 7ee70536cfb621702388bd13dddf08f0224ba6bb..75bd92e1d40588d3bc40fa7837943eec9f2062a6 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2029,6 +2029,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2031,6 +2031,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
if (cancelled) {
diff --git a/patches/server/0975-Add-event-for-player-editing-sign.patch b/patches/server/0975-Add-event-for-player-editing-sign.patch
index 1225fb56a9..9e06a54123 100644
--- a/patches/server/0975-Add-event-for-player-editing-sign.patch
+++ b/patches/server/0975-Add-event-for-player-editing-sign.patch
@@ -5,66 +5,88 @@ Subject: [PATCH] Add event for player editing sign
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index ae9b821d71d2868ba4eb3c73558fdcd6caf264e3..86304357ca687036cf2448f8cd7c639bdc309e25 100644
+index 2223aba0841280c5205ab0963c406449f85fa433..879cc823d56625867eb73bb621db6a13f40ad81c 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
-@@ -493,7 +493,7 @@ public final class ItemStack {
+@@ -497,7 +497,7 @@ public final class ItemStack {
try {
if (world.getBlockEntity(SignItem.openSign) instanceof SignBlockEntity tileentitysign) {
if (world.getBlockState(SignItem.openSign).getBlock() instanceof SignBlock blocksign) {
-- blocksign.openTextEdit(entityhuman, tileentitysign, true);
+- blocksign.openTextEdit(entityhuman, tileentitysign, true, org.bukkit.event.player.PlayerSignOpenEvent.Cause.PLACE); // Craftbukkit
+ blocksign.openTextEdit(entityhuman, tileentitysign, true, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause.PLACE); // Paper
}
}
} finally {
diff --git a/src/main/java/net/minecraft/world/level/block/SignBlock.java b/src/main/java/net/minecraft/world/level/block/SignBlock.java
-index 5ab7df0042391cb621ed78a187dc20333e344186..1bc8fbb66c43e9844c66bce26cd349d7fcbc4cfe 100644
+index 1733744691e843891fc22991f8da57877a1b14f3..b01cdfe3c62c609e953aa5007e6557cfec0d5a5f 100644
--- a/src/main/java/net/minecraft/world/level/block/SignBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SignBlock.java
-@@ -97,7 +97,7 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
- } else if (bl3) {
+@@ -115,7 +115,7 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
+ } else if (flag2) {
return InteractionResult.SUCCESS;
- } else if (!this.otherPlayerIsEditingSign(player, signBlockEntity) && player.mayBuild() && this.hasEditableText(player, signBlockEntity, bl2)) {
-- this.openTextEdit(player, signBlockEntity, bl2);
-+ this.openTextEdit(player, signBlockEntity, bl2, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause.INTERACT); // Paper
+ } else if (!this.otherPlayerIsEditingSign(player, tileentitysign) && player.mayBuild() && this.hasEditableText(player, tileentitysign, flag1)) {
+- this.openTextEdit(player, tileentitysign, flag1, org.bukkit.event.player.PlayerSignOpenEvent.Cause.INTERACT); // CraftBukkit
++ this.openTextEdit(player, tileentitysign, flag1, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause.INTERACT); // Paper
return InteractionResult.SUCCESS;
} else {
return InteractionResult.PASS;
-@@ -143,7 +143,22 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
- return woodType;
+@@ -163,16 +163,33 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
+ return blockpropertywood;
}
+ @io.papermc.paper.annotation.DoNotUse @Deprecated // Paper
public void openTextEdit(Player player, SignBlockEntity blockEntity, boolean front) {
-+ // Paper start
+- // Craftbukkit start
+- this.openTextEdit(player, blockEntity, front, org.bukkit.event.player.PlayerSignOpenEvent.Cause.UNKNOWN);
++ // Paper start - PlayerOpenSignEvent
+ this.openTextEdit(player, blockEntity, front, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause.UNKNOWN);
-+ }
-+ public void openTextEdit(Player player, SignBlockEntity blockEntity, boolean front, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause cause) {
-+ org.bukkit.entity.Player bukkitPlayer = (org.bukkit.entity.Player) player.getBukkitEntity();
-+ org.bukkit.block.Block bukkitBlock = org.bukkit.craftbukkit.block.CraftBlock.at(blockEntity.getLevel(), blockEntity.getBlockPos());
+ }
+-
+- public void openTextEdit(Player entityhuman, SignBlockEntity tileentitysign, boolean flag, org.bukkit.event.player.PlayerSignOpenEvent.Cause cause) {
+- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerSignOpenEvent(entityhuman, tileentitysign, flag, cause)) {
++ public void openTextEdit(Player entityhuman, SignBlockEntity tileentitysign, boolean flag, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause cause) {
++ org.bukkit.entity.Player bukkitPlayer = (org.bukkit.entity.Player) entityhuman.getBukkitEntity();
++ org.bukkit.block.Block bukkitBlock = org.bukkit.craftbukkit.block.CraftBlock.at(tileentitysign.getLevel(), tileentitysign.getBlockPos());
+ org.bukkit.craftbukkit.block.CraftSign<?> bukkitSign = (org.bukkit.craftbukkit.block.CraftSign<?>) org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(bukkitBlock);
+ io.papermc.paper.event.player.PlayerOpenSignEvent event = new io.papermc.paper.event.player.PlayerOpenSignEvent(
+ bukkitPlayer,
+ bukkitSign,
-+ front ? org.bukkit.block.sign.Side.FRONT : org.bukkit.block.sign.Side.BACK,
++ flag ? org.bukkit.block.sign.Side.FRONT : org.bukkit.block.sign.Side.BACK,
+ cause);
+ if (!event.callEvent()) return;
-+ // Paper end
- blockEntity.setAllowedPlayerEditor(player.getUUID());
- player.openTextEdit(blockEntity, front);
++ if (org.bukkit.event.player.PlayerSignOpenEvent.getHandlerList().getRegisteredListeners().length > 0) {
++ final org.bukkit.event.player.PlayerSignOpenEvent.Cause legacyCause = switch (cause) {
++ case PLACE -> org.bukkit.event.player.PlayerSignOpenEvent.Cause.PLACE;
++ case PLUGIN -> org.bukkit.event.player.PlayerSignOpenEvent.Cause.PLUGIN;
++ case INTERACT -> org.bukkit.event.player.PlayerSignOpenEvent.Cause.INTERACT;
++ case UNKNOWN -> org.bukkit.event.player.PlayerSignOpenEvent.Cause.UNKNOWN;
++ };
++ // Paper end - PlayerOpenSignEvent
++ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerSignOpenEvent(entityhuman, tileentitysign, flag, legacyCause)) { // Paper
+ return;
+ }
+- // Craftbukkit end
++ } // Paper
+ tileentitysign.setAllowedPlayerEditor(entityhuman.getUUID());
+ entityhuman.openTextEdit(tileentitysign, flag);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-index f48b5204e59ab0c840fc08ecb9abf5facbae9be1..ed29fd2271585a100c1933b787005e9be54bd715 100644
+index f1ba0fd5d17fb1a26cf09848d4125ecfab39eddb..02c4c9142a197aabfe7b8aaca8a88bba10b83b6c 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-@@ -128,6 +128,10 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
+@@ -130,9 +130,15 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
SignBlockEntity handle = ((CraftSign<?>) sign).getTileEntity();
+ // Paper start
+ io.papermc.paper.event.player.PlayerOpenSignEvent event = new io.papermc.paper.event.player.PlayerOpenSignEvent((Player) player, sign, side, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause.PLUGIN);
+ if (!event.callEvent()) return;
-+ // Paper end
++ if (PlayerSignOpenEvent.getHandlerList().getRegisteredListeners().length > 0) {
++ // Paper end
+ if (!CraftEventFactory.callPlayerSignOpenEvent(player, sign, side, PlayerSignOpenEvent.Cause.PLUGIN)) {
+ return;
+ }
++ } // Paper
+
handle.setAllowedPlayerEditor(player.getUniqueId()); // Paper
- ((org.bukkit.craftbukkit.entity.CraftHumanEntity) player).getHandle().openTextEdit(handle, Side.FRONT == side); // Paper - change move open sign to HumanEntity
- }
+ ((CraftPlayer) player).getHandle().openTextEdit(handle, Side.FRONT == side);
diff --git a/patches/server/0979-Call-missing-BlockDispenseEvent.patch b/patches/server/0979-Call-missing-BlockDispenseEvent.patch
index 3ee461383b..b86bb0ea64 100644
--- a/patches/server/0979-Call-missing-BlockDispenseEvent.patch
+++ b/patches/server/0979-Call-missing-BlockDispenseEvent.patch
@@ -50,10 +50,10 @@ index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..70aade6a8d36f8376cc567800258ea6f
for (int k = 0; k < 5; ++k) {
worldserver.sendParticles(ParticleTypes.SPLASH, (double) blockposition.getX() + worldserver.random.nextDouble(), (double) (blockposition.getY() + 1), (double) blockposition.getZ() + worldserver.random.nextDouble(), 1, 0.0D, 0.0D, 0.0D, 1.0D);
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 85885b835cd661d6dcacf7f6501cc6b1ffb9f137..a6edbb5cde568d8138af568122d5d11243f3fb07 100644
+index 36027749504b239285c57630c0500dfb5a6126ef..c514795dee0c54ae4fc1592dab5b69c39631c9ad 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -2020,6 +2020,32 @@ public class CraftEventFactory {
+@@ -2053,6 +2053,32 @@ public class CraftEventFactory {
}
// Paper end
diff --git a/patches/server/0982-Add-Sign-getInteractableSideFor.patch b/patches/server/0982-Add-Sign-getInteractableSideFor.patch
index 2ed442f103..479f8e4001 100644
--- a/patches/server/0982-Add-Sign-getInteractableSideFor.patch
+++ b/patches/server/0982-Add-Sign-getInteractableSideFor.patch
@@ -30,10 +30,10 @@ index e34f7426df5d6c94fcc4101b28702e6c1d9fccff..9eea2982e92e9bc7a53962dc6b21de60
float f1 = (float) (Mth.atan2(d1, d0) * 57.2957763671875D) - 90.0F;
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-index ed29fd2271585a100c1933b787005e9be54bd715..3b9078bad9c0bccc37f44224aa6653d827057a3a 100644
+index fa562d3a9705981524f82b575a3e0760aa40a787..2dcc9b2704a41f7acbdd182512ca05d103ad00cd 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-@@ -150,6 +150,14 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
+@@ -158,6 +158,14 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
}
// Paper end
diff --git a/patches/server/0984-fix-item-meta-for-tadpole-buckets.patch b/patches/server/0984-fix-item-meta-for-tadpole-buckets.patch
index 666154a130..0f7042779b 100644
--- a/patches/server/0984-fix-item-meta-for-tadpole-buckets.patch
+++ b/patches/server/0984-fix-item-meta-for-tadpole-buckets.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] fix item meta for tadpole buckets
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-index 849e93a8a0645de4c3e6ab8047815d78a722d4f6..b4850f4da500771e890247d9ed7f7d027460a718 100644
+index 4c0b250bb9e3cf52173b563b36fd27d9e893e154..3f4e55bb9a4134e54adddca3c662285164068d95 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -344,6 +344,7 @@ public final class CraftItemFactory implements ItemFactory {
+@@ -348,6 +348,7 @@ public final class CraftItemFactory implements ItemFactory {
case COD_BUCKET:
case PUFFERFISH_BUCKET:
case SALMON_BUCKET:
diff --git a/patches/server/0986-Fix-BanList-API.patch b/patches/server/0986-Fix-BanList-API.patch
index ba1a3a1d00..748d4de7b9 100644
--- a/patches/server/0986-Fix-BanList-API.patch
+++ b/patches/server/0986-Fix-BanList-API.patch
@@ -5,18 +5,30 @@ Subject: [PATCH] Fix BanList API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-index 2856b861a1207ef94ae5671c5898f08fedd14475..0857c22236080df80d06e2c50eb43c9e05cc8d24 100644
+index aa070258c1f2546ac68869cb62c8752c80c758ab..c6129dc565b8f874b73e2fefcabd4be1c221fd73 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
-@@ -112,7 +112,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
+@@ -114,17 +114,17 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
}
@Override
- public BanEntry<PlayerProfile> ban(String reason, Date expires, String source) {
-+ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Date expires, String source) { // Paper
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Date expires, String source) { // Paper - fix ban list API
return ((ProfileBanList) this.server.getBanList(BanList.Type.PROFILE)).addBan(this.getPlayerProfile(), reason, expires, source);
}
+ @Override
+- public BanEntry<PlayerProfile> ban(String reason, Instant expires, String source) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Instant expires, String source) { // Paper - fix ban list API
+ return ((ProfileBanList) this.server.getBanList(BanList.Type.PROFILE)).addBan(this.getPlayerProfile(), reason, expires, source);
+ }
+
+ @Override
+- public BanEntry<PlayerProfile> ban(String reason, Duration duration, String source) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Duration duration, String source) { // Paper - fix ban list API
+ return ((ProfileBanList) this.server.getBanList(BanList.Type.PROFILE)).addBan(this.getPlayerProfile(), reason, duration, source);
+ }
+
diff --git a/src/main/java/org/bukkit/craftbukkit/ban/CraftProfileBanEntry.java b/src/main/java/org/bukkit/craftbukkit/ban/CraftProfileBanEntry.java
index 13e5e44b069121e51b9486c445902937f1d6c6d8..4a37c8172b42b10472bb90c9310c7ae3eeaa3481 100644
--- a/src/main/java/org/bukkit/craftbukkit/ban/CraftProfileBanEntry.java
@@ -42,10 +54,10 @@ index 13e5e44b069121e51b9486c445902937f1d6c6d8..4a37c8172b42b10472bb90c9310c7ae3
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/ban/CraftProfileBanList.java b/src/main/java/org/bukkit/craftbukkit/ban/CraftProfileBanList.java
-index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b9e5661de 100644
+index 172202accf4448a933fcf1ff820316c7910dd7f7..50ee7656580d386db473c054f5c5ec57bb2b1424 100644
--- a/src/main/java/org/bukkit/craftbukkit/ban/CraftProfileBanList.java
+++ b/src/main/java/org/bukkit/craftbukkit/ban/CraftProfileBanList.java
-@@ -22,32 +22,58 @@ public class CraftProfileBanList implements ProfileBanList {
+@@ -24,42 +24,80 @@ public class CraftProfileBanList implements ProfileBanList {
}
@Override
@@ -64,7 +76,7 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
- return this.getBanEntry(((CraftPlayerProfile) target).buildGameProfile());
+ return this.getBanEntry(((com.destroystokyo.paper.profile.SharedPlayerProfile) target).buildGameProfile()); // Paper
+ }
-+ // Paper start
++ // Paper start - fix ban list API
+ @Override
+ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> getBanEntry(final com.destroystokyo.paper.profile.PlayerProfile target) {
+ Preconditions.checkArgument(target != null, "target cannot be null");
@@ -78,10 +90,9 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
+ Preconditions.checkArgument(target.getId() != null, "The PlayerProfile UUID cannot be null");
+
+ return this.addBan(((com.destroystokyo.paper.profile.SharedPlayerProfile) target).buildGameProfile(), reason, expires, source);
- }
-
- @Override
-- public BanEntry<PlayerProfile> addBan(String target, String reason, Date expires, String source) {
++ }
++
++ @Override
+ public boolean isBanned(final com.destroystokyo.paper.profile.PlayerProfile target) {
+ return this.isBanned((com.destroystokyo.paper.profile.SharedPlayerProfile) target);
+ }
@@ -89,11 +100,24 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
+ @Override
+ public void pardon(final com.destroystokyo.paper.profile.PlayerProfile target) {
+ this.pardon((com.destroystokyo.paper.profile.SharedPlayerProfile) target);
+ }
+
+ @Override
+- public BanEntry<PlayerProfile> addBan(String target, String reason, Date expires, String source) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(final com.destroystokyo.paper.profile.PlayerProfile target, final String reason, final Instant expires, final String source) {
++ Date date = expires != null ? Date.from(expires) : null;
++ return this.addBan(target, reason, date, source);
+ }
-+ // Paper end
+
+ @Override
-+ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(String target, String reason, Date expires, String source) { // Paper
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(final com.destroystokyo.paper.profile.PlayerProfile target, final String reason, final Duration duration, final String source) {
++ Instant instant = duration != null ? Instant.now().plus(duration) : null;
++ return this.addBan(target, reason, instant, source);
++ }
++ // Paper end - fix ban list API
++
++ @Override
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(String target, String reason, Date expires, String source) { // Paper - fix ban list API
Preconditions.checkArgument(target != null, "Ban target cannot be null");
return this.addBan(CraftProfileBanList.getProfileByName(target), reason, expires, source);
@@ -101,7 +125,7 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
@Override
- public BanEntry<PlayerProfile> addBan(PlayerProfile target, String reason, Date expires, String source) {
-+ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(PlayerProfile target, String reason, Date expires, String source) { // Paper
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(PlayerProfile target, String reason, Date expires, String source) { // Paper - fix ban list API
Preconditions.checkArgument(target != null, "PlayerProfile cannot be null");
Preconditions.checkArgument(target.getUniqueId() != null, "The PlayerProfile UUID cannot be null");
@@ -110,7 +134,19 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
}
@Override
-@@ -62,8 +88,8 @@ public class CraftProfileBanList implements ProfileBanList {
+- public BanEntry<PlayerProfile> addBan(PlayerProfile target, String reason, Instant expires, String source) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(PlayerProfile target, String reason, Instant expires, String source) { // Paper - fix ban list API
+ Date date = expires != null ? Date.from(expires) : null;
+ return this.addBan(target, reason, date, source);
+ }
+
+ @Override
+- public BanEntry<PlayerProfile> addBan(PlayerProfile target, String reason, Duration duration, String source) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> addBan(PlayerProfile target, String reason, Duration duration, String source) { // Paper - fix ban list API
+ Instant instant = duration != null ? Instant.now().plus(duration) : null;
+ return this.addBan(target, reason, instant, source);
+ }
+@@ -76,8 +114,8 @@ public class CraftProfileBanList implements ProfileBanList {
}
@Override
@@ -121,7 +157,7 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
for (UserBanListEntry entry : this.list.getEntries()) {
GameProfile profile = entry.getUser();
builder.add(new CraftProfileBanEntry(profile, entry, this.list));
-@@ -74,9 +100,14 @@ public class CraftProfileBanList implements ProfileBanList {
+@@ -88,9 +126,14 @@ public class CraftProfileBanList implements ProfileBanList {
@Override
public boolean isBanned(PlayerProfile target) {
@@ -137,7 +173,7 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
}
@Override
-@@ -88,9 +119,14 @@ public class CraftProfileBanList implements ProfileBanList {
+@@ -102,9 +145,14 @@ public class CraftProfileBanList implements ProfileBanList {
@Override
public void pardon(PlayerProfile target) {
@@ -153,7 +189,7 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
}
@Override
-@@ -100,7 +136,7 @@ public class CraftProfileBanList implements ProfileBanList {
+@@ -114,7 +162,7 @@ public class CraftProfileBanList implements ProfileBanList {
this.pardon(CraftProfileBanList.getProfile(target));
}
@@ -162,7 +198,7 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
if (profile == null) {
return null;
}
-@@ -113,7 +149,7 @@ public class CraftProfileBanList implements ProfileBanList {
+@@ -127,7 +175,7 @@ public class CraftProfileBanList implements ProfileBanList {
return new CraftProfileBanEntry(profile, entry, this.list);
}
@@ -172,26 +208,53 @@ index b143b6a43da875caf938865a062e2f30019f7788..6b479a11cb15b7d1d468b2ea1eff547b
return null;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 5b201d2c21f04e0223970035e0631f8f92ea0d3a..dbdeb913e228651cadf5dbd7ec98afc738c80522 100644
+index 25a35d7273fdb1f472b4ea92cebf93ff8e39c79a..5bbded65095dccfadaf7576fc41b5f62974878b4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1632,13 +1632,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1634,23 +1634,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
@Override
- public BanEntry<PlayerProfile> ban(String reason, Date expires, String source) {
-+ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Date expires, String source) { // Paper
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Date expires, String source) { // Paper - fix ban list API
return this.ban(reason, expires, source, true);
}
@Override
+- public BanEntry<PlayerProfile> ban(String reason, Instant expires, String source) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Instant expires, String source) { // Paper - fix ban list API
+ return this.ban(reason, expires != null ? Date.from(expires) : null, source);
+ }
+
+ @Override
+- public BanEntry<PlayerProfile> ban(String reason, Duration duration, String source) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Duration duration, String source) { // Paper - fix ban list API
+ return this.ban(reason, duration != null ? Instant.now().plus(duration) : null, source);
+ }
+
+ @Override
- public BanEntry<PlayerProfile> ban(String reason, Date expires, String source, boolean kickPlayer) {
- BanEntry<PlayerProfile> banEntry = ((ProfileBanList) server.getBanList(BanList.Type.PROFILE)).addBan(this.getPlayerProfile(), reason, expires, source);
-+ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Date expires, String source, boolean kickPlayer) { // Paper
-+ BanEntry<com.destroystokyo.paper.profile.PlayerProfile> banEntry = ((ProfileBanList) server.getBanList(BanList.Type.PROFILE)).addBan(this.getPlayerProfile(), reason, expires, source); // Paper
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Date expires, String source, boolean kickPlayer) { // Paper - fix ban list API
++ BanEntry<com.destroystokyo.paper.profile.PlayerProfile> banEntry = ((ProfileBanList) server.getBanList(BanList.Type.PROFILE)).addBan(this.getPlayerProfile(), reason, expires, source); // Paper - fix ban list API
if (kickPlayer) {
this.kickPlayer(reason);
}
+@@ -1658,12 +1658,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+ }
+
+ @Override
+- public BanEntry<PlayerProfile> ban(String reason, Instant instant, String source, boolean kickPlayer) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Instant instant, String source, boolean kickPlayer) { // Paper - fix ban list API
+ return this.ban(reason, instant != null ? Date.from(instant) : null, source, kickPlayer);
+ }
+
+ @Override
+- public BanEntry<PlayerProfile> ban(String reason, Duration duration, String source, boolean kickPlayer) {
++ public BanEntry<com.destroystokyo.paper.profile.PlayerProfile> ban(String reason, Duration duration, String source, boolean kickPlayer) { // Paper - fix ban list API
+ return this.ban(reason, duration != null ? Instant.now().plus(duration) : null, source, kickPlayer);
+ }
+
diff --git a/src/main/java/org/bukkit/craftbukkit/profile/CraftPlayerProfile.java b/src/main/java/org/bukkit/craftbukkit/profile/CraftPlayerProfile.java
index d1aab4742b605e8807b0e4ca148abe0ed95039f4..58ea78d3917d2f264515c41f4df2f9ff6f8e4667 100644
--- a/src/main/java/org/bukkit/craftbukkit/profile/CraftPlayerProfile.java
diff --git a/patches/server/0989-ExperienceOrb-should-call-EntitySpawnEvent.patch b/patches/server/0989-ExperienceOrb-should-call-EntitySpawnEvent.patch
index 0052598a45..313bf5ec8c 100644
--- a/patches/server/0989-ExperienceOrb-should-call-EntitySpawnEvent.patch
+++ b/patches/server/0989-ExperienceOrb-should-call-EntitySpawnEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] ExperienceOrb should call EntitySpawnEvent
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 9b9a9606e5be94b394606f2306e7b7a5ed781e1d..acb38f927c2418c91adf91c7b790ea6869835537 100644
+index c514795dee0c54ae4fc1592dab5b69c39631c9ad..26e1a9002d675245d4cf91e6682605314b078fb2 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -693,7 +693,10 @@ public class CraftEventFactory {
+@@ -718,7 +718,10 @@ public class CraftEventFactory {
} else if (entity instanceof net.minecraft.world.entity.ExperienceOrb) {
net.minecraft.world.entity.ExperienceOrb xp = (net.minecraft.world.entity.ExperienceOrb) entity;
double radius = world.spigotConfig.expMerge;
diff --git a/patches/server/0990-Don-t-tick-signs.patch b/patches/server/0990-Don-t-tick-signs.patch
index 869532e222..27884b4048 100644
--- a/patches/server/0990-Don-t-tick-signs.patch
+++ b/patches/server/0990-Don-t-tick-signs.patch
@@ -21,10 +21,10 @@ index 6c9d163b9f857806461dc72e54713f1a4f3a5c31..0bd8ea3143b2e9755d492af4596622d1
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/SignBlock.java b/src/main/java/net/minecraft/world/level/block/SignBlock.java
-index 1bc8fbb66c43e9844c66bce26cd349d7fcbc4cfe..e20c24c86db023ad269f15fe04963608e3fb3fe5 100644
+index b01cdfe3c62c609e953aa5007e6557cfec0d5a5f..1122090792e9ee98bf8498e8907c5abbbcbcd6d6 100644
--- a/src/main/java/net/minecraft/world/level/block/SignBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SignBlock.java
-@@ -171,6 +171,6 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
+@@ -203,6 +203,6 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
@Nullable
@Override
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level world, BlockState state, BlockEntityType<T> type) {
diff --git a/work/Bukkit b/work/Bukkit
-Subproject 01aa02eb531ba554701b02986193c874ccb7635
+Subproject 82af5dc60eae0a6223be15ea4f69c560521c97a
diff --git a/work/CraftBukkit b/work/CraftBukkit
-Subproject b60a95c8cf3ca3a6353be1ecf2a6baa6f9072c5
+Subproject d548daac2f99b1b570f9d229464f55d10d9a58b
diff --git a/work/Spigot b/work/Spigot
-Subproject 9ebce8afbf14ba4b857ce5befe716fecbd6d887
+Subproject b41c46db51ec4aca746def5ac9080ec319c4abd