aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNassim Jahnke <[email protected]>2024-10-31 23:44:34 +0100
committerGitHub <[email protected]>2024-10-31 23:44:34 +0100
commit52a05907c7a84583c26b8d0b9d5fdf8a5825c8d0 (patch)
tree121935d14905a330555291fc53ef089bdd122cfe
parent7ee48350744b09adea3beb75249d971d31d47779 (diff)
downloadPaper-52a05907c7a84583c26b8d0b9d5fdf8a5825c8d0.tar.gz
Paper-52a05907c7a84583c26b8d0b9d5fdf8a5825c8d0.zip
Updated Upstream (Bukkit/CraftBukkit) (#11543)
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 97c59261 PR-1073: Make Biome an interface a38581aa Fix further javadoc errors 8271c490 Fix javadoc error 8a9ecf29 PR-1072: Fix bad naming for Vault State methods 6dd58108 PR-1071: Make Fluid an interface and add missing entry ed2cdfc3 PR-1070: Make Attribute an interface and align names with the new minecraft ones 63472efb PR-1069: Add missing winter drop experimental annotation to pale boats CraftBukkit Changes: 7235ad7b0 PR-1501: Make Biome an interface 602904003 PR-1500: Rename implementation for Vault State methods 75f26f79f PR-1499: Make Fluid an interface and add missing entry 4cfd87adc PR-1498: Make Attribute an interface and align names with the new minecraft ones 6bb0db5cb SPIGOT-7928: ExactChoice acts as MaterialChoice 3eaf3a13c SPIGOT-7929: Error when setting EquippableComponent abbf57bac SPIGOT-7930: Fix spawning entities with SummonEntityEffect 92d6ab6cf PR-1497: Move boat field rename entries to below key renaming, so that keys are also renamed abfe292aa PR-1496: Use correct Fluid class on Tags type check c7aab7fa7 SPIGOT-7923: Fix Dispenser logic to avoid firing empty projectiles
-rw-r--r--patches/api/0006-Adventure.patch4
-rw-r--r--patches/api/0009-Paper-Plugins.patch6
-rw-r--r--patches/api/0015-Expose-server-build-information.patch4
-rw-r--r--patches/api/0053-Fix-upstream-javadocs.patch8
-rw-r--r--patches/api/0142-Improve-death-events.patch4
-rw-r--r--patches/api/0166-Fix-Spigot-annotation-mistakes.patch6
-rw-r--r--patches/api/0182-Add-Raw-Byte-ItemStack-Serialization.patch4
-rw-r--r--patches/api/0202-Add-methods-to-get-translation-keys.patch53
-rw-r--r--patches/api/0205-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch4
-rw-r--r--patches/api/0236-Add-RegistryAccess-for-managing-registries.patch48
-rw-r--r--patches/api/0253-Expand-world-key-API.patch4
-rw-r--r--patches/api/0255-Expose-protocol-version.patch4
-rw-r--r--patches/api/0270-Add-basic-Datapack-API.patch4
-rw-r--r--patches/api/0272-ItemStack-repair-check-API.patch4
-rw-r--r--patches/api/0304-Get-entity-default-attributes.patch8
-rw-r--r--patches/api/0312-Add-Raw-Byte-Entity-Serialization.patch4
-rw-r--r--patches/api/0329-More-PotionEffectType-API.patch4
-rw-r--r--patches/api/0358-Add-NamespacedKey-biome-methods.patch8
-rw-r--r--patches/api/0378-Add-missing-Fluid-type.patch23
-rw-r--r--patches/api/0378-fix-Instruments.patch (renamed from patches/api/0379-fix-Instruments.patch)0
-rw-r--r--patches/api/0379-Add-BlockLockCheckEvent.patch (renamed from patches/api/0380-Add-BlockLockCheckEvent.patch)0
-rw-r--r--patches/api/0380-Add-Sneaking-API-for-Entities.patch (renamed from patches/api/0381-Add-Sneaking-API-for-Entities.patch)0
-rw-r--r--patches/api/0381-Improve-PortalEvents.patch (renamed from patches/api/0382-Improve-PortalEvents.patch)0
-rw-r--r--patches/api/0382-Flying-Fall-Damage-API.patch (renamed from patches/api/0383-Flying-Fall-Damage-API.patch)0
-rw-r--r--patches/api/0383-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch (renamed from patches/api/0384-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch)0
-rw-r--r--patches/api/0384-Win-Screen-API.patch (renamed from patches/api/0385-Win-Screen-API.patch)0
-rw-r--r--patches/api/0385-Add-Entity-Body-Yaw-API.patch (renamed from patches/api/0386-Add-Entity-Body-Yaw-API.patch)0
-rw-r--r--patches/api/0386-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch (renamed from patches/api/0387-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch)0
-rw-r--r--patches/api/0387-Add-EntityFertilizeEggEvent.patch (renamed from patches/api/0388-Add-EntityFertilizeEggEvent.patch)0
-rw-r--r--patches/api/0388-Add-CompostItemEvent-and-EntityCompostItemEvent.patch (renamed from patches/api/0389-Add-CompostItemEvent-and-EntityCompostItemEvent.patch)0
-rw-r--r--patches/api/0389-Add-Shearable-API.patch (renamed from patches/api/0390-Add-Shearable-API.patch)0
-rw-r--r--patches/api/0390-Fix-SpawnEggMeta-get-setSpawnedType.patch (renamed from patches/api/0391-Fix-SpawnEggMeta-get-setSpawnedType.patch)0
-rw-r--r--patches/api/0391-Add-Mob-Experience-reward-API.patch (renamed from patches/api/0392-Add-Mob-Experience-reward-API.patch)0
-rw-r--r--patches/api/0392-Expand-PlayerItemMendEvent.patch (renamed from patches/api/0393-Expand-PlayerItemMendEvent.patch)0
-rw-r--r--patches/api/0393-Add-method-to-remove-all-active-potion-effects.patch (renamed from patches/api/0394-Add-method-to-remove-all-active-potion-effects.patch)0
-rw-r--r--patches/api/0394-Folia-scheduler-and-owned-region-API.patch (renamed from patches/api/0395-Folia-scheduler-and-owned-region-API.patch)0
-rw-r--r--patches/api/0395-Add-event-for-player-editing-sign.patch (renamed from patches/api/0396-Add-event-for-player-editing-sign.patch)0
-rw-r--r--patches/api/0396-More-Sign-Block-API.patch (renamed from patches/api/0397-More-Sign-Block-API.patch)0
-rw-r--r--patches/api/0397-Fix-BanList-API.patch (renamed from patches/api/0398-Fix-BanList-API.patch)0
-rw-r--r--patches/api/0398-Add-whitelist-events.patch (renamed from patches/api/0399-Add-whitelist-events.patch)0
-rw-r--r--patches/api/0399-API-for-updating-recipes-on-clients.patch (renamed from patches/api/0400-API-for-updating-recipes-on-clients.patch)0
-rw-r--r--patches/api/0400-Add-PlayerFailMoveEvent.patch (renamed from patches/api/0401-Add-PlayerFailMoveEvent.patch)0
-rw-r--r--patches/api/0401-Fix-custom-statistic-criteria-creation.patch (renamed from patches/api/0402-Fix-custom-statistic-criteria-creation.patch)6
-rw-r--r--patches/api/0402-SculkCatalyst-bloom-API.patch (renamed from patches/api/0403-SculkCatalyst-bloom-API.patch)0
-rw-r--r--patches/api/0403-API-for-an-entity-s-scoreboard-name.patch (renamed from patches/api/0404-API-for-an-entity-s-scoreboard-name.patch)0
-rw-r--r--patches/api/0404-Deprecate-and-replace-methods-with-old-StructureType.patch (renamed from patches/api/0405-Deprecate-and-replace-methods-with-old-StructureType.patch)0
-rw-r--r--patches/api/0405-Add-Listing-API-for-Player.patch (renamed from patches/api/0406-Add-Listing-API-for-Player.patch)0
-rw-r--r--patches/api/0406-Expose-clicked-BlockFace-during-BlockDamageEvent.patch (renamed from patches/api/0407-Expose-clicked-BlockFace-during-BlockDamageEvent.patch)0
-rw-r--r--patches/api/0407-Fix-NPE-on-Boat-getStatus.patch (renamed from patches/api/0408-Fix-NPE-on-Boat-getStatus.patch)0
-rw-r--r--patches/api/0408-Expand-Pose-API.patch (renamed from patches/api/0409-Expand-Pose-API.patch)0
-rw-r--r--patches/api/0409-MerchantRecipe-add-copy-constructor.patch (renamed from patches/api/0410-MerchantRecipe-add-copy-constructor.patch)0
-rw-r--r--patches/api/0410-More-DragonBattle-API.patch (renamed from patches/api/0411-More-DragonBattle-API.patch)0
-rw-r--r--patches/api/0411-Add-PlayerPickItemEvent.patch (renamed from patches/api/0412-Add-PlayerPickItemEvent.patch)0
-rw-r--r--patches/api/0412-Allow-trident-custom-damage.patch (renamed from patches/api/0413-Allow-trident-custom-damage.patch)0
-rw-r--r--patches/api/0413-Expose-hand-during-BlockCanBuildEvent.patch (renamed from patches/api/0414-Expose-hand-during-BlockCanBuildEvent.patch)0
-rw-r--r--patches/api/0414-Limit-setBurnTime-to-valid-short-values.patch (renamed from patches/api/0415-Limit-setBurnTime-to-valid-short-values.patch)0
-rw-r--r--patches/api/0415-Add-OfflinePlayer-isConnected.patch (renamed from patches/api/0416-Add-OfflinePlayer-isConnected.patch)0
-rw-r--r--patches/api/0416-Add-titleOverride-to-InventoryOpenEvent.patch (renamed from patches/api/0417-Add-titleOverride-to-InventoryOpenEvent.patch)0
-rw-r--r--patches/api/0417-Allow-proper-checking-of-empty-item-stacks.patch (renamed from patches/api/0418-Allow-proper-checking-of-empty-item-stacks.patch)0
-rw-r--r--patches/api/0418-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch (renamed from patches/api/0419-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch)0
-rw-r--r--patches/api/0419-Add-player-idle-duration-API.patch (renamed from patches/api/0420-Add-player-idle-duration-API.patch)0
-rw-r--r--patches/api/0420-Add-API-to-get-the-collision-shape-of-a-block-before.patch (renamed from patches/api/0421-Add-API-to-get-the-collision-shape-of-a-block-before.patch)0
-rw-r--r--patches/api/0421-Add-predicate-for-blocks-when-raytracing.patch (renamed from patches/api/0422-Add-predicate-for-blocks-when-raytracing.patch)0
-rw-r--r--patches/api/0422-Add-hand-to-fish-event-for-all-player-interactions.patch (renamed from patches/api/0423-Add-hand-to-fish-event-for-all-player-interactions.patch)0
-rw-r--r--patches/api/0423-Attribute-Modifier-API-improvements.patch (renamed from patches/api/0424-Attribute-Modifier-API-improvements.patch)0
-rw-r--r--patches/api/0424-Expand-LingeringPotion-API.patch (renamed from patches/api/0425-Expand-LingeringPotion-API.patch)0
-rw-r--r--patches/api/0425-Remove-unnecessary-durability-check-in-ItemStack-isS.patch (renamed from patches/api/0426-Remove-unnecessary-durability-check-in-ItemStack-isS.patch)0
-rw-r--r--patches/api/0426-Add-Structure-check-API.patch (renamed from patches/api/0427-Add-Structure-check-API.patch)0
-rw-r--r--patches/api/0427-Experimental-annotations-change.patch (renamed from patches/api/0428-Experimental-annotations-change.patch)0
-rw-r--r--patches/api/0428-Add-more-scoreboard-API.patch (renamed from patches/api/0429-Add-more-scoreboard-API.patch)0
-rw-r--r--patches/api/0429-Improve-Registry.patch (renamed from patches/api/0430-Improve-Registry.patch)6
-rw-r--r--patches/api/0430-Add-experience-points-API.patch (renamed from patches/api/0431-Add-experience-points-API.patch)0
-rw-r--r--patches/api/0431-Add-missing-InventoryType.patch (renamed from patches/api/0432-Add-missing-InventoryType.patch)0
-rw-r--r--patches/api/0432-Add-drops-to-shear-events.patch (renamed from patches/api/0433-Add-drops-to-shear-events.patch)0
-rw-r--r--patches/api/0433-Add-HiddenPotionEffect-API.patch (renamed from patches/api/0434-Add-HiddenPotionEffect-API.patch)0
-rw-r--r--patches/api/0434-Add-PlayerShieldDisableEvent.patch (renamed from patches/api/0435-Add-PlayerShieldDisableEvent.patch)0
-rw-r--r--patches/api/0435-Return-null-for-empty-String-in-NamespacedKey.fromSt.patch (renamed from patches/api/0436-Return-null-for-empty-String-in-NamespacedKey.fromSt.patch)0
-rw-r--r--patches/api/0436-Add-BlockStateMeta-clearBlockState.patch (renamed from patches/api/0437-Add-BlockStateMeta-clearBlockState.patch)0
-rw-r--r--patches/api/0437-Expose-LootTable-of-DecoratedPot.patch (renamed from patches/api/0438-Expose-LootTable-of-DecoratedPot.patch)0
-rw-r--r--patches/api/0438-Add-ShulkerDuplicateEvent.patch (renamed from patches/api/0439-Add-ShulkerDuplicateEvent.patch)0
-rw-r--r--patches/api/0439-Add-api-for-spawn-egg-texture-colors.patch (renamed from patches/api/0440-Add-api-for-spawn-egg-texture-colors.patch)4
-rw-r--r--patches/api/0440-Add-Lifecycle-Event-system.patch (renamed from patches/api/0441-Add-Lifecycle-Event-system.patch)4
-rw-r--r--patches/api/0441-ItemStack-Tooltip-API.patch (renamed from patches/api/0442-ItemStack-Tooltip-API.patch)4
-rw-r--r--patches/api/0442-Add-getChunkSnapshot-includeLightData-parameter.patch (renamed from patches/api/0443-Add-getChunkSnapshot-includeLightData-parameter.patch)0
-rw-r--r--patches/api/0443-Add-FluidState-API.patch (renamed from patches/api/0444-Add-FluidState-API.patch)0
-rw-r--r--patches/api/0444-add-number-format-api.patch (renamed from patches/api/0445-add-number-format-api.patch)0
-rw-r--r--patches/api/0445-improve-BanList-types.patch (renamed from patches/api/0446-improve-BanList-types.patch)0
-rw-r--r--patches/api/0446-Suspicious-Effect-Entry-API.patch (renamed from patches/api/0447-Suspicious-Effect-Entry-API.patch)0
-rw-r--r--patches/api/0447-Fix-DamageSource-API.patch (renamed from patches/api/0448-Fix-DamageSource-API.patch)0
-rw-r--r--patches/api/0448-Expanded-Hopper-API.patch (renamed from patches/api/0449-Expanded-Hopper-API.patch)0
-rw-r--r--patches/api/0449-Clone-mutables-to-prevent-unexpected-issues.patch (renamed from patches/api/0450-Clone-mutables-to-prevent-unexpected-issues.patch)0
-rw-r--r--patches/api/0450-Add-BlockBreakProgressUpdateEvent.patch (renamed from patches/api/0451-Add-BlockBreakProgressUpdateEvent.patch)0
-rw-r--r--patches/api/0451-Deprecate-ItemStack-setType.patch (renamed from patches/api/0452-Deprecate-ItemStack-setType.patch)0
-rw-r--r--patches/api/0452-Item-Mutation-Fixes.patch (renamed from patches/api/0453-Item-Mutation-Fixes.patch)0
-rw-r--r--patches/api/0453-API-for-checking-sent-chunks.patch (renamed from patches/api/0454-API-for-checking-sent-chunks.patch)0
-rw-r--r--patches/api/0454-Add-CartographyItemEvent.patch (renamed from patches/api/0455-Add-CartographyItemEvent.patch)0
-rw-r--r--patches/api/0455-More-Raid-API.patch (renamed from patches/api/0456-More-Raid-API.patch)0
-rw-r--r--patches/api/0456-Fix-SpawnerEntry-Equipment-API.patch (renamed from patches/api/0457-Fix-SpawnerEntry-Equipment-API.patch)0
-rw-r--r--patches/api/0457-Fix-ItemFlags.patch (renamed from patches/api/0458-Fix-ItemFlags.patch)0
-rw-r--r--patches/api/0458-Allow-modifying-library-loader-jars-bytecode.patch (renamed from patches/api/0459-Allow-modifying-library-loader-jars-bytecode.patch)0
-rw-r--r--patches/api/0459-Add-hook-to-remap-library-jars.patch (renamed from patches/api/0460-Add-hook-to-remap-library-jars.patch)0
-rw-r--r--patches/api/0460-Add-GameMode-isInvulnerable.patch (renamed from patches/api/0461-Add-GameMode-isInvulnerable.patch)0
-rw-r--r--patches/api/0461-Expose-hasColor-to-leather-armor.patch (renamed from patches/api/0462-Expose-hasColor-to-leather-armor.patch)0
-rw-r--r--patches/api/0462-Added-API-to-get-player-ha-proxy-address.patch (renamed from patches/api/0463-Added-API-to-get-player-ha-proxy-address.patch)0
-rw-r--r--patches/api/0463-More-Chest-Block-API.patch (renamed from patches/api/0464-More-Chest-Block-API.patch)0
-rw-r--r--patches/api/0464-Brigadier-based-command-API.patch (renamed from patches/api/0465-Brigadier-based-command-API.patch)0
-rw-r--r--patches/api/0465-Fix-issues-with-recipe-API.patch (renamed from patches/api/0466-Fix-issues-with-recipe-API.patch)0
-rw-r--r--patches/api/0466-Fix-equipment-slot-and-group-API.patch (renamed from patches/api/0467-Fix-equipment-slot-and-group-API.patch)0
-rw-r--r--patches/api/0467-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch (renamed from patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch)0
-rw-r--r--patches/api/0468-General-ItemMeta-fixes.patch (renamed from patches/api/0469-General-ItemMeta-fixes.patch)0
-rw-r--r--patches/api/0469-Add-missing-fishing-event-state.patch (renamed from patches/api/0470-Add-missing-fishing-event-state.patch)0
-rw-r--r--patches/api/0470-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch (renamed from patches/api/0471-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch)0
-rw-r--r--patches/api/0471-Registry-Modification-API.patch (renamed from patches/api/0472-Registry-Modification-API.patch)12
-rw-r--r--patches/api/0472-Introduce-registry-entry-and-builders.patch (renamed from patches/api/0473-Introduce-registry-entry-and-builders.patch)0
-rw-r--r--patches/api/0473-Proxy-ItemStack-to-CraftItemStack.patch (renamed from patches/api/0474-Proxy-ItemStack-to-CraftItemStack.patch)4
-rw-r--r--patches/api/0474-Make-a-PDC-view-accessible-directly-from-ItemStack.patch (renamed from patches/api/0475-Make-a-PDC-view-accessible-directly-from-ItemStack.patch)0
-rw-r--r--patches/api/0475-Fix-HelpCommand-searching.patch (renamed from patches/api/0476-Fix-HelpCommand-searching.patch)0
-rw-r--r--patches/api/0476-add-Plugin-getDataPath.patch (renamed from patches/api/0477-add-Plugin-getDataPath.patch)0
-rw-r--r--patches/api/0477-Fix-PickupStatus-getting-reset.patch (renamed from patches/api/0478-Fix-PickupStatus-getting-reset.patch)0
-rw-r--r--patches/api/0478-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch (renamed from patches/api/0479-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch)0
-rw-r--r--patches/api/0479-Improve-StandardMessenger-exception-messages.patch (renamed from patches/api/0480-Improve-StandardMessenger-exception-messages.patch)0
-rw-r--r--patches/api/0480-Add-even-more-Enchantment-API.patch (renamed from patches/api/0481-Add-even-more-Enchantment-API.patch)0
-rw-r--r--patches/api/0481-Leashable-API.patch (renamed from patches/api/0482-Leashable-API.patch)0
-rw-r--r--patches/api/0482-Add-enchantment-seed-update-API.patch (renamed from patches/api/0483-Add-enchantment-seed-update-API.patch)0
-rw-r--r--patches/api/0483-Deprecate-for-removal-all-OldEnum-related-methods.patch (renamed from patches/api/0484-Deprecate-for-removal-all-OldEnum-related-methods.patch)0
-rw-r--r--patches/api/0484-Add-FeatureFlag-API.patch (renamed from patches/api/0485-Add-FeatureFlag-API.patch)8
-rw-r--r--patches/api/0485-Tag-Lifecycle-Events.patch (renamed from patches/api/0486-Tag-Lifecycle-Events.patch)0
-rw-r--r--patches/api/0486-Item-serialization-as-json.patch (renamed from patches/api/0487-Item-serialization-as-json.patch)4
-rw-r--r--patches/api/0487-create-TileStateInventoryHolder.patch (renamed from patches/api/0488-create-TileStateInventoryHolder.patch)0
-rw-r--r--patches/api/0488-Add-enchantWithLevels-with-enchantment-registry-set.patch (renamed from patches/api/0489-Add-enchantWithLevels-with-enchantment-registry-set.patch)0
-rw-r--r--patches/api/0489-Improve-entity-effect-API.patch (renamed from patches/api/0490-Improve-entity-effect-API.patch)0
-rw-r--r--patches/api/0490-Add-recipeBrewTime.patch (renamed from patches/api/0491-Add-recipeBrewTime.patch)0
-rw-r--r--patches/api/0491-Add-PlayerInsertLecternBookEvent.patch (renamed from patches/api/0492-Add-PlayerInsertLecternBookEvent.patch)0
-rw-r--r--patches/api/0492-Void-damage-configuration-API.patch (renamed from patches/api/0493-Void-damage-configuration-API.patch)0
-rw-r--r--patches/api/0493-Add-Offline-PDC-API.patch (renamed from patches/api/0494-Add-Offline-PDC-API.patch)0
-rw-r--r--patches/api/0494-Add-AnvilView-bypassEnchantmentLevelRestriction.patch (renamed from patches/api/0495-Add-AnvilView-bypassEnchantmentLevelRestriction.patch)0
-rw-r--r--patches/api/0495-fix-DamageTypeTags-init.patch (renamed from patches/api/0496-fix-DamageTypeTags-init.patch)0
-rw-r--r--patches/server/0008-CB-fixes.patch17
-rw-r--r--patches/server/0010-Adventure.patch8
-rw-r--r--patches/server/0019-Paper-Plugins.patch6
-rw-r--r--patches/server/0021-Hook-into-CB-plugin-rewrites.patch16
-rw-r--r--patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch14
-rw-r--r--patches/server/0033-Expose-server-build-information.patch8
-rw-r--r--patches/server/0176-Player.setPlayerProfile-API.patch4
-rw-r--r--patches/server/0241-Improve-death-events.patch4
-rw-r--r--patches/server/0324-Add-Raw-Byte-ItemStack-Serialization.patch4
-rw-r--r--patches/server/0401-Add-methods-to-get-translation-keys.patch16
-rw-r--r--patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch4
-rw-r--r--patches/server/0424-Fix-client-lag-on-advancement-loading.patch4
-rw-r--r--patches/server/0467-Add-RegistryAccess-for-managing-Registries.patch53
-rw-r--r--patches/server/0496-Expand-world-key-API.patch6
-rw-r--r--patches/server/0501-Expose-protocol-version.patch4
-rw-r--r--patches/server/0528-ItemStack-repair-check-API.patch4
-rw-r--r--patches/server/0535-Improve-item-default-attribute-API.patch4
-rw-r--r--patches/server/0580-Get-entity-default-attributes.patch10
-rw-r--r--patches/server/0582-Add-more-advancement-API.patch4
-rw-r--r--patches/server/0583-Add-ItemFactory-getSpawnEgg-API.patch4
-rw-r--r--patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch4
-rw-r--r--patches/server/0681-Cache-resource-keys-and-optimize-reference-Holder-ta.patch28
-rw-r--r--patches/server/0726-Add-NamespacedKey-biome-methods.patch11
-rw-r--r--patches/server/0735-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch4
-rw-r--r--patches/server/0845-Fix-custom-statistic-criteria-creation.patch8
-rw-r--r--patches/server/0883-Fix-UnsafeValues-loadAdvancement.patch4
-rw-r--r--patches/server/0905-Improve-Registry.patch8
-rw-r--r--patches/server/0912-Fixup-NamespacedKey-handling.patch8
-rw-r--r--patches/server/0917-Add-api-for-spawn-egg-texture-colors.patch4
-rw-r--r--patches/server/0918-Add-Lifecycle-Event-system.patch6
-rw-r--r--patches/server/0919-ItemStack-Tooltip-API.patch4
-rw-r--r--patches/server/0936-Fix-possible-StackOverflowError-and-NPE-for-some-dis.patch6
-rw-r--r--patches/server/0940-Properly-track-the-changed-item-from-dispense-events.patch16
-rw-r--r--patches/server/0953-General-ItemMeta-fixes.patch11
-rw-r--r--patches/server/0993-Registry-Modification-API.patch16
-rw-r--r--patches/server/0994-Add-registry-entry-and-builders.patch8
-rw-r--r--patches/server/0995-Proxy-ItemStack-to-CraftItemStack.patch4
-rw-r--r--patches/server/1020-Add-FeatureFlag-API.patch12
-rw-r--r--patches/server/1022-Item-serialization-as-json.patch4
-rw-r--r--patches/server/1037-Rewrite-dataconverter-system.patch6
m---------work/Bukkit0
m---------work/CraftBukkit0
179 files changed, 301 insertions, 321 deletions
diff --git a/patches/api/0006-Adventure.patch b/patches/api/0006-Adventure.patch
index da57b44ba1..db5ecc6561 100644
--- a/patches/api/0006-Adventure.patch
+++ b/patches/api/0006-Adventure.patch
@@ -1555,10 +1555,10 @@ index ac5e263d737973af077e3406a84a84baca4370db..2d91924b7f5ef16a91d40cdc1bfc3d68
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 0bb3637d73132f1882af38ca7ad6864a44812edc..9ba1a4e838538ecd55f4f8e50ffb0c5f1f474382 100644
+index 752fef0205d7edc09a7072e4ca63152b12eb28ec..1ed3f8dae84c10cb3245d08fa776396a695b5c2f 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -30,6 +30,15 @@ import org.jetbrains.annotations.Nullable;
+@@ -31,6 +31,15 @@ import org.jetbrains.annotations.Nullable;
*/
@Deprecated
public interface UnsafeValues {
diff --git a/patches/api/0009-Paper-Plugins.patch b/patches/api/0009-Paper-Plugins.patch
index b9fcf1aeb9..74ff26e12a 100644
--- a/patches/api/0009-Paper-Plugins.patch
+++ b/patches/api/0009-Paper-Plugins.patch
@@ -1325,13 +1325,13 @@ index 0000000000000000000000000000000000000000..48a67c1b6070292dbf4ea3081f89b530
+
+}
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 9ba1a4e838538ecd55f4f8e50ffb0c5f1f474382..d8b346fe0f9634218954fe818d53272a0896af9c 100644
+index 1ed3f8dae84c10cb3245d08fa776396a695b5c2f..e320729782245b5511cd744c417141508020fd26 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -141,4 +141,14 @@ public interface UnsafeValues {
+@@ -146,4 +146,14 @@ public interface UnsafeValues {
@ApiStatus.Internal
- <B extends Keyed> B get(Registry<B> registry, NamespacedKey key);
+ Biome getCustomBiome();
+
+ // Paper start
+ @Deprecated(forRemoval = true)
diff --git a/patches/api/0015-Expose-server-build-information.patch b/patches/api/0015-Expose-server-build-information.patch
index 2853b45626..1865aaa0f5 100644
--- a/patches/api/0015-Expose-server-build-information.patch
+++ b/patches/api/0015-Expose-server-build-information.patch
@@ -316,10 +316,10 @@ index ba28d9f3213ca4b5f15178dc637bff37a8896edc..8a07f21eeb04fb54032ce377a1478f60
* Gets a view of all currently logged in players. This {@linkplain
* Collections#unmodifiableCollection(Collection) view} is a reused
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index d8b346fe0f9634218954fe818d53272a0896af9c..45ed0007d6de20b98794b3ccaef57aed213e72d4 100644
+index e320729782245b5511cd744c417141508020fd26..8b5e4756d1c80e55be166dbe1faf57799f9cc03b 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -151,4 +151,13 @@ public interface UnsafeValues {
+@@ -156,4 +156,13 @@ public interface UnsafeValues {
return !Bukkit.getUnsafe().isSupportedApiVersion(plugin.getDescription().getAPIVersion());
}
// Paper end
diff --git a/patches/api/0053-Fix-upstream-javadocs.patch b/patches/api/0053-Fix-upstream-javadocs.patch
index 151552e5d6..cb77c4cd82 100644
--- a/patches/api/0053-Fix-upstream-javadocs.patch
+++ b/patches/api/0053-Fix-upstream-javadocs.patch
@@ -590,7 +590,7 @@ index 9513ce004101bd1bef90ca4a558f6b7c28d97adb..c8ba70f787a3460c1f9faaeaab086e9e
* not provided. This might result in newer versions not loading the
* pack correctly.
diff --git a/src/main/java/org/bukkit/entity/Slime.java b/src/main/java/org/bukkit/entity/Slime.java
-index a5ad3250cebfeb302c58e0bfd6db1295913c927e..bfac874840cf1f36afba16ae4d176c5821a68cfb 100644
+index a5ad3250cebfeb302c58e0bfd6db1295913c927e..0a2d603bf6a3f60d3fa7d85df6ef2373fc93d848 100644
--- a/src/main/java/org/bukkit/entity/Slime.java
+++ b/src/main/java/org/bukkit/entity/Slime.java
@@ -11,6 +11,16 @@ public interface Slime extends Mob, Enemy {
@@ -600,9 +600,9 @@ index a5ad3250cebfeb302c58e0bfd6db1295913c927e..bfac874840cf1f36afba16ae4d176c58
+ * Setting the size of the slime (regardless of previous size)
+ * will set the following attributes:
+ * <ul>
-+ * <li>{@link org.bukkit.attribute.Attribute#GENERIC_MAX_HEALTH}</li>
-+ * <li>{@link org.bukkit.attribute.Attribute#GENERIC_MOVEMENT_SPEED}</li>
-+ * <li>{@link org.bukkit.attribute.Attribute#GENERIC_ATTACK_DAMAGE}</li>
++ * <li>{@link org.bukkit.attribute.Attribute#MAX_HEALTH}</li>
++ * <li>{@link org.bukkit.attribute.Attribute#MOVEMENT_SPEED}</li>
++ * <li>{@link org.bukkit.attribute.Attribute#ATTACK_DAMAGE}</li>
+ * </ul>
+ * to their per-size defaults and heal the
+ * slime to its max health (assuming it's alive).
diff --git a/patches/api/0142-Improve-death-events.patch b/patches/api/0142-Improve-death-events.patch
index 3f91458a84..1ddc0abdba 100644
--- a/patches/api/0142-Improve-death-events.patch
+++ b/patches/api/0142-Improve-death-events.patch
@@ -15,7 +15,7 @@ items and experience which is otherwise only properly possible by using
internal code.
diff --git a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
-index b0c069f65da29c6e9eff8e0490fda43a6bed307c..81a3067ff5ae22943b66051f4613ab9fe095720c 100644
+index b0c069f65da29c6e9eff8e0490fda43a6bed307c..086bec9daa89315b1d4719ab74de0e889f93e340 100644
--- a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
+++ b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
@@ -6,15 +6,25 @@ import org.bukkit.entity.LivingEntity;
@@ -79,7 +79,7 @@ index b0c069f65da29c6e9eff8e0490fda43a6bed307c..81a3067ff5ae22943b66051f4613ab9f
+ * @throws IllegalArgumentException Thrown if the health is {@literal <= 0 or >} max health
+ */
+ public void setReviveHealth(double reviveHealth) throws IllegalArgumentException {
-+ double maxHealth = ((LivingEntity) entity).getAttribute(org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH).getValue();
++ double maxHealth = ((LivingEntity) entity).getAttribute(org.bukkit.attribute.Attribute.MAX_HEALTH).getValue();
+ if ((maxHealth != 0 && reviveHealth <= 0) || (reviveHealth > maxHealth)) {
+ throw new IllegalArgumentException("Health must be between 0 (exclusive) and " + maxHealth + " (inclusive), but was " + reviveHealth);
+ }
diff --git a/patches/api/0166-Fix-Spigot-annotation-mistakes.patch b/patches/api/0166-Fix-Spigot-annotation-mistakes.patch
index bcff5eb5a0..300cf32990 100644
--- a/patches/api/0166-Fix-Spigot-annotation-mistakes.patch
+++ b/patches/api/0166-Fix-Spigot-annotation-mistakes.patch
@@ -453,7 +453,7 @@ index 48aecc9421c500137bbef1dfe3bec8de277c3ff9..aff858346776386f1288b648b221404f
return note;
}
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index 30ba3daba730c2994b589cc321d66b503da2fe8b..4e67b944351ec3743e5eeaba3f5de99e0df15154 100644
+index 774f9bd0ef95d385dc3f715753c83e05fcc2bdff..26399345dd02031712994da1553417186b8c7370 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
@@ -248,14 +248,12 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
@@ -837,10 +837,10 @@ index 3afe2787de576f7190d87c796bea0ab34dc30248..875817b807c9f515eb07b03cc85d3689
/**
diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index f5b0ff195b3f7cf1c5b8ebe2fb8cefcf6c1012f4..1c1cdfd6b5a98a378ff7bb7bb3201e84662b52f3 100644
+index 17d9669be0eb48e54b230ad15e66463167cfb7d6..e758a13ea84f472dcdf7fe31e2ea23c0e554c4c7 100644
--- a/src/main/java/org/bukkit/entity/EntityType.java
+++ b/src/main/java/org/bukkit/entity/EntityType.java
-@@ -424,9 +424,9 @@ public enum EntityType implements Keyed, Translatable {
+@@ -428,9 +428,9 @@ public enum EntityType implements Keyed, Translatable {
*
* @param name the entity type's name
* @return the matching entity type or null
diff --git a/patches/api/0182-Add-Raw-Byte-ItemStack-Serialization.patch b/patches/api/0182-Add-Raw-Byte-ItemStack-Serialization.patch
index b852c64ded..1d4c5dfaea 100644
--- a/patches/api/0182-Add-Raw-Byte-ItemStack-Serialization.patch
+++ b/patches/api/0182-Add-Raw-Byte-ItemStack-Serialization.patch
@@ -8,10 +8,10 @@ Serializes using NBT which is safer for server data migrations than bukkits form
Co-authored-by: Nassim Jahnke <[email protected]>
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 45ed0007d6de20b98794b3ccaef57aed213e72d4..dd81e309c584e37e4bc7644261ecc649e1237570 100644
+index 8b5e4756d1c80e55be166dbe1faf57799f9cc03b..66d29e7f4187309d4a55202d1bda4b94e42211b0 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -159,5 +159,9 @@ public interface UnsafeValues {
+@@ -164,5 +164,9 @@ public interface UnsafeValues {
default com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
return new com.destroystokyo.paper.util.VersionFetcher.DummyVersionFetcher();
}
diff --git a/patches/api/0202-Add-methods-to-get-translation-keys.patch b/patches/api/0202-Add-methods-to-get-translation-keys.patch
index 825d506e8a..13d99de8c2 100644
--- a/patches/api/0202-Add-methods-to-get-translation-keys.patch
+++ b/patches/api/0202-Add-methods-to-get-translation-keys.patch
@@ -235,53 +235,40 @@ index e3faa2c675c85a9cbdbbb1debec0ff81c58a1bbd..fd1629c2d2028a88fb3d56b0aeb833d1
String getTranslationKey();
}
diff --git a/src/main/java/org/bukkit/attribute/Attribute.java b/src/main/java/org/bukkit/attribute/Attribute.java
-index e5a9d1692f0f6fd8e9ac4903782e9330b4da6ef3..6075cd2a88394cd7f0ce2470e732a45094b033c0 100644
+index 951c23491390c2c8693d415598ef2de712189220..21f9998b472dc18eb308554f5cdf467f6675f2f0 100644
--- a/src/main/java/org/bukkit/attribute/Attribute.java
+++ b/src/main/java/org/bukkit/attribute/Attribute.java
-@@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull;
+@@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull;
/**
* Types of attributes which may be present on an {@link Attributable}.
*/
--public enum Attribute implements Keyed, Translatable {
-+public enum Attribute implements Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations
+-public interface Attribute extends OldEnum<Attribute>, Keyed, Translatable {
++public interface Attribute extends OldEnum<Attribute>, Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations
/**
* Maximum health of an Entity.
-@@ -157,4 +157,12 @@ public enum Attribute implements Keyed, Translatable {
- public String getTranslationKey() {
- return Bukkit.getUnsafe().getTranslationKey(this);
- }
-+
-+ // Paper start
-+ @SuppressWarnings("deprecation")
-+ @Override
-+ public @NotNull String translationKey() {
-+ return Bukkit.getUnsafe().getTranslationKey(this);
-+ }
-+ // Paper end
- }
diff --git a/src/main/java/org/bukkit/block/Biome.java b/src/main/java/org/bukkit/block/Biome.java
-index 2201b63e7335b12622268a3ef40d1fcb06c1d705..b71975b904d48e22a0e2134bb0e8231679dd9700 100644
+index f46932a12f46895ae10b63f7fbb54750da1bd2ba..b352886e697a1c9869226b583da5240592575064 100644
--- a/src/main/java/org/bukkit/block/Biome.java
+++ b/src/main/java/org/bukkit/block/Biome.java
-@@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull;
- /**
- * Holds all accepted Biomes in the default server
+@@ -22,7 +22,7 @@ import org.jetbrains.annotations.NotNull;
+ * There may be additional biomes present in the server, for example from a {@link DataPack}
+ * which can be accessed via {@link Registry#BIOME}.
*/
--public enum Biome implements Keyed {
-+public enum Biome implements Keyed, net.kyori.adventure.translation.Translatable { // Paper
- OCEAN,
- PLAINS,
- DESERT,
-@@ -94,4 +94,11 @@ public enum Biome implements Keyed {
- public NamespacedKey getKey() {
- return key;
+-public interface Biome extends OldEnum<Biome>, Keyed {
++public interface Biome extends OldEnum<Biome>, Keyed, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations
+
+ Biome OCEAN = getBiome("ocean");
+ Biome PLAINS = getBiome("plains");
+@@ -131,4 +131,11 @@ public interface Biome extends OldEnum<Biome>, Keyed {
+ static Biome[] values() {
+ return Lists.newArrayList(Registry.BIOME).toArray(new Biome[0]);
}
+
+ // Paper start
+ @Override
-+ public @NotNull String translationKey() {
-+ return "biome.minecraft." + this.key.getKey();
++ default @NotNull String translationKey() {
++ return "biome.minecraft." + this.getKey().getKey();
+ }
+ // Paper end
}
@@ -384,7 +371,7 @@ index c4f86ba1037f3f0e5d697a0962d71d6f8c7c1fbe..ac0371285370594d4de1554871b19bbc
// Paper end
}
diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index 1c1cdfd6b5a98a378ff7bb7bb3201e84662b52f3..be1c8c9b27ad792f2b0ff1cec0c575eb1fc3023a 100644
+index e758a13ea84f472dcdf7fe31e2ea23c0e554c4c7..a5e5c252405a7b940afbb6715abcda7ec9007dd3 100644
--- a/src/main/java/org/bukkit/entity/EntityType.java
+++ b/src/main/java/org/bukkit/entity/EntityType.java
@@ -45,7 +45,7 @@ import org.jetbrains.annotations.Contract;
@@ -396,7 +383,7 @@ index 1c1cdfd6b5a98a378ff7bb7bb3201e84662b52f3..be1c8c9b27ad792f2b0ff1cec0c575eb
// These strings MUST match the strings in nms.EntityTypes and are case sensitive.
/**
-@@ -470,10 +470,22 @@ public enum EntityType implements Keyed, Translatable {
+@@ -474,10 +474,22 @@ public enum EntityType implements Keyed, Translatable {
@Override
@NotNull
diff --git a/patches/api/0205-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/api/0205-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
index 241d581e0c..a9993be897 100644
--- a/patches/api/0205-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
+++ b/patches/api/0205-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Expose the Entity Counter to allow plugins to use valid and
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index dd81e309c584e37e4bc7644261ecc649e1237570..db48f30704efa6928599a5cebf5ce577c8430198 100644
+index 66d29e7f4187309d4a55202d1bda4b94e42211b0..33acd8e0993b1f02a14794f55d0cf568a85a099e 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -163,5 +163,12 @@ public interface UnsafeValues {
+@@ -168,5 +168,12 @@ public interface UnsafeValues {
byte[] serializeItem(ItemStack item);
ItemStack deserializeItem(byte[] data);
diff --git a/patches/api/0236-Add-RegistryAccess-for-managing-registries.patch b/patches/api/0236-Add-RegistryAccess-for-managing-registries.patch
index 275ee68a7c..5c4084cf8c 100644
--- a/patches/api/0236-Add-RegistryAccess-for-managing-registries.patch
+++ b/patches/api/0236-Add-RegistryAccess-for-managing-registries.patch
@@ -207,10 +207,19 @@ index e0f652117e585882693736de8165ae9c689e1d68..fbe14c327ee9c1ac07893853ca7c699e
return server.getRegistry(tClass);
}
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e23d273ebd 100644
+index 26399345dd02031712994da1553417186b8c7370..759925decc0b66e8f5861f3f8bd9bee0ed66181e 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
-@@ -98,8 +98,10 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -92,20 +92,26 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+ * Attribute.
+ *
+ * @see Attribute
++ * @deprecated use {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)} with {@link io.papermc.paper.registry.RegistryKey#ATTRIBUTE}
+ */
+- Registry<Attribute> ATTRIBUTE = Objects.requireNonNull(Bukkit.getRegistry(Attribute.class), "No registry present for Attribute. This is a bug.");
++ @Deprecated(since = "1.21.3") // Paper
++ Registry<Attribute> ATTRIBUTE = Objects.requireNonNull(io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(Attribute.class), "No registry present for Attribute. This is a bug.");
+ /**
* Server banner patterns.
*
* @see PatternType
@@ -222,7 +231,16 @@ index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e2
/**
* Server biomes.
*
-@@ -113,7 +115,7 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+ * @see Biome
++ * @deprecated use {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)} with {@link io.papermc.paper.registry.RegistryKey#BIOME}
+ */
+- Registry<Biome> BIOME = Objects.requireNonNull(Bukkit.getRegistry(Biome.class), "No registry present for Biome. This is a bug.");
++ @Deprecated(since = "1.21.3") // Paper
++ Registry<Biome> BIOME = Objects.requireNonNull(io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(Biome.class), "No registry present for Biome. This is a bug.");
+ /**
+ * Server block types.
+ *
+@@ -113,7 +119,7 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
* @apiNote BlockType is not ready for public usage yet
*/
@ApiStatus.Internal
@@ -231,7 +249,7 @@ index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e2
/**
* Custom boss bars.
*
-@@ -155,13 +157,15 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -155,13 +161,15 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
*
* @see Cat.Type
*/
@@ -249,7 +267,7 @@ index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e2
/**
* Server entity types.
*
-@@ -173,7 +177,7 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -173,7 +181,7 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
*
* @see MusicInstrument
*/
@@ -258,7 +276,7 @@ index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e2
/**
* Server item types.
*
-@@ -181,7 +185,7 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -181,7 +189,7 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
* @apiNote ItemType is not ready for public usage yet
*/
@ApiStatus.Internal
@@ -267,7 +285,7 @@ index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e2
/**
* Default server loot tables.
*
-@@ -200,13 +204,13 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -200,13 +208,13 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
* @see MenuType
*/
@ApiStatus.Experimental
@@ -283,7 +301,7 @@ index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e2
/**
* Server particles.
*
-@@ -229,14 +233,16 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -229,14 +237,16 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
* Server structures.
*
* @see Structure
@@ -302,7 +320,7 @@ index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e2
/**
* Sound keys.
*
-@@ -247,40 +253,47 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -247,40 +257,47 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
* Trim materials.
*
* @see TrimMaterial
@@ -357,7 +375,17 @@ index 4e67b944351ec3743e5eeaba3f5de99e0df15154..39997047be9f3796d8d5d8934eb361e2
/**
* Memory Keys.
*
-@@ -327,25 +340,27 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -320,32 +337,36 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+ * Server fluids.
+ *
+ * @see Fluid
++ * @deprecated use {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)} with {@link io.papermc.paper.registry.RegistryKey#FLUID}
+ */
+- Registry<Fluid> FLUID = Objects.requireNonNull(Bukkit.getRegistry(Fluid.class), "No registry present for Fluid. This is a bug.");
++ @Deprecated(since = "1.21.3")
++ Registry<Fluid> FLUID = Objects.requireNonNull(io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(Fluid.class), "No registry present for Fluid. This is a bug.");
+ /**
+ * Frog variants.
*
* @see Frog.Variant
*/
diff --git a/patches/api/0253-Expand-world-key-API.patch b/patches/api/0253-Expand-world-key-API.patch
index 2716158a70..a22199d327 100644
--- a/patches/api/0253-Expand-world-key-API.patch
+++ b/patches/api/0253-Expand-world-key-API.patch
@@ -100,10 +100,10 @@ index 943f8881ea23481ea5d5125b6ec7c9c6f763f0b0..42930006b6425b5d82233e4ffe7025ce
* Create a new virtual {@link WorldBorder}.
* <p>
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index db48f30704efa6928599a5cebf5ce577c8430198..4229db3c6abb693803a4bdd5a71e426c688f26cc 100644
+index 33acd8e0993b1f02a14794f55d0cf568a85a099e..e924f313cead4cb0a9d73f5be8bc69b654293ddf 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -170,5 +170,10 @@ public interface UnsafeValues {
+@@ -175,5 +175,10 @@ public interface UnsafeValues {
* Use this when sending custom packets, so that there are no collisions on the client or server.
*/
public int nextEntityId();
diff --git a/patches/api/0255-Expose-protocol-version.patch b/patches/api/0255-Expose-protocol-version.patch
index f6cace865e..f1037f03a8 100644
--- a/patches/api/0255-Expose-protocol-version.patch
+++ b/patches/api/0255-Expose-protocol-version.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose protocol version
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 4229db3c6abb693803a4bdd5a71e426c688f26cc..f33426207c403906c3c6fb99e848fd7ecbffd127 100644
+index e924f313cead4cb0a9d73f5be8bc69b654293ddf..ce9bbe4a9010ca31ace1f0b7fb67eab0f13ac97d 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -175,5 +175,12 @@ public interface UnsafeValues {
+@@ -180,5 +180,12 @@ public interface UnsafeValues {
* Just don't use it.
*/
@org.jetbrains.annotations.NotNull String getMainLevelName();
diff --git a/patches/api/0270-Add-basic-Datapack-API.patch b/patches/api/0270-Add-basic-Datapack-API.patch
index 796a519bd9..aa35173508 100644
--- a/patches/api/0270-Add-basic-Datapack-API.patch
+++ b/patches/api/0270-Add-basic-Datapack-API.patch
@@ -277,10 +277,10 @@ index 42930006b6425b5d82233e4ffe7025ce5397b277..45693e6c02eac37eb609cd3c59253a94
// Paper end
}
diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index be1c8c9b27ad792f2b0ff1cec0c575eb1fc3023a..f08d241d5350dfdb0d325e89190c90f79a5c791e 100644
+index a5e5c252405a7b940afbb6715abcda7ec9007dd3..1f241e74c256eb3e824a029798f623ad9d38efe2 100644
--- a/src/main/java/org/bukkit/entity/EntityType.java
+++ b/src/main/java/org/bukkit/entity/EntityType.java
-@@ -492,6 +492,7 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans
+@@ -496,6 +496,7 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans
* @param world the world to check
* @return true if this EntityType can be used to spawn an Entity for this World.
*/
diff --git a/patches/api/0272-ItemStack-repair-check-API.patch b/patches/api/0272-ItemStack-repair-check-API.patch
index 6385fdeb47..149c1f2852 100644
--- a/patches/api/0272-ItemStack-repair-check-API.patch
+++ b/patches/api/0272-ItemStack-repair-check-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack repair check API
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index f33426207c403906c3c6fb99e848fd7ecbffd127..3ef6ffb506a7fdd05a08353f342e45de8066ca19 100644
+index ce9bbe4a9010ca31ace1f0b7fb67eab0f13ac97d..5015cfe26522468ac7decbf6205d654c0e60207b 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -182,5 +182,15 @@ public interface UnsafeValues {
+@@ -187,5 +187,15 @@ public interface UnsafeValues {
* @return the server's protocol version
*/
int getProtocolVersion();
diff --git a/patches/api/0304-Get-entity-default-attributes.patch b/patches/api/0304-Get-entity-default-attributes.patch
index deca580fd3..d330cf091c 100644
--- a/patches/api/0304-Get-entity-default-attributes.patch
+++ b/patches/api/0304-Get-entity-default-attributes.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Get entity default attributes
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 3ef6ffb506a7fdd05a08353f342e45de8066ca19..b8627d845bbc8c845af364408d3b6abb57c7308b 100644
+index 5015cfe26522468ac7decbf6205d654c0e60207b..1a4a42991449f30db0f702e7ddeac950e4a805ac 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -192,5 +192,22 @@ public interface UnsafeValues {
+@@ -197,5 +197,22 @@ public interface UnsafeValues {
* @return true if valid repair, false if not
*/
public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial);
@@ -32,10 +32,10 @@ index 3ef6ffb506a7fdd05a08353f342e45de8066ca19..b8627d845bbc8c845af364408d3b6abb
// Paper end
}
diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index f08d241d5350dfdb0d325e89190c90f79a5c791e..6521a20d69a4c8e75be7e9b3fdebbc25b843ec1b 100644
+index 1f241e74c256eb3e824a029798f623ad9d38efe2..9e115cec6232b22760e91ade671f81461c0c0364 100644
--- a/src/main/java/org/bukkit/entity/EntityType.java
+++ b/src/main/java/org/bukkit/entity/EntityType.java
-@@ -484,6 +484,25 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans
+@@ -488,6 +488,25 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans
Preconditions.checkArgument(this != UNKNOWN, "UNKNOWN entities do not have translation keys");
return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this);
}
diff --git a/patches/api/0312-Add-Raw-Byte-Entity-Serialization.patch b/patches/api/0312-Add-Raw-Byte-Entity-Serialization.patch
index abe5d9f163..820ac462d8 100644
--- a/patches/api/0312-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/api/0312-Add-Raw-Byte-Entity-Serialization.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add Raw Byte Entity Serialization
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index b8627d845bbc8c845af364408d3b6abb57c7308b..ef22077e2bf9709bef21e259cfa6435f80305b5e 100644
+index 1a4a42991449f30db0f702e7ddeac950e4a805ac..2d612f2c6b483eec6fbc7ad35d5d878359db4770 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -164,6 +164,14 @@ public interface UnsafeValues {
+@@ -169,6 +169,14 @@ public interface UnsafeValues {
ItemStack deserializeItem(byte[] data);
diff --git a/patches/api/0329-More-PotionEffectType-API.patch b/patches/api/0329-More-PotionEffectType-API.patch
index c23d878a4d..6ee4c1216b 100644
--- a/patches/api/0329-More-PotionEffectType-API.patch
+++ b/patches/api/0329-More-PotionEffectType-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] More PotionEffectType API
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index 39997047be9f3796d8d5d8934eb361e23d273ebd..6112db5d1153d045f2271038bada6b46d1a6a051 100644
+index 759925decc0b66e8f5861f3f8bd9bee0ed66181e..833eea6ee8c7fd8ccb3f2eed4285a3eb8311448c 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
-@@ -361,6 +361,15 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -367,6 +367,15 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
* @see GameEvent
*/
Registry<GameEvent> GAME_EVENT = io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(io.papermc.paper.registry.RegistryKey.GAME_EVENT); // Paper
diff --git a/patches/api/0358-Add-NamespacedKey-biome-methods.patch b/patches/api/0358-Add-NamespacedKey-biome-methods.patch
index be2c0e7b2a..20a2934887 100644
--- a/patches/api/0358-Add-NamespacedKey-biome-methods.patch
+++ b/patches/api/0358-Add-NamespacedKey-biome-methods.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add NamespacedKey biome methods
Co-authored-by: Thonk <[email protected]>
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index ef22077e2bf9709bef21e259cfa6435f80305b5e..14cf57a96f47ba666f05cedbc0005ff0fec6a33d 100644
+index 2d612f2c6b483eec6fbc7ad35d5d878359db4770..b2ab190a73946ad2a5750c2408036cc3641e23f8 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -218,4 +218,33 @@ public interface UnsafeValues {
+@@ -223,4 +223,37 @@ public interface UnsafeValues {
*/
@org.jetbrains.annotations.NotNull org.bukkit.attribute.Attributable getDefaultEntityAttributes(@org.jetbrains.annotations.NotNull NamespacedKey entityKey);
// Paper end
@@ -22,9 +22,11 @@ index ef22077e2bf9709bef21e259cfa6435f80305b5e..14cf57a96f47ba666f05cedbc0005ff0
+ * @param x X-coordinate of the block
+ * @param y Y-coordinate of the block
+ * @param z Z-coordinate of the block
++ * @deprecated custom biomes are properly supported in API now
+ * @return the biome's {@link NamespacedKey}
+ */
+ @org.jetbrains.annotations.NotNull
++ @Deprecated(since = "1.21.3", forRemoval = true)
+ NamespacedKey getBiomeKey(RegionAccessor accessor, int x, int y, int z);
+
+ /**
@@ -38,8 +40,10 @@ index ef22077e2bf9709bef21e259cfa6435f80305b5e..14cf57a96f47ba666f05cedbc0005ff0
+ * @param y Y-coordinate of the block
+ * @param z Z-coordinate of the block
+ * @param biomeKey Biome key
++ * @deprecated custom biomes are properly supported in API now
+ * @throws IllegalStateException if no biome by the given key is registered.
+ */
++ @Deprecated(since = "1.21.3", forRemoval = true)
+ void setBiomeKey(RegionAccessor accessor, int x, int y, int z, NamespacedKey biomeKey);
+ // Paper end - namespaced key biome methods
}
diff --git a/patches/api/0378-Add-missing-Fluid-type.patch b/patches/api/0378-Add-missing-Fluid-type.patch
deleted file mode 100644
index c260bf8497..0000000000
--- a/patches/api/0378-Add-missing-Fluid-type.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <[email protected]>
-Date: Sun, 4 Dec 2022 10:07:16 -0800
-Subject: [PATCH] Add missing Fluid type
-
-
-diff --git a/src/main/java/org/bukkit/Fluid.java b/src/main/java/org/bukkit/Fluid.java
-index 4cc974689a229e73ddbf2c353ac0fe23da03a5b2..7202b44a65e8699cf64329e441e83d4dd1779c19 100644
---- a/src/main/java/org/bukkit/Fluid.java
-+++ b/src/main/java/org/bukkit/Fluid.java
-@@ -8,6 +8,12 @@ import org.jetbrains.annotations.NotNull;
- */
- public enum Fluid implements Keyed {
-
-+ // Paper start
-+ /**
-+ * No fluid.
-+ */
-+ EMPTY,
-+ // Paper end
- /**
- * Stationary water.
- */
diff --git a/patches/api/0379-fix-Instruments.patch b/patches/api/0378-fix-Instruments.patch
index 468dc80a34..468dc80a34 100644
--- a/patches/api/0379-fix-Instruments.patch
+++ b/patches/api/0378-fix-Instruments.patch
diff --git a/patches/api/0380-Add-BlockLockCheckEvent.patch b/patches/api/0379-Add-BlockLockCheckEvent.patch
index b9a9adb70c..b9a9adb70c 100644
--- a/patches/api/0380-Add-BlockLockCheckEvent.patch
+++ b/patches/api/0379-Add-BlockLockCheckEvent.patch
diff --git a/patches/api/0381-Add-Sneaking-API-for-Entities.patch b/patches/api/0380-Add-Sneaking-API-for-Entities.patch
index ccee097cf0..ccee097cf0 100644
--- a/patches/api/0381-Add-Sneaking-API-for-Entities.patch
+++ b/patches/api/0380-Add-Sneaking-API-for-Entities.patch
diff --git a/patches/api/0382-Improve-PortalEvents.patch b/patches/api/0381-Improve-PortalEvents.patch
index 88c76230fd..88c76230fd 100644
--- a/patches/api/0382-Improve-PortalEvents.patch
+++ b/patches/api/0381-Improve-PortalEvents.patch
diff --git a/patches/api/0383-Flying-Fall-Damage-API.patch b/patches/api/0382-Flying-Fall-Damage-API.patch
index f0e6b1e6ca..f0e6b1e6ca 100644
--- a/patches/api/0383-Flying-Fall-Damage-API.patch
+++ b/patches/api/0382-Flying-Fall-Damage-API.patch
diff --git a/patches/api/0384-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch b/patches/api/0383-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
index 475ca65bbf..475ca65bbf 100644
--- a/patches/api/0384-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
+++ b/patches/api/0383-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
diff --git a/patches/api/0385-Win-Screen-API.patch b/patches/api/0384-Win-Screen-API.patch
index 8911de9fcb..8911de9fcb 100644
--- a/patches/api/0385-Win-Screen-API.patch
+++ b/patches/api/0384-Win-Screen-API.patch
diff --git a/patches/api/0386-Add-Entity-Body-Yaw-API.patch b/patches/api/0385-Add-Entity-Body-Yaw-API.patch
index 17277b2e80..17277b2e80 100644
--- a/patches/api/0386-Add-Entity-Body-Yaw-API.patch
+++ b/patches/api/0385-Add-Entity-Body-Yaw-API.patch
diff --git a/patches/api/0387-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch b/patches/api/0386-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
index c375206bf7..c375206bf7 100644
--- a/patches/api/0387-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
+++ b/patches/api/0386-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
diff --git a/patches/api/0388-Add-EntityFertilizeEggEvent.patch b/patches/api/0387-Add-EntityFertilizeEggEvent.patch
index 8c15e656f8..8c15e656f8 100644
--- a/patches/api/0388-Add-EntityFertilizeEggEvent.patch
+++ b/patches/api/0387-Add-EntityFertilizeEggEvent.patch
diff --git a/patches/api/0389-Add-CompostItemEvent-and-EntityCompostItemEvent.patch b/patches/api/0388-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
index e639e46b4d..e639e46b4d 100644
--- a/patches/api/0389-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
+++ b/patches/api/0388-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
diff --git a/patches/api/0390-Add-Shearable-API.patch b/patches/api/0389-Add-Shearable-API.patch
index 8dd853b0fb..8dd853b0fb 100644
--- a/patches/api/0390-Add-Shearable-API.patch
+++ b/patches/api/0389-Add-Shearable-API.patch
diff --git a/patches/api/0391-Fix-SpawnEggMeta-get-setSpawnedType.patch b/patches/api/0390-Fix-SpawnEggMeta-get-setSpawnedType.patch
index 27abcd1f93..27abcd1f93 100644
--- a/patches/api/0391-Fix-SpawnEggMeta-get-setSpawnedType.patch
+++ b/patches/api/0390-Fix-SpawnEggMeta-get-setSpawnedType.patch
diff --git a/patches/api/0392-Add-Mob-Experience-reward-API.patch b/patches/api/0391-Add-Mob-Experience-reward-API.patch
index 354d6d1eb4..354d6d1eb4 100644
--- a/patches/api/0392-Add-Mob-Experience-reward-API.patch
+++ b/patches/api/0391-Add-Mob-Experience-reward-API.patch
diff --git a/patches/api/0393-Expand-PlayerItemMendEvent.patch b/patches/api/0392-Expand-PlayerItemMendEvent.patch
index 95b15a4753..95b15a4753 100644
--- a/patches/api/0393-Expand-PlayerItemMendEvent.patch
+++ b/patches/api/0392-Expand-PlayerItemMendEvent.patch
diff --git a/patches/api/0394-Add-method-to-remove-all-active-potion-effects.patch b/patches/api/0393-Add-method-to-remove-all-active-potion-effects.patch
index a9d228f158..a9d228f158 100644
--- a/patches/api/0394-Add-method-to-remove-all-active-potion-effects.patch
+++ b/patches/api/0393-Add-method-to-remove-all-active-potion-effects.patch
diff --git a/patches/api/0395-Folia-scheduler-and-owned-region-API.patch b/patches/api/0394-Folia-scheduler-and-owned-region-API.patch
index b07676cfef..b07676cfef 100644
--- a/patches/api/0395-Folia-scheduler-and-owned-region-API.patch
+++ b/patches/api/0394-Folia-scheduler-and-owned-region-API.patch
diff --git a/patches/api/0396-Add-event-for-player-editing-sign.patch b/patches/api/0395-Add-event-for-player-editing-sign.patch
index c0b95f9d58..c0b95f9d58 100644
--- a/patches/api/0396-Add-event-for-player-editing-sign.patch
+++ b/patches/api/0395-Add-event-for-player-editing-sign.patch
diff --git a/patches/api/0397-More-Sign-Block-API.patch b/patches/api/0396-More-Sign-Block-API.patch
index 57b372521c..57b372521c 100644
--- a/patches/api/0397-More-Sign-Block-API.patch
+++ b/patches/api/0396-More-Sign-Block-API.patch
diff --git a/patches/api/0398-Fix-BanList-API.patch b/patches/api/0397-Fix-BanList-API.patch
index 0d0a781306..0d0a781306 100644
--- a/patches/api/0398-Fix-BanList-API.patch
+++ b/patches/api/0397-Fix-BanList-API.patch
diff --git a/patches/api/0399-Add-whitelist-events.patch b/patches/api/0398-Add-whitelist-events.patch
index 3f768a8124..3f768a8124 100644
--- a/patches/api/0399-Add-whitelist-events.patch
+++ b/patches/api/0398-Add-whitelist-events.patch
diff --git a/patches/api/0400-API-for-updating-recipes-on-clients.patch b/patches/api/0399-API-for-updating-recipes-on-clients.patch
index 4a98cf2e1e..4a98cf2e1e 100644
--- a/patches/api/0400-API-for-updating-recipes-on-clients.patch
+++ b/patches/api/0399-API-for-updating-recipes-on-clients.patch
diff --git a/patches/api/0401-Add-PlayerFailMoveEvent.patch b/patches/api/0400-Add-PlayerFailMoveEvent.patch
index e6903a2b56..e6903a2b56 100644
--- a/patches/api/0401-Add-PlayerFailMoveEvent.patch
+++ b/patches/api/0400-Add-PlayerFailMoveEvent.patch
diff --git a/patches/api/0402-Fix-custom-statistic-criteria-creation.patch b/patches/api/0401-Fix-custom-statistic-criteria-creation.patch
index ff4bad9d35..bfa683fb84 100644
--- a/patches/api/0402-Fix-custom-statistic-criteria-creation.patch
+++ b/patches/api/0401-Fix-custom-statistic-criteria-creation.patch
@@ -5,11 +5,11 @@ Subject: [PATCH] Fix custom statistic criteria creation
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 14cf57a96f47ba666f05cedbc0005ff0fec6a33d..57b51acd566f6ccabeea0b3f4c76b19547d35b5a 100644
+index b2ab190a73946ad2a5750c2408036cc3641e23f8..cfafd64ee39a6448e382f9903b8c462f3c454d3f 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -247,4 +247,6 @@ public interface UnsafeValues {
- */
+@@ -256,4 +256,6 @@ public interface UnsafeValues {
+ @Deprecated(since = "1.21.3", forRemoval = true)
void setBiomeKey(RegionAccessor accessor, int x, int y, int z, NamespacedKey biomeKey);
// Paper end - namespaced key biome methods
+
diff --git a/patches/api/0403-SculkCatalyst-bloom-API.patch b/patches/api/0402-SculkCatalyst-bloom-API.patch
index 49d8c8c2bd..49d8c8c2bd 100644
--- a/patches/api/0403-SculkCatalyst-bloom-API.patch
+++ b/patches/api/0402-SculkCatalyst-bloom-API.patch
diff --git a/patches/api/0404-API-for-an-entity-s-scoreboard-name.patch b/patches/api/0403-API-for-an-entity-s-scoreboard-name.patch
index 1fb9128be8..1fb9128be8 100644
--- a/patches/api/0404-API-for-an-entity-s-scoreboard-name.patch
+++ b/patches/api/0403-API-for-an-entity-s-scoreboard-name.patch
diff --git a/patches/api/0405-Deprecate-and-replace-methods-with-old-StructureType.patch b/patches/api/0404-Deprecate-and-replace-methods-with-old-StructureType.patch
index a832ca9f1d..a832ca9f1d 100644
--- a/patches/api/0405-Deprecate-and-replace-methods-with-old-StructureType.patch
+++ b/patches/api/0404-Deprecate-and-replace-methods-with-old-StructureType.patch
diff --git a/patches/api/0406-Add-Listing-API-for-Player.patch b/patches/api/0405-Add-Listing-API-for-Player.patch
index 3135969fe0..3135969fe0 100644
--- a/patches/api/0406-Add-Listing-API-for-Player.patch
+++ b/patches/api/0405-Add-Listing-API-for-Player.patch
diff --git a/patches/api/0407-Expose-clicked-BlockFace-during-BlockDamageEvent.patch b/patches/api/0406-Expose-clicked-BlockFace-during-BlockDamageEvent.patch
index 34d1940866..34d1940866 100644
--- a/patches/api/0407-Expose-clicked-BlockFace-during-BlockDamageEvent.patch
+++ b/patches/api/0406-Expose-clicked-BlockFace-during-BlockDamageEvent.patch
diff --git a/patches/api/0408-Fix-NPE-on-Boat-getStatus.patch b/patches/api/0407-Fix-NPE-on-Boat-getStatus.patch
index 985aab9f2b..985aab9f2b 100644
--- a/patches/api/0408-Fix-NPE-on-Boat-getStatus.patch
+++ b/patches/api/0407-Fix-NPE-on-Boat-getStatus.patch
diff --git a/patches/api/0409-Expand-Pose-API.patch b/patches/api/0408-Expand-Pose-API.patch
index a7ac9f7567..a7ac9f7567 100644
--- a/patches/api/0409-Expand-Pose-API.patch
+++ b/patches/api/0408-Expand-Pose-API.patch
diff --git a/patches/api/0410-MerchantRecipe-add-copy-constructor.patch b/patches/api/0409-MerchantRecipe-add-copy-constructor.patch
index 1c5ba2803c..1c5ba2803c 100644
--- a/patches/api/0410-MerchantRecipe-add-copy-constructor.patch
+++ b/patches/api/0409-MerchantRecipe-add-copy-constructor.patch
diff --git a/patches/api/0411-More-DragonBattle-API.patch b/patches/api/0410-More-DragonBattle-API.patch
index e25208ec19..e25208ec19 100644
--- a/patches/api/0411-More-DragonBattle-API.patch
+++ b/patches/api/0410-More-DragonBattle-API.patch
diff --git a/patches/api/0412-Add-PlayerPickItemEvent.patch b/patches/api/0411-Add-PlayerPickItemEvent.patch
index 0532447562..0532447562 100644
--- a/patches/api/0412-Add-PlayerPickItemEvent.patch
+++ b/patches/api/0411-Add-PlayerPickItemEvent.patch
diff --git a/patches/api/0413-Allow-trident-custom-damage.patch b/patches/api/0412-Allow-trident-custom-damage.patch
index 870b735548..870b735548 100644
--- a/patches/api/0413-Allow-trident-custom-damage.patch
+++ b/patches/api/0412-Allow-trident-custom-damage.patch
diff --git a/patches/api/0414-Expose-hand-during-BlockCanBuildEvent.patch b/patches/api/0413-Expose-hand-during-BlockCanBuildEvent.patch
index 97d99a40d2..97d99a40d2 100644
--- a/patches/api/0414-Expose-hand-during-BlockCanBuildEvent.patch
+++ b/patches/api/0413-Expose-hand-during-BlockCanBuildEvent.patch
diff --git a/patches/api/0415-Limit-setBurnTime-to-valid-short-values.patch b/patches/api/0414-Limit-setBurnTime-to-valid-short-values.patch
index 2faac56fd8..2faac56fd8 100644
--- a/patches/api/0415-Limit-setBurnTime-to-valid-short-values.patch
+++ b/patches/api/0414-Limit-setBurnTime-to-valid-short-values.patch
diff --git a/patches/api/0416-Add-OfflinePlayer-isConnected.patch b/patches/api/0415-Add-OfflinePlayer-isConnected.patch
index 08e2f91095..08e2f91095 100644
--- a/patches/api/0416-Add-OfflinePlayer-isConnected.patch
+++ b/patches/api/0415-Add-OfflinePlayer-isConnected.patch
diff --git a/patches/api/0417-Add-titleOverride-to-InventoryOpenEvent.patch b/patches/api/0416-Add-titleOverride-to-InventoryOpenEvent.patch
index 68e755f010..68e755f010 100644
--- a/patches/api/0417-Add-titleOverride-to-InventoryOpenEvent.patch
+++ b/patches/api/0416-Add-titleOverride-to-InventoryOpenEvent.patch
diff --git a/patches/api/0418-Allow-proper-checking-of-empty-item-stacks.patch b/patches/api/0417-Allow-proper-checking-of-empty-item-stacks.patch
index 0fe58e0369..0fe58e0369 100644
--- a/patches/api/0418-Allow-proper-checking-of-empty-item-stacks.patch
+++ b/patches/api/0417-Allow-proper-checking-of-empty-item-stacks.patch
diff --git a/patches/api/0419-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch b/patches/api/0418-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch
index e72f86be5d..e72f86be5d 100644
--- a/patches/api/0419-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch
+++ b/patches/api/0418-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch
diff --git a/patches/api/0420-Add-player-idle-duration-API.patch b/patches/api/0419-Add-player-idle-duration-API.patch
index ac250c0760..ac250c0760 100644
--- a/patches/api/0420-Add-player-idle-duration-API.patch
+++ b/patches/api/0419-Add-player-idle-duration-API.patch
diff --git a/patches/api/0421-Add-API-to-get-the-collision-shape-of-a-block-before.patch b/patches/api/0420-Add-API-to-get-the-collision-shape-of-a-block-before.patch
index 3bb30787dc..3bb30787dc 100644
--- a/patches/api/0421-Add-API-to-get-the-collision-shape-of-a-block-before.patch
+++ b/patches/api/0420-Add-API-to-get-the-collision-shape-of-a-block-before.patch
diff --git a/patches/api/0422-Add-predicate-for-blocks-when-raytracing.patch b/patches/api/0421-Add-predicate-for-blocks-when-raytracing.patch
index e24c9fcedf..e24c9fcedf 100644
--- a/patches/api/0422-Add-predicate-for-blocks-when-raytracing.patch
+++ b/patches/api/0421-Add-predicate-for-blocks-when-raytracing.patch
diff --git a/patches/api/0423-Add-hand-to-fish-event-for-all-player-interactions.patch b/patches/api/0422-Add-hand-to-fish-event-for-all-player-interactions.patch
index b431332b9a..b431332b9a 100644
--- a/patches/api/0423-Add-hand-to-fish-event-for-all-player-interactions.patch
+++ b/patches/api/0422-Add-hand-to-fish-event-for-all-player-interactions.patch
diff --git a/patches/api/0424-Attribute-Modifier-API-improvements.patch b/patches/api/0423-Attribute-Modifier-API-improvements.patch
index d4b0442c30..d4b0442c30 100644
--- a/patches/api/0424-Attribute-Modifier-API-improvements.patch
+++ b/patches/api/0423-Attribute-Modifier-API-improvements.patch
diff --git a/patches/api/0425-Expand-LingeringPotion-API.patch b/patches/api/0424-Expand-LingeringPotion-API.patch
index 40b5a5f547..40b5a5f547 100644
--- a/patches/api/0425-Expand-LingeringPotion-API.patch
+++ b/patches/api/0424-Expand-LingeringPotion-API.patch
diff --git a/patches/api/0426-Remove-unnecessary-durability-check-in-ItemStack-isS.patch b/patches/api/0425-Remove-unnecessary-durability-check-in-ItemStack-isS.patch
index 88ecd35099..88ecd35099 100644
--- a/patches/api/0426-Remove-unnecessary-durability-check-in-ItemStack-isS.patch
+++ b/patches/api/0425-Remove-unnecessary-durability-check-in-ItemStack-isS.patch
diff --git a/patches/api/0427-Add-Structure-check-API.patch b/patches/api/0426-Add-Structure-check-API.patch
index 43073fe8f4..43073fe8f4 100644
--- a/patches/api/0427-Add-Structure-check-API.patch
+++ b/patches/api/0426-Add-Structure-check-API.patch
diff --git a/patches/api/0428-Experimental-annotations-change.patch b/patches/api/0427-Experimental-annotations-change.patch
index 5660d684ce..5660d684ce 100644
--- a/patches/api/0428-Experimental-annotations-change.patch
+++ b/patches/api/0427-Experimental-annotations-change.patch
diff --git a/patches/api/0429-Add-more-scoreboard-API.patch b/patches/api/0428-Add-more-scoreboard-API.patch
index 201af36b0c..201af36b0c 100644
--- a/patches/api/0429-Add-more-scoreboard-API.patch
+++ b/patches/api/0428-Add-more-scoreboard-API.patch
diff --git a/patches/api/0430-Improve-Registry.patch b/patches/api/0429-Improve-Registry.patch
index 607568bd87..13b36b1a92 100644
--- a/patches/api/0430-Improve-Registry.patch
+++ b/patches/api/0429-Improve-Registry.patch
@@ -49,10 +49,10 @@ index c9f02466a04d20579fe2258bb02acf98e163ca81..bffd4ab2d08e5c3f83a49a31e1e55cc1
@Override
public @NotNull String translationKey() {
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index 6112db5d1153d045f2271038bada6b46d1a6a051..67cf3fcad21a8977d6fad172cc776b628ab68f25 100644
+index 833eea6ee8c7fd8ccb3f2eed4285a3eb8311448c..e4d4ac6436f341f5d9de95e1ab56461fd68a3dc2 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
-@@ -379,6 +379,79 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -385,6 +385,79 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
@Nullable
T get(@NotNull NamespacedKey key);
@@ -132,7 +132,7 @@ index 6112db5d1153d045f2271038bada6b46d1a6a051..67cf3fcad21a8977d6fad172cc776b62
/**
* Get the object by its key.
*
-@@ -475,5 +548,12 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -481,5 +554,12 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
public Class<T> getType() {
return this.type;
}
diff --git a/patches/api/0431-Add-experience-points-API.patch b/patches/api/0430-Add-experience-points-API.patch
index 5581883301..5581883301 100644
--- a/patches/api/0431-Add-experience-points-API.patch
+++ b/patches/api/0430-Add-experience-points-API.patch
diff --git a/patches/api/0432-Add-missing-InventoryType.patch b/patches/api/0431-Add-missing-InventoryType.patch
index 3735af5696..3735af5696 100644
--- a/patches/api/0432-Add-missing-InventoryType.patch
+++ b/patches/api/0431-Add-missing-InventoryType.patch
diff --git a/patches/api/0433-Add-drops-to-shear-events.patch b/patches/api/0432-Add-drops-to-shear-events.patch
index c87460e48d..c87460e48d 100644
--- a/patches/api/0433-Add-drops-to-shear-events.patch
+++ b/patches/api/0432-Add-drops-to-shear-events.patch
diff --git a/patches/api/0434-Add-HiddenPotionEffect-API.patch b/patches/api/0433-Add-HiddenPotionEffect-API.patch
index 03c31e4ff8..03c31e4ff8 100644
--- a/patches/api/0434-Add-HiddenPotionEffect-API.patch
+++ b/patches/api/0433-Add-HiddenPotionEffect-API.patch
diff --git a/patches/api/0435-Add-PlayerShieldDisableEvent.patch b/patches/api/0434-Add-PlayerShieldDisableEvent.patch
index ddc6deadf5..ddc6deadf5 100644
--- a/patches/api/0435-Add-PlayerShieldDisableEvent.patch
+++ b/patches/api/0434-Add-PlayerShieldDisableEvent.patch
diff --git a/patches/api/0436-Return-null-for-empty-String-in-NamespacedKey.fromSt.patch b/patches/api/0435-Return-null-for-empty-String-in-NamespacedKey.fromSt.patch
index 93ba48c77c..93ba48c77c 100644
--- a/patches/api/0436-Return-null-for-empty-String-in-NamespacedKey.fromSt.patch
+++ b/patches/api/0435-Return-null-for-empty-String-in-NamespacedKey.fromSt.patch
diff --git a/patches/api/0437-Add-BlockStateMeta-clearBlockState.patch b/patches/api/0436-Add-BlockStateMeta-clearBlockState.patch
index 7e8c47a8e2..7e8c47a8e2 100644
--- a/patches/api/0437-Add-BlockStateMeta-clearBlockState.patch
+++ b/patches/api/0436-Add-BlockStateMeta-clearBlockState.patch
diff --git a/patches/api/0438-Expose-LootTable-of-DecoratedPot.patch b/patches/api/0437-Expose-LootTable-of-DecoratedPot.patch
index 42a8de4123..42a8de4123 100644
--- a/patches/api/0438-Expose-LootTable-of-DecoratedPot.patch
+++ b/patches/api/0437-Expose-LootTable-of-DecoratedPot.patch
diff --git a/patches/api/0439-Add-ShulkerDuplicateEvent.patch b/patches/api/0438-Add-ShulkerDuplicateEvent.patch
index bed71db255..bed71db255 100644
--- a/patches/api/0439-Add-ShulkerDuplicateEvent.patch
+++ b/patches/api/0438-Add-ShulkerDuplicateEvent.patch
diff --git a/patches/api/0440-Add-api-for-spawn-egg-texture-colors.patch b/patches/api/0439-Add-api-for-spawn-egg-texture-colors.patch
index 14a80bca1c..a239d4c100 100644
--- a/patches/api/0440-Add-api-for-spawn-egg-texture-colors.patch
+++ b/patches/api/0439-Add-api-for-spawn-egg-texture-colors.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add api for spawn egg texture colors
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 57b51acd566f6ccabeea0b3f4c76b19547d35b5a..38e84d98670b45b1f855885cf07ce13f0433fa49 100644
+index cfafd64ee39a6448e382f9903b8c462f3c454d3f..94913f522d3c060c609f6ec7d7b0d92ea5587fc8 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -249,4 +249,17 @@ public interface UnsafeValues {
+@@ -258,4 +258,17 @@ public interface UnsafeValues {
// Paper end - namespaced key biome methods
String getStatisticCriteriaKey(@NotNull org.bukkit.Statistic statistic); // Paper - fix custom stats criteria creation
diff --git a/patches/api/0441-Add-Lifecycle-Event-system.patch b/patches/api/0440-Add-Lifecycle-Event-system.patch
index 2d2d639018..5dfac8ef46 100644
--- a/patches/api/0441-Add-Lifecycle-Event-system.patch
+++ b/patches/api/0440-Add-Lifecycle-Event-system.patch
@@ -546,10 +546,10 @@ index 0000000000000000000000000000000000000000..f70814de0d6c40b2c1c9921b8abdd116
+ }
+}
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 38e84d98670b45b1f855885cf07ce13f0433fa49..81b1c024e27a7021982336b94fc1e1ba33308f6c 100644
+index 94913f522d3c060c609f6ec7d7b0d92ea5587fc8..a0b02efdb3beed93cb1656e840f24cb98f5fd555 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -262,4 +262,12 @@ public interface UnsafeValues {
+@@ -271,4 +271,12 @@ public interface UnsafeValues {
*/
@Nullable org.bukkit.Color getSpawnEggLayerColor(org.bukkit.entity.EntityType entityType, int layer);
// Paper end - spawn egg color visibility
diff --git a/patches/api/0442-ItemStack-Tooltip-API.patch b/patches/api/0441-ItemStack-Tooltip-API.patch
index 1d0644e6e1..a3c4cf2de9 100644
--- a/patches/api/0442-ItemStack-Tooltip-API.patch
+++ b/patches/api/0441-ItemStack-Tooltip-API.patch
@@ -110,10 +110,10 @@ index 0000000000000000000000000000000000000000..a649b90dfac6000c01579a48234a1138
+ }
+}
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 81b1c024e27a7021982336b94fc1e1ba33308f6c..e5144471056e69586c1693a9264a3995387de3cc 100644
+index a0b02efdb3beed93cb1656e840f24cb98f5fd555..b503b5e13c51580367d53939ad4c19a7718c22ce 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -270,4 +270,6 @@ public interface UnsafeValues {
+@@ -279,4 +279,6 @@ public interface UnsafeValues {
@org.jetbrains.annotations.ApiStatus.Internal
io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager<org.bukkit.plugin.Plugin> createPluginLifecycleEventManager(final org.bukkit.plugin.java.JavaPlugin plugin, final java.util.function.BooleanSupplier registrationCheck);
// Paper end - lifecycle event API
diff --git a/patches/api/0443-Add-getChunkSnapshot-includeLightData-parameter.patch b/patches/api/0442-Add-getChunkSnapshot-includeLightData-parameter.patch
index 9b950f9493..9b950f9493 100644
--- a/patches/api/0443-Add-getChunkSnapshot-includeLightData-parameter.patch
+++ b/patches/api/0442-Add-getChunkSnapshot-includeLightData-parameter.patch
diff --git a/patches/api/0444-Add-FluidState-API.patch b/patches/api/0443-Add-FluidState-API.patch
index 8f786918cb..8f786918cb 100644
--- a/patches/api/0444-Add-FluidState-API.patch
+++ b/patches/api/0443-Add-FluidState-API.patch
diff --git a/patches/api/0445-add-number-format-api.patch b/patches/api/0444-add-number-format-api.patch
index 8d36669b0a..8d36669b0a 100644
--- a/patches/api/0445-add-number-format-api.patch
+++ b/patches/api/0444-add-number-format-api.patch
diff --git a/patches/api/0446-improve-BanList-types.patch b/patches/api/0445-improve-BanList-types.patch
index bfb2a6a550..bfb2a6a550 100644
--- a/patches/api/0446-improve-BanList-types.patch
+++ b/patches/api/0445-improve-BanList-types.patch
diff --git a/patches/api/0447-Suspicious-Effect-Entry-API.patch b/patches/api/0446-Suspicious-Effect-Entry-API.patch
index d591d57ce9..d591d57ce9 100644
--- a/patches/api/0447-Suspicious-Effect-Entry-API.patch
+++ b/patches/api/0446-Suspicious-Effect-Entry-API.patch
diff --git a/patches/api/0448-Fix-DamageSource-API.patch b/patches/api/0447-Fix-DamageSource-API.patch
index efe4403e2c..efe4403e2c 100644
--- a/patches/api/0448-Fix-DamageSource-API.patch
+++ b/patches/api/0447-Fix-DamageSource-API.patch
diff --git a/patches/api/0449-Expanded-Hopper-API.patch b/patches/api/0448-Expanded-Hopper-API.patch
index 51cb6dfee2..51cb6dfee2 100644
--- a/patches/api/0449-Expanded-Hopper-API.patch
+++ b/patches/api/0448-Expanded-Hopper-API.patch
diff --git a/patches/api/0450-Clone-mutables-to-prevent-unexpected-issues.patch b/patches/api/0449-Clone-mutables-to-prevent-unexpected-issues.patch
index 86b3ab4bcf..86b3ab4bcf 100644
--- a/patches/api/0450-Clone-mutables-to-prevent-unexpected-issues.patch
+++ b/patches/api/0449-Clone-mutables-to-prevent-unexpected-issues.patch
diff --git a/patches/api/0451-Add-BlockBreakProgressUpdateEvent.patch b/patches/api/0450-Add-BlockBreakProgressUpdateEvent.patch
index 9a1913895b..9a1913895b 100644
--- a/patches/api/0451-Add-BlockBreakProgressUpdateEvent.patch
+++ b/patches/api/0450-Add-BlockBreakProgressUpdateEvent.patch
diff --git a/patches/api/0452-Deprecate-ItemStack-setType.patch b/patches/api/0451-Deprecate-ItemStack-setType.patch
index 84fbcf3899..84fbcf3899 100644
--- a/patches/api/0452-Deprecate-ItemStack-setType.patch
+++ b/patches/api/0451-Deprecate-ItemStack-setType.patch
diff --git a/patches/api/0453-Item-Mutation-Fixes.patch b/patches/api/0452-Item-Mutation-Fixes.patch
index ccd77b7fbc..ccd77b7fbc 100644
--- a/patches/api/0453-Item-Mutation-Fixes.patch
+++ b/patches/api/0452-Item-Mutation-Fixes.patch
diff --git a/patches/api/0454-API-for-checking-sent-chunks.patch b/patches/api/0453-API-for-checking-sent-chunks.patch
index 0c353a8070..0c353a8070 100644
--- a/patches/api/0454-API-for-checking-sent-chunks.patch
+++ b/patches/api/0453-API-for-checking-sent-chunks.patch
diff --git a/patches/api/0455-Add-CartographyItemEvent.patch b/patches/api/0454-Add-CartographyItemEvent.patch
index 8bfd237e0c..8bfd237e0c 100644
--- a/patches/api/0455-Add-CartographyItemEvent.patch
+++ b/patches/api/0454-Add-CartographyItemEvent.patch
diff --git a/patches/api/0456-More-Raid-API.patch b/patches/api/0455-More-Raid-API.patch
index 947b51c645..947b51c645 100644
--- a/patches/api/0456-More-Raid-API.patch
+++ b/patches/api/0455-More-Raid-API.patch
diff --git a/patches/api/0457-Fix-SpawnerEntry-Equipment-API.patch b/patches/api/0456-Fix-SpawnerEntry-Equipment-API.patch
index e170eabd17..e170eabd17 100644
--- a/patches/api/0457-Fix-SpawnerEntry-Equipment-API.patch
+++ b/patches/api/0456-Fix-SpawnerEntry-Equipment-API.patch
diff --git a/patches/api/0458-Fix-ItemFlags.patch b/patches/api/0457-Fix-ItemFlags.patch
index 3ca141cfa5..3ca141cfa5 100644
--- a/patches/api/0458-Fix-ItemFlags.patch
+++ b/patches/api/0457-Fix-ItemFlags.patch
diff --git a/patches/api/0459-Allow-modifying-library-loader-jars-bytecode.patch b/patches/api/0458-Allow-modifying-library-loader-jars-bytecode.patch
index 0c0311e790..0c0311e790 100644
--- a/patches/api/0459-Allow-modifying-library-loader-jars-bytecode.patch
+++ b/patches/api/0458-Allow-modifying-library-loader-jars-bytecode.patch
diff --git a/patches/api/0460-Add-hook-to-remap-library-jars.patch b/patches/api/0459-Add-hook-to-remap-library-jars.patch
index fe1609629e..fe1609629e 100644
--- a/patches/api/0460-Add-hook-to-remap-library-jars.patch
+++ b/patches/api/0459-Add-hook-to-remap-library-jars.patch
diff --git a/patches/api/0461-Add-GameMode-isInvulnerable.patch b/patches/api/0460-Add-GameMode-isInvulnerable.patch
index b4b81c5f52..b4b81c5f52 100644
--- a/patches/api/0461-Add-GameMode-isInvulnerable.patch
+++ b/patches/api/0460-Add-GameMode-isInvulnerable.patch
diff --git a/patches/api/0462-Expose-hasColor-to-leather-armor.patch b/patches/api/0461-Expose-hasColor-to-leather-armor.patch
index e2c609b4f0..e2c609b4f0 100644
--- a/patches/api/0462-Expose-hasColor-to-leather-armor.patch
+++ b/patches/api/0461-Expose-hasColor-to-leather-armor.patch
diff --git a/patches/api/0463-Added-API-to-get-player-ha-proxy-address.patch b/patches/api/0462-Added-API-to-get-player-ha-proxy-address.patch
index 79b1804796..79b1804796 100644
--- a/patches/api/0463-Added-API-to-get-player-ha-proxy-address.patch
+++ b/patches/api/0462-Added-API-to-get-player-ha-proxy-address.patch
diff --git a/patches/api/0464-More-Chest-Block-API.patch b/patches/api/0463-More-Chest-Block-API.patch
index 1fc3614c74..1fc3614c74 100644
--- a/patches/api/0464-More-Chest-Block-API.patch
+++ b/patches/api/0463-More-Chest-Block-API.patch
diff --git a/patches/api/0465-Brigadier-based-command-API.patch b/patches/api/0464-Brigadier-based-command-API.patch
index 2d29373bc2..2d29373bc2 100644
--- a/patches/api/0465-Brigadier-based-command-API.patch
+++ b/patches/api/0464-Brigadier-based-command-API.patch
diff --git a/patches/api/0466-Fix-issues-with-recipe-API.patch b/patches/api/0465-Fix-issues-with-recipe-API.patch
index 646143b638..646143b638 100644
--- a/patches/api/0466-Fix-issues-with-recipe-API.patch
+++ b/patches/api/0465-Fix-issues-with-recipe-API.patch
diff --git a/patches/api/0467-Fix-equipment-slot-and-group-API.patch b/patches/api/0466-Fix-equipment-slot-and-group-API.patch
index 81d91485d7..81d91485d7 100644
--- a/patches/api/0467-Fix-equipment-slot-and-group-API.patch
+++ b/patches/api/0466-Fix-equipment-slot-and-group-API.patch
diff --git a/patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch b/patches/api/0467-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch
index 8a0f6e9468..8a0f6e9468 100644
--- a/patches/api/0468-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch
+++ b/patches/api/0467-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch
diff --git a/patches/api/0469-General-ItemMeta-fixes.patch b/patches/api/0468-General-ItemMeta-fixes.patch
index 953fd2e49c..953fd2e49c 100644
--- a/patches/api/0469-General-ItemMeta-fixes.patch
+++ b/patches/api/0468-General-ItemMeta-fixes.patch
diff --git a/patches/api/0470-Add-missing-fishing-event-state.patch b/patches/api/0469-Add-missing-fishing-event-state.patch
index 94cba543ec..94cba543ec 100644
--- a/patches/api/0470-Add-missing-fishing-event-state.patch
+++ b/patches/api/0469-Add-missing-fishing-event-state.patch
diff --git a/patches/api/0471-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch b/patches/api/0470-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch
index 3efcc02654..3efcc02654 100644
--- a/patches/api/0471-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch
+++ b/patches/api/0470-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch
diff --git a/patches/api/0472-Registry-Modification-API.patch b/patches/api/0471-Registry-Modification-API.patch
index b51badfa70..bc1c27afcd 100644
--- a/patches/api/0472-Registry-Modification-API.patch
+++ b/patches/api/0471-Registry-Modification-API.patch
@@ -809,10 +809,10 @@ index 0000000000000000000000000000000000000000..bf49125acc8a0508bf59674bba3ed350
+ }
+}
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index 67cf3fcad21a8977d6fad172cc776b628ab68f25..b4ef3133fdd9d79a3381cf8f659ff561ab2b4fad 100644
+index e4d4ac6436f341f5d9de95e1ab56461fd68a3dc2..b56e8fc3fba40637396abef27c08806f5157b3b4 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
-@@ -378,6 +378,27 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -384,6 +384,27 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
*/
@Nullable
T get(@NotNull NamespacedKey key);
@@ -840,7 +840,7 @@ index 67cf3fcad21a8977d6fad172cc776b628ab68f25..b4ef3133fdd9d79a3381cf8f659ff561
// Paper start - improve Registry
/**
-@@ -452,6 +473,34 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -458,6 +479,34 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
}
// Paper end - improve Registry
@@ -875,7 +875,7 @@ index 67cf3fcad21a8977d6fad172cc776b628ab68f25..b4ef3133fdd9d79a3381cf8f659ff561
/**
* Get the object by its key.
*
-@@ -555,5 +604,23 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -561,5 +610,23 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
return value.getKey();
}
// Paper end - improve Registry
@@ -900,10 +900,10 @@ index 67cf3fcad21a8977d6fad172cc776b628ab68f25..b4ef3133fdd9d79a3381cf8f659ff561
}
}
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index e5144471056e69586c1693a9264a3995387de3cc..2c365ecf3f5a5252e489bc1dc04359e766a2d739 100644
+index b503b5e13c51580367d53939ad4c19a7718c22ce..5b13617e497e847ef66214f9140aea0cd41f4c4f 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -272,4 +272,6 @@ public interface UnsafeValues {
+@@ -281,4 +281,6 @@ public interface UnsafeValues {
// Paper end - lifecycle event API
@NotNull java.util.List<net.kyori.adventure.text.Component> computeTooltipLines(@NotNull ItemStack itemStack, @NotNull io.papermc.paper.inventory.tooltip.TooltipContext tooltipContext, @Nullable org.bukkit.entity.Player player); // Paper - expose itemstack tooltip lines
diff --git a/patches/api/0473-Introduce-registry-entry-and-builders.patch b/patches/api/0472-Introduce-registry-entry-and-builders.patch
index 5d06fe4974..5d06fe4974 100644
--- a/patches/api/0473-Introduce-registry-entry-and-builders.patch
+++ b/patches/api/0472-Introduce-registry-entry-and-builders.patch
diff --git a/patches/api/0474-Proxy-ItemStack-to-CraftItemStack.patch b/patches/api/0473-Proxy-ItemStack-to-CraftItemStack.patch
index 157b63eeb4..927052f343 100644
--- a/patches/api/0474-Proxy-ItemStack-to-CraftItemStack.patch
+++ b/patches/api/0473-Proxy-ItemStack-to-CraftItemStack.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Proxy ItemStack to CraftItemStack
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 2c365ecf3f5a5252e489bc1dc04359e766a2d739..06b7af5dbae3dd1c5cb024cc875162725a0b8c37 100644
+index 5b13617e497e847ef66214f9140aea0cd41f4c4f..56d16c887b7663aab7db2f7be532d9912aeb3570 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -274,4 +274,6 @@ public interface UnsafeValues {
+@@ -283,4 +283,6 @@ public interface UnsafeValues {
@NotNull java.util.List<net.kyori.adventure.text.Component> computeTooltipLines(@NotNull ItemStack itemStack, @NotNull io.papermc.paper.inventory.tooltip.TooltipContext tooltipContext, @Nullable org.bukkit.entity.Player player); // Paper - expose itemstack tooltip lines
<A extends Keyed, M> io.papermc.paper.registry.tag.@Nullable Tag<A> getTag(io.papermc.paper.registry.tag.@NotNull TagKey<A> tagKey); // Paper - hack to get tags for non-server backed registries
diff --git a/patches/api/0475-Make-a-PDC-view-accessible-directly-from-ItemStack.patch b/patches/api/0474-Make-a-PDC-view-accessible-directly-from-ItemStack.patch
index 0c48106249..0c48106249 100644
--- a/patches/api/0475-Make-a-PDC-view-accessible-directly-from-ItemStack.patch
+++ b/patches/api/0474-Make-a-PDC-view-accessible-directly-from-ItemStack.patch
diff --git a/patches/api/0476-Fix-HelpCommand-searching.patch b/patches/api/0475-Fix-HelpCommand-searching.patch
index beac489e87..beac489e87 100644
--- a/patches/api/0476-Fix-HelpCommand-searching.patch
+++ b/patches/api/0475-Fix-HelpCommand-searching.patch
diff --git a/patches/api/0477-add-Plugin-getDataPath.patch b/patches/api/0476-add-Plugin-getDataPath.patch
index 5085e262a9..5085e262a9 100644
--- a/patches/api/0477-add-Plugin-getDataPath.patch
+++ b/patches/api/0476-add-Plugin-getDataPath.patch
diff --git a/patches/api/0478-Fix-PickupStatus-getting-reset.patch b/patches/api/0477-Fix-PickupStatus-getting-reset.patch
index 6473947708..6473947708 100644
--- a/patches/api/0478-Fix-PickupStatus-getting-reset.patch
+++ b/patches/api/0477-Fix-PickupStatus-getting-reset.patch
diff --git a/patches/api/0479-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch b/patches/api/0478-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch
index 9ee5f867c6..9ee5f867c6 100644
--- a/patches/api/0479-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch
+++ b/patches/api/0478-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch
diff --git a/patches/api/0480-Improve-StandardMessenger-exception-messages.patch b/patches/api/0479-Improve-StandardMessenger-exception-messages.patch
index db8286512a..db8286512a 100644
--- a/patches/api/0480-Improve-StandardMessenger-exception-messages.patch
+++ b/patches/api/0479-Improve-StandardMessenger-exception-messages.patch
diff --git a/patches/api/0481-Add-even-more-Enchantment-API.patch b/patches/api/0480-Add-even-more-Enchantment-API.patch
index 7da290c673..7da290c673 100644
--- a/patches/api/0481-Add-even-more-Enchantment-API.patch
+++ b/patches/api/0480-Add-even-more-Enchantment-API.patch
diff --git a/patches/api/0482-Leashable-API.patch b/patches/api/0481-Leashable-API.patch
index b84951d969..b84951d969 100644
--- a/patches/api/0482-Leashable-API.patch
+++ b/patches/api/0481-Leashable-API.patch
diff --git a/patches/api/0483-Add-enchantment-seed-update-API.patch b/patches/api/0482-Add-enchantment-seed-update-API.patch
index 3b9ef102cd..3b9ef102cd 100644
--- a/patches/api/0483-Add-enchantment-seed-update-API.patch
+++ b/patches/api/0482-Add-enchantment-seed-update-API.patch
diff --git a/patches/api/0484-Deprecate-for-removal-all-OldEnum-related-methods.patch b/patches/api/0483-Deprecate-for-removal-all-OldEnum-related-methods.patch
index bac872611c..bac872611c 100644
--- a/patches/api/0484-Deprecate-for-removal-all-OldEnum-related-methods.patch
+++ b/patches/api/0483-Deprecate-for-removal-all-OldEnum-related-methods.patch
diff --git a/patches/api/0485-Add-FeatureFlag-API.patch b/patches/api/0484-Add-FeatureFlag-API.patch
index 26442d7b01..9a535e20f5 100644
--- a/patches/api/0485-Add-FeatureFlag-API.patch
+++ b/patches/api/0484-Add-FeatureFlag-API.patch
@@ -247,11 +247,11 @@ index eb33e8e671972aa308ad75a7ce9aa9ac526f470f..05ecf3cb38ff42c8b52405d900197e6b
/**
* Gets the {@link Biome} at the given {@link Location}.
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 06b7af5dbae3dd1c5cb024cc875162725a0b8c37..aa3916b0d8e40615a7ae142e254277744b4f024e 100644
+index 56d16c887b7663aab7db2f7be532d9912aeb3570..2dd4c16ac107f58752c725540ab414ff79c46ff4 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -109,8 +109,7 @@ public interface UnsafeValues {
-
+@@ -111,8 +111,7 @@ public interface UnsafeValues {
+ @Deprecated(since = "1.21.3", forRemoval = true)
String getTranslationKey(Attribute attribute);
- @Nullable
@@ -284,7 +284,7 @@ index c080c2a3323d19cb3d549aa0fe6c164666d7da75..ed534fe4983873a2d5f623f0d9d5e3ce
/**
diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index 6521a20d69a4c8e75be7e9b3fdebbc25b843ec1b..37dbd114f91a26bc09a1230d38afe7f6a99e5c28 100644
+index 9e115cec6232b22760e91ade671f81461c0c0364..c1aa59bab82aee8fd42f7149c520b45660b29082 100644
--- a/src/main/java/org/bukkit/entity/EntityType.java
+++ b/src/main/java/org/bukkit/entity/EntityType.java
@@ -45,7 +45,7 @@ import org.jetbrains.annotations.Contract;
diff --git a/patches/api/0486-Tag-Lifecycle-Events.patch b/patches/api/0485-Tag-Lifecycle-Events.patch
index 29aaad5c34..29aaad5c34 100644
--- a/patches/api/0486-Tag-Lifecycle-Events.patch
+++ b/patches/api/0485-Tag-Lifecycle-Events.patch
diff --git a/patches/api/0487-Item-serialization-as-json.patch b/patches/api/0486-Item-serialization-as-json.patch
index c2b00d8d3d..e7d391dc20 100644
--- a/patches/api/0487-Item-serialization-as-json.patch
+++ b/patches/api/0486-Item-serialization-as-json.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Item serialization as json
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index aa3916b0d8e40615a7ae142e254277744b4f024e..e4084369d12390bb5c92ab58ad34ff07afea1142 100644
+index 2dd4c16ac107f58752c725540ab414ff79c46ff4..79312bdda8ef0799e2d46decc52cfdac95b97d37 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -163,6 +163,36 @@ public interface UnsafeValues {
+@@ -168,6 +168,36 @@ public interface UnsafeValues {
ItemStack deserializeItem(byte[] data);
diff --git a/patches/api/0488-create-TileStateInventoryHolder.patch b/patches/api/0487-create-TileStateInventoryHolder.patch
index eafc877be4..eafc877be4 100644
--- a/patches/api/0488-create-TileStateInventoryHolder.patch
+++ b/patches/api/0487-create-TileStateInventoryHolder.patch
diff --git a/patches/api/0489-Add-enchantWithLevels-with-enchantment-registry-set.patch b/patches/api/0488-Add-enchantWithLevels-with-enchantment-registry-set.patch
index 1978c0b073..1978c0b073 100644
--- a/patches/api/0489-Add-enchantWithLevels-with-enchantment-registry-set.patch
+++ b/patches/api/0488-Add-enchantWithLevels-with-enchantment-registry-set.patch
diff --git a/patches/api/0490-Improve-entity-effect-API.patch b/patches/api/0489-Improve-entity-effect-API.patch
index 6ec450bcea..6ec450bcea 100644
--- a/patches/api/0490-Improve-entity-effect-API.patch
+++ b/patches/api/0489-Improve-entity-effect-API.patch
diff --git a/patches/api/0491-Add-recipeBrewTime.patch b/patches/api/0490-Add-recipeBrewTime.patch
index 16819bfe93..16819bfe93 100644
--- a/patches/api/0491-Add-recipeBrewTime.patch
+++ b/patches/api/0490-Add-recipeBrewTime.patch
diff --git a/patches/api/0492-Add-PlayerInsertLecternBookEvent.patch b/patches/api/0491-Add-PlayerInsertLecternBookEvent.patch
index 55cbd91d4a..55cbd91d4a 100644
--- a/patches/api/0492-Add-PlayerInsertLecternBookEvent.patch
+++ b/patches/api/0491-Add-PlayerInsertLecternBookEvent.patch
diff --git a/patches/api/0493-Void-damage-configuration-API.patch b/patches/api/0492-Void-damage-configuration-API.patch
index 26cbd83b18..26cbd83b18 100644
--- a/patches/api/0493-Void-damage-configuration-API.patch
+++ b/patches/api/0492-Void-damage-configuration-API.patch
diff --git a/patches/api/0494-Add-Offline-PDC-API.patch b/patches/api/0493-Add-Offline-PDC-API.patch
index 32bafdb4b3..32bafdb4b3 100644
--- a/patches/api/0494-Add-Offline-PDC-API.patch
+++ b/patches/api/0493-Add-Offline-PDC-API.patch
diff --git a/patches/api/0495-Add-AnvilView-bypassEnchantmentLevelRestriction.patch b/patches/api/0494-Add-AnvilView-bypassEnchantmentLevelRestriction.patch
index 61af6b9321..61af6b9321 100644
--- a/patches/api/0495-Add-AnvilView-bypassEnchantmentLevelRestriction.patch
+++ b/patches/api/0494-Add-AnvilView-bypassEnchantmentLevelRestriction.patch
diff --git a/patches/api/0496-fix-DamageTypeTags-init.patch b/patches/api/0495-fix-DamageTypeTags-init.patch
index 2d775b1322..2d775b1322 100644
--- a/patches/api/0496-fix-DamageTypeTags-init.patch
+++ b/patches/api/0495-fix-DamageTypeTags-init.patch
diff --git a/patches/server/0008-CB-fixes.patch b/patches/server/0008-CB-fixes.patch
index 3c0b7b9d42..50afbc86c9 100644
--- a/patches/server/0008-CB-fixes.patch
+++ b/patches/server/0008-CB-fixes.patch
@@ -31,19 +31,6 @@ index a17846ccd8581c3d6da962e977623aaab8314ec7..f6a3606b972064c4ec78487374e6197c
this.structureManager = new StructureManager(this, this.serverLevelData.worldGenOptions(), this.structureCheck); // CraftBukkit
if ((this.dimension() == Level.END && this.dimensionTypeRegistration().is(BuiltinDimensionTypes.END)) || env == org.bukkit.World.Environment.THE_END) { // CraftBukkit - Allow to create EnderDragonBattle in default and custom END
this.dragonFight = new EndDragonFight(this, this.serverLevelData.worldGenOptions().seed(), this.serverLevelData.endDragonFightData()); // CraftBukkit
-diff --git a/src/main/java/net/minecraft/world/item/enchantment/effects/SummonEntityEffect.java b/src/main/java/net/minecraft/world/item/enchantment/effects/SummonEntityEffect.java
-index ed78039b89884c41ce10d520786c5b56f7d9b154..0239495abcc7b796864976b37ece184efa9a747e 100644
---- a/src/main/java/net/minecraft/world/item/enchantment/effects/SummonEntityEffect.java
-+++ b/src/main/java/net/minecraft/world/item/enchantment/effects/SummonEntityEffect.java
-@@ -54,7 +54,7 @@ public record SummonEntityEffect(HolderSet<EntityType<?>> entityTypes, boolean j
- // CraftBukkit start
- world.strikeLightning(entity1, (context.itemStack().getItem() == Items.TRIDENT) ? LightningStrikeEvent.Cause.TRIDENT : LightningStrikeEvent.Cause.ENCHANTMENT);
- } else {
-- world.addFreshEntityWithPassengers(user, CreatureSpawnEvent.SpawnReason.ENCHANTMENT);
-+ world.addFreshEntityWithPassengers(entity1, CreatureSpawnEvent.SpawnReason.ENCHANTMENT); // Paper - Fix typo when adding summoned entity
- // CraftBukkit end
- }
-
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java b/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java
index 4f68394a94308513269f0a4c749b6a36738e3ca0..953ab7638f7242b5a11dd1de8786172443a0558c 100644
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java
@@ -115,10 +102,10 @@ index 163d54a8bf4cedbd1471e86b7ab1a1b850ed3f39..6effe47b32a8551aa6f6b11bc0315714
public class CraftScheduler implements BukkitScheduler {
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index e95c367d1c14dc28b1bf83cc461c80f454af22af..5187d48ba067d0edf55fecfc912ae5ac34452da3 100644
+index 7d39ed941cd0567d01122469a36d7a645b5aeeba..c101b342e4f0c154a35f6268253d9c30d97a98c3 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -246,7 +246,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -247,7 +247,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
try {
nmsStack.applyComponents(new ItemParser(Commands.createValidationContext(MinecraftServer.getDefaultRegistryAccess())).parse(new StringReader(arguments)).components());
} catch (CommandSyntaxException ex) {
diff --git a/patches/server/0010-Adventure.patch b/patches/server/0010-Adventure.patch
index 7375271d20..827ba628ff 100644
--- a/patches/server/0010-Adventure.patch
+++ b/patches/server/0010-Adventure.patch
@@ -3331,7 +3331,7 @@ index 49c037e961c5ca5ba8d6a870cb32ffe8719adc91..2772c19f58a35713d61aab24f6f0d6f5
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index eb61712ea067b277e7f32f887e3528faca275450..16a9142bdbbfbbbb69d1486bd119dc610094484b 100644
+index 49102177454765b8e53d0d7f47fe4bf4a33549af..c3fc8b1abe843a19347509947f4b864c1b417800 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -648,8 +648,10 @@ public final class CraftServer implements Server {
@@ -5202,7 +5202,7 @@ index c71a4971f127fdfc753306019313ce1a31201120..fd3b12477c30d1eabdbe57ea77902793
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
-index bc68a45af66699f013851869646a2c11d5a871ee..626fe2af05fecd41b777b5dd5decbedb2f17b43a 100644
+index 5dea83c1a0de4e5123430bf2f902a78969021167..2e524520308dda7ce7df98d91c89a9cfe7542862 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -1097,6 +1097,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
@@ -5635,10 +5635,10 @@ index ff040613083c015d9c52c0995591b64305fd5018..95444fd9fecc5bda5462ca8dfeca82c5
boolean hadFormat = false;
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 5187d48ba067d0edf55fecfc912ae5ac34452da3..aa02e932ea19325694b1058d749b0858465530e8 100644
+index c101b342e4f0c154a35f6268253d9c30d97a98c3..54551723c6a6aae63edee6034ef8b8d20760cf11 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -79,6 +79,43 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -80,6 +80,43 @@ public final class CraftMagicNumbers implements UnsafeValues {
private CraftMagicNumbers() {}
diff --git a/patches/server/0019-Paper-Plugins.patch b/patches/server/0019-Paper-Plugins.patch
index 2ca42e58a6..71fc842f89 100644
--- a/patches/server/0019-Paper-Plugins.patch
+++ b/patches/server/0019-Paper-Plugins.patch
@@ -7257,7 +7257,7 @@ index 9bd6056bba6ba48bada7e9cd5883b0a171b0bbc4..7399358f18dc7869fbfe414186cf1841
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 1b66c5173dd37433d895c0d804257141a3a8c588..e8c1ceed228a1dfb9f3c76b54a91d712c511ffb5 100644
+index 4ec8731a48f81aff33c7d8bcfe00dea263735e48..600e865688b423d9bb4338f413dc28418ba37748 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -280,7 +280,8 @@ public final class CraftServer implements Server {
@@ -7329,10 +7329,10 @@ index 1b66c5173dd37433d895c0d804257141a3a8c588..e8c1ceed228a1dfb9f3c76b54a91d712
this.enablePlugins(PluginLoadOrder.STARTUP);
this.enablePlugins(PluginLoadOrder.POSTWORLD);
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index aa02e932ea19325694b1058d749b0858465530e8..0ff9c62636e8709a6df252e9aaf931c9c17bd9bf 100644
+index 54551723c6a6aae63edee6034ef8b8d20760cf11..3c9cdb8c67d2704caac6488a6216d8c9c8a009ef 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -401,6 +401,16 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -402,6 +402,16 @@ public final class CraftMagicNumbers implements UnsafeValues {
net.minecraft.world.item.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(itemStack);
return nmsItemStack.getItem().getDescriptionId();
}
diff --git a/patches/server/0021-Hook-into-CB-plugin-rewrites.patch b/patches/server/0021-Hook-into-CB-plugin-rewrites.patch
index 036deead6e..4b98c18cbf 100644
--- a/patches/server/0021-Hook-into-CB-plugin-rewrites.patch
+++ b/patches/server/0021-Hook-into-CB-plugin-rewrites.patch
@@ -8,7 +8,7 @@ our own relocation. Also lets us rewrite NMS calls for when we're
debugging in an IDE pre-relocate.
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-index b60b715af8c3259aed8d386a5165653e0b6ed667..2a29f60c3e82239ab7acd85242fc3390cb9129cd 100644
+index 79b386af9eb2450b0a8abe3342bc53d3f0b86fd9..58df23162aed12f3058b5e0921a9e30b89f56a10 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
@@ -12,6 +12,7 @@ import java.util.Arrays;
@@ -27,7 +27,7 @@ index b60b715af8c3259aed8d386a5165653e0b6ed667..2a29f60c3e82239ab7acd85242fc3390
import joptsimple.OptionParser;
import joptsimple.OptionSet;
import joptsimple.OptionSpec;
-@@ -123,6 +125,40 @@ public class Commodore {
+@@ -126,6 +128,40 @@ public class Commodore {
return this.reroutes;
}
@@ -68,7 +68,7 @@ index b60b715af8c3259aed8d386a5165653e0b6ed667..2a29f60c3e82239ab7acd85242fc3390
public static void main(String[] args) {
OptionParser parser = new OptionParser();
OptionSpec<File> inputFlag = parser.acceptsAll(Arrays.asList("i", "input")).withRequiredArg().ofType(File.class).required();
-@@ -278,9 +314,49 @@ public class Commodore {
+@@ -281,9 +317,49 @@ public class Commodore {
}
return new MethodVisitor(this.api, super.visitMethod(access, name, desc, signature, exceptions)) {
@@ -118,7 +118,7 @@ index b60b715af8c3259aed8d386a5165653e0b6ed667..2a29f60c3e82239ab7acd85242fc3390
name = FieldRename.rename(pluginVersion, owner, name);
if (modern) {
-@@ -393,6 +469,13 @@ public class Commodore {
+@@ -396,6 +472,13 @@ public class Commodore {
return;
}
@@ -132,7 +132,7 @@ index b60b715af8c3259aed8d386a5165653e0b6ed667..2a29f60c3e82239ab7acd85242fc3390
if (modern) {
if (owner.equals("org/bukkit/Material") || (instantiatedMethodType != null && instantiatedMethodType.getDescriptor().startsWith("(Lorg/bukkit/Material;)"))) {
switch (name) {
-@@ -489,6 +572,13 @@ public class Commodore {
+@@ -492,6 +575,13 @@ public class Commodore {
@Override
public void visitLdcInsn(Object value) {
@@ -146,7 +146,7 @@ index b60b715af8c3259aed8d386a5165653e0b6ed667..2a29f60c3e82239ab7acd85242fc3390
if (value instanceof String && ((String) value).equals("com.mysql.jdbc.Driver")) {
super.visitLdcInsn("com.mysql.cj.jdbc.Driver");
return;
-@@ -499,6 +589,14 @@ public class Commodore {
+@@ -502,6 +592,14 @@ public class Commodore {
@Override
public void visitInvokeDynamicInsn(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) {
@@ -161,7 +161,7 @@ index b60b715af8c3259aed8d386a5165653e0b6ed667..2a29f60c3e82239ab7acd85242fc3390
if (bootstrapMethodHandle.getOwner().equals("java/lang/invoke/LambdaMetafactory")
&& bootstrapMethodHandle.getName().equals("metafactory") && bootstrapMethodArguments.length == 3) {
Type samMethodType = (Type) bootstrapMethodArguments[0];
-@@ -515,7 +613,7 @@ public class Commodore {
+@@ -518,7 +616,7 @@ public class Commodore {
methodArgs.add(new Handle(newOpcode, newOwner, newName, newDescription, newItf));
methodArgs.add(newInstantiated);
@@ -170,7 +170,7 @@ index b60b715af8c3259aed8d386a5165653e0b6ed667..2a29f60c3e82239ab7acd85242fc3390
}, implMethod.getTag(), implMethod.getOwner(), implMethod.getName(), implMethod.getDesc(), implMethod.isInterface(), samMethodType, instantiatedMethodType);
return;
}
-@@ -566,6 +664,12 @@ public class Commodore {
+@@ -569,6 +667,12 @@ public class Commodore {
@Override
public FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) {
diff --git a/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch b/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch
index 3610187c20..d424e1f6fc 100644
--- a/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch
+++ b/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch
@@ -645,10 +645,10 @@ index 242811578a786e3807a1a7019d472d5a68f87116..0b65fdf53124f3dd042b2363b1b8df8e
return traceElements;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-index 2a29f60c3e82239ab7acd85242fc3390cb9129cd..91c6721201b095eb32c5fd5a1aaf2cbcf3ee196d 100644
+index 58df23162aed12f3058b5e0921a9e30b89f56a10..ba104635c7713b04ce624bc4c7bd390462bc0edb 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-@@ -126,36 +126,26 @@ public class Commodore {
+@@ -129,36 +129,26 @@ public class Commodore {
}
// Paper start - Plugin rewrites
@@ -696,7 +696,7 @@ index 2a29f60c3e82239ab7acd85242fc3390cb9129cd..91c6721201b095eb32c5fd5a1aaf2cbc
}
// Paper end - Plugin rewrites
-@@ -240,6 +230,7 @@ public class Commodore {
+@@ -243,6 +233,7 @@ public class Commodore {
visitor = new LimitedClassRemapper(cw, new SimpleRemapper(Commodore.ENUM_RENAMES));
}
@@ -705,10 +705,10 @@ index 2a29f60c3e82239ab7acd85242fc3390cb9129cd..91c6721201b095eb32c5fd5a1aaf2cbc
final Set<RerouteMethodData> rerouteMethodData = new HashSet<>();
String className;
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 0ff9c62636e8709a6df252e9aaf931c9c17bd9bf..4b2377a1de608b9142a28c66389d04290f7c0330 100644
+index 3c9cdb8c67d2704caac6488a6216d8c9c8a009ef..ab4dd5a86ccd8e9878abf95417bb05ceb91dd19c 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -74,6 +74,7 @@ import org.bukkit.potion.PotionType;
+@@ -75,6 +75,7 @@ import org.bukkit.potion.PotionType;
@SuppressWarnings("deprecation")
public final class CraftMagicNumbers implements UnsafeValues {
public static final CraftMagicNumbers INSTANCE = new CraftMagicNumbers();
@@ -716,7 +716,7 @@ index 0ff9c62636e8709a6df252e9aaf931c9c17bd9bf..4b2377a1de608b9142a28c66389d0429
private final Commodore commodore = new Commodore();
-@@ -346,7 +347,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -347,7 +348,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
throw new InvalidPluginException("Plugin API version " + pdf.getAPIVersion() + " is lower than the minimum allowed version. Please update or replace it.");
}
@@ -725,7 +725,7 @@ index 0ff9c62636e8709a6df252e9aaf931c9c17bd9bf..4b2377a1de608b9142a28c66389d0429
CraftLegacy.init();
}
-@@ -361,6 +362,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -362,6 +363,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
@Override
public byte[] processClass(PluginDescriptionFile pdf, String path, byte[] clazz) {
diff --git a/patches/server/0033-Expose-server-build-information.patch b/patches/server/0033-Expose-server-build-information.patch
index 83f13af41a..a6d2360581 100644
--- a/patches/server/0033-Expose-server-build-information.patch
+++ b/patches/server/0033-Expose-server-build-information.patch
@@ -590,7 +590,7 @@ index f077b8ff0bf0d96628db3569132696b68fd79921..5f11f5b16766f9d1d5640ae037e259be
value.append("\n Plugins: {");
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index db7cad60c8f805dd1b4089673f5f9d073a429a67..2bfa790a9f0ca07217c9d9f7dd916950d859530c 100644
+index f4c36880ca29d657d0b443d9578265bd84e007c7..f0ae14146015d8145cf873788559b8f0666f7f33 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -11,8 +11,6 @@ import com.google.common.collect.MapMaker;
@@ -692,11 +692,11 @@ index 03790abcc3474999db6d8986e50ebc2caf6eba0c..13f811173c67533ee02f70cc4b6b398c
t.printStackTrace();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 4b2377a1de608b9142a28c66389d04290f7c0330..2b60572307e3ec23e21e09c34a04de9a1c57f136 100644
+index ab4dd5a86ccd8e9878abf95417bb05ceb91dd19c..61efb305e25b23fe6309276e15efdb41a46c7738 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -464,6 +464,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
- return CraftRegistry.get(registry, namespacedKey, ApiVersion.CURRENT);
+@@ -475,6 +475,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
+ return this.customBiome;
}
+ // Paper start
diff --git a/patches/server/0176-Player.setPlayerProfile-API.patch b/patches/server/0176-Player.setPlayerProfile-API.patch
index d971b0d455..42216ef379 100644
--- a/patches/server/0176-Player.setPlayerProfile-API.patch
+++ b/patches/server/0176-Player.setPlayerProfile-API.patch
@@ -207,10 +207,10 @@ index 128fcd537783986d816dae6d1ce2afb7af07d45a..32eeca2467189c6c97f7da5529d4fe93
public void onEntityRemove(Entity entity) {
this.invertedVisibilityEntities.remove(entity.getUUID());
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-index 91c6721201b095eb32c5fd5a1aaf2cbcf3ee196d..b85223ebff4dbb8aa74b501663afc87ef11e2a96 100644
+index ba104635c7713b04ce624bc4c7bd390462bc0edb..9a6857f325d72c1b5ce403c3240e0b1a3f43bc38 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-@@ -467,6 +467,13 @@ public class Commodore {
+@@ -470,6 +470,13 @@ public class Commodore {
}
// Paper end - Rewrite plugins
diff --git a/patches/server/0241-Improve-death-events.patch b/patches/server/0241-Improve-death-events.patch
index 0dd8702773..00939c177d 100644
--- a/patches/server/0241-Improve-death-events.patch
+++ b/patches/server/0241-Improve-death-events.patch
@@ -440,7 +440,7 @@ index e4d840d6335007a6a542240746504bf1f2af332d..159bba49095aec77cce5f53d4388a5df
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 474f330f381aa74e9f2fd0accdbaf2617ec1c557..199abd66d2113e7bc8c478fe8e4f6657d2e12304 100644
+index 474f330f381aa74e9f2fd0accdbaf2617ec1c557..b537b3ac2ed238c01ec76ccc7941a09bfc959c10 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -902,8 +902,15 @@ public class CraftEventFactory {
@@ -481,7 +481,7 @@ index 474f330f381aa74e9f2fd0accdbaf2617ec1c557..199abd66d2113e7bc8c478fe8e4f6657
+ // Paper start - helper methods for making death event cancellable
+ // Add information to death event
+ private static void populateFields(net.minecraft.world.entity.LivingEntity victim, EntityDeathEvent event) {
-+ event.setReviveHealth(event.getEntity().getAttribute(org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH).getValue());
++ event.setReviveHealth(event.getEntity().getAttribute(org.bukkit.attribute.Attribute.MAX_HEALTH).getValue());
+ event.setShouldPlayDeathSound(!victim.silentDeath && !victim.isSilent());
+ net.minecraft.sounds.SoundEvent soundEffect = victim.getDeathSound();
+ event.setDeathSound(soundEffect != null ? org.bukkit.craftbukkit.CraftSound.minecraftToBukkit(soundEffect) : null);
diff --git a/patches/server/0324-Add-Raw-Byte-ItemStack-Serialization.patch b/patches/server/0324-Add-Raw-Byte-ItemStack-Serialization.patch
index 3895429c44..70ced2037c 100644
--- a/patches/server/0324-Add-Raw-Byte-ItemStack-Serialization.patch
+++ b/patches/server/0324-Add-Raw-Byte-ItemStack-Serialization.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add Raw Byte ItemStack Serialization
Serializes using NBT which is safer for server data migrations than bukkits format.
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 2b60572307e3ec23e21e09c34a04de9a1c57f136..150ab63f231fc3c39661ab876a8c90d608ee8568 100644
+index 61efb305e25b23fe6309276e15efdb41a46c7738..b50d1ddfd23bf1af16d86e5edcb72196b4674868 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -469,6 +469,53 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -480,6 +480,53 @@ public final class CraftMagicNumbers implements UnsafeValues {
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
return new com.destroystokyo.paper.PaperVersionFetcher();
}
diff --git a/patches/server/0401-Add-methods-to-get-translation-keys.patch b/patches/server/0401-Add-methods-to-get-translation-keys.patch
index 8ff2f02eb9..de167b55e7 100644
--- a/patches/server/0401-Add-methods-to-get-translation-keys.patch
+++ b/patches/server/0401-Add-methods-to-get-translation-keys.patch
@@ -10,6 +10,22 @@ public org.bukkit.craftbukkit.inventory.CraftMetaFirework getNBT(Lorg/bukkit/Fir
Co-authored-by: MeFisto94 <[email protected]>
+diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttribute.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttribute.java
+index 8797a47be16b85dc69a28a56bb355bee7d6b1a78..9ab615347e241ac264fb70f43306075907420885 100644
+--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttribute.java
++++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttribute.java
+@@ -98,6 +98,11 @@ public class CraftAttribute implements Attribute, Handleable<net.minecraft.world
+ return this.attributeBase.getDescriptionId();
+ }
+
++ @Override
++ public @NotNull String translationKey() {
++ return this.attributeBase.getDescriptionId();
++ }
++
+ @Override
+ public int compareTo(@NotNull Attribute attribute) {
+ return this.ordinal - attribute.ordinal();
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
index aae00320ab8003420bae5de7df47f553b62c5aab..3fa3de9a89550ec2fcb8ca663742826c0c3136b6 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
diff --git a/patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
index 4a538824cb..71b2a9d8d1 100644
--- a/patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
+++ b/patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
@@ -21,10 +21,10 @@ index 2c9e57436469f94beb45f656a1df71aba7b1e408..c3e28cc070993be5afe9323c2c2d54ff
+ // Paper end - Expose entity id counter
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 150ab63f231fc3c39661ab876a8c90d608ee8568..93505eba28d9fb20ce25866e932fc1cdcb006db8 100644
+index b50d1ddfd23bf1af16d86e5edcb72196b4674868..09a6a0c06580aea9e7be8de2189673d1a476f411 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -516,6 +516,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -527,6 +527,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
Preconditions.checkArgument(dataVersion <= getDataVersion(), "Newer version! Server downgrades are not supported!");
return compound;
}
diff --git a/patches/server/0424-Fix-client-lag-on-advancement-loading.patch b/patches/server/0424-Fix-client-lag-on-advancement-loading.patch
index 67c377a6f1..c7284e1f8b 100644
--- a/patches/server/0424-Fix-client-lag-on-advancement-loading.patch
+++ b/patches/server/0424-Fix-client-lag-on-advancement-loading.patch
@@ -15,10 +15,10 @@ manually reload the advancement data for all players, which
normally takes place as a part of the datapack reloading.
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 93505eba28d9fb20ce25866e932fc1cdcb006db8..af8fde74b3162d2de740ecae1122b4f2115baeb6 100644
+index 09a6a0c06580aea9e7be8de2189673d1a476f411..e88b384e3d640dd77e419611f3c0e588fbf4f406 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -317,7 +317,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -318,7 +318,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
Bukkit.getLogger().log(Level.SEVERE, "Error saving advancement " + key, ex);
}
diff --git a/patches/server/0467-Add-RegistryAccess-for-managing-Registries.patch b/patches/server/0467-Add-RegistryAccess-for-managing-Registries.patch
index ccdf448b22..fbb76f2784 100644
--- a/patches/server/0467-Add-RegistryAccess-for-managing-Registries.patch
+++ b/patches/server/0467-Add-RegistryAccess-for-managing-Registries.patch
@@ -12,10 +12,10 @@ public net.minecraft.server.RegistryLayer STATIC_ACCESS
diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
new file mode 100644
-index 0000000000000000000000000000000000000000..633b01431750d4b40159a57bf25fb35c6670ff1b
+index 0000000000000000000000000000000000000000..b5df90b500a64ee3ba1026fa3449ca6441293367
--- /dev/null
+++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
-@@ -0,0 +1,146 @@
+@@ -0,0 +1,152 @@
+package io.papermc.paper.registry;
+
+import io.papermc.paper.adventure.PaperAdventure;
@@ -28,15 +28,21 @@ index 0000000000000000000000000000000000000000..633b01431750d4b40159a57bf25fb35c
+import net.minecraft.core.Registry;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.resources.ResourceKey;
++import org.bukkit.Fluid;
+import org.bukkit.GameEvent;
+import org.bukkit.JukeboxSong;
+import org.bukkit.Keyed;
+import org.bukkit.MusicInstrument;
++import org.bukkit.attribute.Attribute;
++import org.bukkit.block.Biome;
+import org.bukkit.block.BlockType;
+import org.bukkit.block.banner.PatternType;
++import org.bukkit.craftbukkit.CraftFluid;
+import org.bukkit.craftbukkit.CraftGameEvent;
+import org.bukkit.craftbukkit.CraftJukeboxSong;
+import org.bukkit.craftbukkit.CraftMusicInstrument;
++import org.bukkit.craftbukkit.attribute.CraftAttribute;
++import org.bukkit.craftbukkit.block.CraftBiome;
+import org.bukkit.craftbukkit.block.CraftBlockType;
+import org.bukkit.craftbukkit.block.banner.CraftPatternType;
+import org.bukkit.craftbukkit.damage.CraftDamageType;
@@ -98,6 +104,8 @@ index 0000000000000000000000000000000000000000..633b01431750d4b40159a57bf25fb35c
+ entry(Registries.VILLAGER_TYPE, RegistryKey.VILLAGER_TYPE, Villager.Type.class, CraftVillager.CraftType::new),
+ entry(Registries.MAP_DECORATION_TYPE, RegistryKey.MAP_DECORATION_TYPE, MapCursor.Type.class, CraftMapCursor.CraftType::new),
+ entry(Registries.MENU, RegistryKey.MENU, MenuType.class, CraftMenuType::new),
++ entry(Registries.ATTRIBUTE, RegistryKey.ATTRIBUTE, Attribute.class, CraftAttribute::new),
++ entry(Registries.FLUID, RegistryKey.FLUID, Fluid.class, CraftFluid::new),
+
+ // data-drivens
+ entry(Registries.STRUCTURE, RegistryKey.STRUCTURE, Structure.class, CraftStructure::new).delayed(),
@@ -108,17 +116,15 @@ index 0000000000000000000000000000000000000000..633b01431750d4b40159a57bf25fb35c
+ entry(Registries.ENCHANTMENT, RegistryKey.ENCHANTMENT, Enchantment.class, CraftEnchantment::new).withSerializationUpdater(FieldRename.ENCHANTMENT_RENAME).delayed(),
+ entry(Registries.JUKEBOX_SONG, RegistryKey.JUKEBOX_SONG, JukeboxSong.class, CraftJukeboxSong::new).delayed(),
+ entry(Registries.BANNER_PATTERN, RegistryKey.BANNER_PATTERN, PatternType.class, CraftPatternType::new).delayed(),
++ entry(Registries.BIOME, RegistryKey.BIOME, Biome.class, CraftBiome::new).delayed(),
+
+ // api-only
-+ apiOnly(Registries.BIOME, RegistryKey.BIOME, () -> org.bukkit.Registry.BIOME),
+ apiOnly(Registries.PAINTING_VARIANT, RegistryKey.PAINTING_VARIANT, () -> org.bukkit.Registry.ART),
-+ apiOnly(Registries.ATTRIBUTE, RegistryKey.ATTRIBUTE, () -> org.bukkit.Registry.ATTRIBUTE),
+ apiOnly(Registries.ENTITY_TYPE, RegistryKey.ENTITY_TYPE, () -> org.bukkit.Registry.ENTITY_TYPE),
+ apiOnly(Registries.PARTICLE_TYPE, RegistryKey.PARTICLE_TYPE, () -> org.bukkit.Registry.PARTICLE_TYPE),
+ apiOnly(Registries.POTION, RegistryKey.POTION, () -> org.bukkit.Registry.POTION),
+ apiOnly(Registries.SOUND_EVENT, RegistryKey.SOUND_EVENT, () -> org.bukkit.Registry.SOUNDS),
-+ apiOnly(Registries.MEMORY_MODULE_TYPE, RegistryKey.MEMORY_MODULE_TYPE, () -> (org.bukkit.Registry<MemoryKey<?>>) (org.bukkit.Registry) org.bukkit.Registry.MEMORY_MODULE_TYPE),
-+ apiOnly(Registries.FLUID, RegistryKey.FLUID, () -> org.bukkit.Registry.FLUID)
++ apiOnly(Registries.MEMORY_MODULE_TYPE, RegistryKey.MEMORY_MODULE_TYPE, () -> (org.bukkit.Registry<MemoryKey<?>>) (org.bukkit.Registry) org.bukkit.Registry.MEMORY_MODULE_TYPE)
+ );
+ final Map<RegistryKey<?>, RegistryEntry<?, ?>> byRegistryKey = new IdentityHashMap<>(REGISTRY_ENTRIES.size());
+ final Map<ResourceKey<?>, RegistryEntry<?, ?>> byResourceKey = new IdentityHashMap<>(REGISTRY_ENTRIES.size());
@@ -743,10 +749,10 @@ index 8e8d6214adbd21a221147f0fc0d91cd9c06a080c..6fddef967b6314ca0158f5bd4b889867
String string = Registries.elementsDirPath(type.registryKey());
SimpleJsonResourceReloadListener.scanDirectory(resourceManager, string, ops, type.codec(), map);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
-index b4ed857f2437759b71b75d7ab36c986a2fd71dbc..09929f580164abcd1c04061d04c6aa992767e256 100644
+index d7e3371ebc08b5534c259ea45d89a969dfbe491a..16985dc1f54d64c44f96b045012612f16ba9ae8a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
-@@ -122,81 +122,12 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+@@ -125,90 +125,12 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+ ", this can happen if a plugin creates its own registry entry with out properly registering it.");
}
@@ -758,9 +764,18 @@ index b4ed857f2437759b71b75d7ab36c986a2fd71dbc..09929f580164abcd1c04061d04c6aa99
- * @return the bukkit registry of the provided class
- */
- public static <B extends Keyed> Registry<?> createRegistry(Class<? super B> bukkitClass, RegistryAccess registryHolder) {
+- if (bukkitClass == Attribute.class) {
+- return new CraftRegistry<>(Attribute.class, registryHolder.lookupOrThrow(Registries.ATTRIBUTE), CraftAttribute::new, FieldRename.ATTRIBUTE_RENAME);
+- }
+- if (bukkitClass == Biome.class) {
+- return new CraftRegistry<>(Biome.class, registryHolder.lookupOrThrow(Registries.BIOME), CraftBiome::new, FieldRename.BIOME_RENAME);
+- }
- if (bukkitClass == Enchantment.class) {
- return new CraftRegistry<>(Enchantment.class, registryHolder.lookupOrThrow(Registries.ENCHANTMENT), CraftEnchantment::new, FieldRename.ENCHANTMENT_RENAME);
- }
+- if (bukkitClass == Fluid.class) {
+- return new CraftRegistry<>(Fluid.class, registryHolder.lookupOrThrow(Registries.FLUID), CraftFluid::new, FieldRename.NONE);
+- }
- if (bukkitClass == GameEvent.class) {
- return new CraftRegistry<>(GameEvent.class, registryHolder.lookupOrThrow(Registries.GAME_EVENT), CraftGameEvent::new, FieldRename.NONE);
- }
@@ -831,7 +846,7 @@ index b4ed857f2437759b71b75d7ab36c986a2fd71dbc..09929f580164abcd1c04061d04c6aa99
}
if (bukkit instanceof Registry.SimpleRegistry<?> simple) {
-@@ -222,23 +153,21 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+@@ -226,23 +148,21 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
return bukkit.get(namespacedKey);
}
@@ -861,7 +876,7 @@ index b4ed857f2437759b71b75d7ab36c986a2fd71dbc..09929f580164abcd1c04061d04c6aa99
@Override
public B get(NamespacedKey namespacedKey) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 30675a23a25dc065e09d97b9b08386c9f41989d8..a12dc990a9094e964be2af26a5135e3b798f9666 100644
+index 1c30369a2ed1577d7fb8457f9751de2d32634d29..45ddb643d544dbcb35954108abb6f5d2454a555d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -284,7 +284,7 @@ public final class CraftServer implements Server {
@@ -891,7 +906,7 @@ index 30675a23a25dc065e09d97b9b08386c9f41989d8..a12dc990a9094e964be2af26a5135e3b
@Deprecated
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/FieldRename.java b/src/main/java/org/bukkit/craftbukkit/legacy/FieldRename.java
-index c1023eff9f391c07b57e57450b756fe16299f723..b5e0023e431f9fb43c93a3f977144b03545322bb 100644
+index 091e11934bddb180f0b2e51efb3921c62275d41d..12fe2f8d0dcb715545e071023490a32125b9c4a4 100644
--- a/src/main/java/org/bukkit/craftbukkit/legacy/FieldRename.java
+++ b/src/main/java/org/bukkit/craftbukkit/legacy/FieldRename.java
@@ -51,11 +51,14 @@ public class FieldRename {
@@ -915,10 +930,10 @@ index c1023eff9f391c07b57e57450b756fe16299f723..b5e0023e431f9fb43c93a3f977144b03
// PatternType
private static final FieldRenameData PATTERN_TYPE_DATA = FieldRenameData.Builder.newBuilder()
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-index b85223ebff4dbb8aa74b501663afc87ef11e2a96..760f56d36f0e4a74b58628408a286a499d6664ec 100644
+index 9a6857f325d72c1b5ce403c3240e0b1a3f43bc38..e4b79d92a8c41eb37d989248425b1e5a963b476c 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-@@ -215,20 +215,10 @@ public class Commodore {
+@@ -218,20 +218,10 @@ public class Commodore {
public byte[] convert(byte[] b, final String pluginName, final ApiVersion pluginVersion, final Set<String> activeCompatibilities) {
final boolean modern = pluginVersion.isNewerThanOrSameAs(ApiVersion.FLATTENING);
@@ -939,7 +954,7 @@ index b85223ebff4dbb8aa74b501663afc87ef11e2a96..760f56d36f0e4a74b58628408a286a49
visitor = io.papermc.paper.pluginremap.reflect.ReflectionRemapper.visitor(visitor); // Paper
cr.accept(new ClassRemapper(new ClassVisitor(Opcodes.ASM9, visitor) {
-@@ -295,15 +285,6 @@ public class Commodore {
+@@ -298,15 +288,6 @@ public class Commodore {
@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
@@ -1244,7 +1259,7 @@ index bbd5dd5b27937ddc3d8c57f2b604331495b0f311..626c3033e36897846fe84a77d05e2e91
CraftRegistry.setMinecraftRegistry(RegistryHelper.getRegistry());
}
diff --git a/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java b/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java
-index 47f3b79d76399ff2185ea753260a702441ecadf5..eb3974690fb12ffe678522ed47e0f730712db016 100644
+index c0e02198200c93e3d0ff2461d267e856db087532..bbabfad54c58f74cb5d70cbce4d140ad69a56abb 100644
--- a/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java
+++ b/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java
@@ -1,6 +1,7 @@
@@ -1255,12 +1270,15 @@ index 47f3b79d76399ff2185ea753260a702441ecadf5..eb3974690fb12ffe678522ed47e0f730
import java.util.List;
import java.util.stream.Stream;
import net.minecraft.core.registries.Registries;
-@@ -61,36 +62,35 @@ public class RegistriesArgumentProvider implements ArgumentsProvider {
+@@ -67,39 +68,38 @@ public class RegistriesArgumentProvider implements ArgumentsProvider {
private static final List<Arguments> DATA = Lists.newArrayList();
static {
- // Order: Bukkit class, Minecraft Registry key, CraftBukkit class, Minecraft class
+- register(Attribute.class, Registries.ATTRIBUTE, CraftAttribute.class, net.minecraft.world.entity.ai.attributes.Attribute.class);
+- register(Biome.class, Registries.BIOME, CraftBiome.class, net.minecraft.world.level.biome.Biome.class);
- register(Enchantment.class, Registries.ENCHANTMENT, CraftEnchantment.class, net.minecraft.world.item.enchantment.Enchantment.class);
+- register(Fluid.class, Registries.FLUID, CraftFluid.class, net.minecraft.world.level.material.Fluid.class);
- register(GameEvent.class, Registries.GAME_EVENT, CraftGameEvent.class, net.minecraft.world.level.gameevent.GameEvent.class);
- register(MusicInstrument.class, Registries.INSTRUMENT, CraftMusicInstrument.class, Instrument.class);
- register(MenuType.class, Registries.MENU, CraftMenuType.class, net.minecraft.world.inventory.MenuType.class);
@@ -1282,7 +1300,10 @@ index 47f3b79d76399ff2185ea753260a702441ecadf5..eb3974690fb12ffe678522ed47e0f730
- register(PatternType.class, Registries.BANNER_PATTERN, CraftPatternType.class, BannerPattern.class);
-
+ // Order: RegistryKey, Bukkit class, Minecraft Registry key, CraftBukkit class, Minecraft class
++ register(RegistryKey.ATTRIBUTE, Attribute.class, Registries.ATTRIBUTE, CraftAttribute.class, net.minecraft.world.entity.ai.attributes.Attribute.class);
++ register(RegistryKey.BIOME, Biome.class, Registries.BIOME, CraftBiome.class, net.minecraft.world.level.biome.Biome.class);
+ register(RegistryKey.ENCHANTMENT, Enchantment.class, Registries.ENCHANTMENT, CraftEnchantment.class, net.minecraft.world.item.enchantment.Enchantment.class);
++ register(RegistryKey.FLUID, Fluid.class, Registries.FLUID, CraftFluid.class, net.minecraft.world.level.material.Fluid.class);
+ register(RegistryKey.GAME_EVENT, GameEvent.class, Registries.GAME_EVENT, CraftGameEvent.class, net.minecraft.world.level.gameevent.GameEvent.class);
+ register(RegistryKey.INSTRUMENT, MusicInstrument.class, Registries.INSTRUMENT, CraftMusicInstrument.class, Instrument.class);
+ register(RegistryKey.MOB_EFFECT, PotionEffectType.class, Registries.MOB_EFFECT, CraftPotionEffectType.class, MobEffect.class);
diff --git a/patches/server/0496-Expand-world-key-API.patch b/patches/server/0496-Expand-world-key-API.patch
index 80f4011a34..903e7ac8ea 100644
--- a/patches/server/0496-Expand-world-key-API.patch
+++ b/patches/server/0496-Expand-world-key-API.patch
@@ -20,7 +20,7 @@ index 15da29058f80a2d7cf2be26c48421c1746815a10..a070b2a83edaa702b13bc6d302691412
// Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index a12dc990a9094e964be2af26a5135e3b798f9666..85b2298efface87ee97e0f996d939cc135ca981d 100644
+index 45ddb643d544dbcb35954108abb6f5d2454a555d..aeb6568c6a48d3448c5724896898371228313ceb 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1185,9 +1185,15 @@ public final class CraftServer implements Server {
@@ -67,10 +67,10 @@ index a12dc990a9094e964be2af26a5135e3b798f9666..85b2298efface87ee97e0f996d939cc1
// Check if a World already exists with the UID.
if (this.getWorld(world.getUID()) != null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index af8fde74b3162d2de740ecae1122b4f2115baeb6..77f0d6c44c3773968b1e858d02cfc4ffb25fe99b 100644
+index e88b384e3d640dd77e419611f3c0e588fbf4f406..28948975c5adcf78d9c0e0b6fb63db981a369a77 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -527,6 +527,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -538,6 +538,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
public int nextEntityId() {
return net.minecraft.world.entity.Entity.nextEntityId();
}
diff --git a/patches/server/0501-Expose-protocol-version.patch b/patches/server/0501-Expose-protocol-version.patch
index 13133988e5..61d4fc32be 100644
--- a/patches/server/0501-Expose-protocol-version.patch
+++ b/patches/server/0501-Expose-protocol-version.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose protocol version
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 77f0d6c44c3773968b1e858d02cfc4ffb25fe99b..ada83b5e843f761837a7510112162c6954ab4260 100644
+index 28948975c5adcf78d9c0e0b6fb63db981a369a77..25a206cf1eb07e826b549aacf9a4d0fbffb32177 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -532,6 +532,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -543,6 +543,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
public String getMainLevelName() {
return ((net.minecraft.server.dedicated.DedicatedServer) net.minecraft.server.MinecraftServer.getServer()).getProperties().levelName;
}
diff --git a/patches/server/0528-ItemStack-repair-check-API.patch b/patches/server/0528-ItemStack-repair-check-API.patch
index b016fcc18d..fb178f277b 100644
--- a/patches/server/0528-ItemStack-repair-check-API.patch
+++ b/patches/server/0528-ItemStack-repair-check-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack repair check API
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index ada83b5e843f761837a7510112162c6954ab4260..02306ed81a67faa94d98070d3e7c9044cb5d2825 100644
+index 25a206cf1eb07e826b549aacf9a4d0fbffb32177..079cb08b92061bb14952cf4ad2bda61e154f4438 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -537,6 +537,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -548,6 +548,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
public int getProtocolVersion() {
return net.minecraft.SharedConstants.getCurrentVersion().getProtocolVersion();
}
diff --git a/patches/server/0535-Improve-item-default-attribute-API.patch b/patches/server/0535-Improve-item-default-attribute-API.patch
index 6f2c104c78..f5daf28287 100644
--- a/patches/server/0535-Improve-item-default-attribute-API.patch
+++ b/patches/server/0535-Improve-item-default-attribute-API.patch
@@ -62,10 +62,10 @@ index 68756419ac6ee292db9569eab380a5c14d748002..6d76cc1db3ac3f1ae74c13511937fb86
return defaultAttributes.build();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 02306ed81a67faa94d98070d3e7c9044cb5d2825..ffc98d8ed238cc653a7a6518a46c4e45a1b3682c 100644
+index 079cb08b92061bb14952cf4ad2bda61e154f4438..6855210dc58f455b5af05d9c039da55e8dfc93f1 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -385,7 +385,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -386,7 +386,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
@Override
public Multimap<Attribute, AttributeModifier> getDefaultAttributeModifiers(Material material, EquipmentSlot slot) {
diff --git a/patches/server/0580-Get-entity-default-attributes.patch b/patches/server/0580-Get-entity-default-attributes.patch
index 6d512ca637..9c95ca3611 100644
--- a/patches/server/0580-Get-entity-default-attributes.patch
+++ b/patches/server/0580-Get-entity-default-attributes.patch
@@ -81,10 +81,10 @@ index 0000000000000000000000000000000000000000..ec9ebd2d539333293c51b7edfa18f18b
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index ffc98d8ed238cc653a7a6518a46c4e45a1b3682c..31b625779dfe27602ac198259258e64195c1796d 100644
+index 6855210dc58f455b5af05d9c039da55e8dfc93f1..1dd9a5cc45d5073adb150abdcbe2025e6ed2c315 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -549,6 +549,18 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -560,6 +560,18 @@ public final class CraftMagicNumbers implements UnsafeValues {
}
return CraftItemStack.unwrap(itemToBeRepaired).isValidRepairItem(CraftItemStack.unwrap(repairMaterial));
}
@@ -105,7 +105,7 @@ index ffc98d8ed238cc653a7a6518a46c4e45a1b3682c..31b625779dfe27602ac198259258e641
/**
diff --git a/src/test/java/io/papermc/paper/attribute/EntityTypeAttributesTest.java b/src/test/java/io/papermc/paper/attribute/EntityTypeAttributesTest.java
new file mode 100644
-index 0000000000000000000000000000000000000000..f512d416df883036965ff6c802fd242a4c9c8079
+index 0000000000000000000000000000000000000000..fa9fb37993f4025f85dac084efb4b5eda0ede637
--- /dev/null
+++ b/src/test/java/io/papermc/paper/attribute/EntityTypeAttributesTest.java
@@ -0,0 +1,40 @@
@@ -142,8 +142,8 @@ index 0000000000000000000000000000000000000000..f512d416df883036965ff6c802fd242a
+ @Test
+ public void testUnmodifiabilityOfAttributable() {
+ Attributable attributable = EntityType.ZOMBIE.getDefaultAttributes();
-+ assertThrows(UnsupportedOperationException.class, () -> attributable.registerAttribute(Attribute.GENERIC_ATTACK_DAMAGE));
-+ AttributeInstance instance = attributable.getAttribute(Attribute.GENERIC_FOLLOW_RANGE);
++ assertThrows(UnsupportedOperationException.class, () -> attributable.registerAttribute(Attribute.ATTACK_DAMAGE));
++ AttributeInstance instance = attributable.getAttribute(Attribute.FOLLOW_RANGE);
+ assertNotNull(instance);
+ assertThrows(UnsupportedOperationException.class, () -> instance.addModifier(new AttributeModifier("test", 3, AttributeModifier.Operation.ADD_NUMBER)));
+ assertThrows(UnsupportedOperationException.class, () -> instance.setBaseValue(3.2));
diff --git a/patches/server/0582-Add-more-advancement-API.patch b/patches/server/0582-Add-more-advancement-API.patch
index 1d8e873a36..ac526b9045 100644
--- a/patches/server/0582-Add-more-advancement-API.patch
+++ b/patches/server/0582-Add-more-advancement-API.patch
@@ -164,10 +164,10 @@ index 8ca86852319d7463f60832bc98b825b0b4325995..62ada73302c6b3ce3fb2dcc8c31a1d9c
private final DisplayInfo handle;
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-index 760f56d36f0e4a74b58628408a286a499d6664ec..34e41ea24e1673109f14153a1a0c8e794fed20bb 100644
+index e4b79d92a8c41eb37d989248425b1e5a963b476c..1f25fa2b2ce8fae5bce29232cbb51966b86dae85 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-@@ -453,6 +453,11 @@ public class Commodore {
+@@ -456,6 +456,11 @@ public class Commodore {
super.visitMethodInsn(opcode, owner, name, "()Lcom/destroystokyo/paper/profile/PlayerProfile;", itf);
return;
}
diff --git a/patches/server/0583-Add-ItemFactory-getSpawnEgg-API.patch b/patches/server/0583-Add-ItemFactory-getSpawnEgg-API.patch
index 715b0b753d..52f7274600 100644
--- a/patches/server/0583-Add-ItemFactory-getSpawnEgg-API.patch
+++ b/patches/server/0583-Add-ItemFactory-getSpawnEgg-API.patch
@@ -37,10 +37,10 @@ index cab7a3d21699605cb7fc480830d7529f70e69e88..ad86ee4372e55c82968fd4fc6a65deba
+ // Paper end - old getSpawnEgg API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-index 34e41ea24e1673109f14153a1a0c8e794fed20bb..63d4ffe93a445abf3c766d4f1f8fbf4a412a2a03 100644
+index 1f25fa2b2ce8fae5bce29232cbb51966b86dae85..f10e7a847e9f57d2a987b118215c0ceab251a5b0 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-@@ -460,6 +460,15 @@ public class Commodore {
+@@ -463,6 +463,15 @@ public class Commodore {
}
// Paper end
diff --git a/patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch b/patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch
index 660fb63c77..404023dde8 100644
--- a/patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch
@@ -50,10 +50,10 @@ index 0c1c9033646dedcf1d11dee74d6965683adadf0a..1ed01978611cddb2558e441863dadc46
@Override
public boolean isInvisible() { // Paper - moved up from LivingEntity
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 31b625779dfe27602ac198259258e64195c1796d..1ab160c3d042be43df3bd19d095534b91c4c2f71 100644
+index 1dd9a5cc45d5073adb150abdcbe2025e6ed2c315..2a3dc48aa50b41ede0e1a0e280314624961967f2 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -499,7 +499,33 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -510,7 +510,33 @@ public final class CraftMagicNumbers implements UnsafeValues {
return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.parse(MinecraftServer.getServer().registryAccess(), compound).orElseThrow());
}
diff --git a/patches/server/0681-Cache-resource-keys-and-optimize-reference-Holder-ta.patch b/patches/server/0681-Cache-resource-keys-and-optimize-reference-Holder-ta.patch
index 263f5852b3..7356aca21a 100644
--- a/patches/server/0681-Cache-resource-keys-and-optimize-reference-Holder-ta.patch
+++ b/patches/server/0681-Cache-resource-keys-and-optimize-reference-Holder-ta.patch
@@ -18,34 +18,6 @@ index 94671ea227b59a8f820425c401712e6aeb8b2b10..e91c4e26c25980645941ca8fbdcc3a9d
}
@Override
-diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBiome.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBiome.java
-index 95b956802f83b583a823fcd24808363775a56842..33d2e89ac40465b0c4633f9c51378b80f7c397a9 100644
---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBiome.java
-+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBiome.java
-@@ -3,6 +3,7 @@ package org.bukkit.craftbukkit.block;
- import com.google.common.base.Preconditions;
- import net.minecraft.core.Holder;
- import net.minecraft.core.registries.Registries;
-+import net.minecraft.resources.ResourceKey;
- import org.bukkit.Registry;
- import org.bukkit.block.Biome;
- import org.bukkit.craftbukkit.CraftRegistry;
-@@ -27,13 +28,14 @@ public class CraftBiome {
- return CraftBiome.minecraftToBukkit(minecraft.value());
- }
-
-+ private static final java.util.Map<org.bukkit.block.Biome, ResourceKey<net.minecraft.world.level.biome.Biome>> BIOME_KEY_CACHE = java.util.Collections.synchronizedMap(new java.util.EnumMap<>(Biome.class)); // Paper
- public static net.minecraft.world.level.biome.Biome bukkitToMinecraft(Biome bukkit) {
- if (bukkit == null || bukkit == Biome.CUSTOM) {
- return null;
- }
-
- return CraftRegistry.getMinecraftRegistry(Registries.BIOME)
-- .getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow();
-+ .getOptional(BIOME_KEY_CACHE.computeIfAbsent(bukkit, b -> ResourceKey.create(Registries.BIOME, CraftNamespacedKey.toMinecraft(b.getKey())))).orElseThrow();
- }
-
- public static Holder<net.minecraft.world.level.biome.Biome> bukkitToMinecraftHolder(Biome bukkit) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java
index 6cf8af0c85231de9955282d4abaa0607ec9a195c..d230cbc26f61d8ac5880825aca4dfab197c20401 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java
diff --git a/patches/server/0726-Add-NamespacedKey-biome-methods.patch b/patches/server/0726-Add-NamespacedKey-biome-methods.patch
index 015b2064d9..1734d3c119 100644
--- a/patches/server/0726-Add-NamespacedKey-biome-methods.patch
+++ b/patches/server/0726-Add-NamespacedKey-biome-methods.patch
@@ -6,25 +6,22 @@ Subject: [PATCH] Add NamespacedKey biome methods
Co-authored-by: Thonk <[email protected]>
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 1ab160c3d042be43df3bd19d095534b91c4c2f71..9f4124485dac3d029ec8247b64098042aa1a48d2 100644
+index 2a3dc48aa50b41ede0e1a0e280314624961967f2..d4d5d40ba3bcf715e52aeb72ec4d14718c793e7c 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -587,6 +587,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -598,6 +598,16 @@ public final class CraftMagicNumbers implements UnsafeValues {
var supplier = net.minecraft.world.entity.ai.attributes.DefaultAttributes.getSupplier((net.minecraft.world.entity.EntityType<? extends net.minecraft.world.entity.LivingEntity>) net.minecraft.core.registries.BuiltInRegistries.ENTITY_TYPE.getValue(CraftNamespacedKey.toMinecraft(bukkitEntityKey)));
return new io.papermc.paper.attribute.UnmodifiableAttributeMap(supplier);
}
+
+ @Override
+ public org.bukkit.NamespacedKey getBiomeKey(org.bukkit.RegionAccessor accessor, int x, int y, int z) {
-+ org.bukkit.craftbukkit.CraftRegionAccessor cra = (org.bukkit.craftbukkit.CraftRegionAccessor) accessor;
-+ return org.bukkit.craftbukkit.util.CraftNamespacedKey.fromMinecraft(cra.getHandle().registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BIOME).getKey(cra.getHandle().getBiome(new net.minecraft.core.BlockPos(x, y, z)).value()));
++ return accessor.getBiome(x, y, z).getKey();
+ }
+
+ @Override
+ public void setBiomeKey(org.bukkit.RegionAccessor accessor, int x, int y, int z, org.bukkit.NamespacedKey biomeKey) {
-+ org.bukkit.craftbukkit.CraftRegionAccessor cra = (org.bukkit.craftbukkit.CraftRegionAccessor) accessor;
-+ net.minecraft.core.Holder<net.minecraft.world.level.biome.Biome> biomeBase = cra.getHandle().registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BIOME).getOrThrow(net.minecraft.resources.ResourceKey.create(net.minecraft.core.registries.Registries.BIOME, org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(biomeKey)));
-+ cra.setBiome(x, y, z, biomeBase);
++ accessor.setBiome(x, y, z, org.bukkit.Registry.BIOME.getOrThrow(biomeKey));
+ }
// Paper end
diff --git a/patches/server/0735-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch b/patches/server/0735-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
index fb6e8b07ea..62022124a8 100644
--- a/patches/server/0735-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
+++ b/patches/server/0735-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
@@ -7,10 +7,10 @@ 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 63d4ffe93a445abf3c766d4f1f8fbf4a412a2a03..419b899f0e65b9656432513b69f60150c75bd13f 100644
+index f10e7a847e9f57d2a987b118215c0ceab251a5b0..015a2cf3e969e938158f27a04e172c837068437d 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
-@@ -458,6 +458,12 @@ public class Commodore {
+@@ -461,6 +461,12 @@ public class Commodore {
super.visitMethodInsn(Opcodes.INVOKEVIRTUAL, runtimeCbPkgPrefix() + "advancement/CraftAdvancement", "getDisplay0", desc, false);
return;
}
diff --git a/patches/server/0845-Fix-custom-statistic-criteria-creation.patch b/patches/server/0845-Fix-custom-statistic-criteria-creation.patch
index c57ac96255..ff197a490c 100644
--- a/patches/server/0845-Fix-custom-statistic-criteria-creation.patch
+++ b/patches/server/0845-Fix-custom-statistic-criteria-creation.patch
@@ -5,12 +5,12 @@ Subject: [PATCH] Fix custom statistic criteria creation
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 9f4124485dac3d029ec8247b64098042aa1a48d2..a74784ddf63d316f253381ed803822a149e92bc7 100644
+index d4d5d40ba3bcf715e52aeb72ec4d14718c793e7c..939bc76ca46081d51a6cb18ac39cd05d3ce58ac8 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -600,6 +600,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
- net.minecraft.core.Holder<net.minecraft.world.level.biome.Biome> biomeBase = cra.getHandle().registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BIOME).getOrThrow(net.minecraft.resources.ResourceKey.create(net.minecraft.core.registries.Registries.BIOME, org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(biomeKey)));
- cra.setBiome(x, y, z, biomeBase);
+@@ -608,6 +608,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
+ public void setBiomeKey(org.bukkit.RegionAccessor accessor, int x, int y, int z, org.bukkit.NamespacedKey biomeKey) {
+ accessor.setBiome(x, y, z, org.bukkit.Registry.BIOME.getOrThrow(biomeKey));
}
+
+ @Override
diff --git a/patches/server/0883-Fix-UnsafeValues-loadAdvancement.patch b/patches/server/0883-Fix-UnsafeValues-loadAdvancement.patch
index dc4c28926e..1fa31034dc 100644
--- a/patches/server/0883-Fix-UnsafeValues-loadAdvancement.patch
+++ b/patches/server/0883-Fix-UnsafeValues-loadAdvancement.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix UnsafeValues#loadAdvancement
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index a74784ddf63d316f253381ed803822a149e92bc7..1835f8cfda0222fadd9db31abfb7e85899051853 100644
+index f15060bbe6dc0fbb4a81aee294d311047a3650b2..86c78365e7510140515b0f0f834113d01095b842 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -302,9 +302,30 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -303,9 +303,30 @@ public final class CraftMagicNumbers implements UnsafeValues {
ResourceLocation minecraftkey = CraftNamespacedKey.toMinecraft(key);
JsonElement jsonelement = JsonParser.parseString(advancement);
diff --git a/patches/server/0905-Improve-Registry.patch b/patches/server/0905-Improve-Registry.patch
index d5769f63c0..7bd4b1163b 100644
--- a/patches/server/0905-Improve-Registry.patch
+++ b/patches/server/0905-Improve-Registry.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Improve Registry
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
-index 09929f580164abcd1c04061d04c6aa992767e256..aa66fd8dca886c1f064d8cb4a3d15c2086c1719a 100644
+index 16985dc1f54d64c44f96b045012612f16ba9ae8a..002a3475c6e062071845399ed723754ce4ce9e95 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
-@@ -155,6 +155,7 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+@@ -150,6 +150,7 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
private final Class<?> bukkitClass; // Paper - relax preload class
private final Map<NamespacedKey, B> cache = new HashMap<>();
@@ -16,7 +16,7 @@ index 09929f580164abcd1c04061d04c6aa992767e256..aa66fd8dca886c1f064d8cb4a3d15c20
private final net.minecraft.core.Registry<M> minecraftRegistry;
private final BiFunction<NamespacedKey, M, B> minecraftToBukkit;
private final BiFunction<NamespacedKey, ApiVersion, NamespacedKey> serializationUpdater; // Paper - rename to make it *clear* what it is *only* for
-@@ -203,6 +204,7 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+@@ -198,6 +199,7 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
}
this.cache.put(namespacedKey, bukkit);
@@ -24,7 +24,7 @@ index 09929f580164abcd1c04061d04c6aa992767e256..aa66fd8dca886c1f064d8cb4a3d15c20
return bukkit;
}
-@@ -235,4 +237,11 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+@@ -230,4 +232,11 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
return this.minecraftToBukkit.apply(namespacedKey, minecraft);
}
diff --git a/patches/server/0912-Fixup-NamespacedKey-handling.patch b/patches/server/0912-Fixup-NamespacedKey-handling.patch
index 932cc370d8..0eee21b8d0 100644
--- a/patches/server/0912-Fixup-NamespacedKey-handling.patch
+++ b/patches/server/0912-Fixup-NamespacedKey-handling.patch
@@ -18,10 +18,10 @@ index 90b82ad996b2b85628c9a5ddeef9410150b7f70c..5fd22a80e9d05afbea273471cee99173
public static NamespacedKey minecraftToBukkitKey(ResourceKey<LootTable> minecraft) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
-index aa66fd8dca886c1f064d8cb4a3d15c2086c1719a..f8450a2abd1e96fac7827d252cc00038b9dee839 100644
+index 002a3475c6e062071845399ed723754ce4ce9e95..9245f6de141384bfc12e8dd81ce1df366c6a62aa 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
-@@ -122,6 +122,16 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+@@ -125,6 +125,16 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+ ", this can happen if a plugin creates its own registry entry with out properly registering it.");
}
@@ -39,10 +39,10 @@ index aa66fd8dca886c1f064d8cb4a3d15c2086c1719a..f8450a2abd1e96fac7827d252cc00038
// Paper - NOTE: As long as all uses of the method below relate to *serialization* via ConfigurationSerializable, it's fine
diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttribute.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttribute.java
-index cc97638e038ea64ad180ebfded2528aa07d1809e..10e4318782107644f67818109784fff60d017e0a 100644
+index 9ab615347e241ac264fb70f43306075907420885..0d04f0a34d1d1894845b720a407f7190ea78d514 100644
--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttribute.java
+++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttribute.java
-@@ -37,6 +37,7 @@ public class CraftAttribute {
+@@ -33,6 +33,7 @@ public class CraftAttribute implements Attribute, Handleable<net.minecraft.world
string = FieldRename.convertAttributeName(ApiVersion.CURRENT, string);
string = string.toLowerCase(Locale.ROOT);
NamespacedKey key = NamespacedKey.fromString(string);
diff --git a/patches/server/0917-Add-api-for-spawn-egg-texture-colors.patch b/patches/server/0917-Add-api-for-spawn-egg-texture-colors.patch
index af708be49f..d894cc200c 100644
--- a/patches/server/0917-Add-api-for-spawn-egg-texture-colors.patch
+++ b/patches/server/0917-Add-api-for-spawn-egg-texture-colors.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add api for spawn egg texture colors
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 1835f8cfda0222fadd9db31abfb7e85899051853..30106a999db1bae217333b5e94913b9ec55e4615 100644
+index 789f98d0a6bbe240714ae965dfa1312439ce09cf..0d530bcefc0ceb00a60a70d454ec96d24de8c7e5 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -629,6 +629,15 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -637,6 +637,15 @@ public final class CraftMagicNumbers implements UnsafeValues {
}
// Paper end
diff --git a/patches/server/0918-Add-Lifecycle-Event-system.patch b/patches/server/0918-Add-Lifecycle-Event-system.patch
index 0eaff54d34..6b71908eac 100644
--- a/patches/server/0918-Add-Lifecycle-Event-system.patch
+++ b/patches/server/0918-Add-Lifecycle-Event-system.patch
@@ -727,7 +727,7 @@ index 2e96308696e131f3f013469a395e5ddda2c5d529..65a66e484c1c39c5f41d97db52f31c67
} catch (Throwable e) {
LOGGER.error("Failed to run bootstrapper for %s. This plugin will not be loaded.".formatted(provider.getSource()), e);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index a1f2c8fd0348a6a5dad521430f473867bdadd1a5..a2c749b2997557fec5c978f3bed8c35d7614e740 100644
+index 9ab601a8e455196cd04dfa0fa81c4d356ec62b13..5112fdb9faf4b2761bb2b7107c49952f37be030c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1050,6 +1050,11 @@ public final class CraftServer implements Server {
@@ -743,10 +743,10 @@ index a1f2c8fd0348a6a5dad521430f473867bdadd1a5..a2c749b2997557fec5c978f3bed8c35d
this.reloadCount++;
this.configuration = YamlConfiguration.loadConfiguration(this.getConfigFile());
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 30106a999db1bae217333b5e94913b9ec55e4615..06d66c8043daec3c736d82d972ceb98d55eae9d1 100644
+index 0d530bcefc0ceb00a60a70d454ec96d24de8c7e5..b4e3ca43982f99843df959ff4280d4355929eb72 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -638,6 +638,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -646,6 +646,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
}
// Paper end - spawn egg color visibility
diff --git a/patches/server/0919-ItemStack-Tooltip-API.patch b/patches/server/0919-ItemStack-Tooltip-API.patch
index f06c4356cd..f3abeb774c 100644
--- a/patches/server/0919-ItemStack-Tooltip-API.patch
+++ b/patches/server/0919-ItemStack-Tooltip-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack Tooltip API
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 06d66c8043daec3c736d82d972ceb98d55eae9d1..51d5629b00ec4929c12ed9e6ba5a37f5903cf13e 100644
+index b4e3ca43982f99843df959ff4280d4355929eb72..f0556a207f6d9d1766ef0d9753355f7fa5052dc1 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -627,6 +627,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -635,6 +635,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
if (statistic.getType() != org.bukkit.Statistic.Type.UNTYPED) return "minecraft.custom:minecraft." + statistic.getKey().getKey();
return org.bukkit.craftbukkit.CraftStatistic.getNMSStatistic(statistic).getName();
}
diff --git a/patches/server/0936-Fix-possible-StackOverflowError-and-NPE-for-some-dis.patch b/patches/server/0936-Fix-possible-StackOverflowError-and-NPE-for-some-dis.patch
index 25ace4aa41..2041bbd5a1 100644
--- a/patches/server/0936-Fix-possible-StackOverflowError-and-NPE-for-some-dis.patch
+++ b/patches/server/0936-Fix-possible-StackOverflowError-and-NPE-for-some-dis.patch
@@ -236,10 +236,10 @@ index f2e19218cf0d3b44a617c7d74f782c3e15e3f07f..aae9ec8f3bd39685b37251bef3f9ac84
idispensebehavior.dispense(pointer, eventStack);
return stack;
diff --git a/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java b/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java
-index a9d230d6ff22d5e3a11b2f31e7d751f44888a12c..aba0ddfc5009a11b6c5cba95a90479083643bdad 100644
+index 6b343afe473624082e13bee935638eb140271184..baf3feee740c816cf9f0470a8e56a36d02c9a29c 100644
--- a/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java
+++ b/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java
-@@ -57,7 +57,7 @@ public class ProjectileDispenseBehavior extends DefaultDispenseItemBehavior {
+@@ -56,7 +56,7 @@ public class ProjectileDispenseBehavior extends DefaultDispenseItemBehavior {
stack.grow(1);
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
@@ -292,7 +292,7 @@ index a02f24448b002824b068278fa427003008c0d0f1..500c56c4ef0878434582a50d6dba2ccc
if (!stack.isItemEnabled(world.enabledFeatures())) {
return DispenserBlock.DEFAULT_BEHAVIOR;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 96b901d07718d8926a2175925e867b4417c3947c..418e67ef5896325fe143501f5a4f1604b065ba0f 100644
+index 937ed4e77739ff02ff1e4405047f15eac40906fe..41a0650bfd6e72b83364441dd76df3d561d3163e 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -2232,7 +2232,7 @@ public class CraftEventFactory {
diff --git a/patches/server/0940-Properly-track-the-changed-item-from-dispense-events.patch b/patches/server/0940-Properly-track-the-changed-item-from-dispense-events.patch
index 872400fdee..7b03ec7aef 100644
--- a/patches/server/0940-Properly-track-the-changed-item-from-dispense-events.patch
+++ b/patches/server/0940-Properly-track-the-changed-item-from-dispense-events.patch
@@ -72,18 +72,18 @@ index 681c38f4457fc10806c10518b16159580c0f2619..8f9b86e50717746e55232293d9e5ac05
} else {
return this.defaultDispenseItemBehavior.dispense(pointer, stack);
diff --git a/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java b/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java
-index aba0ddfc5009a11b6c5cba95a90479083643bdad..b341792b694e4d6d7ca98061976b8857d83c4233 100644
+index baf3feee740c816cf9f0470a8e56a36d02c9a29c..281439e430fb8e587549da783bdd93432f8f957f 100644
--- a/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java
+++ b/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java
-@@ -64,7 +64,7 @@ public class ProjectileDispenseBehavior extends DefaultDispenseItemBehavior {
- }
- }
+@@ -65,7 +65,7 @@ public class ProjectileDispenseBehavior extends DefaultDispenseItemBehavior {
-- Projectile iprojectile = Projectile.spawnProjectileUsingShoot(this.projectileItem.asProjectile(worldserver, iposition, stack, enumdirection), worldserver, stack, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), this.dispenseConfig.power(), this.dispenseConfig.uncertainty());
-+ Projectile iprojectile = Projectile.spawnProjectileUsingShoot(this.projectileItem.asProjectile(worldserver, iposition, CraftItemStack.unwrap(event.getItem()), enumdirection), worldserver, stack, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), this.dispenseConfig.power(), this.dispenseConfig.uncertainty()); // Paper - track changed items in the dispense event; unwrap is safe here because all uses of the stack make their own copies
- ((Entity) iprojectile).projectileSource = new org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource(pointer.blockEntity());
+ // SPIGOT-7923: Avoid create projectiles with empty item
+ if (!itemstack1.isEmpty()) {
+- Projectile iprojectile = Projectile.spawnProjectileUsingShoot(this.projectileItem.asProjectile(worldserver, iposition, itemstack1, enumdirection), worldserver, itemstack1, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), this.dispenseConfig.power(), this.dispenseConfig.uncertainty());
++ Projectile iprojectile = Projectile.spawnProjectileUsingShoot(this.projectileItem.asProjectile(worldserver, iposition, CraftItemStack.unwrap(event.getItem()), enumdirection), worldserver, itemstack1, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), this.dispenseConfig.power(), this.dispenseConfig.uncertainty()); // Paper - track changed items in the dispense event; unwrap is safe here because all uses of the stack make their own copies
+ iprojectile.projectileSource = new org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource(pointer.blockEntity());
+ }
// itemstack.shrink(1); // CraftBukkit - Handled during event processing
- // CraftBukkit end
diff --git a/src/main/java/net/minecraft/core/dispenser/ShulkerBoxDispenseBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShulkerBoxDispenseBehavior.java
index cc85e96035f7cb2e6493b1cc4748031171d7dbee..16b435216dc7c6a3f8c1c0f9e2323e6afb3a6cb9 100644
--- a/src/main/java/net/minecraft/core/dispenser/ShulkerBoxDispenseBehavior.java
diff --git a/patches/server/0953-General-ItemMeta-fixes.patch b/patches/server/0953-General-ItemMeta-fixes.patch
index 9421f612dd..54c99087b9 100644
--- a/patches/server/0953-General-ItemMeta-fixes.patch
+++ b/patches/server/0953-General-ItemMeta-fixes.patch
@@ -1049,7 +1049,7 @@ index 566d893a413fd04b99e83dc2da8fe958a48492a8..a944803771d514572f94b4e98a6d4435
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
-index 13b19adc21ece31476b2980c5bc01a50f15df634..a6e2281bfac94f1e19836d9c8415d8270387b16d 100644
+index 14aab3a2adfde7a236610be2b928651bc01067f5..5eb1f0126c3d3bca9bf3e769bec4ec532cc0d9ba 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -199,9 +199,10 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
@@ -1194,15 +1194,6 @@ index 13b19adc21ece31476b2980c5bc01a50f15df634..a6e2281bfac94f1e19836d9c8415d827
}
@Override
-@@ -1656,7 +1664,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
-
- @Override
- public void setEquippable(EquippableComponent equippable) {
-- this.equippable = (equippable == null) ? null : new CraftEquippableComponent((CraftEquippableComponent) this.equippable);
-+ this.equippable = (equippable == null) ? null : new CraftEquippableComponent((CraftEquippableComponent) equippable); // Paper
- }
-
- @Override
@@ -1692,7 +1700,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
@Override
diff --git a/patches/server/0993-Registry-Modification-API.patch b/patches/server/0993-Registry-Modification-API.patch
index 13cda87ccc..8c62f4ec9b 100644
--- a/patches/server/0993-Registry-Modification-API.patch
+++ b/patches/server/0993-Registry-Modification-API.patch
@@ -9,7 +9,7 @@ public net.minecraft.resources.RegistryOps lookupProvider
public net.minecraft.resources.RegistryOps$HolderLookupAdapter
diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
-index 633b01431750d4b40159a57bf25fb35c6670ff1b..5cf598905ed6a7ac2b0d9ced3420adaf20ceb6af 100644
+index b5df90b500a64ee3ba1026fa3449ca6441293367..36bc8d005de14622eb8a0bf4736d964276c95344 100644
--- a/src/main/java/io/papermc/paper/registry/PaperRegistries.java
+++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
@@ -2,6 +2,7 @@ package io.papermc.paper.registry;
@@ -20,7 +20,7 @@ index 633b01431750d4b40159a57bf25fb35c6670ff1b..5cf598905ed6a7ac2b0d9ced3420adaf
import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.List;
-@@ -58,6 +59,7 @@ import org.checkerframework.framework.qual.DefaultQualifier;
+@@ -64,6 +65,7 @@ import org.checkerframework.framework.qual.DefaultQualifier;
import static io.papermc.paper.registry.entry.RegistryEntry.apiOnly;
import static io.papermc.paper.registry.entry.RegistryEntry.entry;
@@ -28,7 +28,7 @@ index 633b01431750d4b40159a57bf25fb35c6670ff1b..5cf598905ed6a7ac2b0d9ced3420adaf
@DefaultQualifier(NonNull.class)
public final class PaperRegistries {
-@@ -141,6 +143,15 @@ public final class PaperRegistries {
+@@ -147,6 +149,15 @@ public final class PaperRegistries {
return ResourceKey.create((ResourceKey<? extends Registry<M>>) PaperRegistries.registryToNms(typedKey.registryKey()), PaperAdventure.asVanilla(typedKey.key()));
}
@@ -1323,10 +1323,10 @@ index 6fddef967b6314ca0158f5bd4b8898670ea5e9ec..b5ca1a0acb16d0cd8dccc854f309d425
return writableRegistry;
}, prepareExecutor);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
-index f8450a2abd1e96fac7827d252cc00038b9dee839..891ccc39d52331648a11b4e7cce78d4c848cdea0 100644
+index 9245f6de141384bfc12e8dd81ce1df366c6a62aa..d97ddbcb5efdae5f848c77bee52058b16316b3dc 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
-@@ -167,11 +167,11 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+@@ -162,11 +162,11 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
private final Map<NamespacedKey, B> cache = new HashMap<>();
private final Map<B, NamespacedKey> byValue = new java.util.IdentityHashMap<>(); // Paper - improve Registry
private final net.minecraft.core.Registry<M> minecraftRegistry;
@@ -1340,7 +1340,7 @@ index f8450a2abd1e96fac7827d252cc00038b9dee839..891ccc39d52331648a11b4e7cce78d4c
this.bukkitClass = bukkitClass;
this.minecraftRegistry = minecraftRegistry;
this.minecraftToBukkit = minecraftToBukkit;
-@@ -254,4 +254,17 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
+@@ -249,4 +249,17 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
return this.byValue.get(value);
}
// Paper end - improve Registry
@@ -1359,10 +1359,10 @@ index f8450a2abd1e96fac7827d252cc00038b9dee839..891ccc39d52331648a11b4e7cce78d4c
+ // Paper end - RegistrySet API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 51d5629b00ec4929c12ed9e6ba5a37f5903cf13e..d728bf1d83877290e4d3fdaa7649ed077c0ee1ec 100644
+index f0556a207f6d9d1766ef0d9753355f7fa5052dc1..f55733b7a56ac21cb297971b9e854ef54001ca26 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -658,6 +658,21 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -666,6 +666,21 @@ public final class CraftMagicNumbers implements UnsafeValues {
}
// Paper end - lifecycle event API
diff --git a/patches/server/0994-Add-registry-entry-and-builders.patch b/patches/server/0994-Add-registry-entry-and-builders.patch
index 0355a6b299..61941d6748 100644
--- a/patches/server/0994-Add-registry-entry-and-builders.patch
+++ b/patches/server/0994-Add-registry-entry-and-builders.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add registry entry and builders
diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
-index 5cf598905ed6a7ac2b0d9ced3420adaf20ceb6af..12220f78ffaf06433ada72fd0c7f22b97d55287d 100644
+index 36bc8d005de14622eb8a0bf4736d964276c95344..3ad1ba8c14fe3745cedcbbd9bb28dad36eb6c7bb 100644
--- a/src/main/java/io/papermc/paper/registry/PaperRegistries.java
+++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
@@ -1,6 +1,8 @@
@@ -17,7 +17,7 @@ index 5cf598905ed6a7ac2b0d9ced3420adaf20ceb6af..12220f78ffaf06433ada72fd0c7f22b9
import io.papermc.paper.registry.entry.RegistryEntry;
import io.papermc.paper.registry.tag.TagKey;
import java.util.Collections;
-@@ -70,7 +72,7 @@ public final class PaperRegistries {
+@@ -76,7 +78,7 @@ public final class PaperRegistries {
static {
REGISTRY_ENTRIES = List.of(
// built-ins
@@ -26,7 +26,7 @@ index 5cf598905ed6a7ac2b0d9ced3420adaf20ceb6af..12220f78ffaf06433ada72fd0c7f22b9
entry(Registries.STRUCTURE_TYPE, RegistryKey.STRUCTURE_TYPE, StructureType.class, CraftStructureType::new),
entry(Registries.INSTRUMENT, RegistryKey.INSTRUMENT, MusicInstrument.class, CraftMusicInstrument::new),
entry(Registries.MOB_EFFECT, RegistryKey.MOB_EFFECT, PotionEffectType.class, CraftPotionEffectType::new),
-@@ -89,7 +91,7 @@ public final class PaperRegistries {
+@@ -97,7 +99,7 @@ public final class PaperRegistries {
entry(Registries.TRIM_PATTERN, RegistryKey.TRIM_PATTERN, TrimPattern.class, CraftTrimPattern::new).delayed(),
entry(Registries.DAMAGE_TYPE, RegistryKey.DAMAGE_TYPE, DamageType.class, CraftDamageType::new).delayed(),
entry(Registries.WOLF_VARIANT, RegistryKey.WOLF_VARIANT, Wolf.Variant.class, CraftWolf.CraftVariant::new).delayed(),
@@ -34,7 +34,7 @@ index 5cf598905ed6a7ac2b0d9ced3420adaf20ceb6af..12220f78ffaf06433ada72fd0c7f22b9
+ writable(Registries.ENCHANTMENT, RegistryKey.ENCHANTMENT, Enchantment.class, CraftEnchantment::new, PaperEnchantmentRegistryEntry.PaperBuilder::new).withSerializationUpdater(FieldRename.ENCHANTMENT_RENAME).delayed(),
entry(Registries.JUKEBOX_SONG, RegistryKey.JUKEBOX_SONG, JukeboxSong.class, CraftJukeboxSong::new).delayed(),
entry(Registries.BANNER_PATTERN, RegistryKey.BANNER_PATTERN, PatternType.class, CraftPatternType::new).delayed(),
-
+ entry(Registries.BIOME, RegistryKey.BIOME, Biome.class, CraftBiome::new).delayed(),
diff --git a/src/main/java/io/papermc/paper/registry/data/PaperEnchantmentRegistryEntry.java b/src/main/java/io/papermc/paper/registry/data/PaperEnchantmentRegistryEntry.java
new file mode 100644
index 0000000000000000000000000000000000000000..481f5f0cfae1fada3bc3f873fb7e04c3086ea9bf
diff --git a/patches/server/0995-Proxy-ItemStack-to-CraftItemStack.patch b/patches/server/0995-Proxy-ItemStack-to-CraftItemStack.patch
index 40da32a4fb..c7dfc54b2e 100644
--- a/patches/server/0995-Proxy-ItemStack-to-CraftItemStack.patch
+++ b/patches/server/0995-Proxy-ItemStack-to-CraftItemStack.patch
@@ -205,10 +205,10 @@ index 6cc9d7a9e6d4bfdc27e52fc581b2bb832616f121..6930d0afb230a88aa813b02e4d55c95d
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index d728bf1d83877290e4d3fdaa7649ed077c0ee1ec..d3759c1262a5ce8ff82215a99abd31f20af95fc5 100644
+index f55733b7a56ac21cb297971b9e854ef54001ca26..8af9ac9e22a15457da12f0746d0e411942c278fb 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -673,6 +673,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -681,6 +681,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
}
// Paper end - hack to get tags for non server-backed registries
diff --git a/patches/server/1020-Add-FeatureFlag-API.patch b/patches/server/1020-Add-FeatureFlag-API.patch
index eaaa35ce83..e28ac2d6db 100644
--- a/patches/server/1020-Add-FeatureFlag-API.patch
+++ b/patches/server/1020-Add-FeatureFlag-API.patch
@@ -284,20 +284,20 @@ index 6cf790c9fa23ea313423fdaeb7c181bf530828c6..0bcb9df1103050441f8922a688b163dc
public static PotionEffectType minecraftHolderToBukkit(Holder<MobEffect> minecraft) {
return CraftPotionEffectType.minecraftToBukkit(minecraft.value());
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index d3759c1262a5ce8ff82215a99abd31f20af95fc5..15bb55f0b4c60b0519918b910398a0908022128f 100644
+index 3bd77074da98bcfe3677995038642c4e9cdb86b8..83835e41034e79442177f19dcb18e7df5b0e296e 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -47,7 +47,7 @@ import org.bukkit.advancement.Advancement;
- import org.bukkit.attribute.Attribute;
+@@ -48,7 +48,7 @@ import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
+ import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
-import org.bukkit.craftbukkit.CraftFeatureFlag;
+// import org.bukkit.craftbukkit.CraftFeatureFlag; // Paper
import org.bukkit.craftbukkit.CraftRegistry;
import org.bukkit.craftbukkit.CraftServer;
- import org.bukkit.craftbukkit.attribute.CraftAttribute;
-@@ -455,11 +455,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
- return CraftAttribute.bukkitToMinecraft(attribute).getDescriptionId();
+ import org.bukkit.craftbukkit.block.CraftBiome;
+@@ -456,11 +456,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
+ return attribute.getTranslationKey();
}
- @Override
diff --git a/patches/server/1022-Item-serialization-as-json.patch b/patches/server/1022-Item-serialization-as-json.patch
index 6b8500a0d7..4cc5284169 100644
--- a/patches/server/1022-Item-serialization-as-json.patch
+++ b/patches/server/1022-Item-serialization-as-json.patch
@@ -28,10 +28,10 @@ index c80fd4960dfbb0fde37363e7df25b0a5411bdb11..ff7f6916f65466c25a7bde35d64682c1
public static final Codec<CustomData> CODEC_WITH_ID = CODEC.validate(
component -> component.getUnsafe().contains("id", 8) ? DataResult.success(component) : DataResult.error(() -> "Missing id for entity in: " + component)
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 15bb55f0b4c60b0519918b910398a0908022128f..ef0ef0872a44eb34fe41358728f3ddcf262297e9 100644
+index 83835e41034e79442177f19dcb18e7df5b0e296e..08d48cd55cfaf92530cc900f2f119ae3a258eb39 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -516,6 +516,39 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -527,6 +527,39 @@ public final class CraftMagicNumbers implements UnsafeValues {
return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.parse(MinecraftServer.getServer().registryAccess(), compound).orElseThrow());
}
diff --git a/patches/server/1037-Rewrite-dataconverter-system.patch b/patches/server/1037-Rewrite-dataconverter-system.patch
index e91a834827..e452b9f771 100644
--- a/patches/server/1037-Rewrite-dataconverter-system.patch
+++ b/patches/server/1037-Rewrite-dataconverter-system.patch
@@ -30384,10 +30384,10 @@ index b54a3741cd3ba615c83c98985cb4b3c4c586ed7a..b148cf247acdd36f856d0495cde4cc5a
return nbttagcompound;
});
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index ef0ef0872a44eb34fe41358728f3ddcf262297e9..05a62b2cf9ca8e0141274bd7f44ef8fb703466d1 100644
+index 08d48cd55cfaf92530cc900f2f119ae3a258eb39..d8d04183fd8bb0bcf2f703ef65b11dbd342473ba 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -512,7 +512,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -523,7 +523,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
net.minecraft.nbt.CompoundTag compound = deserializeNbtFromBytes(data);
final int dataVersion = compound.getInt("DataVersion");
@@ -30396,7 +30396,7 @@ index ef0ef0872a44eb34fe41358728f3ddcf262297e9..05a62b2cf9ca8e0141274bd7f44ef8fb
return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.parse(MinecraftServer.getServer().registryAccess(), compound).orElseThrow());
}
-@@ -566,7 +566,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -577,7 +577,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
net.minecraft.nbt.CompoundTag compound = deserializeNbtFromBytes(data);
int dataVersion = compound.getInt("DataVersion");
diff --git a/work/Bukkit b/work/Bukkit
-Subproject 553558256cab26217919a0809cc26f7aad22995
+Subproject 97c5926140420c7b9e8a06b2b8348b1816f2a6b
diff --git a/work/CraftBukkit b/work/CraftBukkit
-Subproject 18b8ae18390763d48ea292435b75c1eabf5dbff
+Subproject 7235ad7b04542ce214869eb1ec1966bb392aedc