aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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