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