aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2022-03-04 00:09:43 -0800
committerGitHub <[email protected]>2022-03-04 09:09:43 +0100
commit15b6b3db2cf24c98afbfb0849e694875d18fc021 (patch)
tree03e884d0c7fe2ce292825b5b51ec4c9a6ce2e8cc
parent753bf2c1034c5f35cc0839001d12363a44f936fc (diff)
downloadPaper-15b6b3db2cf24c98afbfb0849e694875d18fc021.tar.gz
Paper-15b6b3db2cf24c98afbfb0849e694875d18fc021.zip
Add StructuresLocateEvent as replacement for StructureLocateEvent (#7524)
-rw-r--r--patches/api/0256-Add-PaperRegistry.patch112
-rw-r--r--patches/api/0256-Add-StructureLocateEvent.patch167
-rw-r--r--patches/api/0257-Add-StructuresLocateEvent.patch461
-rw-r--r--patches/api/0258-Return-chat-component-with-empty-text-instead-of-thr.patch (renamed from patches/api/0257-Return-chat-component-with-empty-text-instead-of-thr.patch)0
-rw-r--r--patches/api/0259-Add-BlockPreDispenseEvent.patch (renamed from patches/api/0258-Add-BlockPreDispenseEvent.patch)0
-rw-r--r--patches/api/0260-Added-Vanilla-Entity-Tags.patch (renamed from patches/api/0259-Added-Vanilla-Entity-Tags.patch)0
-rw-r--r--patches/api/0261-added-Wither-API.patch (renamed from patches/api/0260-added-Wither-API.patch)0
-rw-r--r--patches/api/0262-Added-PlayerChangeBeaconEffectEvent.patch (renamed from patches/api/0261-Added-PlayerChangeBeaconEffectEvent.patch)0
-rw-r--r--patches/api/0263-Added-PlayerStonecutterRecipeSelectEvent.patch (renamed from patches/api/0262-Added-PlayerStonecutterRecipeSelectEvent.patch)0
-rw-r--r--patches/api/0264-Add-dropLeash-variable-to-EntityUnleashEvent.patch (renamed from patches/api/0263-Add-dropLeash-variable-to-EntityUnleashEvent.patch)0
-rw-r--r--patches/api/0265-add-DragonEggFormEvent.patch (renamed from patches/api/0264-add-DragonEggFormEvent.patch)0
-rw-r--r--patches/api/0266-EntityMoveEvent.patch (renamed from patches/api/0265-EntityMoveEvent.patch)0
-rw-r--r--patches/api/0267-Allow-adding-items-to-BlockDropItemEvent.patch (renamed from patches/api/0266-Allow-adding-items-to-BlockDropItemEvent.patch)0
-rw-r--r--patches/api/0268-Add-getMainThreadExecutor-to-BukkitScheduler.patch (renamed from patches/api/0267-Add-getMainThreadExecutor-to-BukkitScheduler.patch)0
-rw-r--r--patches/api/0269-living-entity-allow-attribute-registration.patch (renamed from patches/api/0268-living-entity-allow-attribute-registration.patch)0
-rw-r--r--patches/api/0270-Add-missing-effects.patch (renamed from patches/api/0269-Add-missing-effects.patch)0
-rw-r--r--patches/api/0271-Expose-Tracked-Players.patch (renamed from patches/api/0270-Expose-Tracked-Players.patch)0
-rw-r--r--patches/api/0272-Cache-the-result-of-Material-isBlock.patch (renamed from patches/api/0271-Cache-the-result-of-Material-isBlock.patch)0
-rw-r--r--patches/api/0273-Add-worldborder-events.patch (renamed from patches/api/0272-Add-worldborder-events.patch)0
-rw-r--r--patches/api/0274-added-PlayerNameEntityEvent.patch (renamed from patches/api/0273-added-PlayerNameEntityEvent.patch)0
-rw-r--r--patches/api/0275-Add-recipe-to-cook-events.patch (renamed from patches/api/0274-Add-recipe-to-cook-events.patch)0
-rw-r--r--patches/api/0276-Add-Block-isValidTool.patch (renamed from patches/api/0275-Add-Block-isValidTool.patch)0
-rw-r--r--patches/api/0277-Implement-Keyed-on-World.patch (renamed from patches/api/0276-Implement-Keyed-on-World.patch)2
-rw-r--r--patches/api/0278-Item-Rarity-API.patch (renamed from patches/api/0277-Item-Rarity-API.patch)8
-rw-r--r--patches/api/0279-Expose-protocol-version.patch (renamed from patches/api/0278-Expose-protocol-version.patch)4
-rw-r--r--patches/api/0280-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch (renamed from patches/api/0279-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch)0
-rw-r--r--patches/api/0281-add-isDeeplySleeping-to-HumanEntity.patch (renamed from patches/api/0280-add-isDeeplySleeping-to-HumanEntity.patch)0
-rw-r--r--patches/api/0282-add-consumeFuel-to-FurnaceBurnEvent.patch (renamed from patches/api/0281-add-consumeFuel-to-FurnaceBurnEvent.patch)0
-rw-r--r--patches/api/0283-add-get-set-drop-chance-to-EntityEquipment.patch (renamed from patches/api/0282-add-get-set-drop-chance-to-EntityEquipment.patch)0
-rw-r--r--patches/api/0284-Added-PlayerDeepSleepEvent.patch (renamed from patches/api/0283-Added-PlayerDeepSleepEvent.patch)0
-rw-r--r--patches/api/0285-More-World-API.patch (renamed from patches/api/0284-More-World-API.patch)2
-rw-r--r--patches/api/0286-Added-PlayerBedFailEnterEvent.patch (renamed from patches/api/0285-Added-PlayerBedFailEnterEvent.patch)0
-rw-r--r--patches/api/0287-Introduce-beacon-activation-deactivation-events.patch (renamed from patches/api/0286-Introduce-beacon-activation-deactivation-events.patch)0
-rw-r--r--patches/api/0288-PlayerMoveEvent-Improvements.patch (renamed from patches/api/0287-PlayerMoveEvent-Improvements.patch)0
-rw-r--r--patches/api/0289-add-RespawnFlags-to-PlayerRespawnEvent.patch (renamed from patches/api/0288-add-RespawnFlags-to-PlayerRespawnEvent.patch)0
-rw-r--r--patches/api/0290-Add-more-WanderingTrader-API.patch (renamed from patches/api/0289-Add-more-WanderingTrader-API.patch)0
-rw-r--r--patches/api/0291-Add-EntityBlockStorage-clearEntities.patch (renamed from patches/api/0290-Add-EntityBlockStorage-clearEntities.patch)0
-rw-r--r--patches/api/0292-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch (renamed from patches/api/0291-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch)0
-rw-r--r--patches/api/0293-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/api/0292-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/api/0294-Inventory-close.patch (renamed from patches/api/0293-Inventory-close.patch)0
-rw-r--r--patches/api/0295-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch (renamed from patches/api/0294-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch)0
-rw-r--r--patches/api/0296-Add-basic-Datapack-API.patch (renamed from patches/api/0295-Add-basic-Datapack-API.patch)0
-rw-r--r--patches/api/0297-additions-to-PlayerGameModeChangeEvent.patch (renamed from patches/api/0296-additions-to-PlayerGameModeChangeEvent.patch)0
-rw-r--r--patches/api/0298-ItemStack-repair-check-API.patch (renamed from patches/api/0297-ItemStack-repair-check-API.patch)4
-rw-r--r--patches/api/0299-More-Enchantment-API.patch (renamed from patches/api/0298-More-Enchantment-API.patch)0
-rw-r--r--patches/api/0300-List-all-missing-hard-depends-not-just-first.patch (renamed from patches/api/0299-List-all-missing-hard-depends-not-just-first.patch)0
-rw-r--r--patches/api/0301-Add-Mob-lookAt-API.patch (renamed from patches/api/0300-Add-Mob-lookAt-API.patch)0
-rw-r--r--patches/api/0302-ItemStack-editMeta.patch (renamed from patches/api/0301-ItemStack-editMeta.patch)0
-rw-r--r--patches/api/0303-Add-EntityInsideBlockEvent.patch (renamed from patches/api/0302-Add-EntityInsideBlockEvent.patch)0
-rw-r--r--patches/api/0304-Attributes-API-for-item-defaults.patch (renamed from patches/api/0303-Attributes-API-for-item-defaults.patch)4
-rw-r--r--patches/api/0305-Add-cause-to-Weather-ThunderChangeEvents.patch (renamed from patches/api/0304-Add-cause-to-Weather-ThunderChangeEvents.patch)0
-rw-r--r--patches/api/0306-More-Lidded-Block-API.patch (renamed from patches/api/0305-More-Lidded-Block-API.patch)0
-rw-r--r--patches/api/0307-Add-PlayerKickEvent-causes.patch (renamed from patches/api/0306-Add-PlayerKickEvent-causes.patch)2
-rw-r--r--patches/api/0308-Add-PufferFishStateChangeEvent.patch (renamed from patches/api/0307-Add-PufferFishStateChangeEvent.patch)0
-rw-r--r--patches/api/0309-Add-BellRevealRaiderEvent.patch (renamed from patches/api/0308-Add-BellRevealRaiderEvent.patch)0
-rw-r--r--patches/api/0310-Add-ElderGuardianAppearanceEvent.patch (renamed from patches/api/0309-Add-ElderGuardianAppearanceEvent.patch)0
-rw-r--r--patches/api/0311-Add-more-line-of-sight-methods.patch (renamed from patches/api/0310-Add-more-line-of-sight-methods.patch)2
-rw-r--r--patches/api/0312-Add-more-LimitedRegion-API.patch (renamed from patches/api/0311-Add-more-LimitedRegion-API.patch)0
-rw-r--r--patches/api/0313-Missing-Entity-Behavior-API.patch (renamed from patches/api/0312-Missing-Entity-Behavior-API.patch)0
-rw-r--r--patches/api/0314-Add-Git-information-to-version-command-on-startup.patch (renamed from patches/api/0313-Add-Git-information-to-version-command-on-startup.patch)2
-rw-r--r--patches/api/0315-Adds-PlayerArmSwingEvent.patch (renamed from patches/api/0314-Adds-PlayerArmSwingEvent.patch)0
-rw-r--r--patches/api/0316-Add-PlayerSignCommandPreprocessEvent.patch (renamed from patches/api/0315-Add-PlayerSignCommandPreprocessEvent.patch)0
-rw-r--r--patches/api/0317-fix-empty-array-elements-in-command-arguments.patch (renamed from patches/api/0316-fix-empty-array-elements-in-command-arguments.patch)0
-rw-r--r--patches/api/0318-Stinger-API.patch (renamed from patches/api/0317-Stinger-API.patch)0
-rw-r--r--patches/api/0319-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch (renamed from patches/api/0318-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch)0
-rw-r--r--patches/api/0320-Add-PlayerSetSpawnEvent.patch (renamed from patches/api/0319-Add-PlayerSetSpawnEvent.patch)0
-rw-r--r--patches/api/0321-Added-EntityDamageItemEvent.patch (renamed from patches/api/0320-Added-EntityDamageItemEvent.patch)0
-rw-r--r--patches/api/0322-Make-EntityUnleashEvent-cancellable.patch (renamed from patches/api/0321-Make-EntityUnleashEvent-cancellable.patch)0
-rw-r--r--patches/api/0323-Change-EnderEye-target-without-changing-other-things.patch (renamed from patches/api/0322-Change-EnderEye-target-without-changing-other-things.patch)0
-rw-r--r--patches/api/0324-Add-BlockBreakBlockEvent.patch (renamed from patches/api/0323-Add-BlockBreakBlockEvent.patch)0
-rw-r--r--patches/api/0325-Add-helpers-for-left-right-click-to-Action.patch (renamed from patches/api/0324-Add-helpers-for-left-right-click-to-Action.patch)0
-rw-r--r--patches/api/0326-Option-to-prevent-NBT-copy-in-smithing-recipes.patch (renamed from patches/api/0325-Option-to-prevent-NBT-copy-in-smithing-recipes.patch)0
-rw-r--r--patches/api/0327-More-CommandBlock-API.patch (renamed from patches/api/0326-More-CommandBlock-API.patch)0
-rw-r--r--patches/api/0328-Fix-plugin-provides-load-order.patch (renamed from patches/api/0327-Fix-plugin-provides-load-order.patch)0
-rw-r--r--patches/api/0329-Add-missing-team-sidebar-display-slots.patch (renamed from patches/api/0328-Add-missing-team-sidebar-display-slots.patch)0
-rw-r--r--patches/api/0330-add-back-EntityPortalExitEvent.patch (renamed from patches/api/0329-add-back-EntityPortalExitEvent.patch)0
-rw-r--r--patches/api/0331-Add-methods-to-find-targets-for-lightning-strikes.patch (renamed from patches/api/0330-Add-methods-to-find-targets-for-lightning-strikes.patch)2
-rw-r--r--patches/api/0332-Get-entity-default-attributes.patch (renamed from patches/api/0331-Get-entity-default-attributes.patch)4
-rw-r--r--patches/api/0333-Left-handed-API.patch (renamed from patches/api/0332-Left-handed-API.patch)0
-rw-r--r--patches/api/0334-Add-advancement-display-API.patch (renamed from patches/api/0333-Add-advancement-display-API.patch)0
-rw-r--r--patches/api/0335-Add-ItemFactory-getMonsterEgg-API.patch (renamed from patches/api/0334-Add-ItemFactory-getMonsterEgg-API.patch)0
-rw-r--r--patches/api/0336-Add-critical-damage-API.patch (renamed from patches/api/0335-Add-critical-damage-API.patch)0
-rw-r--r--patches/api/0337-Fix-issues-with-mob-conversion.patch (renamed from patches/api/0336-Fix-issues-with-mob-conversion.patch)0
-rw-r--r--patches/api/0338-Add-isCollidable-methods-to-various-places.patch (renamed from patches/api/0337-Add-isCollidable-methods-to-various-places.patch)4
-rw-r--r--patches/api/0339-Goat-ram-API.patch (renamed from patches/api/0338-Goat-ram-API.patch)0
-rw-r--r--patches/api/0340-Add-API-for-resetting-a-single-score.patch (renamed from patches/api/0339-Add-API-for-resetting-a-single-score.patch)0
-rw-r--r--patches/api/0341-Add-Raw-Byte-Entity-Serialization.patch (renamed from patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch)0
-rw-r--r--patches/api/0342-Add-PlayerItemFrameChangeEvent.patch (renamed from patches/api/0341-Add-PlayerItemFrameChangeEvent.patch)0
-rw-r--r--patches/api/0343-Add-player-health-update-API.patch (renamed from patches/api/0342-Add-player-health-update-API.patch)0
-rw-r--r--patches/api/0344-Allow-delegation-to-vanilla-chunk-gen.patch (renamed from patches/api/0343-Allow-delegation-to-vanilla-chunk-gen.patch)0
-rw-r--r--patches/api/0345-Add-more-Campfire-API.patch (renamed from patches/api/0344-Add-more-Campfire-API.patch)0
-rw-r--r--patches/api/0346-Move-VehicleCollisionEvent-HandlerList-up.patch (renamed from patches/api/0345-Move-VehicleCollisionEvent-HandlerList-up.patch)0
-rw-r--r--patches/api/0347-Improve-scoreboard-entries.patch (renamed from patches/api/0346-Improve-scoreboard-entries.patch)0
-rw-r--r--patches/api/0348-Entity-powdered-snow-API.patch (renamed from patches/api/0347-Entity-powdered-snow-API.patch)0
-rw-r--r--patches/api/0349-Add-API-for-item-entity-health.patch (renamed from patches/api/0348-Add-API-for-item-entity-health.patch)0
-rw-r--r--patches/api/0350-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch (renamed from patches/api/0349-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch)0
-rw-r--r--patches/api/0351-Bucketable-API.patch (renamed from patches/api/0350-Bucketable-API.patch)0
-rw-r--r--patches/api/0352-System-prop-for-default-config-comment-parsing.patch (renamed from patches/api/0351-System-prop-for-default-config-comment-parsing.patch)0
-rw-r--r--patches/api/0353-Expose-vanilla-BiomeProvider-from-WorldInfo.patch (renamed from patches/api/0352-Expose-vanilla-BiomeProvider-from-WorldInfo.patch)0
-rw-r--r--patches/api/0354-Remove-upstream-snakeyaml-fix.patch (renamed from patches/api/0353-Remove-upstream-snakeyaml-fix.patch)0
-rw-r--r--patches/api/0355-Add-new-overload-to-PersistentDataContainer-has.patch (renamed from patches/api/0354-Add-new-overload-to-PersistentDataContainer-has.patch)0
-rw-r--r--patches/api/0356-Multiple-Entries-with-Scoreboards.patch (renamed from patches/api/0355-Multiple-Entries-with-Scoreboards.patch)0
-rw-r--r--patches/api/0357-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/api/0356-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/api/0358-Warn-on-strange-EventHandler-return-types.patch (renamed from patches/api/0357-Warn-on-strange-EventHandler-return-types.patch)0
-rw-r--r--patches/api/0359-Multi-Block-Change-API.patch (renamed from patches/api/0358-Multi-Block-Change-API.patch)2
-rw-r--r--patches/api/0360-Fix-NotePlayEvent.patch (renamed from patches/api/0359-Fix-NotePlayEvent.patch)0
-rw-r--r--patches/api/0361-Freeze-Tick-Lock-API.patch (renamed from patches/api/0360-Freeze-Tick-Lock-API.patch)0
-rw-r--r--patches/api/0362-Dolphin-API.patch (renamed from patches/api/0361-Dolphin-API.patch)0
-rw-r--r--patches/api/0363-More-PotionEffectType-API.patch (renamed from patches/api/0362-More-PotionEffectType-API.patch)14
-rw-r--r--patches/api/0364-Expand-the-Registry-API.patch (renamed from patches/api/0363-Expand-the-Registry-API.patch)4
-rw-r--r--patches/api/0365-API-for-creating-command-sender-which-forwards-feedb.patch (renamed from patches/api/0364-API-for-creating-command-sender-which-forwards-feedb.patch)0
-rw-r--r--patches/api/0366-Implement-regenerateChunk.patch (renamed from patches/api/0365-Implement-regenerateChunk.patch)2
-rw-r--r--patches/api/0367-Don-t-load-plugins-prefixed-with-a-dot.patch (renamed from patches/api/0366-Don-t-load-plugins-prefixed-with-a-dot.patch)0
-rw-r--r--patches/api/0368-Add-GameEvent-tags.patch (renamed from patches/api/0367-Add-GameEvent-tags.patch)0
-rw-r--r--patches/api/0369-Furnace-RecipesUsed-API.patch (renamed from patches/api/0368-Furnace-RecipesUsed-API.patch)0
-rw-r--r--patches/api/0370-Configurable-sculk-sensor-listener-range.patch (renamed from patches/api/0369-Configurable-sculk-sensor-listener-range.patch)0
-rw-r--r--patches/api/0371-Add-missing-block-data-mins-and-maxes.patch (renamed from patches/api/0370-Add-missing-block-data-mins-and-maxes.patch)0
-rw-r--r--patches/api/0372-Custom-Potion-Mixes.patch (renamed from patches/api/0371-Custom-Potion-Mixes.patch)0
-rw-r--r--patches/server/0579-Add-PaperRegistry.patch220
-rw-r--r--patches/server/0579-Add-StructureLocateEvent.patch31
-rw-r--r--patches/server/0580-Add-StructuresLocateEvent.patch224
-rw-r--r--patches/server/0581-Collision-option-for-requiring-a-player-participant.patch (renamed from patches/server/0580-Collision-option-for-requiring-a-player-participant.patch)0
-rw-r--r--patches/server/0582-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch (renamed from patches/server/0581-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch)0
-rw-r--r--patches/server/0583-Return-chat-component-with-empty-text-instead-of-thr.patch (renamed from patches/server/0582-Return-chat-component-with-empty-text-instead-of-thr.patch)0
-rw-r--r--patches/server/0584-Make-schedule-command-per-world.patch (renamed from patches/server/0583-Make-schedule-command-per-world.patch)0
-rw-r--r--patches/server/0585-Configurable-max-leash-distance.patch (renamed from patches/server/0584-Configurable-max-leash-distance.patch)0
-rw-r--r--patches/server/0586-Implement-BlockPreDispenseEvent.patch (renamed from patches/server/0585-Implement-BlockPreDispenseEvent.patch)0
-rw-r--r--patches/server/0587-added-Wither-API.patch (renamed from patches/server/0586-added-Wither-API.patch)0
-rw-r--r--patches/server/0588-Added-firing-of-PlayerChangeBeaconEffectEvent.patch (renamed from patches/server/0587-Added-firing-of-PlayerChangeBeaconEffectEvent.patch)0
-rw-r--r--patches/server/0589-Add-toggle-for-always-placing-the-dragon-egg.patch (renamed from patches/server/0588-Add-toggle-for-always-placing-the-dragon-egg.patch)0
-rw-r--r--patches/server/0590-Added-PlayerStonecutterRecipeSelectEvent.patch (renamed from patches/server/0589-Added-PlayerStonecutterRecipeSelectEvent.patch)0
-rw-r--r--patches/server/0591-Add-dropLeash-variable-to-EntityUnleashEvent.patch (renamed from patches/server/0590-Add-dropLeash-variable-to-EntityUnleashEvent.patch)0
-rw-r--r--patches/server/0592-Reset-shield-blocking-on-dimension-change.patch (renamed from patches/server/0591-Reset-shield-blocking-on-dimension-change.patch)0
-rw-r--r--patches/server/0593-add-DragonEggFormEvent.patch (renamed from patches/server/0592-add-DragonEggFormEvent.patch)0
-rw-r--r--patches/server/0594-EntityMoveEvent.patch (renamed from patches/server/0593-EntityMoveEvent.patch)2
-rw-r--r--patches/server/0595-added-option-to-disable-pathfinding-updates-on-block.patch (renamed from patches/server/0594-added-option-to-disable-pathfinding-updates-on-block.patch)0
-rw-r--r--patches/server/0596-Inline-shift-direction-fields.patch (renamed from patches/server/0595-Inline-shift-direction-fields.patch)0
-rw-r--r--patches/server/0597-Allow-adding-items-to-BlockDropItemEvent.patch (renamed from patches/server/0596-Allow-adding-items-to-BlockDropItemEvent.patch)0
-rw-r--r--patches/server/0598-Add-getMainThreadExecutor-to-BukkitScheduler.patch (renamed from patches/server/0597-Add-getMainThreadExecutor-to-BukkitScheduler.patch)0
-rw-r--r--patches/server/0599-living-entity-allow-attribute-registration.patch (renamed from patches/server/0598-living-entity-allow-attribute-registration.patch)0
-rw-r--r--patches/server/0600-fix-dead-slime-setSize-invincibility.patch (renamed from patches/server/0599-fix-dead-slime-setSize-invincibility.patch)0
-rw-r--r--patches/server/0601-Merchant-getRecipes-should-return-an-immutable-list.patch (renamed from patches/server/0600-Merchant-getRecipes-should-return-an-immutable-list.patch)0
-rw-r--r--patches/server/0602-Add-support-for-hex-color-codes-in-console.patch (renamed from patches/server/0601-Add-support-for-hex-color-codes-in-console.patch)0
-rw-r--r--patches/server/0603-Expose-Tracked-Players.patch (renamed from patches/server/0602-Expose-Tracked-Players.patch)0
-rw-r--r--patches/server/0604-Remove-streams-from-SensorNearest.patch (renamed from patches/server/0603-Remove-streams-from-SensorNearest.patch)0
-rw-r--r--patches/server/0605-Throw-proper-exception-on-empty-JsonList-file.patch (renamed from patches/server/0604-Throw-proper-exception-on-empty-JsonList-file.patch)0
-rw-r--r--patches/server/0606-Improve-ServerGUI.patch (renamed from patches/server/0605-Improve-ServerGUI.patch)0
-rw-r--r--patches/server/0607-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch (renamed from patches/server/0606-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch)0
-rw-r--r--patches/server/0608-fix-converting-txt-to-json-file.patch (renamed from patches/server/0607-fix-converting-txt-to-json-file.patch)0
-rw-r--r--patches/server/0609-Add-worldborder-events.patch (renamed from patches/server/0608-Add-worldborder-events.patch)0
-rw-r--r--patches/server/0610-added-PlayerNameEntityEvent.patch (renamed from patches/server/0609-added-PlayerNameEntityEvent.patch)0
-rw-r--r--patches/server/0611-Prevent-grindstones-from-overstacking-items.patch (renamed from patches/server/0610-Prevent-grindstones-from-overstacking-items.patch)0
-rw-r--r--patches/server/0612-Add-recipe-to-cook-events.patch (renamed from patches/server/0611-Add-recipe-to-cook-events.patch)0
-rw-r--r--patches/server/0613-Add-Block-isValidTool.patch (renamed from patches/server/0612-Add-Block-isValidTool.patch)0
-rw-r--r--patches/server/0614-Allow-using-signs-inside-spawn-protection.patch (renamed from patches/server/0613-Allow-using-signs-inside-spawn-protection.patch)0
-rw-r--r--patches/server/0615-Implement-Keyed-on-World.patch (renamed from patches/server/0614-Implement-Keyed-on-World.patch)0
-rw-r--r--patches/server/0616-Add-fast-alternative-constructor-for-Rotations.patch (renamed from patches/server/0615-Add-fast-alternative-constructor-for-Rotations.patch)0
-rw-r--r--patches/server/0617-Item-Rarity-API.patch (renamed from patches/server/0616-Item-Rarity-API.patch)8
-rw-r--r--patches/server/0618-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch (renamed from patches/server/0617-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch)0
-rw-r--r--patches/server/0619-copy-TESign-isEditable-from-snapshots.patch (renamed from patches/server/0618-copy-TESign-isEditable-from-snapshots.patch)0
-rw-r--r--patches/server/0620-Drop-carried-item-when-player-has-disconnected.patch (renamed from patches/server/0619-Drop-carried-item-when-player-has-disconnected.patch)0
-rw-r--r--patches/server/0621-forced-whitelist-use-configurable-kick-message.patch (renamed from patches/server/0620-forced-whitelist-use-configurable-kick-message.patch)4
-rw-r--r--patches/server/0622-Don-t-ignore-result-of-PlayerEditBookEvent.patch (renamed from patches/server/0621-Don-t-ignore-result-of-PlayerEditBookEvent.patch)0
-rw-r--r--patches/server/0623-Entity-load-save-limit-per-chunk.patch (renamed from patches/server/0622-Entity-load-save-limit-per-chunk.patch)0
-rw-r--r--patches/server/0624-Expose-protocol-version.patch (renamed from patches/server/0623-Expose-protocol-version.patch)4
-rw-r--r--patches/server/0625-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch (renamed from patches/server/0624-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch)0
-rw-r--r--patches/server/0626-Enhance-console-tab-completions-for-brigadier-comman.patch (renamed from patches/server/0625-Enhance-console-tab-completions-for-brigadier-comman.patch)0
-rw-r--r--patches/server/0627-Fix-PlayerItemConsumeEvent-cancelling-properly.patch (renamed from patches/server/0626-Fix-PlayerItemConsumeEvent-cancelling-properly.patch)0
-rw-r--r--patches/server/0628-Add-bypass-host-check.patch (renamed from patches/server/0627-Add-bypass-host-check.patch)0
-rw-r--r--patches/server/0629-Set-area-affect-cloud-rotation.patch (renamed from patches/server/0628-Set-area-affect-cloud-rotation.patch)0
-rw-r--r--patches/server/0630-add-isDeeplySleeping-to-HumanEntity.patch (renamed from patches/server/0629-add-isDeeplySleeping-to-HumanEntity.patch)0
-rw-r--r--patches/server/0631-Fix-duplicating-give-items-on-item-drop-cancel.patch (renamed from patches/server/0630-Fix-duplicating-give-items-on-item-drop-cancel.patch)0
-rw-r--r--patches/server/0632-add-consumeFuel-to-FurnaceBurnEvent.patch (renamed from patches/server/0631-add-consumeFuel-to-FurnaceBurnEvent.patch)0
-rw-r--r--patches/server/0633-add-get-set-drop-chance-to-EntityEquipment.patch (renamed from patches/server/0632-add-get-set-drop-chance-to-EntityEquipment.patch)0
-rw-r--r--patches/server/0634-fix-PigZombieAngerEvent-cancellation.patch (renamed from patches/server/0633-fix-PigZombieAngerEvent-cancellation.patch)0
-rw-r--r--patches/server/0635-Fix-checkReach-check-for-Shulker-boxes.patch (renamed from patches/server/0634-Fix-checkReach-check-for-Shulker-boxes.patch)0
-rw-r--r--patches/server/0636-fix-PlayerItemHeldEvent-firing-twice.patch (renamed from patches/server/0635-fix-PlayerItemHeldEvent-firing-twice.patch)0
-rw-r--r--patches/server/0637-Added-PlayerDeepSleepEvent.patch (renamed from patches/server/0636-Added-PlayerDeepSleepEvent.patch)0
-rw-r--r--patches/server/0638-More-World-API.patch (renamed from patches/server/0637-More-World-API.patch)0
-rw-r--r--patches/server/0639-Added-PlayerBedFailEnterEvent.patch (renamed from patches/server/0638-Added-PlayerBedFailEnterEvent.patch)0
-rw-r--r--patches/server/0640-Implement-methods-to-convert-between-Component-and-B.patch (renamed from patches/server/0639-Implement-methods-to-convert-between-Component-and-B.patch)0
-rw-r--r--patches/server/0641-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch (renamed from patches/server/0640-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch)0
-rw-r--r--patches/server/0642-Introduce-beacon-activation-deactivation-events.patch (renamed from patches/server/0641-Introduce-beacon-activation-deactivation-events.patch)0
-rw-r--r--patches/server/0643-add-RespawnFlags-to-PlayerRespawnEvent.patch (renamed from patches/server/0642-add-RespawnFlags-to-PlayerRespawnEvent.patch)0
-rw-r--r--patches/server/0644-Add-Channel-initialization-listeners.patch (renamed from patches/server/0643-Add-Channel-initialization-listeners.patch)0
-rw-r--r--patches/server/0645-Send-empty-commands-if-tab-completion-is-disabled.patch (renamed from patches/server/0644-Send-empty-commands-if-tab-completion-is-disabled.patch)0
-rw-r--r--patches/server/0646-Add-more-WanderingTrader-API.patch (renamed from patches/server/0645-Add-more-WanderingTrader-API.patch)0
-rw-r--r--patches/server/0647-Add-EntityBlockStorage-clearEntities.patch (renamed from patches/server/0646-Add-EntityBlockStorage-clearEntities.patch)0
-rw-r--r--patches/server/0648-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch (renamed from patches/server/0647-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch)0
-rw-r--r--patches/server/0649-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/server/0648-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/server/0650-Inventory-close.patch (renamed from patches/server/0649-Inventory-close.patch)0
-rw-r--r--patches/server/0651-call-PortalCreateEvent-players-and-end-platform.patch (renamed from patches/server/0650-call-PortalCreateEvent-players-and-end-platform.patch)0
-rw-r--r--patches/server/0652-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch (renamed from patches/server/0651-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch)0
-rw-r--r--patches/server/0653-Fix-CraftPotionBrewer-cache.patch (renamed from patches/server/0652-Fix-CraftPotionBrewer-cache.patch)0
-rw-r--r--patches/server/0654-Add-basic-Datapack-API.patch (renamed from patches/server/0653-Add-basic-Datapack-API.patch)0
-rw-r--r--patches/server/0655-Add-environment-variable-to-disable-server-gui.patch (renamed from patches/server/0654-Add-environment-variable-to-disable-server-gui.patch)0
-rw-r--r--patches/server/0656-additions-to-PlayerGameModeChangeEvent.patch (renamed from patches/server/0655-additions-to-PlayerGameModeChangeEvent.patch)0
-rw-r--r--patches/server/0657-ItemStack-repair-check-API.patch (renamed from patches/server/0656-ItemStack-repair-check-API.patch)4
-rw-r--r--patches/server/0658-More-Enchantment-API.patch (renamed from patches/server/0657-More-Enchantment-API.patch)0
-rw-r--r--patches/server/0659-Fix-and-optimise-world-force-upgrading.patch (renamed from patches/server/0658-Fix-and-optimise-world-force-upgrading.patch)2
-rw-r--r--patches/server/0660-Add-Mob-lookAt-API.patch (renamed from patches/server/0659-Add-Mob-lookAt-API.patch)0
-rw-r--r--patches/server/0661-Add-Unix-domain-socket-support.patch (renamed from patches/server/0660-Add-Unix-domain-socket-support.patch)0
-rw-r--r--patches/server/0662-Add-EntityInsideBlockEvent.patch (renamed from patches/server/0661-Add-EntityInsideBlockEvent.patch)0
-rw-r--r--patches/server/0663-Attributes-API-for-item-defaults.patch (renamed from patches/server/0662-Attributes-API-for-item-defaults.patch)4
-rw-r--r--patches/server/0664-Add-cause-to-Weather-ThunderChangeEvents.patch (renamed from patches/server/0663-Add-cause-to-Weather-ThunderChangeEvents.patch)0
-rw-r--r--patches/server/0665-More-Lidded-Block-API.patch (renamed from patches/server/0664-More-Lidded-Block-API.patch)0
-rw-r--r--patches/server/0666-Limit-item-frame-cursors-on-maps.patch (renamed from patches/server/0665-Limit-item-frame-cursors-on-maps.patch)0
-rw-r--r--patches/server/0667-Add-PlayerKickEvent-causes.patch (renamed from patches/server/0666-Add-PlayerKickEvent-causes.patch)4
-rw-r--r--patches/server/0668-Add-PufferFishStateChangeEvent.patch (renamed from patches/server/0667-Add-PufferFishStateChangeEvent.patch)0
-rw-r--r--patches/server/0669-Fix-PlayerBucketEmptyEvent-result-itemstack.patch (renamed from patches/server/0668-Fix-PlayerBucketEmptyEvent-result-itemstack.patch)0
-rw-r--r--patches/server/0670-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch (renamed from patches/server/0669-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch)0
-rw-r--r--patches/server/0671-Add-option-to-fix-items-merging-through-walls.patch (renamed from patches/server/0670-Add-option-to-fix-items-merging-through-walls.patch)0
-rw-r--r--patches/server/0672-Add-BellRevealRaiderEvent.patch (renamed from patches/server/0671-Add-BellRevealRaiderEvent.patch)0
-rw-r--r--patches/server/0673-Fix-invulnerable-end-crystals.patch (renamed from patches/server/0672-Fix-invulnerable-end-crystals.patch)0
-rw-r--r--patches/server/0674-Add-ElderGuardianAppearanceEvent.patch (renamed from patches/server/0673-Add-ElderGuardianAppearanceEvent.patch)0
-rw-r--r--patches/server/0675-Fix-dangerous-end-portal-logic.patch (renamed from patches/server/0674-Fix-dangerous-end-portal-logic.patch)0
-rw-r--r--patches/server/0676-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch (renamed from patches/server/0675-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch)0
-rw-r--r--patches/server/0677-Make-item-validations-configurable.patch (renamed from patches/server/0676-Make-item-validations-configurable.patch)0
-rw-r--r--patches/server/0678-Line-Of-Sight-Changes.patch (renamed from patches/server/0677-Line-Of-Sight-Changes.patch)0
-rw-r--r--patches/server/0679-add-per-world-spawn-limits.patch (renamed from patches/server/0678-add-per-world-spawn-limits.patch)0
-rw-r--r--patches/server/0680-Fix-PotionSplashEvent-for-water-splash-potions.patch (renamed from patches/server/0679-Fix-PotionSplashEvent-for-water-splash-potions.patch)0
-rw-r--r--patches/server/0681-Add-more-LimitedRegion-API.patch (renamed from patches/server/0680-Add-more-LimitedRegion-API.patch)0
-rw-r--r--patches/server/0682-Fix-PlayerDropItemEvent-using-wrong-item.patch (renamed from patches/server/0681-Fix-PlayerDropItemEvent-using-wrong-item.patch)0
-rw-r--r--patches/server/0683-Missing-Entity-Behavior-API.patch (renamed from patches/server/0682-Missing-Entity-Behavior-API.patch)0
-rw-r--r--patches/server/0684-Ensure-disconnect-for-book-edit-is-called-on-main.patch (renamed from patches/server/0683-Ensure-disconnect-for-book-edit-is-called-on-main.patch)0
-rw-r--r--patches/server/0685-Fix-return-value-of-Block-applyBoneMeal-always-being.patch (renamed from patches/server/0684-Fix-return-value-of-Block-applyBoneMeal-always-being.patch)0
-rw-r--r--patches/server/0686-Use-getChunkIfLoadedImmediately-in-places.patch (renamed from patches/server/0685-Use-getChunkIfLoadedImmediately-in-places.patch)0
-rw-r--r--patches/server/0687-Fix-commands-from-signs-not-firing-command-events.patch (renamed from patches/server/0686-Fix-commands-from-signs-not-firing-command-events.patch)0
-rw-r--r--patches/server/0688-Adds-PlayerArmSwingEvent.patch (renamed from patches/server/0687-Adds-PlayerArmSwingEvent.patch)0
-rw-r--r--patches/server/0689-Fixes-kick-event-leave-message-not-being-sent.patch (renamed from patches/server/0688-Fixes-kick-event-leave-message-not-being-sent.patch)0
-rw-r--r--patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch (renamed from patches/server/0689-Add-config-for-mobs-immune-to-default-effects.patch)0
-rw-r--r--patches/server/0691-Fix-incorrect-message-for-outdated-client.patch (renamed from patches/server/0690-Fix-incorrect-message-for-outdated-client.patch)0
-rw-r--r--patches/server/0692-Don-t-apply-cramming-damage-to-players.patch (renamed from patches/server/0691-Don-t-apply-cramming-damage-to-players.patch)0
-rw-r--r--patches/server/0693-Rate-options-and-timings-for-sensors-and-behaviors.patch (renamed from patches/server/0692-Rate-options-and-timings-for-sensors-and-behaviors.patch)0
-rw-r--r--patches/server/0694-Add-a-bunch-of-missing-forceDrop-toggles.patch (renamed from patches/server/0693-Add-a-bunch-of-missing-forceDrop-toggles.patch)0
-rw-r--r--patches/server/0695-Stinger-API.patch (renamed from patches/server/0694-Stinger-API.patch)0
-rw-r--r--patches/server/0696-Fix-incosistency-issue-with-empty-map-items-in-CB.patch (renamed from patches/server/0695-Fix-incosistency-issue-with-empty-map-items-in-CB.patch)0
-rw-r--r--patches/server/0697-Add-System.out-err-catcher.patch (renamed from patches/server/0696-Add-System.out-err-catcher.patch)0
-rw-r--r--patches/server/0698-Fix-test-not-bootstrapping.patch (renamed from patches/server/0697-Fix-test-not-bootstrapping.patch)0
-rw-r--r--patches/server/0699-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch (renamed from patches/server/0698-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch)0
-rw-r--r--patches/server/0700-Improve-boat-collision-performance.patch (renamed from patches/server/0699-Improve-boat-collision-performance.patch)0
-rw-r--r--patches/server/0701-Prevent-AFK-kick-while-watching-end-credits.patch (renamed from patches/server/0700-Prevent-AFK-kick-while-watching-end-credits.patch)0
-rw-r--r--patches/server/0702-Allow-skipping-writing-of-comments-to-server.propert.patch (renamed from patches/server/0701-Allow-skipping-writing-of-comments-to-server.propert.patch)0
-rw-r--r--patches/server/0703-Add-PlayerSetSpawnEvent.patch (renamed from patches/server/0702-Add-PlayerSetSpawnEvent.patch)0
-rw-r--r--patches/server/0704-Make-hoppers-respect-inventory-max-stack-size.patch (renamed from patches/server/0703-Make-hoppers-respect-inventory-max-stack-size.patch)0
-rw-r--r--patches/server/0705-Optimize-entity-tracker-passenger-checks.patch (renamed from patches/server/0704-Optimize-entity-tracker-passenger-checks.patch)0
-rw-r--r--patches/server/0706-Config-option-for-Piglins-guarding-chests.patch (renamed from patches/server/0705-Config-option-for-Piglins-guarding-chests.patch)0
-rw-r--r--patches/server/0707-Added-EntityDamageItemEvent.patch (renamed from patches/server/0706-Added-EntityDamageItemEvent.patch)0
-rw-r--r--patches/server/0708-Optimize-indirect-passenger-iteration.patch (renamed from patches/server/0707-Optimize-indirect-passenger-iteration.patch)0
-rw-r--r--patches/server/0709-Fix-block-drops-position-losing-precision-millions-o.patch (renamed from patches/server/0708-Fix-block-drops-position-losing-precision-millions-o.patch)0
-rw-r--r--patches/server/0710-Configurable-item-frame-map-cursor-update-interval.patch (renamed from patches/server/0709-Configurable-item-frame-map-cursor-update-interval.patch)0
-rw-r--r--patches/server/0711-Make-EntityUnleashEvent-cancellable.patch (renamed from patches/server/0710-Make-EntityUnleashEvent-cancellable.patch)0
-rw-r--r--patches/server/0712-Clear-bucket-NBT-after-dispense.patch (renamed from patches/server/0711-Clear-bucket-NBT-after-dispense.patch)0
-rw-r--r--patches/server/0713-Respect-despawn-rate-in-item-merge-check.patch (renamed from patches/server/0712-Respect-despawn-rate-in-item-merge-check.patch)0
-rw-r--r--patches/server/0714-Change-EnderEye-target-without-changing-other-things.patch (renamed from patches/server/0713-Change-EnderEye-target-without-changing-other-things.patch)0
-rw-r--r--patches/server/0715-Add-BlockBreakBlockEvent.patch (renamed from patches/server/0714-Add-BlockBreakBlockEvent.patch)0
-rw-r--r--patches/server/0716-Option-to-prevent-NBT-copy-in-smithing-recipes.patch (renamed from patches/server/0715-Option-to-prevent-NBT-copy-in-smithing-recipes.patch)0
-rw-r--r--patches/server/0717-More-CommandBlock-API.patch (renamed from patches/server/0716-More-CommandBlock-API.patch)0
-rw-r--r--patches/server/0718-Add-missing-team-sidebar-display-slots.patch (renamed from patches/server/0717-Add-missing-team-sidebar-display-slots.patch)0
-rw-r--r--patches/server/0719-Add-back-EntityPortalExitEvent.patch (renamed from patches/server/0718-Add-back-EntityPortalExitEvent.patch)0
-rw-r--r--patches/server/0720-Add-methods-to-find-targets-for-lightning-strikes.patch (renamed from patches/server/0719-Add-methods-to-find-targets-for-lightning-strikes.patch)0
-rw-r--r--patches/server/0721-Get-entity-default-attributes.patch (renamed from patches/server/0720-Get-entity-default-attributes.patch)4
-rw-r--r--patches/server/0722-Left-handed-API.patch (renamed from patches/server/0721-Left-handed-API.patch)0
-rw-r--r--patches/server/0723-Add-advancement-display-API.patch (renamed from patches/server/0722-Add-advancement-display-API.patch)0
-rw-r--r--patches/server/0724-Add-ItemFactory-getMonsterEgg-API.patch (renamed from patches/server/0723-Add-ItemFactory-getMonsterEgg-API.patch)0
-rw-r--r--patches/server/0725-Add-critical-damage-API.patch (renamed from patches/server/0724-Add-critical-damage-API.patch)0
-rw-r--r--patches/server/0726-Fix-issues-with-mob-conversion.patch (renamed from patches/server/0725-Fix-issues-with-mob-conversion.patch)0
-rw-r--r--patches/server/0727-Add-isCollidable-methods-to-various-places.patch (renamed from patches/server/0726-Add-isCollidable-methods-to-various-places.patch)4
-rw-r--r--patches/server/0728-Goat-ram-API.patch (renamed from patches/server/0727-Goat-ram-API.patch)0
-rw-r--r--patches/server/0729-Add-API-for-resetting-a-single-score.patch (renamed from patches/server/0728-Add-API-for-resetting-a-single-score.patch)0
-rw-r--r--patches/server/0730-Add-Raw-Byte-Entity-Serialization.patch (renamed from patches/server/0729-Add-Raw-Byte-Entity-Serialization.patch)0
-rw-r--r--patches/server/0731-Vanilla-command-permission-fixes.patch (renamed from patches/server/0730-Vanilla-command-permission-fixes.patch)0
-rw-r--r--patches/server/0732-Make-CallbackExecutor-strict-again.patch (renamed from patches/server/0731-Make-CallbackExecutor-strict-again.patch)0
-rw-r--r--patches/server/0733-Do-not-allow-the-server-to-unload-chunks-at-request-.patch (renamed from patches/server/0732-Do-not-allow-the-server-to-unload-chunks-at-request-.patch)0
-rw-r--r--patches/server/0734-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch (renamed from patches/server/0733-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch)0
-rw-r--r--patches/server/0735-Correctly-handle-recursion-for-chunkholder-updates.patch (renamed from patches/server/0734-Correctly-handle-recursion-for-chunkholder-updates.patch)0
-rw-r--r--patches/server/0736-Separate-lookup-locking-from-state-access-in-UserCac.patch (renamed from patches/server/0735-Separate-lookup-locking-from-state-access-in-UserCac.patch)0
-rw-r--r--patches/server/0737-Fix-chunks-refusing-to-unload-at-low-TPS.patch (renamed from patches/server/0736-Fix-chunks-refusing-to-unload-at-low-TPS.patch)0
-rw-r--r--patches/server/0738-Do-not-allow-ticket-level-changes-while-unloading-pl.patch (renamed from patches/server/0737-Do-not-allow-ticket-level-changes-while-unloading-pl.patch)0
-rw-r--r--patches/server/0739-Do-not-allow-ticket-level-changes-when-updating-chun.patch (renamed from patches/server/0738-Do-not-allow-ticket-level-changes-when-updating-chun.patch)0
-rw-r--r--patches/server/0740-Do-not-submit-profile-lookups-to-worldgen-threads.patch (renamed from patches/server/0739-Do-not-submit-profile-lookups-to-worldgen-threads.patch)0
-rw-r--r--patches/server/0741-Log-when-the-async-catcher-is-tripped.patch (renamed from patches/server/0740-Log-when-the-async-catcher-is-tripped.patch)0
-rw-r--r--patches/server/0742-Add-paper-mobcaps-and-paper-playermobcaps.patch (renamed from patches/server/0741-Add-paper-mobcaps-and-paper-playermobcaps.patch)0
-rw-r--r--patches/server/0743-Prevent-unload-calls-removing-tickets-for-sync-loads.patch (renamed from patches/server/0742-Prevent-unload-calls-removing-tickets-for-sync-loads.patch)0
-rw-r--r--patches/server/0744-Sanitize-ResourceLocation-error-logging.patch (renamed from patches/server/0743-Sanitize-ResourceLocation-error-logging.patch)0
-rw-r--r--patches/server/0745-Optimise-general-POI-access.patch (renamed from patches/server/0744-Optimise-general-POI-access.patch)0
-rw-r--r--patches/server/0746-Allow-controlled-flushing-for-network-manager.patch (renamed from patches/server/0745-Allow-controlled-flushing-for-network-manager.patch)0
-rw-r--r--patches/server/0747-Add-more-async-catchers.patch (renamed from patches/server/0746-Add-more-async-catchers.patch)0
-rw-r--r--patches/server/0748-Rewrite-entity-bounding-box-lookup-calls.patch (renamed from patches/server/0747-Rewrite-entity-bounding-box-lookup-calls.patch)0
-rw-r--r--patches/server/0749-Optimise-chunk-tick-iteration.patch (renamed from patches/server/0748-Optimise-chunk-tick-iteration.patch)0
-rw-r--r--patches/server/0750-Execute-chunk-tasks-mid-tick.patch (renamed from patches/server/0749-Execute-chunk-tasks-mid-tick.patch)4
-rw-r--r--patches/server/0751-Do-not-copy-visible-chunks.patch (renamed from patches/server/0750-Do-not-copy-visible-chunks.patch)0
-rw-r--r--patches/server/0752-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch (renamed from patches/server/0751-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch)0
-rw-r--r--patches/server/0753-Custom-table-implementation-for-blockstate-state-loo.patch (renamed from patches/server/0752-Custom-table-implementation-for-blockstate-state-loo.patch)0
-rw-r--r--patches/server/0754-Detail-more-information-in-watchdog-dumps.patch (renamed from patches/server/0753-Detail-more-information-in-watchdog-dumps.patch)0
-rw-r--r--patches/server/0755-Manually-inline-methods-in-BlockPosition.patch (renamed from patches/server/0754-Manually-inline-methods-in-BlockPosition.patch)0
-rw-r--r--patches/server/0756-Distance-manager-tick-timings.patch (renamed from patches/server/0755-Distance-manager-tick-timings.patch)0
-rw-r--r--patches/server/0757-Name-craft-scheduler-threads-according-to-the-plugin.patch (renamed from patches/server/0756-Name-craft-scheduler-threads-according-to-the-plugin.patch)0
-rw-r--r--patches/server/0758-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch (renamed from patches/server/0757-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch)0
-rw-r--r--patches/server/0759-Add-packet-limiter-config.patch (renamed from patches/server/0758-Add-packet-limiter-config.patch)0
-rw-r--r--patches/server/0760-Lag-compensate-block-breaking.patch (renamed from patches/server/0759-Lag-compensate-block-breaking.patch)0
-rw-r--r--patches/server/0761-Use-correct-LevelStem-registry-when-loading-default-.patch (renamed from patches/server/0760-Use-correct-LevelStem-registry-when-loading-default-.patch)2
-rw-r--r--patches/server/0762-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch (renamed from patches/server/0761-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch)0
-rw-r--r--patches/server/0763-Consolidate-flush-calls-for-entity-tracker-packets.patch (renamed from patches/server/0762-Consolidate-flush-calls-for-entity-tracker-packets.patch)0
-rw-r--r--patches/server/0764-Don-t-lookup-fluid-state-when-raytracing.patch (renamed from patches/server/0763-Don-t-lookup-fluid-state-when-raytracing.patch)0
-rw-r--r--patches/server/0765-Time-scoreboard-search.patch (renamed from patches/server/0764-Time-scoreboard-search.patch)0
-rw-r--r--patches/server/0766-Send-full-pos-packets-for-hard-colliding-entities.patch (renamed from patches/server/0765-Send-full-pos-packets-for-hard-colliding-entities.patch)0
-rw-r--r--patches/server/0767-Do-not-run-raytrace-logic-for-AIR.patch (renamed from patches/server/0766-Do-not-run-raytrace-logic-for-AIR.patch)0
-rw-r--r--patches/server/0768-Oprimise-map-impl-for-tracked-players.patch (renamed from patches/server/0767-Oprimise-map-impl-for-tracked-players.patch)0
-rw-r--r--patches/server/0769-Optimise-BlockSoil-nearby-water-lookup.patch (renamed from patches/server/0768-Optimise-BlockSoil-nearby-water-lookup.patch)0
-rw-r--r--patches/server/0770-Allow-removal-addition-of-entities-to-entity-ticklis.patch (renamed from patches/server/0769-Allow-removal-addition-of-entities-to-entity-ticklis.patch)0
-rw-r--r--patches/server/0771-Optimise-random-block-ticking.patch (renamed from patches/server/0770-Optimise-random-block-ticking.patch)0
-rw-r--r--patches/server/0772-Optimise-non-flush-packet-sending.patch (renamed from patches/server/0771-Optimise-non-flush-packet-sending.patch)0
-rw-r--r--patches/server/0773-Optimise-nearby-player-lookups.patch (renamed from patches/server/0772-Optimise-nearby-player-lookups.patch)0
-rw-r--r--patches/server/0774-Optimise-WorldServer-notify.patch (renamed from patches/server/0773-Optimise-WorldServer-notify.patch)0
-rw-r--r--patches/server/0775-Remove-streams-for-villager-AI.patch (renamed from patches/server/0774-Remove-streams-for-villager-AI.patch)0
-rw-r--r--patches/server/0776-Rewrite-dataconverter-system.patch (renamed from patches/server/0775-Rewrite-dataconverter-system.patch)0
-rw-r--r--patches/server/0777-Use-Velocity-compression-and-cipher-natives.patch (renamed from patches/server/0776-Use-Velocity-compression-and-cipher-natives.patch)0
-rw-r--r--patches/server/0778-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch (renamed from patches/server/0777-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch)0
-rw-r--r--patches/server/0779-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch (renamed from patches/server/0778-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch)0
-rw-r--r--patches/server/0780-Async-catch-modifications-to-critical-entity-state.patch (renamed from patches/server/0779-Async-catch-modifications-to-critical-entity-state.patch)0
-rw-r--r--patches/server/0781-Fix-Bukkit-NamespacedKey-shenanigans.patch (renamed from patches/server/0780-Fix-Bukkit-NamespacedKey-shenanigans.patch)0
-rw-r--r--patches/server/0782-Fix-merchant-inventory-not-closing-on-entity-removal.patch (renamed from patches/server/0781-Fix-merchant-inventory-not-closing-on-entity-removal.patch)0
-rw-r--r--patches/server/0783-Check-requirement-before-suggesting-root-nodes.patch (renamed from patches/server/0782-Check-requirement-before-suggesting-root-nodes.patch)0
-rw-r--r--patches/server/0784-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch (renamed from patches/server/0783-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch)0
-rw-r--r--patches/server/0785-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch (renamed from patches/server/0784-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch)0
-rw-r--r--patches/server/0786-Ensure-valid-vehicle-status.patch (renamed from patches/server/0785-Ensure-valid-vehicle-status.patch)0
-rw-r--r--patches/server/0787-Prevent-softlocked-end-exit-portal-generation.patch (renamed from patches/server/0786-Prevent-softlocked-end-exit-portal-generation.patch)0
-rw-r--r--patches/server/0788-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch (renamed from patches/server/0787-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch)0
-rw-r--r--patches/server/0789-Don-t-log-debug-logging-being-disabled.patch (renamed from patches/server/0788-Don-t-log-debug-logging-being-disabled.patch)0
-rw-r--r--patches/server/0790-Mark-fish-and-axolotls-from-buckets-as-persistent.patch (renamed from patches/server/0789-Mark-fish-and-axolotls-from-buckets-as-persistent.patch)0
-rw-r--r--patches/server/0791-fix-various-menus-with-empty-level-accesses.patch (renamed from patches/server/0790-fix-various-menus-with-empty-level-accesses.patch)0
-rw-r--r--patches/server/0792-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch (renamed from patches/server/0791-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch)0
-rw-r--r--patches/server/0793-Preserve-overstacked-loot.patch (renamed from patches/server/0792-Preserve-overstacked-loot.patch)0
-rw-r--r--patches/server/0794-Update-head-rotation-in-missing-places.patch (renamed from patches/server/0793-Update-head-rotation-in-missing-places.patch)0
-rw-r--r--patches/server/0795-prevent-unintended-light-block-manipulation.patch (renamed from patches/server/0794-prevent-unintended-light-block-manipulation.patch)0
-rw-r--r--patches/server/0796-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch (renamed from patches/server/0795-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch)0
-rw-r--r--patches/server/0797-Fix-CraftCriteria-defaults-map.patch (renamed from patches/server/0796-Fix-CraftCriteria-defaults-map.patch)0
-rw-r--r--patches/server/0798-Fix-upstreams-block-state-factories.patch (renamed from patches/server/0797-Fix-upstreams-block-state-factories.patch)0
-rw-r--r--patches/server/0799-Add-config-option-for-logging-player-ip-addresses.patch (renamed from patches/server/0798-Add-config-option-for-logging-player-ip-addresses.patch)0
-rw-r--r--patches/server/0800-Configurable-feature-seeds.patch (renamed from patches/server/0799-Configurable-feature-seeds.patch)6
-rw-r--r--patches/server/0801-VanillaCommandWrapper-didnt-account-for-entity-sende.patch (renamed from patches/server/0800-VanillaCommandWrapper-didnt-account-for-entity-sende.patch)0
-rw-r--r--patches/server/0802-Add-root-admin-user-detection.patch (renamed from patches/server/0801-Add-root-admin-user-detection.patch)0
-rw-r--r--patches/server/0803-Always-allow-item-changing-in-Fireball.patch (renamed from patches/server/0802-Always-allow-item-changing-in-Fireball.patch)0
-rw-r--r--patches/server/0804-don-t-attempt-to-teleport-dead-entities.patch (renamed from patches/server/0803-don-t-attempt-to-teleport-dead-entities.patch)0
-rw-r--r--patches/server/0805-Fix-anvil-prepare-event-not-working-with-zero-xp.patch (renamed from patches/server/0804-Fix-anvil-prepare-event-not-working-with-zero-xp.patch)0
-rw-r--r--patches/server/0806-Prevent-excessive-velocity-through-repeated-crits.patch (renamed from patches/server/0805-Prevent-excessive-velocity-through-repeated-crits.patch)0
-rw-r--r--patches/server/0807-Remove-client-side-code-using-deprecated-for-removal.patch (renamed from patches/server/0806-Remove-client-side-code-using-deprecated-for-removal.patch)0
-rw-r--r--patches/server/0808-Rewrite-the-light-engine.patch (renamed from patches/server/0807-Rewrite-the-light-engine.patch)0
-rw-r--r--patches/server/0809-Always-parse-protochunk-light-sources-unless-it-is-m.patch (renamed from patches/server/0808-Always-parse-protochunk-light-sources-unless-it-is-m.patch)0
-rw-r--r--patches/server/0810-Fix-removing-recipes-from-RecipeIterator.patch (renamed from patches/server/0809-Fix-removing-recipes-from-RecipeIterator.patch)0
-rw-r--r--patches/server/0811-Prevent-sending-oversized-item-data-in-equipment-and.patch (renamed from patches/server/0810-Prevent-sending-oversized-item-data-in-equipment-and.patch)0
-rw-r--r--patches/server/0812-Hide-unnecessary-itemmeta-from-clients.patch (renamed from patches/server/0811-Hide-unnecessary-itemmeta-from-clients.patch)0
-rw-r--r--patches/server/0813-Fix-kelp-modifier-changing-growth-for-other-crops.patch (renamed from patches/server/0812-Fix-kelp-modifier-changing-growth-for-other-crops.patch)0
-rw-r--r--patches/server/0814-Prevent-ContainerOpenersCounter-openCount-from-going.patch (renamed from patches/server/0813-Prevent-ContainerOpenersCounter-openCount-from-going.patch)0
-rw-r--r--patches/server/0815-Add-PlayerItemFrameChangeEvent.patch (renamed from patches/server/0814-Add-PlayerItemFrameChangeEvent.patch)0
-rw-r--r--patches/server/0816-Add-player-health-update-API.patch (renamed from patches/server/0815-Add-player-health-update-API.patch)0
-rw-r--r--patches/server/0817-Optimize-HashMapPalette.patch (renamed from patches/server/0816-Optimize-HashMapPalette.patch)0
-rw-r--r--patches/server/0818-Allow-delegation-to-vanilla-chunk-gen.patch (renamed from patches/server/0817-Allow-delegation-to-vanilla-chunk-gen.patch)0
-rw-r--r--patches/server/0819-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch (renamed from patches/server/0818-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch)0
-rw-r--r--patches/server/0820-Optimise-collision-checking-in-player-move-packet-ha.patch (renamed from patches/server/0819-Optimise-collision-checking-in-player-move-packet-ha.patch)0
-rw-r--r--patches/server/0821-Actually-unload-POI-data.patch (renamed from patches/server/0820-Actually-unload-POI-data.patch)0
-rw-r--r--patches/server/0822-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch (renamed from patches/server/0821-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch)0
-rw-r--r--patches/server/0823-Update-Log4j.patch (renamed from patches/server/0822-Update-Log4j.patch)0
-rw-r--r--patches/server/0824-Add-more-Campfire-API.patch (renamed from patches/server/0823-Add-more-Campfire-API.patch)0
-rw-r--r--patches/server/0825-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch (renamed from patches/server/0824-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch)0
-rw-r--r--patches/server/0826-Fix-tripwire-state-inconsistency.patch (renamed from patches/server/0825-Fix-tripwire-state-inconsistency.patch)0
-rw-r--r--patches/server/0827-Fix-fluid-logging-on-Block-breakNaturally.patch (renamed from patches/server/0826-Fix-fluid-logging-on-Block-breakNaturally.patch)0
-rw-r--r--patches/server/0828-Forward-CraftEntity-in-teleport-command.patch (renamed from patches/server/0827-Forward-CraftEntity-in-teleport-command.patch)0
-rw-r--r--patches/server/0829-Improve-scoreboard-entries.patch (renamed from patches/server/0828-Improve-scoreboard-entries.patch)0
-rw-r--r--patches/server/0830-Entity-powdered-snow-API.patch (renamed from patches/server/0829-Entity-powdered-snow-API.patch)0
-rw-r--r--patches/server/0831-Add-API-for-item-entity-health.patch (renamed from patches/server/0830-Add-API-for-item-entity-health.patch)0
-rw-r--r--patches/server/0832-Fix-entity-type-tags-suggestions-in-selectors.patch (renamed from patches/server/0831-Fix-entity-type-tags-suggestions-in-selectors.patch)0
-rw-r--r--patches/server/0833-Configurable-max-block-light-for-monster-spawning.patch (renamed from patches/server/0832-Configurable-max-block-light-for-monster-spawning.patch)0
-rw-r--r--patches/server/0834-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch (renamed from patches/server/0833-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch)0
-rw-r--r--patches/server/0835-Load-effect-amplifiers-greater-than-127-correctly.patch (renamed from patches/server/0834-Load-effect-amplifiers-greater-than-127-correctly.patch)0
-rw-r--r--patches/server/0836-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch (renamed from patches/server/0835-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch)0
-rw-r--r--patches/server/0837-Fix-bees-aging-inside-hives.patch (renamed from patches/server/0836-Fix-bees-aging-inside-hives.patch)0
-rw-r--r--patches/server/0838-Bucketable-API.patch (renamed from patches/server/0837-Bucketable-API.patch)0
-rw-r--r--patches/server/0839-Check-player-world-in-endPortalSoundRadius.patch (renamed from patches/server/0838-Check-player-world-in-endPortalSoundRadius.patch)0
-rw-r--r--patches/server/0840-Validate-usernames.patch (renamed from patches/server/0839-Validate-usernames.patch)0
-rw-r--r--patches/server/0841-Fix-saving-configs-with-more-long-comments.patch (renamed from patches/server/0840-Fix-saving-configs-with-more-long-comments.patch)0
-rw-r--r--patches/server/0842-Make-water-animal-spawn-height-configurable.patch (renamed from patches/server/0841-Make-water-animal-spawn-height-configurable.patch)0
-rw-r--r--patches/server/0843-Expose-vanilla-BiomeProvider-from-WorldInfo.patch (renamed from patches/server/0842-Expose-vanilla-BiomeProvider-from-WorldInfo.patch)2
-rw-r--r--patches/server/0844-Add-config-option-for-worlds-affected-by-time-cmd.patch (renamed from patches/server/0843-Add-config-option-for-worlds-affected-by-time-cmd.patch)0
-rw-r--r--patches/server/0845-Add-new-overload-to-PersistentDataContainer-has.patch (renamed from patches/server/0844-Add-new-overload-to-PersistentDataContainer-has.patch)0
-rw-r--r--patches/server/0846-Multiple-Entries-with-Scoreboards.patch (renamed from patches/server/0845-Multiple-Entries-with-Scoreboards.patch)0
-rw-r--r--patches/server/0847-Reset-placed-block-on-exception.patch (renamed from patches/server/0846-Reset-placed-block-on-exception.patch)0
-rw-r--r--patches/server/0848-Add-configurable-height-for-slime-spawn.patch (renamed from patches/server/0847-Add-configurable-height-for-slime-spawn.patch)0
-rw-r--r--patches/server/0849-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/server/0848-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/server/0850-Fix-xp-reward-for-baby-zombies.patch (renamed from patches/server/0849-Fix-xp-reward-for-baby-zombies.patch)0
-rw-r--r--patches/server/0851-Kick-on-main-for-illegal-chars.patch (renamed from patches/server/0850-Kick-on-main-for-illegal-chars.patch)0
-rw-r--r--patches/server/0852-Multi-Block-Change-API-Implementation.patch (renamed from patches/server/0851-Multi-Block-Change-API-Implementation.patch)0
-rw-r--r--patches/server/0853-Fix-NotePlayEvent.patch (renamed from patches/server/0852-Fix-NotePlayEvent.patch)0
-rw-r--r--patches/server/0854-Freeze-Tick-Lock-API.patch (renamed from patches/server/0853-Freeze-Tick-Lock-API.patch)0
-rw-r--r--patches/server/0855-Dolphin-API.patch (renamed from patches/server/0854-Dolphin-API.patch)0
-rw-r--r--patches/server/0856-More-PotionEffectType-API.patch (renamed from patches/server/0855-More-PotionEffectType-API.patch)0
-rw-r--r--patches/server/0857-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch (renamed from patches/server/0856-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch)0
-rw-r--r--patches/server/0858-API-for-creating-command-sender-which-forwards-feedb.patch (renamed from patches/server/0857-API-for-creating-command-sender-which-forwards-feedb.patch)0
-rw-r--r--patches/server/0859-Add-config-for-stronghold-seed.patch (renamed from patches/server/0858-Add-config-for-stronghold-seed.patch)2
-rw-r--r--patches/server/0860-Implement-regenerateChunk.patch (renamed from patches/server/0859-Implement-regenerateChunk.patch)0
-rw-r--r--patches/server/0861-Log-exceptions-thrown-during-chat-processing.patch (renamed from patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch)0
-rw-r--r--patches/server/0862-Fix-cancelled-powdered-snow-bucket-placement.patch (renamed from patches/server/0861-Fix-cancelled-powdered-snow-bucket-placement.patch)0
-rw-r--r--patches/server/0863-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch (renamed from patches/server/0862-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch)0
-rw-r--r--patches/server/0864-Add-GameEvent-tags.patch (renamed from patches/server/0863-Add-GameEvent-tags.patch)0
-rw-r--r--patches/server/0865-Replace-player-chunk-loader-system.patch (renamed from patches/server/0864-Replace-player-chunk-loader-system.patch)0
-rw-r--r--patches/server/0866-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch (renamed from patches/server/0865-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch)2
-rw-r--r--patches/server/0867-Replace-ticket-level-propagator.patch (renamed from patches/server/0866-Replace-ticket-level-propagator.patch)0
-rw-r--r--patches/server/0868-Furnace-RecipesUsed-API.patch (renamed from patches/server/0867-Furnace-RecipesUsed-API.patch)0
-rw-r--r--patches/server/0869-Configurable-sculk-sensor-listener-range.patch (renamed from patches/server/0868-Configurable-sculk-sensor-listener-range.patch)0
-rw-r--r--patches/server/0870-Add-missing-block-data-mins-and-maxes.patch (renamed from patches/server/0869-Add-missing-block-data-mins-and-maxes.patch)0
-rw-r--r--patches/server/0871-Option-to-have-default-CustomSpawners-in-custom-worl.patch (renamed from patches/server/0870-Option-to-have-default-CustomSpawners-in-custom-worl.patch)2
-rw-r--r--patches/server/0872-Put-world-into-worldlist-before-initing-the-world.patch (renamed from patches/server/0871-Put-world-into-worldlist-before-initing-the-world.patch)2
-rw-r--r--patches/server/0873-Fix-Entity-Position-Desync.patch (renamed from patches/server/0872-Fix-Entity-Position-Desync.patch)0
-rw-r--r--patches/server/0874-Custom-Potion-Mixes.patch (renamed from patches/server/0873-Custom-Potion-Mixes.patch)6
-rw-r--r--patches/server/0875-Fix-Fluid-tags-isTagged-method.patch (renamed from patches/server/0874-Fix-Fluid-tags-isTagged-method.patch)0
-rw-r--r--patches/server/0876-Fix-World-locateNearestStructure.patch (renamed from patches/server/0875-Fix-World-locateNearestStructure.patch)6
-rw-r--r--patches/server/0877-Force-close-world-loading-screen.patch (renamed from patches/server/0876-Force-close-world-loading-screen.patch)0
418 files changed, 1084 insertions, 267 deletions
diff --git a/patches/api/0256-Add-PaperRegistry.patch b/patches/api/0256-Add-PaperRegistry.patch
new file mode 100644
index 0000000000..4cda0a858c
--- /dev/null
+++ b/patches/api/0256-Add-PaperRegistry.patch
@@ -0,0 +1,112 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Wed, 2 Mar 2022 13:36:21 -0800
+Subject: [PATCH] Add PaperRegistry
+
+
+diff --git a/src/main/java/io/papermc/paper/registry/Reference.java b/src/main/java/io/papermc/paper/registry/Reference.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..d880810cbf05bc45051fe29515054211572e33b4
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/Reference.java
+@@ -0,0 +1,43 @@
++package io.papermc.paper.registry;
++
++import org.bukkit.Keyed;
++import org.bukkit.NamespacedKey;
++import org.bukkit.Registry;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++/**
++ * Represents a reference to a server-backed registry value that may
++ * change.
++ *
++ * @param <T> type of the value
++ */
++public interface Reference<T extends Keyed> extends Keyed {
++
++ /**
++ * Gets the value from the registry with the key.
++ *
++ * @return the value
++ * @throws java.util.NoSuchElementException if there is no value with this key
++ */
++ @NotNull T value();
++
++ /**
++ * Gets the value from the registry with the key.
++ *
++ * @return the value or null if it doesn't exist
++ */
++ @Nullable T valueOrNull();
++
++ /**
++ * Creates a reference to a registered value.
++ *
++ * @param registry the registry the value is located in
++ * @param key the key to the value
++ * @param <T> the type of the value
++ * @return a reference
++ */
++ static <T extends Keyed> @NotNull Reference<T> create(@NotNull Registry<T> registry, @NotNull NamespacedKey key) {
++ return new ReferenceImpl<>(registry, key);
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/registry/ReferenceImpl.java b/src/main/java/io/papermc/paper/registry/ReferenceImpl.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..f29e76a6b66ddfec12ddf8db6dcb2df6083b5982
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/ReferenceImpl.java
+@@ -0,0 +1,31 @@
++package io.papermc.paper.registry;
++
++import org.bukkit.Keyed;
++import org.bukkit.NamespacedKey;
++import org.bukkit.Registry;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++import java.util.NoSuchElementException;
++
++record ReferenceImpl<T extends Keyed>(@NotNull Registry<T> registry, @NotNull NamespacedKey key) implements Reference<T> {
++
++ @Override
++ public @NotNull T value() {
++ final T value = this.registry.get(this.key);
++ if (value == null) {
++ throw new NoSuchElementException("No such value with key " + this.key);
++ }
++ return value;
++ }
++
++ @Override
++ public @Nullable T valueOrNull() {
++ return this.registry.get(this.key);
++ }
++
++ @Override
++ public @NotNull NamespacedKey getKey() {
++ return this.key;
++ }
++}
+diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
+index b24439b379be1a90dde4e6f4dbe5ca3fdd8face4..0697214210a6e87f690b9454d9651d06ca57a524 100644
+--- a/src/main/java/org/bukkit/UnsafeValues.java
++++ b/src/main/java/org/bukkit/UnsafeValues.java
+@@ -147,5 +147,15 @@ public interface UnsafeValues {
+ * Use this when sending custom packets, so that there are no collisions on the client or server.
+ */
+ public int nextEntityId();
++
++ /**
++ * Gets the server-backed registry for a type.
++ *
++ * @param classOfT type
++ * @param <T> type
++ * @return the server-backed registry
++ * @throws IllegalArgumentException if there isn't a registry for that type
++ */
++ <T extends Keyed> @org.jetbrains.annotations.NotNull Registry<T> registryFor(Class<T> classOfT);
+ // Paper end
+ }
diff --git a/patches/api/0256-Add-StructureLocateEvent.patch b/patches/api/0256-Add-StructureLocateEvent.patch
deleted file mode 100644
index 88c14d8ea6..0000000000
--- a/patches/api/0256-Add-StructureLocateEvent.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: dfsek <[email protected]>
-Date: Tue, 15 Sep 2020 21:59:16 -0700
-Subject: [PATCH] Add StructureLocateEvent
-
-
-diff --git a/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java b/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java
-new file mode 100644
-index 0000000000000000000000000000000000000000..45b6694fc5741831e2df638b1f760a3ca28a4907
---- /dev/null
-+++ b/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java
-@@ -0,0 +1,155 @@
-+package io.papermc.paper.event.world;
-+
-+import org.bukkit.Location;
-+import org.bukkit.StructureType;
-+import org.bukkit.World;
-+import org.bukkit.event.Cancellable;
-+import org.bukkit.event.HandlerList;
-+import org.bukkit.event.world.WorldEvent;
-+import org.jetbrains.annotations.NotNull;
-+import org.jetbrains.annotations.Nullable;
-+
-+/**
-+ * Called <b>before</b> a structure/feature is located.
-+ * This happens when:
-+ * <ul>
-+ * <li>The /locate command is used.<br></li>
-+ * <li>An Eye of Ender is used.</li>
-+ * <li>An Explorer/Treasure Map is activated.</li>
-+ * <li>{@link World#locateNearestStructure(Location, StructureType, int, boolean)} is invoked.</li>
-+ * </ul>
-+ */
-+public class StructureLocateEvent extends WorldEvent implements Cancellable {
-+ private static final HandlerList handlers = new HandlerList();
-+ private final Location origin;
-+ private Location result = null;
-+ private StructureType type;
-+ private int radius;
-+ private boolean findUnexplored;
-+ private boolean cancelled = false;
-+
-+ public StructureLocateEvent(@NotNull World world, @NotNull Location origin, @NotNull StructureType structureType, int radius, boolean findUnexplored) {
-+ super(world);
-+ this.origin = origin;
-+ this.type = structureType;
-+ this.radius = radius;
-+ this.findUnexplored = findUnexplored;
-+ }
-+
-+ @NotNull
-+ public static HandlerList getHandlerList() {
-+ return handlers;
-+ }
-+
-+ @NotNull
-+ @Override
-+ public HandlerList getHandlers() {
-+ return handlers;
-+ }
-+
-+ /**
-+ * Gets the location set as the structure location, if it was defined.
-+ * <p>
-+ * Returns {@code null} if it has not been set by {@link StructureLocateEvent#setResult(Location)}.
-+ * Since this event fires <i>before</i> the search is done, the actual location is unknown at this point.
-+ *
-+ * @return The result location, if it has been set. null if it has not.
-+ * @see World#locateNearestStructure(Location, StructureType, int, boolean)
-+ */
-+ @Nullable
-+ public Location getResult() {
-+ return result;
-+ }
-+
-+ /**
-+ * Sets the result {@link Location}. This causes the search to be skipped, and the location passed here to be used as the result.
-+ *
-+ * @param result the {@link Location} of the structure.
-+ */
-+ public void setResult(@Nullable Location result) {
-+ this.result = result;
-+ }
-+
-+ /**
-+ * Gets the {@link StructureType} that is to be located.
-+ *
-+ * @return the structure type.
-+ */
-+ @NotNull
-+ public StructureType getType() {
-+ return type;
-+ }
-+
-+ /**
-+ * Sets the {@link StructureType} that is to be located.
-+ *
-+ * @param type the structure type.
-+ */
-+ public void setType(@NotNull StructureType type) {
-+ this.type = type;
-+ }
-+
-+ /**
-+ * Gets the {@link Location} from which the search is to be conducted.
-+ *
-+ * @return {@link Location} where search begins
-+ */
-+ @NotNull
-+ public Location getOrigin() {
-+ return origin;
-+ }
-+
-+ /**
-+ * Gets the search radius in which to attempt locating the structure.
-+ * <p>
-+ * This radius may not always be obeyed during the structure search!
-+ *
-+ * @return the search radius.
-+ */
-+ public int getRadius() {
-+ return radius;
-+ }
-+
-+ /**
-+ * Sets the search radius in which to attempt locating the structure.
-+ * <p>
-+ * This radius may not always be obeyed during the structure search!
-+ *
-+ * @param radius the search radius.
-+ */
-+ public void setRadius(int radius) {
-+ this.radius = radius;
-+ }
-+
-+ /**
-+ * Gets whether to search exclusively for unexplored structures.
-+ * <p>
-+ * As with the search radius, this value is not always obeyed.
-+ *
-+ * @return Whether to search for only unexplored structures.
-+ */
-+ public boolean shouldFindUnexplored() {
-+ return findUnexplored;
-+ }
-+
-+ /**
-+ * Sets whether to search exclusively for unexplored structures.
-+ * <p>
-+ * As with the search radius, this value is not always obeyed.
-+ *
-+ * @param findUnexplored Whether to search for only unexplored structures.
-+ */
-+ public void setFindUnexplored(boolean findUnexplored) {
-+ this.findUnexplored = findUnexplored;
-+ }
-+
-+ @Override
-+ public boolean isCancelled() {
-+ return cancelled;
-+ }
-+
-+ @Override
-+ public void setCancelled(boolean cancel) {
-+ this.cancelled = cancel;
-+ }
-+}
diff --git a/patches/api/0257-Add-StructuresLocateEvent.patch b/patches/api/0257-Add-StructuresLocateEvent.patch
new file mode 100644
index 0000000000..30880b64ec
--- /dev/null
+++ b/patches/api/0257-Add-StructuresLocateEvent.patch
@@ -0,0 +1,461 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: dfsek <[email protected]>
+Date: Tue, 15 Sep 2020 21:59:16 -0700
+Subject: [PATCH] Add StructuresLocateEvent
+
+Co-authored-by: Jake Potrebic <[email protected]>
+
+diff --git a/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java b/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..0c83a02059d65672ff191c42932d850950e9ea00
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java
+@@ -0,0 +1,157 @@
++package io.papermc.paper.event.world;
++
++import org.bukkit.Location;
++import org.bukkit.StructureType;
++import org.bukkit.World;
++import org.bukkit.event.Cancellable;
++import org.bukkit.event.HandlerList;
++import org.bukkit.event.world.WorldEvent;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++/**
++ * Called <b>before</b> a structure/feature is located.
++ * This happens when:
++ * <ul>
++ * <li>The /locate command is used.<br></li>
++ * <li>An Eye of Ender is used.</li>
++ * <li>An Explorer/Treasure Map is activated.</li>
++ * <li>{@link World#locateNearestStructure(Location, StructureType, int, boolean)} is invoked.</li>
++ * </ul>
++ * @deprecated no longer used, see {@link StructuresLocateEvent}
++ */
++@Deprecated(forRemoval = true)
++public class StructureLocateEvent extends WorldEvent implements Cancellable {
++ private static final HandlerList handlers = new HandlerList();
++ private final Location origin;
++ private Location result = null;
++ private StructureType type;
++ private int radius;
++ private boolean findUnexplored;
++ private boolean cancelled = false;
++
++ public StructureLocateEvent(@NotNull World world, @NotNull Location origin, @NotNull StructureType structureType, int radius, boolean findUnexplored) {
++ super(world);
++ this.origin = origin;
++ this.type = structureType;
++ this.radius = radius;
++ this.findUnexplored = findUnexplored;
++ }
++
++ @NotNull
++ public static HandlerList getHandlerList() {
++ return handlers;
++ }
++
++ @NotNull
++ @Override
++ public HandlerList getHandlers() {
++ return handlers;
++ }
++
++ /**
++ * Gets the location set as the structure location, if it was defined.
++ * <p>
++ * Returns {@code null} if it has not been set by {@link StructureLocateEvent#setResult(Location)}.
++ * Since this event fires <i>before</i> the search is done, the actual location is unknown at this point.
++ *
++ * @return The result location, if it has been set. null if it has not.
++ * @see World#locateNearestStructure(Location, StructureType, int, boolean)
++ */
++ @Nullable
++ public Location getResult() {
++ return result;
++ }
++
++ /**
++ * Sets the result {@link Location}. This causes the search to be skipped, and the location passed here to be used as the result.
++ *
++ * @param result the {@link Location} of the structure.
++ */
++ public void setResult(@Nullable Location result) {
++ this.result = result;
++ }
++
++ /**
++ * Gets the {@link StructureType} that is to be located.
++ *
++ * @return the structure type.
++ */
++ @NotNull
++ public StructureType getType() {
++ return type;
++ }
++
++ /**
++ * Sets the {@link StructureType} that is to be located.
++ *
++ * @param type the structure type.
++ */
++ public void setType(@NotNull StructureType type) {
++ this.type = type;
++ }
++
++ /**
++ * Gets the {@link Location} from which the search is to be conducted.
++ *
++ * @return {@link Location} where search begins
++ */
++ @NotNull
++ public Location getOrigin() {
++ return origin;
++ }
++
++ /**
++ * Gets the search radius in which to attempt locating the structure.
++ * <p>
++ * This radius may not always be obeyed during the structure search!
++ *
++ * @return the search radius.
++ */
++ public int getRadius() {
++ return radius;
++ }
++
++ /**
++ * Sets the search radius in which to attempt locating the structure.
++ * <p>
++ * This radius may not always be obeyed during the structure search!
++ *
++ * @param radius the search radius.
++ */
++ public void setRadius(int radius) {
++ this.radius = radius;
++ }
++
++ /**
++ * Gets whether to search exclusively for unexplored structures.
++ * <p>
++ * As with the search radius, this value is not always obeyed.
++ *
++ * @return Whether to search for only unexplored structures.
++ */
++ public boolean shouldFindUnexplored() {
++ return findUnexplored;
++ }
++
++ /**
++ * Sets whether to search exclusively for unexplored structures.
++ * <p>
++ * As with the search radius, this value is not always obeyed.
++ *
++ * @param findUnexplored Whether to search for only unexplored structures.
++ */
++ public void setFindUnexplored(boolean findUnexplored) {
++ this.findUnexplored = findUnexplored;
++ }
++
++ @Override
++ public boolean isCancelled() {
++ return cancelled;
++ }
++
++ @Override
++ public void setCancelled(boolean cancel) {
++ this.cancelled = cancel;
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/event/world/StructuresLocateEvent.java b/src/main/java/io/papermc/paper/event/world/StructuresLocateEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..566f9df8f615142e14330965f3491f4e83846783
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/StructuresLocateEvent.java
+@@ -0,0 +1,164 @@
++package io.papermc.paper.event.world;
++
++import io.papermc.paper.world.structure.ConfiguredStructure;
++import org.bukkit.Location;
++import org.bukkit.World;
++import org.bukkit.event.Cancellable;
++import org.bukkit.event.HandlerList;
++import org.bukkit.event.world.WorldEvent;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++import java.util.ArrayList;
++import java.util.List;
++
++/**
++ * Called <b>before</b> a set of configured structures is located.
++ * This happens when:
++ * <ul>
++ * <li>The /locate command is used.<br></li>
++ * <li>An Eye of Ender is used.</li>
++ * <li>An Explorer/Treasure Map is activated.</li>
++ * <li>A dolphin swims to a treasure location.</li>
++ * <li>A trade is done with a villager for a map.</li>
++ * <li>{@link World#locateNearestStructure(Location, org.bukkit.StructureType, int, boolean)} is invoked.</li>
++ * </ul>
++ */
++public class StructuresLocateEvent extends WorldEvent implements Cancellable {
++
++ private static final HandlerList HANDLER_LIST = new HandlerList();
++
++ private final Location origin;
++ private Result result;
++ private List<ConfiguredStructure> configuredStructures;
++ private int radius;
++ private boolean findUnexplored;
++ private boolean cancelled;
++
++ public StructuresLocateEvent(@NotNull World world, @NotNull Location origin, @NotNull List<ConfiguredStructure> configuredStructures, int radius, boolean findUnexplored) {
++ super(world);
++ this.origin = origin;
++ this.configuredStructures = configuredStructures;
++ this.radius = radius;
++ this.findUnexplored = findUnexplored;
++ }
++
++ /**
++ * Gets the {@link Location} from which the search is to be conducted.
++ *
++ * @return {@link Location} where search begins
++ */
++ public @NotNull Location getOrigin() {
++ return this.origin;
++ }
++
++ /**
++ * Gets the {@link Location} and {@link ConfiguredStructure} set as the result, if it was defined.
++ * <p>
++ * Returns {@code null} if it has not been set by {@link StructuresLocateEvent#setResult(Result)}.
++ * Since this event fires <i>before</i> the search is done, the actual result is unknown at this point.
++ *
++ * @return The result location and structure, if it has been set. null if it has not.
++ * @see World#locateNearestStructure(Location, org.bukkit.StructureType, int, boolean)
++ */
++ public @Nullable Result getResult() {
++ return this.result;
++ }
++
++ /**
++ * Sets the result {@link Location} and {@link ConfiguredStructure}. This causes the search to be
++ * skipped, and the result object passed here to be used as the result.
++ *
++ * @param result the {@link Location} and {@link ConfiguredStructure} of the search.
++ */
++ public void setResult(@Nullable Result result) {
++ this.result = result;
++ }
++
++ /**
++ * Gets a mutable list of ConfiguredStructures that are valid targets for the search.
++ *
++ * @return a mutable list of ConfiguredStructures
++ */
++ public @NotNull List<ConfiguredStructure> getConfiguredStructures() {
++ return this.configuredStructures;
++ }
++
++ /**
++ * Sets the list of ConfiguredStructures that are valid targets for the search.
++ *
++ * @param configuredStructures a list of ConfiguredStructure targets
++ */
++ public void setConfiguredStructures(@NotNull List<ConfiguredStructure> configuredStructures) {
++ this.configuredStructures = new ArrayList<>(configuredStructures);
++ }
++
++ /**
++ * Gets the search radius in which to attempt locating the structure.
++ * <p>
++ * This radius may not always be obeyed during the structure search!
++ *
++ * @return the search radius.
++ */
++ public int getRadius() {
++ return this.radius;
++ }
++
++ /**
++ * Sets the search radius in which to attempt locating the structure.
++ * <p>
++ * This radius may not always be obeyed during the structure search!
++ *
++ * @param radius the search radius.
++ */
++ public void setRadius(int radius) {
++ this.radius = radius;
++ }
++
++ /**
++ * Gets whether to search exclusively for unexplored structures.
++ * <p>
++ * As with the search radius, this value is not always obeyed.
++ *
++ * @return Whether to search for only unexplored structures.
++ */
++ public boolean shouldFindUnexplored() {
++ return this.findUnexplored;
++ }
++
++ /**
++ * Sets whether to search exclusively for unexplored structures.
++ * <p>
++ * As with the search radius, this value is not always obeyed.
++ *
++ * @param findUnexplored Whether to search for only unexplored structures.
++ */
++ public void setFindUnexplored(boolean findUnexplored) {
++ this.findUnexplored = findUnexplored;
++ }
++
++ @Override
++ public boolean isCancelled() {
++ return this.cancelled;
++ }
++
++ @Override
++ public void setCancelled(boolean cancel) {
++ this.cancelled = cancel;
++ }
++
++ @Override
++ public @NotNull HandlerList getHandlers() {
++ return HANDLER_LIST;
++ }
++
++ public static @NotNull HandlerList getHandlerList() {
++ return HANDLER_LIST;
++ }
++
++ /**
++ * Result for {@link StructuresLocateEvent}.
++ */
++ public record Result(@NotNull Location position, @NotNull ConfiguredStructure configuredStructure) {
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/world/structure/ConfiguredStructure.java b/src/main/java/io/papermc/paper/world/structure/ConfiguredStructure.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..280febf7482418734558c50c22688248ac2b14f3
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/world/structure/ConfiguredStructure.java
+@@ -0,0 +1,97 @@
++package io.papermc.paper.world.structure;
++
++import io.papermc.paper.registry.Reference;
++import org.bukkit.Keyed;
++import org.bukkit.NamespacedKey;
++import org.bukkit.Registry;
++import org.bukkit.StructureType;
++import org.jetbrains.annotations.NotNull;
++
++import java.util.Objects;
++
++/**
++ * Represents a configured structure each with a
++ * {@link StructureType}. Multiple ConfiguredStructures can have
++ * the same {@link StructureType}.
++ */
++public final class ConfiguredStructure implements Keyed {
++
++ public static final Reference<ConfiguredStructure> PILLAGER_OUTPOST = create("pillager_outpost");
++ public static final Reference<ConfiguredStructure> MINESHAFT = create("mineshaft");
++ public static final Reference<ConfiguredStructure> MINESHAFT_MESA = create("mineshaft_mesa");
++ public static final Reference<ConfiguredStructure> WOODLAND_MANSION = create("mansion");
++ public static final Reference<ConfiguredStructure> JUNGLE_TEMPLE = create("jungle_pyramid");
++ public static final Reference<ConfiguredStructure> DESERT_PYRAMID = create("desert_pyramid");
++ public static final Reference<ConfiguredStructure> IGLOO = create("igloo");
++ public static final Reference<ConfiguredStructure> SHIPWRECK = create("shipwreck");
++ public static final Reference<ConfiguredStructure> SHIPWRECK_BEACHED = create("shipwreck_beached");
++ public static final Reference<ConfiguredStructure> SWAMP_HUT = create("swamp_hut");
++ public static final Reference<ConfiguredStructure> STRONGHOLD = create("stronghold");
++ public static final Reference<ConfiguredStructure> OCEAN_MONUMENT = create("monument");
++ public static final Reference<ConfiguredStructure> OCEAN_RUIN_COLD = create("ocean_ruin_cold");
++ public static final Reference<ConfiguredStructure> OCEAN_RUIN_WARM = create("ocean_ruin_warm");
++ public static final Reference<ConfiguredStructure> FORTRESS = create("fortress");
++ public static final Reference<ConfiguredStructure> NETHER_FOSSIL = create("nether_fossil");
++ public static final Reference<ConfiguredStructure> END_CITY = create("end_city");
++ public static final Reference<ConfiguredStructure> BURIED_TREASURE = create("buried_treasure");
++ public static final Reference<ConfiguredStructure> BASTION_REMNANT = create("bastion_remnant");
++ public static final Reference<ConfiguredStructure> VILLAGE_PLAINS = create("village_plains");
++ public static final Reference<ConfiguredStructure> VILLAGE_DESERT = create("village_desert");
++ public static final Reference<ConfiguredStructure> VILLAGE_SAVANNA = create("village_savanna");
++ public static final Reference<ConfiguredStructure> VILLAGE_SNOWY = create("village_snowy");
++ public static final Reference<ConfiguredStructure> VILLAGE_TAIGA = create("village_taiga");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_STANDARD = create("ruined_portal");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_DESERT = create("ruined_portal_desert");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_JUNGLE = create("ruined_portal_jungle");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_SWAMP = create("ruined_portal_swamp");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_MOUNTAIN = create("ruined_portal_mountain");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_OCEAN = create("ruined_portal_ocean");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_NETHER = create("ruined_portal_nether");
++
++ private final NamespacedKey key;
++ private final StructureType structureType;
++
++ ConfiguredStructure(@NotNull NamespacedKey key, @NotNull StructureType structureType) {
++ this.key = key;
++ this.structureType = structureType;
++ }
++
++ @Override
++ public @NotNull NamespacedKey getKey() {
++ return this.key;
++ }
++
++ /**
++ * Gets the structure type for this configure structure.
++ *
++ * @return the structure type
++ */
++ public @NotNull StructureType getStructureType() {
++ return this.structureType;
++ }
++
++ @Override
++ public boolean equals(Object o) {
++ if (this == o) return true;
++ if (o == null || getClass() != o.getClass()) return false;
++ ConfiguredStructure structure = (ConfiguredStructure) o;
++ return this.key.equals(structure.key) && this.structureType.equals(structure.structureType);
++ }
++
++ @Override
++ public int hashCode() {
++ return Objects.hash(this.key, this.structureType);
++ }
++
++ @Override
++ public String toString() {
++ return "ConfiguredStructure{" +
++ "key=" + this.key +
++ ", structureType=" + this.structureType +
++ '}';
++ }
++
++ private static @NotNull Reference<ConfiguredStructure> create(@NotNull String name) {
++ return Reference.create(Registry.CONFIGURED_STRUCTURE, NamespacedKey.minecraft(name));
++ }
++}
+diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
+index a696fcaffa03af9e6c92e2ef3e12b38eb59e5db4..bfe0d98e6032c7633d6bb97382426f94fb437430 100644
+--- a/src/main/java/org/bukkit/Registry.java
++++ b/src/main/java/org/bukkit/Registry.java
+@@ -189,6 +189,13 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+ return GameEvent.getByKey(key);
+ }
+ };
++ // Paper start
++ /**
++ * Configured structures.
++ * @see io.papermc.paper.world.structure.ConfiguredStructure
++ */
++ Registry<io.papermc.paper.world.structure.ConfiguredStructure> CONFIGURED_STRUCTURE = Bukkit.getUnsafe().registryFor(io.papermc.paper.world.structure.ConfiguredStructure.class);
++ // Paper end
+
+ /**
+ * Get the object by its key.
diff --git a/patches/api/0257-Return-chat-component-with-empty-text-instead-of-thr.patch b/patches/api/0258-Return-chat-component-with-empty-text-instead-of-thr.patch
index e7986f5bb1..e7986f5bb1 100644
--- a/patches/api/0257-Return-chat-component-with-empty-text-instead-of-thr.patch
+++ b/patches/api/0258-Return-chat-component-with-empty-text-instead-of-thr.patch
diff --git a/patches/api/0258-Add-BlockPreDispenseEvent.patch b/patches/api/0259-Add-BlockPreDispenseEvent.patch
index fb0b89a4ee..fb0b89a4ee 100644
--- a/patches/api/0258-Add-BlockPreDispenseEvent.patch
+++ b/patches/api/0259-Add-BlockPreDispenseEvent.patch
diff --git a/patches/api/0259-Added-Vanilla-Entity-Tags.patch b/patches/api/0260-Added-Vanilla-Entity-Tags.patch
index 9358072a1f..9358072a1f 100644
--- a/patches/api/0259-Added-Vanilla-Entity-Tags.patch
+++ b/patches/api/0260-Added-Vanilla-Entity-Tags.patch
diff --git a/patches/api/0260-added-Wither-API.patch b/patches/api/0261-added-Wither-API.patch
index dbfc15a42c..dbfc15a42c 100644
--- a/patches/api/0260-added-Wither-API.patch
+++ b/patches/api/0261-added-Wither-API.patch
diff --git a/patches/api/0261-Added-PlayerChangeBeaconEffectEvent.patch b/patches/api/0262-Added-PlayerChangeBeaconEffectEvent.patch
index 4331e880bb..4331e880bb 100644
--- a/patches/api/0261-Added-PlayerChangeBeaconEffectEvent.patch
+++ b/patches/api/0262-Added-PlayerChangeBeaconEffectEvent.patch
diff --git a/patches/api/0262-Added-PlayerStonecutterRecipeSelectEvent.patch b/patches/api/0263-Added-PlayerStonecutterRecipeSelectEvent.patch
index ce446c46fe..ce446c46fe 100644
--- a/patches/api/0262-Added-PlayerStonecutterRecipeSelectEvent.patch
+++ b/patches/api/0263-Added-PlayerStonecutterRecipeSelectEvent.patch
diff --git a/patches/api/0263-Add-dropLeash-variable-to-EntityUnleashEvent.patch b/patches/api/0264-Add-dropLeash-variable-to-EntityUnleashEvent.patch
index 75aa758140..75aa758140 100644
--- a/patches/api/0263-Add-dropLeash-variable-to-EntityUnleashEvent.patch
+++ b/patches/api/0264-Add-dropLeash-variable-to-EntityUnleashEvent.patch
diff --git a/patches/api/0264-add-DragonEggFormEvent.patch b/patches/api/0265-add-DragonEggFormEvent.patch
index c465295e88..c465295e88 100644
--- a/patches/api/0264-add-DragonEggFormEvent.patch
+++ b/patches/api/0265-add-DragonEggFormEvent.patch
diff --git a/patches/api/0265-EntityMoveEvent.patch b/patches/api/0266-EntityMoveEvent.patch
index 2855c3bdef..2855c3bdef 100644
--- a/patches/api/0265-EntityMoveEvent.patch
+++ b/patches/api/0266-EntityMoveEvent.patch
diff --git a/patches/api/0266-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/api/0267-Allow-adding-items-to-BlockDropItemEvent.patch
index 984da00f52..984da00f52 100644
--- a/patches/api/0266-Allow-adding-items-to-BlockDropItemEvent.patch
+++ b/patches/api/0267-Allow-adding-items-to-BlockDropItemEvent.patch
diff --git a/patches/api/0267-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/api/0268-Add-getMainThreadExecutor-to-BukkitScheduler.patch
index bbb81fdcf6..bbb81fdcf6 100644
--- a/patches/api/0267-Add-getMainThreadExecutor-to-BukkitScheduler.patch
+++ b/patches/api/0268-Add-getMainThreadExecutor-to-BukkitScheduler.patch
diff --git a/patches/api/0268-living-entity-allow-attribute-registration.patch b/patches/api/0269-living-entity-allow-attribute-registration.patch
index e7ded6dabb..e7ded6dabb 100644
--- a/patches/api/0268-living-entity-allow-attribute-registration.patch
+++ b/patches/api/0269-living-entity-allow-attribute-registration.patch
diff --git a/patches/api/0269-Add-missing-effects.patch b/patches/api/0270-Add-missing-effects.patch
index 8f72589e1e..8f72589e1e 100644
--- a/patches/api/0269-Add-missing-effects.patch
+++ b/patches/api/0270-Add-missing-effects.patch
diff --git a/patches/api/0270-Expose-Tracked-Players.patch b/patches/api/0271-Expose-Tracked-Players.patch
index a66875419d..a66875419d 100644
--- a/patches/api/0270-Expose-Tracked-Players.patch
+++ b/patches/api/0271-Expose-Tracked-Players.patch
diff --git a/patches/api/0271-Cache-the-result-of-Material-isBlock.patch b/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
index 02ac041b83..02ac041b83 100644
--- a/patches/api/0271-Cache-the-result-of-Material-isBlock.patch
+++ b/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
diff --git a/patches/api/0272-Add-worldborder-events.patch b/patches/api/0273-Add-worldborder-events.patch
index 09c3770e16..09c3770e16 100644
--- a/patches/api/0272-Add-worldborder-events.patch
+++ b/patches/api/0273-Add-worldborder-events.patch
diff --git a/patches/api/0273-added-PlayerNameEntityEvent.patch b/patches/api/0274-added-PlayerNameEntityEvent.patch
index a38082f8e8..a38082f8e8 100644
--- a/patches/api/0273-added-PlayerNameEntityEvent.patch
+++ b/patches/api/0274-added-PlayerNameEntityEvent.patch
diff --git a/patches/api/0274-Add-recipe-to-cook-events.patch b/patches/api/0275-Add-recipe-to-cook-events.patch
index b0b34773c0..b0b34773c0 100644
--- a/patches/api/0274-Add-recipe-to-cook-events.patch
+++ b/patches/api/0275-Add-recipe-to-cook-events.patch
diff --git a/patches/api/0275-Add-Block-isValidTool.patch b/patches/api/0276-Add-Block-isValidTool.patch
index 50dd2f43cb..50dd2f43cb 100644
--- a/patches/api/0275-Add-Block-isValidTool.patch
+++ b/patches/api/0276-Add-Block-isValidTool.patch
diff --git a/patches/api/0276-Implement-Keyed-on-World.patch b/patches/api/0277-Implement-Keyed-on-World.patch
index 933373e6d2..86b1e2d5ef 100644
--- a/patches/api/0276-Implement-Keyed-on-World.patch
+++ b/patches/api/0277-Implement-Keyed-on-World.patch
@@ -50,7 +50,7 @@ index b1cfea011efa985f644328486196edf5c73e72cd..67c6443c5639beafade19bc39932f30b
* Gets the map from the given item ID.
*
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 85c1f5b33e933b23946cad3c5ad37cc350ee5d3c..a17b0f540f1b0a85d16ca3e07da2fc495349a699 100644
+index 37f0acb893f886ac0605838eb03b4a935b96f85b..47b9b8b476cbc7a4ef329dbd7629195851c8f4ea 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -43,7 +43,7 @@ import org.jetbrains.annotations.Nullable;
diff --git a/patches/api/0277-Item-Rarity-API.patch b/patches/api/0278-Item-Rarity-API.patch
index 93fb11dcd6..102250b8b9 100644
--- a/patches/api/0277-Item-Rarity-API.patch
+++ b/patches/api/0278-Item-Rarity-API.patch
@@ -61,13 +61,13 @@ index 9f0048888a2fe40316154613a722d1c709fd3856..709ae1eaabd81ee712d7d6f353c4983f
/**
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index b24439b379be1a90dde4e6f4dbe5ca3fdd8face4..4b01c6f82d172b55268fe670c1106b5038ff6eee 100644
+index 0697214210a6e87f690b9454d9651d06ca57a524..8cbd493f695229a7dad46916087aeb3159328bfe 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -147,5 +147,22 @@ public interface UnsafeValues {
- * Use this when sending custom packets, so that there are no collisions on the client or server.
+@@ -157,5 +157,22 @@ public interface UnsafeValues {
+ * @throws IllegalArgumentException if there isn't a registry for that type
*/
- public int nextEntityId();
+ <T extends Keyed> @org.jetbrains.annotations.NotNull Registry<T> registryFor(Class<T> classOfT);
+
+ /**
+ * Gets the item rarity of a material. The material <b>MUST</b> be an item.
diff --git a/patches/api/0278-Expose-protocol-version.patch b/patches/api/0279-Expose-protocol-version.patch
index 20f05a032a..d50d6d888a 100644
--- a/patches/api/0278-Expose-protocol-version.patch
+++ b/patches/api/0279-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 4b01c6f82d172b55268fe670c1106b5038ff6eee..2708718e0391960f9e784f38e5753d95e71de2fc 100644
+index 8cbd493f695229a7dad46916087aeb3159328bfe..45a5e148ae5582a805e350b526cfb3ad87f6f945 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -164,5 +164,12 @@ public interface UnsafeValues {
+@@ -174,5 +174,12 @@ public interface UnsafeValues {
* @return the itemstack rarity
*/
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack);
diff --git a/patches/api/0279-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch b/patches/api/0280-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
index 70c19ffd10..70c19ffd10 100644
--- a/patches/api/0279-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
+++ b/patches/api/0280-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
diff --git a/patches/api/0280-add-isDeeplySleeping-to-HumanEntity.patch b/patches/api/0281-add-isDeeplySleeping-to-HumanEntity.patch
index cf7ca8b27c..cf7ca8b27c 100644
--- a/patches/api/0280-add-isDeeplySleeping-to-HumanEntity.patch
+++ b/patches/api/0281-add-isDeeplySleeping-to-HumanEntity.patch
diff --git a/patches/api/0281-add-consumeFuel-to-FurnaceBurnEvent.patch b/patches/api/0282-add-consumeFuel-to-FurnaceBurnEvent.patch
index 6c8b681cd9..6c8b681cd9 100644
--- a/patches/api/0281-add-consumeFuel-to-FurnaceBurnEvent.patch
+++ b/patches/api/0282-add-consumeFuel-to-FurnaceBurnEvent.patch
diff --git a/patches/api/0282-add-get-set-drop-chance-to-EntityEquipment.patch b/patches/api/0283-add-get-set-drop-chance-to-EntityEquipment.patch
index 83995d7a94..83995d7a94 100644
--- a/patches/api/0282-add-get-set-drop-chance-to-EntityEquipment.patch
+++ b/patches/api/0283-add-get-set-drop-chance-to-EntityEquipment.patch
diff --git a/patches/api/0283-Added-PlayerDeepSleepEvent.patch b/patches/api/0284-Added-PlayerDeepSleepEvent.patch
index d8dccca755..d8dccca755 100644
--- a/patches/api/0283-Added-PlayerDeepSleepEvent.patch
+++ b/patches/api/0284-Added-PlayerDeepSleepEvent.patch
diff --git a/patches/api/0284-More-World-API.patch b/patches/api/0285-More-World-API.patch
index 8442c331f3..d963c90cf3 100644
--- a/patches/api/0284-More-World-API.patch
+++ b/patches/api/0285-More-World-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] More World API
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index a17b0f540f1b0a85d16ca3e07da2fc495349a699..b29b313dfe6342460d5f1ff085a0a61b4604d5ea 100644
+index 47b9b8b476cbc7a4ef329dbd7629195851c8f4ea..def9f0f9803e71cbe57abcffeb9114a5ab462e54 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -3645,6 +3645,114 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0285-Added-PlayerBedFailEnterEvent.patch b/patches/api/0286-Added-PlayerBedFailEnterEvent.patch
index a622f2b98f..a622f2b98f 100644
--- a/patches/api/0285-Added-PlayerBedFailEnterEvent.patch
+++ b/patches/api/0286-Added-PlayerBedFailEnterEvent.patch
diff --git a/patches/api/0286-Introduce-beacon-activation-deactivation-events.patch b/patches/api/0287-Introduce-beacon-activation-deactivation-events.patch
index c2f0577191..c2f0577191 100644
--- a/patches/api/0286-Introduce-beacon-activation-deactivation-events.patch
+++ b/patches/api/0287-Introduce-beacon-activation-deactivation-events.patch
diff --git a/patches/api/0287-PlayerMoveEvent-Improvements.patch b/patches/api/0288-PlayerMoveEvent-Improvements.patch
index 33cf16e54b..33cf16e54b 100644
--- a/patches/api/0287-PlayerMoveEvent-Improvements.patch
+++ b/patches/api/0288-PlayerMoveEvent-Improvements.patch
diff --git a/patches/api/0288-add-RespawnFlags-to-PlayerRespawnEvent.patch b/patches/api/0289-add-RespawnFlags-to-PlayerRespawnEvent.patch
index 63b477d865..63b477d865 100644
--- a/patches/api/0288-add-RespawnFlags-to-PlayerRespawnEvent.patch
+++ b/patches/api/0289-add-RespawnFlags-to-PlayerRespawnEvent.patch
diff --git a/patches/api/0289-Add-more-WanderingTrader-API.patch b/patches/api/0290-Add-more-WanderingTrader-API.patch
index 99045d4949..99045d4949 100644
--- a/patches/api/0289-Add-more-WanderingTrader-API.patch
+++ b/patches/api/0290-Add-more-WanderingTrader-API.patch
diff --git a/patches/api/0290-Add-EntityBlockStorage-clearEntities.patch b/patches/api/0291-Add-EntityBlockStorage-clearEntities.patch
index 7032ba6155..7032ba6155 100644
--- a/patches/api/0290-Add-EntityBlockStorage-clearEntities.patch
+++ b/patches/api/0291-Add-EntityBlockStorage-clearEntities.patch
diff --git a/patches/api/0291-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch b/patches/api/0292-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
index 16af3a7728..16af3a7728 100644
--- a/patches/api/0291-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
+++ b/patches/api/0292-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
diff --git a/patches/api/0292-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch b/patches/api/0293-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
index 655cc86658..655cc86658 100644
--- a/patches/api/0292-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/api/0293-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/api/0293-Inventory-close.patch b/patches/api/0294-Inventory-close.patch
index 9b5cbb7dfe..9b5cbb7dfe 100644
--- a/patches/api/0293-Inventory-close.patch
+++ b/patches/api/0294-Inventory-close.patch
diff --git a/patches/api/0294-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/api/0295-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
index 16cdba8016..16cdba8016 100644
--- a/patches/api/0294-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
+++ b/patches/api/0295-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
diff --git a/patches/api/0295-Add-basic-Datapack-API.patch b/patches/api/0296-Add-basic-Datapack-API.patch
index 0069bae1d4..0069bae1d4 100644
--- a/patches/api/0295-Add-basic-Datapack-API.patch
+++ b/patches/api/0296-Add-basic-Datapack-API.patch
diff --git a/patches/api/0296-additions-to-PlayerGameModeChangeEvent.patch b/patches/api/0297-additions-to-PlayerGameModeChangeEvent.patch
index b2e65ae490..b2e65ae490 100644
--- a/patches/api/0296-additions-to-PlayerGameModeChangeEvent.patch
+++ b/patches/api/0297-additions-to-PlayerGameModeChangeEvent.patch
diff --git a/patches/api/0297-ItemStack-repair-check-API.patch b/patches/api/0298-ItemStack-repair-check-API.patch
index 12d5ceff86..ce9919df14 100644
--- a/patches/api/0297-ItemStack-repair-check-API.patch
+++ b/patches/api/0298-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 2708718e0391960f9e784f38e5753d95e71de2fc..93d139cd498d0c9f616c077ce1c25e3f8e9f55b5 100644
+index 45a5e148ae5582a805e350b526cfb3ad87f6f945..d712a2c7a8ec02d3abbbcb8e616e002e5cdf1afe 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -165,6 +165,16 @@ public interface UnsafeValues {
+@@ -175,6 +175,16 @@ public interface UnsafeValues {
*/
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack);
diff --git a/patches/api/0298-More-Enchantment-API.patch b/patches/api/0299-More-Enchantment-API.patch
index 504aeb1f51..504aeb1f51 100644
--- a/patches/api/0298-More-Enchantment-API.patch
+++ b/patches/api/0299-More-Enchantment-API.patch
diff --git a/patches/api/0299-List-all-missing-hard-depends-not-just-first.patch b/patches/api/0300-List-all-missing-hard-depends-not-just-first.patch
index 995528e860..995528e860 100644
--- a/patches/api/0299-List-all-missing-hard-depends-not-just-first.patch
+++ b/patches/api/0300-List-all-missing-hard-depends-not-just-first.patch
diff --git a/patches/api/0300-Add-Mob-lookAt-API.patch b/patches/api/0301-Add-Mob-lookAt-API.patch
index 26177f2369..26177f2369 100644
--- a/patches/api/0300-Add-Mob-lookAt-API.patch
+++ b/patches/api/0301-Add-Mob-lookAt-API.patch
diff --git a/patches/api/0301-ItemStack-editMeta.patch b/patches/api/0302-ItemStack-editMeta.patch
index 91702f8c01..91702f8c01 100644
--- a/patches/api/0301-ItemStack-editMeta.patch
+++ b/patches/api/0302-ItemStack-editMeta.patch
diff --git a/patches/api/0302-Add-EntityInsideBlockEvent.patch b/patches/api/0303-Add-EntityInsideBlockEvent.patch
index 26c188e7a0..26c188e7a0 100644
--- a/patches/api/0302-Add-EntityInsideBlockEvent.patch
+++ b/patches/api/0303-Add-EntityInsideBlockEvent.patch
diff --git a/patches/api/0303-Attributes-API-for-item-defaults.patch b/patches/api/0304-Attributes-API-for-item-defaults.patch
index 708e878f3d..58f5631c96 100644
--- a/patches/api/0303-Attributes-API-for-item-defaults.patch
+++ b/patches/api/0304-Attributes-API-for-item-defaults.patch
@@ -31,10 +31,10 @@ index 709ae1eaabd81ee712d7d6f353c4983f20f6dc4f..fb8758970a76ee263fc85aaccbafb0bf
/**
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 93d139cd498d0c9f616c077ce1c25e3f8e9f55b5..eeac5e445dba5e1eace52e908d5146c079269c17 100644
+index d712a2c7a8ec02d3abbbcb8e616e002e5cdf1afe..2141396d252cb78630181785d5ae0c17f8f7df10 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -175,6 +175,18 @@ public interface UnsafeValues {
+@@ -185,6 +185,18 @@ public interface UnsafeValues {
*/
public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial);
diff --git a/patches/api/0304-Add-cause-to-Weather-ThunderChangeEvents.patch b/patches/api/0305-Add-cause-to-Weather-ThunderChangeEvents.patch
index 8e5d45d87b..8e5d45d87b 100644
--- a/patches/api/0304-Add-cause-to-Weather-ThunderChangeEvents.patch
+++ b/patches/api/0305-Add-cause-to-Weather-ThunderChangeEvents.patch
diff --git a/patches/api/0305-More-Lidded-Block-API.patch b/patches/api/0306-More-Lidded-Block-API.patch
index ca6b5ed744..ca6b5ed744 100644
--- a/patches/api/0305-More-Lidded-Block-API.patch
+++ b/patches/api/0306-More-Lidded-Block-API.patch
diff --git a/patches/api/0306-Add-PlayerKickEvent-causes.patch b/patches/api/0307-Add-PlayerKickEvent-causes.patch
index 49d6107553..8977bbbb31 100644
--- a/patches/api/0306-Add-PlayerKickEvent-causes.patch
+++ b/patches/api/0307-Add-PlayerKickEvent-causes.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerKickEvent causes
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 71de9f4c7f07c4c0b1155df14794de3ba8e28d69..c7d02e196d57f41c35d37e9a16d8e079a5c176ae 100644
+index d881ae7fb0c17242998c0a495ccd81802611410a..35be51b2b57acfc5dc165b22e16f499fac906e34 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -236,6 +236,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
diff --git a/patches/api/0307-Add-PufferFishStateChangeEvent.patch b/patches/api/0308-Add-PufferFishStateChangeEvent.patch
index c3014534d3..c3014534d3 100644
--- a/patches/api/0307-Add-PufferFishStateChangeEvent.patch
+++ b/patches/api/0308-Add-PufferFishStateChangeEvent.patch
diff --git a/patches/api/0308-Add-BellRevealRaiderEvent.patch b/patches/api/0309-Add-BellRevealRaiderEvent.patch
index 8b0ee3e5b4..8b0ee3e5b4 100644
--- a/patches/api/0308-Add-BellRevealRaiderEvent.patch
+++ b/patches/api/0309-Add-BellRevealRaiderEvent.patch
diff --git a/patches/api/0309-Add-ElderGuardianAppearanceEvent.patch b/patches/api/0310-Add-ElderGuardianAppearanceEvent.patch
index 8d925d10ac..8d925d10ac 100644
--- a/patches/api/0309-Add-ElderGuardianAppearanceEvent.patch
+++ b/patches/api/0310-Add-ElderGuardianAppearanceEvent.patch
diff --git a/patches/api/0310-Add-more-line-of-sight-methods.patch b/patches/api/0311-Add-more-line-of-sight-methods.patch
index 9142f690a9..28e2128eee 100644
--- a/patches/api/0310-Add-more-line-of-sight-methods.patch
+++ b/patches/api/0311-Add-more-line-of-sight-methods.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add more line of sight methods
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index b29b313dfe6342460d5f1ff085a0a61b4604d5ea..abce27d50ef62f14948220272a2452874ae69836 100644
+index def9f0f9803e71cbe57abcffeb9114a5ab462e54..d149dd1d3d2703a428006e0c3ab5f9251e560882 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -76,6 +76,14 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0311-Add-more-LimitedRegion-API.patch b/patches/api/0312-Add-more-LimitedRegion-API.patch
index 292f95c890..292f95c890 100644
--- a/patches/api/0311-Add-more-LimitedRegion-API.patch
+++ b/patches/api/0312-Add-more-LimitedRegion-API.patch
diff --git a/patches/api/0312-Missing-Entity-Behavior-API.patch b/patches/api/0313-Missing-Entity-Behavior-API.patch
index 39b23e64b9..39b23e64b9 100644
--- a/patches/api/0312-Missing-Entity-Behavior-API.patch
+++ b/patches/api/0313-Missing-Entity-Behavior-API.patch
diff --git a/patches/api/0313-Add-Git-information-to-version-command-on-startup.patch b/patches/api/0314-Add-Git-information-to-version-command-on-startup.patch
index 56a17b9b8d..ef7aa8edda 100644
--- a/patches/api/0313-Add-Git-information-to-version-command-on-startup.patch
+++ b/patches/api/0314-Add-Git-information-to-version-command-on-startup.patch
@@ -48,7 +48,7 @@ index 0000000000000000000000000000000000000000..909617079db61b675cc7b60b44ef96b3
+ }
+}
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index 0ecff0322c3ff4e6e3c6fcaf72d0ab786ba423fa..c88eb8946d5ce145fc1cd27795826daeb7f27bff 100644
+index 7732d26277ca8b845898cb01c7623a2f175f0aaa..2af2a948dc9c0d4ad28fccb1c9a2b28d5db99203 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -53,6 +53,7 @@ import org.bukkit.util.CachedServerIcon;
diff --git a/patches/api/0314-Adds-PlayerArmSwingEvent.patch b/patches/api/0315-Adds-PlayerArmSwingEvent.patch
index 75e45a71f8..75e45a71f8 100644
--- a/patches/api/0314-Adds-PlayerArmSwingEvent.patch
+++ b/patches/api/0315-Adds-PlayerArmSwingEvent.patch
diff --git a/patches/api/0315-Add-PlayerSignCommandPreprocessEvent.patch b/patches/api/0316-Add-PlayerSignCommandPreprocessEvent.patch
index fd095653a3..fd095653a3 100644
--- a/patches/api/0315-Add-PlayerSignCommandPreprocessEvent.patch
+++ b/patches/api/0316-Add-PlayerSignCommandPreprocessEvent.patch
diff --git a/patches/api/0316-fix-empty-array-elements-in-command-arguments.patch b/patches/api/0317-fix-empty-array-elements-in-command-arguments.patch
index 0a2b106d87..0a2b106d87 100644
--- a/patches/api/0316-fix-empty-array-elements-in-command-arguments.patch
+++ b/patches/api/0317-fix-empty-array-elements-in-command-arguments.patch
diff --git a/patches/api/0317-Stinger-API.patch b/patches/api/0318-Stinger-API.patch
index 12373dc546..12373dc546 100644
--- a/patches/api/0317-Stinger-API.patch
+++ b/patches/api/0318-Stinger-API.patch
diff --git a/patches/api/0318-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch b/patches/api/0319-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
index 66137f29d0..66137f29d0 100644
--- a/patches/api/0318-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
+++ b/patches/api/0319-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
diff --git a/patches/api/0319-Add-PlayerSetSpawnEvent.patch b/patches/api/0320-Add-PlayerSetSpawnEvent.patch
index 9144c45497..9144c45497 100644
--- a/patches/api/0319-Add-PlayerSetSpawnEvent.patch
+++ b/patches/api/0320-Add-PlayerSetSpawnEvent.patch
diff --git a/patches/api/0320-Added-EntityDamageItemEvent.patch b/patches/api/0321-Added-EntityDamageItemEvent.patch
index 8bbe79f9f3..8bbe79f9f3 100644
--- a/patches/api/0320-Added-EntityDamageItemEvent.patch
+++ b/patches/api/0321-Added-EntityDamageItemEvent.patch
diff --git a/patches/api/0321-Make-EntityUnleashEvent-cancellable.patch b/patches/api/0322-Make-EntityUnleashEvent-cancellable.patch
index e99584c277..e99584c277 100644
--- a/patches/api/0321-Make-EntityUnleashEvent-cancellable.patch
+++ b/patches/api/0322-Make-EntityUnleashEvent-cancellable.patch
diff --git a/patches/api/0322-Change-EnderEye-target-without-changing-other-things.patch b/patches/api/0323-Change-EnderEye-target-without-changing-other-things.patch
index d8e53593ae..d8e53593ae 100644
--- a/patches/api/0322-Change-EnderEye-target-without-changing-other-things.patch
+++ b/patches/api/0323-Change-EnderEye-target-without-changing-other-things.patch
diff --git a/patches/api/0323-Add-BlockBreakBlockEvent.patch b/patches/api/0324-Add-BlockBreakBlockEvent.patch
index dfd13b1355..dfd13b1355 100644
--- a/patches/api/0323-Add-BlockBreakBlockEvent.patch
+++ b/patches/api/0324-Add-BlockBreakBlockEvent.patch
diff --git a/patches/api/0324-Add-helpers-for-left-right-click-to-Action.patch b/patches/api/0325-Add-helpers-for-left-right-click-to-Action.patch
index 9dac2fe612..9dac2fe612 100644
--- a/patches/api/0324-Add-helpers-for-left-right-click-to-Action.patch
+++ b/patches/api/0325-Add-helpers-for-left-right-click-to-Action.patch
diff --git a/patches/api/0325-Option-to-prevent-NBT-copy-in-smithing-recipes.patch b/patches/api/0326-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
index 0a0b5515e3..0a0b5515e3 100644
--- a/patches/api/0325-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
+++ b/patches/api/0326-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
diff --git a/patches/api/0326-More-CommandBlock-API.patch b/patches/api/0327-More-CommandBlock-API.patch
index 242270eb12..242270eb12 100644
--- a/patches/api/0326-More-CommandBlock-API.patch
+++ b/patches/api/0327-More-CommandBlock-API.patch
diff --git a/patches/api/0327-Fix-plugin-provides-load-order.patch b/patches/api/0328-Fix-plugin-provides-load-order.patch
index 83c8568dff..83c8568dff 100644
--- a/patches/api/0327-Fix-plugin-provides-load-order.patch
+++ b/patches/api/0328-Fix-plugin-provides-load-order.patch
diff --git a/patches/api/0328-Add-missing-team-sidebar-display-slots.patch b/patches/api/0329-Add-missing-team-sidebar-display-slots.patch
index 1d400fa49e..1d400fa49e 100644
--- a/patches/api/0328-Add-missing-team-sidebar-display-slots.patch
+++ b/patches/api/0329-Add-missing-team-sidebar-display-slots.patch
diff --git a/patches/api/0329-add-back-EntityPortalExitEvent.patch b/patches/api/0330-add-back-EntityPortalExitEvent.patch
index 5a153e2345..5a153e2345 100644
--- a/patches/api/0329-add-back-EntityPortalExitEvent.patch
+++ b/patches/api/0330-add-back-EntityPortalExitEvent.patch
diff --git a/patches/api/0330-Add-methods-to-find-targets-for-lightning-strikes.patch b/patches/api/0331-Add-methods-to-find-targets-for-lightning-strikes.patch
index 188fbbfd76..bba1626898 100644
--- a/patches/api/0330-Add-methods-to-find-targets-for-lightning-strikes.patch
+++ b/patches/api/0331-Add-methods-to-find-targets-for-lightning-strikes.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add methods to find targets for lightning strikes
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index abce27d50ef62f14948220272a2452874ae69836..268d77210e47d5247ac9b82c344fac323b16a0c4 100644
+index d149dd1d3d2703a428006e0c3ab5f9251e560882..22191f733bbda0710ffae425fda1861e3c2ec87f 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -759,6 +759,37 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0331-Get-entity-default-attributes.patch b/patches/api/0332-Get-entity-default-attributes.patch
index 345875fc4f..12f3ed8dcb 100644
--- a/patches/api/0331-Get-entity-default-attributes.patch
+++ b/patches/api/0332-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 eeac5e445dba5e1eace52e908d5146c079269c17..2e1ec0aa44836ab5be944cf2dbd4601dfb43aed6 100644
+index 2141396d252cb78630181785d5ae0c17f8f7df10..b78d18fc09cee98f0eac907409188c35b3c137fc 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -193,5 +193,22 @@ public interface UnsafeValues {
+@@ -203,5 +203,22 @@ public interface UnsafeValues {
* @return the server's protocol version
*/
int getProtocolVersion();
diff --git a/patches/api/0332-Left-handed-API.patch b/patches/api/0333-Left-handed-API.patch
index c6c9f1b39f..c6c9f1b39f 100644
--- a/patches/api/0332-Left-handed-API.patch
+++ b/patches/api/0333-Left-handed-API.patch
diff --git a/patches/api/0333-Add-advancement-display-API.patch b/patches/api/0334-Add-advancement-display-API.patch
index fc21e58ed8..fc21e58ed8 100644
--- a/patches/api/0333-Add-advancement-display-API.patch
+++ b/patches/api/0334-Add-advancement-display-API.patch
diff --git a/patches/api/0334-Add-ItemFactory-getMonsterEgg-API.patch b/patches/api/0335-Add-ItemFactory-getMonsterEgg-API.patch
index fcdc759ea7..fcdc759ea7 100644
--- a/patches/api/0334-Add-ItemFactory-getMonsterEgg-API.patch
+++ b/patches/api/0335-Add-ItemFactory-getMonsterEgg-API.patch
diff --git a/patches/api/0335-Add-critical-damage-API.patch b/patches/api/0336-Add-critical-damage-API.patch
index 3a9d1f8070..3a9d1f8070 100644
--- a/patches/api/0335-Add-critical-damage-API.patch
+++ b/patches/api/0336-Add-critical-damage-API.patch
diff --git a/patches/api/0336-Fix-issues-with-mob-conversion.patch b/patches/api/0337-Fix-issues-with-mob-conversion.patch
index 8ee1c49162..8ee1c49162 100644
--- a/patches/api/0336-Fix-issues-with-mob-conversion.patch
+++ b/patches/api/0337-Fix-issues-with-mob-conversion.patch
diff --git a/patches/api/0337-Add-isCollidable-methods-to-various-places.patch b/patches/api/0338-Add-isCollidable-methods-to-various-places.patch
index 3a0f511fff..ac6c443e6a 100644
--- a/patches/api/0337-Add-isCollidable-methods-to-various-places.patch
+++ b/patches/api/0338-Add-isCollidable-methods-to-various-places.patch
@@ -26,10 +26,10 @@ index fb8758970a76ee263fc85aaccbafb0bf1745afb8..ef7054fec75d91082be27fdd2a06469f
/**
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 2e1ec0aa44836ab5be944cf2dbd4601dfb43aed6..329612597a2cdf556f5ca970f5409e1c77a5d911 100644
+index b78d18fc09cee98f0eac907409188c35b3c137fc..54b0fe21d3b6379e6550a3b1dc81c2a44e7699da 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -210,5 +210,14 @@ public interface UnsafeValues {
+@@ -220,5 +220,14 @@ public interface UnsafeValues {
* @throws IllegalArgumentException if the entity does not exist of have default attributes (use {@link #hasDefaultEntityAttributes(NamespacedKey)} first)
*/
@org.jetbrains.annotations.NotNull org.bukkit.attribute.Attributable getDefaultEntityAttributes(@org.jetbrains.annotations.NotNull NamespacedKey entityKey);
diff --git a/patches/api/0338-Goat-ram-API.patch b/patches/api/0339-Goat-ram-API.patch
index 69694887ac..69694887ac 100644
--- a/patches/api/0338-Goat-ram-API.patch
+++ b/patches/api/0339-Goat-ram-API.patch
diff --git a/patches/api/0339-Add-API-for-resetting-a-single-score.patch b/patches/api/0340-Add-API-for-resetting-a-single-score.patch
index 997ebf42f6..997ebf42f6 100644
--- a/patches/api/0339-Add-API-for-resetting-a-single-score.patch
+++ b/patches/api/0340-Add-API-for-resetting-a-single-score.patch
diff --git a/patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch b/patches/api/0341-Add-Raw-Byte-Entity-Serialization.patch
index c610203889..c610203889 100644
--- a/patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/api/0341-Add-Raw-Byte-Entity-Serialization.patch
diff --git a/patches/api/0341-Add-PlayerItemFrameChangeEvent.patch b/patches/api/0342-Add-PlayerItemFrameChangeEvent.patch
index a62e452bb4..a62e452bb4 100644
--- a/patches/api/0341-Add-PlayerItemFrameChangeEvent.patch
+++ b/patches/api/0342-Add-PlayerItemFrameChangeEvent.patch
diff --git a/patches/api/0342-Add-player-health-update-API.patch b/patches/api/0343-Add-player-health-update-API.patch
index 44fc6fdbf0..44fc6fdbf0 100644
--- a/patches/api/0342-Add-player-health-update-API.patch
+++ b/patches/api/0343-Add-player-health-update-API.patch
diff --git a/patches/api/0343-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/api/0344-Allow-delegation-to-vanilla-chunk-gen.patch
index 554fdecaf1..554fdecaf1 100644
--- a/patches/api/0343-Allow-delegation-to-vanilla-chunk-gen.patch
+++ b/patches/api/0344-Allow-delegation-to-vanilla-chunk-gen.patch
diff --git a/patches/api/0344-Add-more-Campfire-API.patch b/patches/api/0345-Add-more-Campfire-API.patch
index 80cdc0bb39..80cdc0bb39 100644
--- a/patches/api/0344-Add-more-Campfire-API.patch
+++ b/patches/api/0345-Add-more-Campfire-API.patch
diff --git a/patches/api/0345-Move-VehicleCollisionEvent-HandlerList-up.patch b/patches/api/0346-Move-VehicleCollisionEvent-HandlerList-up.patch
index 8fa566d54a..8fa566d54a 100644
--- a/patches/api/0345-Move-VehicleCollisionEvent-HandlerList-up.patch
+++ b/patches/api/0346-Move-VehicleCollisionEvent-HandlerList-up.patch
diff --git a/patches/api/0346-Improve-scoreboard-entries.patch b/patches/api/0347-Improve-scoreboard-entries.patch
index c608060558..c608060558 100644
--- a/patches/api/0346-Improve-scoreboard-entries.patch
+++ b/patches/api/0347-Improve-scoreboard-entries.patch
diff --git a/patches/api/0347-Entity-powdered-snow-API.patch b/patches/api/0348-Entity-powdered-snow-API.patch
index 88414bd4ef..88414bd4ef 100644
--- a/patches/api/0347-Entity-powdered-snow-API.patch
+++ b/patches/api/0348-Entity-powdered-snow-API.patch
diff --git a/patches/api/0348-Add-API-for-item-entity-health.patch b/patches/api/0349-Add-API-for-item-entity-health.patch
index 913f679ec0..913f679ec0 100644
--- a/patches/api/0348-Add-API-for-item-entity-health.patch
+++ b/patches/api/0349-Add-API-for-item-entity-health.patch
diff --git a/patches/api/0349-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/api/0350-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
index f094cdc255..f094cdc255 100644
--- a/patches/api/0349-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
+++ b/patches/api/0350-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
diff --git a/patches/api/0350-Bucketable-API.patch b/patches/api/0351-Bucketable-API.patch
index 26dbdc9f5d..26dbdc9f5d 100644
--- a/patches/api/0350-Bucketable-API.patch
+++ b/patches/api/0351-Bucketable-API.patch
diff --git a/patches/api/0351-System-prop-for-default-config-comment-parsing.patch b/patches/api/0352-System-prop-for-default-config-comment-parsing.patch
index c28a3f9b5f..c28a3f9b5f 100644
--- a/patches/api/0351-System-prop-for-default-config-comment-parsing.patch
+++ b/patches/api/0352-System-prop-for-default-config-comment-parsing.patch
diff --git a/patches/api/0352-Expose-vanilla-BiomeProvider-from-WorldInfo.patch b/patches/api/0353-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
index 9b189fc918..9b189fc918 100644
--- a/patches/api/0352-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
+++ b/patches/api/0353-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
diff --git a/patches/api/0353-Remove-upstream-snakeyaml-fix.patch b/patches/api/0354-Remove-upstream-snakeyaml-fix.patch
index b5ecceb7b4..b5ecceb7b4 100644
--- a/patches/api/0353-Remove-upstream-snakeyaml-fix.patch
+++ b/patches/api/0354-Remove-upstream-snakeyaml-fix.patch
diff --git a/patches/api/0354-Add-new-overload-to-PersistentDataContainer-has.patch b/patches/api/0355-Add-new-overload-to-PersistentDataContainer-has.patch
index 73c49a2fc8..73c49a2fc8 100644
--- a/patches/api/0354-Add-new-overload-to-PersistentDataContainer-has.patch
+++ b/patches/api/0355-Add-new-overload-to-PersistentDataContainer-has.patch
diff --git a/patches/api/0355-Multiple-Entries-with-Scoreboards.patch b/patches/api/0356-Multiple-Entries-with-Scoreboards.patch
index e1d867d054..e1d867d054 100644
--- a/patches/api/0355-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/api/0356-Multiple-Entries-with-Scoreboards.patch
diff --git a/patches/api/0356-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch b/patches/api/0357-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
index c56c240b80..c56c240b80 100644
--- a/patches/api/0356-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/api/0357-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/api/0357-Warn-on-strange-EventHandler-return-types.patch b/patches/api/0358-Warn-on-strange-EventHandler-return-types.patch
index 29026c1725..29026c1725 100644
--- a/patches/api/0357-Warn-on-strange-EventHandler-return-types.patch
+++ b/patches/api/0358-Warn-on-strange-EventHandler-return-types.patch
diff --git a/patches/api/0358-Multi-Block-Change-API.patch b/patches/api/0359-Multi-Block-Change-API.patch
index c0bde68f1b..9589081363 100644
--- a/patches/api/0358-Multi-Block-Change-API.patch
+++ b/patches/api/0359-Multi-Block-Change-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Multi Block Change API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 5a1b733934bfe4388dad59125caa9c2d45df5dd1..131daee2b29f7016463a00ce7927dff7b0a1b1b4 100644
+index 3a96d1fe95952a1b0be0ef7b3cdf431e5bb8b54f..f954801f6a5d465b8545e75d7ff5af0352d6ec0d 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -579,6 +579,27 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
diff --git a/patches/api/0359-Fix-NotePlayEvent.patch b/patches/api/0360-Fix-NotePlayEvent.patch
index a474627df0..a474627df0 100644
--- a/patches/api/0359-Fix-NotePlayEvent.patch
+++ b/patches/api/0360-Fix-NotePlayEvent.patch
diff --git a/patches/api/0360-Freeze-Tick-Lock-API.patch b/patches/api/0361-Freeze-Tick-Lock-API.patch
index 9f42a812f8..9f42a812f8 100644
--- a/patches/api/0360-Freeze-Tick-Lock-API.patch
+++ b/patches/api/0361-Freeze-Tick-Lock-API.patch
diff --git a/patches/api/0361-Dolphin-API.patch b/patches/api/0362-Dolphin-API.patch
index 73beed437b..73beed437b 100644
--- a/patches/api/0361-Dolphin-API.patch
+++ b/patches/api/0362-Dolphin-API.patch
diff --git a/patches/api/0362-More-PotionEffectType-API.patch b/patches/api/0363-More-PotionEffectType-API.patch
index 4e999e136c..6340f5fd9d 100644
--- a/patches/api/0362-More-PotionEffectType-API.patch
+++ b/patches/api/0363-More-PotionEffectType-API.patch
@@ -5,14 +5,13 @@ Subject: [PATCH] More PotionEffectType API
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index a696fcaffa03af9e6c92e2ef3e12b38eb59e5db4..6242336de18fdd708cc3d7b745cbbace13140bc0 100644
+index bfe0d98e6032c7633d6bb97382426f94fb437430..798aab0d644ca383ff4391685d854af65925fb0c 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
-@@ -189,6 +189,27 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
- return GameEvent.getByKey(key);
- }
- };
-+ // Paper start
+@@ -195,6 +195,25 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+ * @see io.papermc.paper.world.structure.ConfiguredStructure
+ */
+ Registry<io.papermc.paper.world.structure.ConfiguredStructure> CONFIGURED_STRUCTURE = Bukkit.getUnsafe().registryFor(io.papermc.paper.world.structure.ConfiguredStructure.class);
+ /**
+ * Potion effect types.
+ *
@@ -32,10 +31,9 @@ index a696fcaffa03af9e6c92e2ef3e12b38eb59e5db4..6242336de18fdd708cc3d7b745cbbace
+ return Arrays.stream(org.bukkit.potion.PotionEffectType.values()).iterator();
+ }
+ };
-+ // Paper end
+ // Paper end
/**
- * Get the object by its key.
diff --git a/src/main/java/org/bukkit/potion/PotionEffectType.java b/src/main/java/org/bukkit/potion/PotionEffectType.java
index 22c28a503732671bc84c51372262e909d035c1fa..06e0f13d658b63b1fa984abb515eb0de704f9215 100644
--- a/src/main/java/org/bukkit/potion/PotionEffectType.java
diff --git a/patches/api/0363-Expand-the-Registry-API.patch b/patches/api/0364-Expand-the-Registry-API.patch
index 43d9ced4d9..87956152ec 100644
--- a/patches/api/0363-Expand-the-Registry-API.patch
+++ b/patches/api/0364-Expand-the-Registry-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expand the Registry API
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index 6242336de18fdd708cc3d7b745cbbace13140bc0..661d424c609a01ad9bee837b4069d9e4e98d20c0 100644
+index 798aab0d644ca383ff4391685d854af65925fb0c..41363490b1e72d53ab3f1f26fe464858bb7b8f72 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
-@@ -209,6 +209,25 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -214,6 +214,25 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
return Arrays.stream(org.bukkit.potion.PotionEffectType.values()).iterator();
}
};
diff --git a/patches/api/0364-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/api/0365-API-for-creating-command-sender-which-forwards-feedb.patch
index 36ab64333c..36ab64333c 100644
--- a/patches/api/0364-API-for-creating-command-sender-which-forwards-feedb.patch
+++ b/patches/api/0365-API-for-creating-command-sender-which-forwards-feedb.patch
diff --git a/patches/api/0365-Implement-regenerateChunk.patch b/patches/api/0366-Implement-regenerateChunk.patch
index cd1a358e50..fe3631f741 100644
--- a/patches/api/0365-Implement-regenerateChunk.patch
+++ b/patches/api/0366-Implement-regenerateChunk.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Implement regenerateChunk
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 268d77210e47d5247ac9b82c344fac323b16a0c4..d63570d60481e864a15d5594ac54c372151093d4 100644
+index 22191f733bbda0710ffae425fda1861e3c2ec87f..8a688583e65cd22e0417f9fd24e51803486d095e 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -507,8 +507,8 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0366-Don-t-load-plugins-prefixed-with-a-dot.patch b/patches/api/0367-Don-t-load-plugins-prefixed-with-a-dot.patch
index 1aaa39f50b..1aaa39f50b 100644
--- a/patches/api/0366-Don-t-load-plugins-prefixed-with-a-dot.patch
+++ b/patches/api/0367-Don-t-load-plugins-prefixed-with-a-dot.patch
diff --git a/patches/api/0367-Add-GameEvent-tags.patch b/patches/api/0368-Add-GameEvent-tags.patch
index 668a199030..668a199030 100644
--- a/patches/api/0367-Add-GameEvent-tags.patch
+++ b/patches/api/0368-Add-GameEvent-tags.patch
diff --git a/patches/api/0368-Furnace-RecipesUsed-API.patch b/patches/api/0369-Furnace-RecipesUsed-API.patch
index 7fed82db21..7fed82db21 100644
--- a/patches/api/0368-Furnace-RecipesUsed-API.patch
+++ b/patches/api/0369-Furnace-RecipesUsed-API.patch
diff --git a/patches/api/0369-Configurable-sculk-sensor-listener-range.patch b/patches/api/0370-Configurable-sculk-sensor-listener-range.patch
index b1ad0cdb5b..b1ad0cdb5b 100644
--- a/patches/api/0369-Configurable-sculk-sensor-listener-range.patch
+++ b/patches/api/0370-Configurable-sculk-sensor-listener-range.patch
diff --git a/patches/api/0370-Add-missing-block-data-mins-and-maxes.patch b/patches/api/0371-Add-missing-block-data-mins-and-maxes.patch
index 1ce2b605c4..1ce2b605c4 100644
--- a/patches/api/0370-Add-missing-block-data-mins-and-maxes.patch
+++ b/patches/api/0371-Add-missing-block-data-mins-and-maxes.patch
diff --git a/patches/api/0371-Custom-Potion-Mixes.patch b/patches/api/0372-Custom-Potion-Mixes.patch
index 9ec547303b..9ec547303b 100644
--- a/patches/api/0371-Custom-Potion-Mixes.patch
+++ b/patches/api/0372-Custom-Potion-Mixes.patch
diff --git a/patches/server/0579-Add-PaperRegistry.patch b/patches/server/0579-Add-PaperRegistry.patch
new file mode 100644
index 0000000000..0b14017dad
--- /dev/null
+++ b/patches/server/0579-Add-PaperRegistry.patch
@@ -0,0 +1,220 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Wed, 2 Mar 2022 13:33:08 -0800
+Subject: [PATCH] Add PaperRegistry
+
+PaperRegistry is a server-backed impl of bukkit's Registry interface
+
+diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistry.java b/src/main/java/io/papermc/paper/registry/PaperRegistry.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..51cec316df8bc0c7d36e0b1dfdf8d9fae04e3606
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/PaperRegistry.java
+@@ -0,0 +1,145 @@
++package io.papermc.paper.registry;
++
++import com.google.common.base.Preconditions;
++import com.google.common.base.Suppliers;
++import net.minecraft.core.Holder;
++import net.minecraft.core.Registry;
++import net.minecraft.core.RegistryAccess;
++import net.minecraft.resources.ResourceKey;
++import net.minecraft.resources.ResourceLocation;
++import net.minecraft.server.MinecraftServer;
++import org.bukkit.Keyed;
++import org.bukkit.NamespacedKey;
++import org.bukkit.craftbukkit.util.CraftNamespacedKey;
++import org.checkerframework.checker.nullness.qual.NonNull;
++import org.checkerframework.checker.nullness.qual.Nullable;
++import org.checkerframework.framework.qual.DefaultQualifier;
++
++import java.util.Collections;
++import java.util.HashMap;
++import java.util.Iterator;
++import java.util.Map;
++import java.util.Objects;
++import java.util.Optional;
++import java.util.function.Supplier;
++
++@DefaultQualifier(NonNull.class)
++public abstract class PaperRegistry<API extends Keyed, MINECRAFT> implements org.bukkit.Registry<API> {
++
++ @SuppressWarnings("FieldMayBeFinal") // non-final for testing
++ private static Supplier<RegistryAccess> REGISTRY_ACCESS = Suppliers.memoize(() -> MinecraftServer.getServer().registryAccess());
++ private static final Map<RegistryKey<?, ?>, PaperRegistry<?, ?>> INTERNAL_REGISTRIES = new HashMap<>();
++ public static final Map<RegistryKey<?, ?>, PaperRegistry<?, ?>> REGISTRIES = Collections.unmodifiableMap(INTERNAL_REGISTRIES);
++ private static final Map<Class<?>, PaperRegistry<?, ?>> REGISTRY_BY_API_CLASS = new HashMap<>();
++ private static final Map<ResourceKey<? extends Registry<?>>, PaperRegistry<?, ?>> REGISTRY_BY_RES_KEY = new HashMap<>();
++
++ private boolean registered;
++ private final RegistryKey<API, MINECRAFT> registryKey;
++ private final Supplier<Registry<MINECRAFT>> registry;
++ private final Map<NamespacedKey, API> cache = new HashMap<>();
++
++ public PaperRegistry(RegistryKey<API, MINECRAFT> registryKey) {
++ this.registryKey = registryKey;
++ this.registry = Suppliers.memoize(() -> REGISTRY_ACCESS.get().registryOrThrow(this.registryKey.resourceKey()));
++ }
++
++ @Override
++ public @Nullable API get(NamespacedKey key) {
++ return this.cache.computeIfAbsent(key, k -> {
++ final @Nullable MINECRAFT nms = this.registry.get().get(CraftNamespacedKey.toMinecraft(k));
++ if (nms != null) {
++ return this.convertToApi(k, nms);
++ }
++ return null;
++ });
++ }
++
++ public abstract API convertToApi(NamespacedKey key, MINECRAFT nms);
++
++ public API convertToApi(ResourceLocation resourceLocation, MINECRAFT nms) {
++ return this.convertToApi(CraftNamespacedKey.fromMinecraft(resourceLocation), nms);
++ }
++
++ public API convertToApi(Holder<MINECRAFT> nmsHolder) {
++ final Optional<ResourceKey<MINECRAFT>> key = nmsHolder.unwrapKey();
++ if (nmsHolder.isBound() && key.isPresent()) {
++ return this.convertToApi(key.get().location(), nmsHolder.value());
++ } else if (!nmsHolder.isBound() && key.isPresent()) {
++ return this.convertToApi(key.get().location(), this.registry.get().getOrThrow(key.get()));
++ } else if (nmsHolder.isBound() && key.isEmpty()) {
++ final @Nullable ResourceLocation loc = this.registry.get().getKey(nmsHolder.value());
++ if (loc != null) {
++ return this.convertToApi(loc, nmsHolder.value());
++ }
++ }
++ throw new IllegalStateException("Cannot convert " + nmsHolder + " to an API type in: " + this.registryKey);
++ }
++
++ public MINECRAFT getMinecraftValue(API apiValue) {
++ return this.registry.get().getOptional(CraftNamespacedKey.toMinecraft(apiValue.getKey())).orElseThrow();
++ }
++
++ public Holder<MINECRAFT> getMinecraftHolder(API apiValue) {
++ return this.registry.get().getHolderOrThrow(ResourceKey.create(this.registryKey.resourceKey(), CraftNamespacedKey.toMinecraft(apiValue.getKey())));
++ }
++
++ @Override
++ public Iterator<API> iterator() {
++ return this.registry.get().keySet().stream().map(key -> this.get(CraftNamespacedKey.fromMinecraft(key))).iterator();
++ }
++
++ public void clearCache() {
++ this.cache.clear();
++ }
++
++ public void register() {
++ if (this.registered) {
++ throw new IllegalStateException("Already registered: " + this.registryKey.apiClass());
++ }
++ INTERNAL_REGISTRIES.put(this.registryKey, this);
++ REGISTRY_BY_API_CLASS.put(this.registryKey.apiClass(), this);
++ REGISTRY_BY_RES_KEY.put(this.registryKey.resourceKey(), this);
++ this.registered = true;
++ }
++
++ @Override
++ public boolean equals(@Nullable Object o) {
++ if (this == o) return true;
++ if (o == null || !PaperRegistry.class.isAssignableFrom(o.getClass())) return false;
++ PaperRegistry<?, ?> that = (PaperRegistry<?, ?>) o;
++ return this.registryKey.equals(that.registryKey);
++ }
++
++ @Override
++ public int hashCode() {
++ return Objects.hash(this.registryKey);
++ }
++
++ protected static <T> Supplier<Registry<T>> registryFor(ResourceKey<? extends Registry<T>> registryKey) {
++ return Suppliers.memoize(() -> REGISTRY_ACCESS.get().registryOrThrow(registryKey));
++ }
++
++ public static void clearCaches() {
++ for (PaperRegistry<?, ?> registry : INTERNAL_REGISTRIES.values()) {
++ registry.clearCache();
++ }
++ }
++
++ @SuppressWarnings("unchecked")
++ public static <T extends Keyed> PaperRegistry<T, ?> getRegistry(Class<T> classOfT) {
++ Preconditions.checkArgument(REGISTRY_BY_API_CLASS.containsKey(classOfT), "No registry for that type");
++ return (PaperRegistry<T, ?>) REGISTRY_BY_API_CLASS.get(classOfT);
++ }
++
++ @SuppressWarnings("unchecked")
++ public static <T> PaperRegistry<?, T> getRegistry(ResourceKey<? extends Registry<T>> resourceKey) {
++ Preconditions.checkArgument(REGISTRY_BY_RES_KEY.containsKey(resourceKey));
++ return (PaperRegistry<?, T>) REGISTRY_BY_RES_KEY.get(resourceKey);
++ }
++
++ @SuppressWarnings("unchecked")
++ public static <A extends Keyed, M> PaperRegistry<A, M> getRegistry(RegistryKey<A, M> registryKey) {
++ Preconditions.checkArgument(INTERNAL_REGISTRIES.containsKey(registryKey));
++ return (PaperRegistry<A, M>) INTERNAL_REGISTRIES.get(registryKey);
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/registry/RegistryKey.java b/src/main/java/io/papermc/paper/registry/RegistryKey.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..6f39e343147803e15e7681c993b8797a629702e7
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/RegistryKey.java
+@@ -0,0 +1,8 @@
++package io.papermc.paper.registry;
++
++import net.minecraft.core.Registry;
++import net.minecraft.resources.ResourceKey;
++import org.bukkit.Keyed;
++
++public record RegistryKey<API extends Keyed, MINECRAFT>(Class<API> apiClass, ResourceKey<? extends Registry<MINECRAFT>> resourceKey) {
++}
+diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
+index 0f03525066b818a81583618e9a80f245032493b7..6d1dd3d33bcaa7a1262a53c4fed57564c74df286 100644
+--- a/src/main/java/net/minecraft/server/MinecraftServer.java
++++ b/src/main/java/net/minecraft/server/MinecraftServer.java
+@@ -2038,6 +2038,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+ this.packRepository.setSelected(dataPacks);
+ this.worldData.setDataPackConfig(MinecraftServer.getSelectedPacks(this.packRepository));
+ this.resources.managers.updateRegistryTags(this.registryAccess());
++ io.papermc.paper.PaperRegistry.clearCaches(); // Paper
+ new io.papermc.paper.event.server.ServerResourcesReloadedEvent(cause).callEvent(); // Paper
+ if (Thread.currentThread() != this.serverThread) return; // Paper
+ //this.getPlayerList().saveAll(); // Paper - we don't need to do this
+diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+index 7a4ae640aaaf2017ad4f95ca1393b554b0b30302..9374dd74d42e005b7573800d3e9a356e1c57ea86 100644
+--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
++++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+@@ -512,6 +512,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+ public int nextEntityId() {
+ return net.minecraft.world.entity.Entity.nextEntityId();
+ }
++
++ @Override
++ public <T extends org.bukkit.Keyed> Registry<T> registryFor(Class<T> classOfT) {
++ return io.papermc.paper.registry.PaperRegistry.getRegistry(classOfT);
++ }
+ // Paper end
+
+ /**
+diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java
+index d6b6b7a3d2949126520e8256563afeb2b43bf12c..37934f0da922d696373e7a3a8cf976fcb9015271 100644
+--- a/src/test/java/org/bukkit/support/AbstractTestingBase.java
++++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java
+@@ -38,6 +38,15 @@ public abstract class AbstractTestingBase {
+ MultiPackResourceManager resourceManager = new MultiPackResourceManager(PackType.SERVER_DATA, Collections.singletonList(new VanillaPackResources(ServerPacksSource.BUILT_IN_METADATA, "minecraft")));
+ // add tags and loot tables for unit tests
+ RegistryAccess.Frozen registry = RegistryAccess.builtinCopy().freeze();
++ // Paper start
++ try {
++ java.lang.reflect.Field field = io.papermc.paper.registry.PaperRegistry.class.getDeclaredField("REGISTRY_ACCESS");
++ field.trySetAccessible();
++ field.set(null, com.google.common.base.Suppliers.ofInstance(registry));
++ } catch (ReflectiveOperationException ex) {
++ throw new IllegalStateException("Could not reflectively set RegistryAccess in PaperRegistry", ex);
++ }
++ // Paper end
+ // Register vanilla pack
+ DATA_PACK = ReloadableServerResources.loadResources(resourceManager, registry, Commands.CommandSelection.DEDICATED, 0, MoreExecutors.directExecutor(), MoreExecutors.directExecutor()).join();
+ // Bind tags
diff --git a/patches/server/0579-Add-StructureLocateEvent.patch b/patches/server/0579-Add-StructureLocateEvent.patch
deleted file mode 100644
index 06a35aac49..0000000000
--- a/patches/server/0579-Add-StructureLocateEvent.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: dfsek <[email protected]>
-Date: Wed, 16 Sep 2020 01:12:29 -0700
-Subject: [PATCH] Add StructureLocateEvent
-
-
-diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-index f9fc2fc63080a60fe61ebb08ddd93c4f189df84d..4864fce027b0871e50b2060880be9e24bfdd3887 100644
---- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-@@ -294,6 +294,20 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
-
- @Nullable
- public Pair<BlockPos, Holder<ConfiguredStructureFeature<?, ?>>> findNearestMapFeature(ServerLevel worldserver, HolderSet<ConfiguredStructureFeature<?, ?>> holderset, BlockPos center, int radius, boolean skipExistingChunks) {
-+ // Paper start
-+ /*org.bukkit.World world1 = worldserver.getWorld();
-+ org.bukkit.Location originLocation = new org.bukkit.Location(world1, center.getX(), center.getY(), center.getZ());
-+ io.papermc.paper.event.world.StructureLocateEvent event = new io.papermc.paper.event.world.StructureLocateEvent(world1, originLocation, org.bukkit.StructureType.getStructureTypes().get(structureFeature.getFeatureName()), radius, skipExistingChunks);
-+ if(!event.callEvent()) return null;
-+ // If event call set a final location, skip structure finding and just return set result.
-+ if(event.getResult() != null) return new BlockPos(event.getResult().getBlockX(), event.getResult().getBlockY(), event.getResult().getBlockZ());
-+ // Get origin location (re)defined by event call.
-+ center = new BlockPos(event.getOrigin().getBlockX(), event.getOrigin().getBlockY(), event.getOrigin().getBlockZ());
-+ // Get radius and whether to find unexplored structures (re)defined by event call.
-+ radius = event.getRadius();
-+ skipExistingChunks = event.shouldFindUnexplored();
-+ structureFeature = StructureFeature.STRUCTURES_REGISTRY.get(event.getType().getName());*/
-+ // Paper end
- Set<Holder<Biome>> set = (Set) holderset.stream().flatMap((holder) -> {
- return ((ConfiguredStructureFeature) holder.value()).biomes().stream();
- }).collect(Collectors.toSet());
diff --git a/patches/server/0580-Add-StructuresLocateEvent.patch b/patches/server/0580-Add-StructuresLocateEvent.patch
new file mode 100644
index 0000000000..3dd19fb95f
--- /dev/null
+++ b/patches/server/0580-Add-StructuresLocateEvent.patch
@@ -0,0 +1,224 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: dfsek <[email protected]>
+Date: Wed, 16 Sep 2020 01:12:29 -0700
+Subject: [PATCH] Add StructuresLocateEvent
+
+Co-authored-by: Jake Potrebic <[email protected]>
+
+diff --git a/src/main/java/io/papermc/paper/registry/RegistryKey.java b/src/main/java/io/papermc/paper/registry/RegistryKey.java
+index 6f39e343147803e15e7681c993b8797a629702e7..cbff75f19e54b37c762b209b04f6d4799152cf5b 100644
+--- a/src/main/java/io/papermc/paper/registry/RegistryKey.java
++++ b/src/main/java/io/papermc/paper/registry/RegistryKey.java
+@@ -1,8 +1,13 @@
+ package io.papermc.paper.registry;
+
++import io.papermc.paper.world.structure.ConfiguredStructure;
+ import net.minecraft.core.Registry;
+ import net.minecraft.resources.ResourceKey;
++import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
+ import org.bukkit.Keyed;
+
+ public record RegistryKey<API extends Keyed, MINECRAFT>(Class<API> apiClass, ResourceKey<? extends Registry<MINECRAFT>> resourceKey) {
++
++ public static final RegistryKey<ConfiguredStructure, ConfiguredStructureFeature<?, ?>> CONFIGURED_STRUCTURE_REGISTRY = new RegistryKey<>(ConfiguredStructure.class, Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY);
++
+ }
+diff --git a/src/main/java/io/papermc/paper/world/structure/PaperConfiguredStructure.java b/src/main/java/io/papermc/paper/world/structure/PaperConfiguredStructure.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..41f6c2e1e60fc32e6393097711412ca2ad643e57
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/world/structure/PaperConfiguredStructure.java
+@@ -0,0 +1,42 @@
++package io.papermc.paper.world.structure;
++
++import io.papermc.paper.registry.PaperRegistry;
++import io.papermc.paper.registry.RegistryKey;
++import net.minecraft.core.Registry;
++import net.minecraft.resources.ResourceLocation;
++import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
++import net.minecraft.world.level.levelgen.feature.StructureFeature;
++import org.bukkit.NamespacedKey;
++import org.bukkit.StructureType;
++import org.checkerframework.checker.nullness.qual.NonNull;
++import org.checkerframework.framework.qual.DefaultQualifier;
++
++import java.util.Objects;
++import java.util.function.Supplier;
++
++@DefaultQualifier(NonNull.class)
++public final class PaperConfiguredStructure {
++
++ private PaperConfiguredStructure() {
++ }
++
++ public static void init() {
++ new ConfiguredStructureRegistry().register();
++ }
++
++ static final class ConfiguredStructureRegistry extends PaperRegistry<ConfiguredStructure, ConfiguredStructureFeature<?, ?>> {
++
++ private static final Supplier<Registry<StructureFeature<?>>> STRUCTURE_FEATURE_REGISTRY = registryFor(Registry.STRUCTURE_FEATURE_REGISTRY);
++
++ public ConfiguredStructureRegistry() {
++ super(RegistryKey.CONFIGURED_STRUCTURE_REGISTRY);
++ }
++
++ @Override
++ public ConfiguredStructure convertToApi(NamespacedKey key, ConfiguredStructureFeature<?, ?> nms) {
++ final ResourceLocation structureFeatureLoc = Objects.requireNonNull(STRUCTURE_FEATURE_REGISTRY.get().getKey(nms.feature));
++ final StructureType structureType = Objects.requireNonNull(StructureType.getStructureTypes().get(structureFeatureLoc.getPath()), structureFeatureLoc + " could not be converted to an API type");
++ return new ConfiguredStructure(key, structureType);
++ }
++ }
++}
+diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
+index 6d1dd3d33bcaa7a1262a53c4fed57564c74df286..8d197cc55d0afab1bb247623777f6cd8db231846 100644
+--- a/src/main/java/net/minecraft/server/MinecraftServer.java
++++ b/src/main/java/net/minecraft/server/MinecraftServer.java
+@@ -2038,7 +2038,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+ this.packRepository.setSelected(dataPacks);
+ this.worldData.setDataPackConfig(MinecraftServer.getSelectedPacks(this.packRepository));
+ this.resources.managers.updateRegistryTags(this.registryAccess());
+- io.papermc.paper.PaperRegistry.clearCaches(); // Paper
++ io.papermc.paper.registry.PaperRegistry.clearCaches(); // Paper
+ new io.papermc.paper.event.server.ServerResourcesReloadedEvent(cause).callEvent(); // Paper
+ if (Thread.currentThread() != this.serverThread) return; // Paper
+ //this.getPlayerList().saveAll(); // Paper - we don't need to do this
+diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+index f9fc2fc63080a60fe61ebb08ddd93c4f189df84d..97b29671a8df6d102be3982443f6f784e2e1d6e1 100644
+--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
++++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+@@ -294,6 +294,26 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
+
+ @Nullable
+ public Pair<BlockPos, Holder<ConfiguredStructureFeature<?, ?>>> findNearestMapFeature(ServerLevel worldserver, HolderSet<ConfiguredStructureFeature<?, ?>> holderset, BlockPos center, int radius, boolean skipExistingChunks) {
++ // Paper start - StructureLocateEvent
++ final org.bukkit.World world = worldserver.getWorld();
++ final org.bukkit.Location origin = net.minecraft.server.MCUtil.toLocation(worldserver, center);
++ final var paperRegistry = io.papermc.paper.registry.PaperRegistry.getRegistry(io.papermc.paper.registry.RegistryKey.CONFIGURED_STRUCTURE_REGISTRY);
++ final List<io.papermc.paper.world.structure.ConfiguredStructure> configuredStructures = new ArrayList<>();
++ for (Holder<net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature<?, ?>> holder : holderset) {
++ configuredStructures.add(paperRegistry.convertToApi(holder));
++ }
++ final io.papermc.paper.event.world.StructuresLocateEvent event = new io.papermc.paper.event.world.StructuresLocateEvent(world, origin, configuredStructures, radius, skipExistingChunks);
++ if (!event.callEvent()) {
++ return null;
++ }
++ if (event.getResult() != null) {
++ return Pair.of(net.minecraft.server.MCUtil.toBlockPosition(event.getResult().position()), paperRegistry.getMinecraftHolder(event.getResult().configuredStructure()));
++ }
++ center = net.minecraft.server.MCUtil.toBlockPosition(event.getOrigin());
++ radius = event.getRadius();
++ skipExistingChunks = event.shouldFindUnexplored();
++ holderset = HolderSet.direct(paperRegistry::getMinecraftHolder, event.getConfiguredStructures());
++ // Paper end
+ Set<Holder<Biome>> set = (Set) holderset.stream().flatMap((holder) -> {
+ return ((ConfiguredStructureFeature) holder.value()).biomes().stream();
+ }).collect(Collectors.toSet());
+diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/ConfiguredStructureFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/ConfiguredStructureFeature.java
+index af9ef29f5c5a600e4544ba735c833699cc93f93a..473a54963fbe08beeff26a828827f9f72d8a29b8 100644
+--- a/src/main/java/net/minecraft/world/level/levelgen/feature/ConfiguredStructureFeature.java
++++ b/src/main/java/net/minecraft/world/level/levelgen/feature/ConfiguredStructureFeature.java
+@@ -38,6 +38,7 @@ public class ConfiguredStructureFeature<FC extends FeatureConfiguration, F exten
+ public final HolderSet<Biome> biomes;
+ public final Map<MobCategory, StructureSpawnOverride> spawnOverrides;
+ public final boolean adaptNoise;
++ static { io.papermc.paper.world.structure.PaperConfiguredStructure.init(); } // Paper
+
+ public ConfiguredStructureFeature(F feature, FC config, HolderSet<Biome> biomes, boolean bl, Map<MobCategory, StructureSpawnOverride> map) {
+ this.feature = feature;
+diff --git a/src/test/java/io/papermc/paper/world/structure/ConfiguredStructureTest.java b/src/test/java/io/papermc/paper/world/structure/ConfiguredStructureTest.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..29c0209327374d5a4dad4e3bacdba7fa56d80749
+--- /dev/null
++++ b/src/test/java/io/papermc/paper/world/structure/ConfiguredStructureTest.java
+@@ -0,0 +1,89 @@
++package io.papermc.paper.world.structure;
++
++import io.papermc.paper.registry.Reference;
++import net.minecraft.data.BuiltinRegistries;
++import net.minecraft.resources.ResourceKey;
++import net.minecraft.resources.ResourceLocation;
++import net.minecraft.server.Bootstrap;
++import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
++import net.minecraft.world.level.levelgen.structure.BuiltinStructures;
++import org.bukkit.NamespacedKey;
++import org.bukkit.craftbukkit.util.CraftNamespacedKey;
++import org.bukkit.support.AbstractTestingBase;
++import org.junit.AfterClass;
++import org.junit.BeforeClass;
++import org.junit.Test;
++
++import java.io.PrintStream;
++import java.lang.reflect.Field;
++import java.lang.reflect.Modifier;
++import java.util.LinkedHashMap;
++import java.util.Map;
++import java.util.StringJoiner;
++
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertNotNull;
++import static org.junit.Assert.assertTrue;
++
++public class ConfiguredStructureTest extends AbstractTestingBase {
++
++ private static final Map<ResourceLocation, String> BUILT_IN_STRUCTURES = new LinkedHashMap<>();
++ private static final Map<NamespacedKey, Reference<?>> DEFAULT_CONFIGURED_STRUCTURES = new LinkedHashMap<>();
++
++ private static PrintStream out;
++
++ @BeforeClass
++ public static void collectStructures() throws ReflectiveOperationException {
++ out = System.out;
++ System.setOut(Bootstrap.STDOUT);
++ for (Field field : BuiltinStructures.class.getDeclaredFields()) {
++ if (field.getType().equals(ResourceKey.class) && Modifier.isStatic(field.getModifiers())) {
++ BUILT_IN_STRUCTURES.put(((ResourceKey<?>) field.get(null)).location(), field.getName());
++ }
++ }
++ for (Field field : ConfiguredStructure.class.getDeclaredFields()) {
++ if (field.getType().equals(Reference.class) && Modifier.isStatic(field.getModifiers())) {
++ final Reference<?> ref = (Reference<?>) field.get(null);
++ DEFAULT_CONFIGURED_STRUCTURES.put(ref.getKey(), ref);
++ }
++ }
++ }
++
++ @Test
++ public void testMinecraftToApi() {
++ assertEquals("configured structure maps should be the same size", BUILT_IN_STRUCTURES.size(), BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE.size());
++
++ Map<ResourceLocation, ConfiguredStructureFeature<?, ?>> missing = new LinkedHashMap<>();
++ for (ConfiguredStructureFeature<?, ?> feature : BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE) {
++ final ResourceLocation key = BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE.getKey(feature);
++ assertNotNull("Missing built-in registry key", key);
++ if (DEFAULT_CONFIGURED_STRUCTURES.get(CraftNamespacedKey.fromMinecraft(key)) == null) {
++ missing.put(key, feature);
++ }
++ }
++
++ assertTrue(printMissing(missing), missing.isEmpty());
++ }
++
++ @Test
++ public void testApiToMinecraft() {
++ for (NamespacedKey apiKey : DEFAULT_CONFIGURED_STRUCTURES.keySet()) {
++ assertTrue(apiKey + " does not have a minecraft counterpart", BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE.containsKey(CraftNamespacedKey.toMinecraft(apiKey)));
++ }
++ }
++
++ private static String printMissing(Map<ResourceLocation, ConfiguredStructureFeature<?, ?>> missing) {
++ final StringJoiner joiner = new StringJoiner("\n", "Missing: \n", "");
++
++ missing.forEach((key, configuredFeature) -> {
++ joiner.add("public static final Reference<ConfiguredStructure> " + BUILT_IN_STRUCTURES.get(key) + " = create(\"" + key.getPath() + "\");");
++ });
++
++ return joiner.toString();
++ }
++
++ @AfterClass
++ public static void after() {
++ System.setOut(out);
++ }
++}
diff --git a/patches/server/0580-Collision-option-for-requiring-a-player-participant.patch b/patches/server/0581-Collision-option-for-requiring-a-player-participant.patch
index 2453830557..2453830557 100644
--- a/patches/server/0580-Collision-option-for-requiring-a-player-participant.patch
+++ b/patches/server/0581-Collision-option-for-requiring-a-player-participant.patch
diff --git a/patches/server/0581-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch b/patches/server/0582-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch
index b74ce3c39c..b74ce3c39c 100644
--- a/patches/server/0581-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch
+++ b/patches/server/0582-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch
diff --git a/patches/server/0582-Return-chat-component-with-empty-text-instead-of-thr.patch b/patches/server/0583-Return-chat-component-with-empty-text-instead-of-thr.patch
index a9e7d4baac..a9e7d4baac 100644
--- a/patches/server/0582-Return-chat-component-with-empty-text-instead-of-thr.patch
+++ b/patches/server/0583-Return-chat-component-with-empty-text-instead-of-thr.patch
diff --git a/patches/server/0583-Make-schedule-command-per-world.patch b/patches/server/0584-Make-schedule-command-per-world.patch
index 4859bb69f5..4859bb69f5 100644
--- a/patches/server/0583-Make-schedule-command-per-world.patch
+++ b/patches/server/0584-Make-schedule-command-per-world.patch
diff --git a/patches/server/0584-Configurable-max-leash-distance.patch b/patches/server/0585-Configurable-max-leash-distance.patch
index 39f8d7dd66..39f8d7dd66 100644
--- a/patches/server/0584-Configurable-max-leash-distance.patch
+++ b/patches/server/0585-Configurable-max-leash-distance.patch
diff --git a/patches/server/0585-Implement-BlockPreDispenseEvent.patch b/patches/server/0586-Implement-BlockPreDispenseEvent.patch
index 0356bec392..0356bec392 100644
--- a/patches/server/0585-Implement-BlockPreDispenseEvent.patch
+++ b/patches/server/0586-Implement-BlockPreDispenseEvent.patch
diff --git a/patches/server/0586-added-Wither-API.patch b/patches/server/0587-added-Wither-API.patch
index 80d4af7f38..80d4af7f38 100644
--- a/patches/server/0586-added-Wither-API.patch
+++ b/patches/server/0587-added-Wither-API.patch
diff --git a/patches/server/0587-Added-firing-of-PlayerChangeBeaconEffectEvent.patch b/patches/server/0588-Added-firing-of-PlayerChangeBeaconEffectEvent.patch
index 0c470fc8f2..0c470fc8f2 100644
--- a/patches/server/0587-Added-firing-of-PlayerChangeBeaconEffectEvent.patch
+++ b/patches/server/0588-Added-firing-of-PlayerChangeBeaconEffectEvent.patch
diff --git a/patches/server/0588-Add-toggle-for-always-placing-the-dragon-egg.patch b/patches/server/0589-Add-toggle-for-always-placing-the-dragon-egg.patch
index 544c347429..544c347429 100644
--- a/patches/server/0588-Add-toggle-for-always-placing-the-dragon-egg.patch
+++ b/patches/server/0589-Add-toggle-for-always-placing-the-dragon-egg.patch
diff --git a/patches/server/0589-Added-PlayerStonecutterRecipeSelectEvent.patch b/patches/server/0590-Added-PlayerStonecutterRecipeSelectEvent.patch
index c8cefc8ca5..c8cefc8ca5 100644
--- a/patches/server/0589-Added-PlayerStonecutterRecipeSelectEvent.patch
+++ b/patches/server/0590-Added-PlayerStonecutterRecipeSelectEvent.patch
diff --git a/patches/server/0590-Add-dropLeash-variable-to-EntityUnleashEvent.patch b/patches/server/0591-Add-dropLeash-variable-to-EntityUnleashEvent.patch
index 766d05e286..766d05e286 100644
--- a/patches/server/0590-Add-dropLeash-variable-to-EntityUnleashEvent.patch
+++ b/patches/server/0591-Add-dropLeash-variable-to-EntityUnleashEvent.patch
diff --git a/patches/server/0591-Reset-shield-blocking-on-dimension-change.patch b/patches/server/0592-Reset-shield-blocking-on-dimension-change.patch
index e80304d90b..e80304d90b 100644
--- a/patches/server/0591-Reset-shield-blocking-on-dimension-change.patch
+++ b/patches/server/0592-Reset-shield-blocking-on-dimension-change.patch
diff --git a/patches/server/0592-add-DragonEggFormEvent.patch b/patches/server/0593-add-DragonEggFormEvent.patch
index ab3f7fd05b..ab3f7fd05b 100644
--- a/patches/server/0592-add-DragonEggFormEvent.patch
+++ b/patches/server/0593-add-DragonEggFormEvent.patch
diff --git a/patches/server/0593-EntityMoveEvent.patch b/patches/server/0594-EntityMoveEvent.patch
index 0ceba87d24..6647094d25 100644
--- a/patches/server/0593-EntityMoveEvent.patch
+++ b/patches/server/0594-EntityMoveEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] EntityMoveEvent
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 0f03525066b818a81583618e9a80f245032493b7..9912b4e10abb5c41f2b92d992a6fe00ee5545740 100644
+index 6d1dd3d33bcaa7a1262a53c4fed57564c74df286..c1e9b32fd8f147e0cbbe830a62b8b51ea62c9d30 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1541,6 +1541,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/server/0594-added-option-to-disable-pathfinding-updates-on-block.patch b/patches/server/0595-added-option-to-disable-pathfinding-updates-on-block.patch
index a03f8b0be8..a03f8b0be8 100644
--- a/patches/server/0594-added-option-to-disable-pathfinding-updates-on-block.patch
+++ b/patches/server/0595-added-option-to-disable-pathfinding-updates-on-block.patch
diff --git a/patches/server/0595-Inline-shift-direction-fields.patch b/patches/server/0596-Inline-shift-direction-fields.patch
index aea372f6f4..aea372f6f4 100644
--- a/patches/server/0595-Inline-shift-direction-fields.patch
+++ b/patches/server/0596-Inline-shift-direction-fields.patch
diff --git a/patches/server/0596-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/server/0597-Allow-adding-items-to-BlockDropItemEvent.patch
index fdd2359e10..fdd2359e10 100644
--- a/patches/server/0596-Allow-adding-items-to-BlockDropItemEvent.patch
+++ b/patches/server/0597-Allow-adding-items-to-BlockDropItemEvent.patch
diff --git a/patches/server/0597-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/server/0598-Add-getMainThreadExecutor-to-BukkitScheduler.patch
index 8cfe3357dc..8cfe3357dc 100644
--- a/patches/server/0597-Add-getMainThreadExecutor-to-BukkitScheduler.patch
+++ b/patches/server/0598-Add-getMainThreadExecutor-to-BukkitScheduler.patch
diff --git a/patches/server/0598-living-entity-allow-attribute-registration.patch b/patches/server/0599-living-entity-allow-attribute-registration.patch
index 88cf7f15c6..88cf7f15c6 100644
--- a/patches/server/0598-living-entity-allow-attribute-registration.patch
+++ b/patches/server/0599-living-entity-allow-attribute-registration.patch
diff --git a/patches/server/0599-fix-dead-slime-setSize-invincibility.patch b/patches/server/0600-fix-dead-slime-setSize-invincibility.patch
index 33ce1b72f2..33ce1b72f2 100644
--- a/patches/server/0599-fix-dead-slime-setSize-invincibility.patch
+++ b/patches/server/0600-fix-dead-slime-setSize-invincibility.patch
diff --git a/patches/server/0600-Merchant-getRecipes-should-return-an-immutable-list.patch b/patches/server/0601-Merchant-getRecipes-should-return-an-immutable-list.patch
index cbb0cdc052..cbb0cdc052 100644
--- a/patches/server/0600-Merchant-getRecipes-should-return-an-immutable-list.patch
+++ b/patches/server/0601-Merchant-getRecipes-should-return-an-immutable-list.patch
diff --git a/patches/server/0601-Add-support-for-hex-color-codes-in-console.patch b/patches/server/0602-Add-support-for-hex-color-codes-in-console.patch
index 4d129a981e..4d129a981e 100644
--- a/patches/server/0601-Add-support-for-hex-color-codes-in-console.patch
+++ b/patches/server/0602-Add-support-for-hex-color-codes-in-console.patch
diff --git a/patches/server/0602-Expose-Tracked-Players.patch b/patches/server/0603-Expose-Tracked-Players.patch
index ec9396cdd0..ec9396cdd0 100644
--- a/patches/server/0602-Expose-Tracked-Players.patch
+++ b/patches/server/0603-Expose-Tracked-Players.patch
diff --git a/patches/server/0603-Remove-streams-from-SensorNearest.patch b/patches/server/0604-Remove-streams-from-SensorNearest.patch
index 91ae33c411..91ae33c411 100644
--- a/patches/server/0603-Remove-streams-from-SensorNearest.patch
+++ b/patches/server/0604-Remove-streams-from-SensorNearest.patch
diff --git a/patches/server/0604-Throw-proper-exception-on-empty-JsonList-file.patch b/patches/server/0605-Throw-proper-exception-on-empty-JsonList-file.patch
index e013e32526..e013e32526 100644
--- a/patches/server/0604-Throw-proper-exception-on-empty-JsonList-file.patch
+++ b/patches/server/0605-Throw-proper-exception-on-empty-JsonList-file.patch
diff --git a/patches/server/0605-Improve-ServerGUI.patch b/patches/server/0606-Improve-ServerGUI.patch
index e573bd2f58..e573bd2f58 100644
--- a/patches/server/0605-Improve-ServerGUI.patch
+++ b/patches/server/0606-Improve-ServerGUI.patch
diff --git a/patches/server/0606-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch b/patches/server/0607-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch
index 1099f41d55..1099f41d55 100644
--- a/patches/server/0606-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch
+++ b/patches/server/0607-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch
diff --git a/patches/server/0607-fix-converting-txt-to-json-file.patch b/patches/server/0608-fix-converting-txt-to-json-file.patch
index eb9cd86dd7..eb9cd86dd7 100644
--- a/patches/server/0607-fix-converting-txt-to-json-file.patch
+++ b/patches/server/0608-fix-converting-txt-to-json-file.patch
diff --git a/patches/server/0608-Add-worldborder-events.patch b/patches/server/0609-Add-worldborder-events.patch
index 26898cfba0..26898cfba0 100644
--- a/patches/server/0608-Add-worldborder-events.patch
+++ b/patches/server/0609-Add-worldborder-events.patch
diff --git a/patches/server/0609-added-PlayerNameEntityEvent.patch b/patches/server/0610-added-PlayerNameEntityEvent.patch
index c1df33b717..c1df33b717 100644
--- a/patches/server/0609-added-PlayerNameEntityEvent.patch
+++ b/patches/server/0610-added-PlayerNameEntityEvent.patch
diff --git a/patches/server/0610-Prevent-grindstones-from-overstacking-items.patch b/patches/server/0611-Prevent-grindstones-from-overstacking-items.patch
index 3719f82383..3719f82383 100644
--- a/patches/server/0610-Prevent-grindstones-from-overstacking-items.patch
+++ b/patches/server/0611-Prevent-grindstones-from-overstacking-items.patch
diff --git a/patches/server/0611-Add-recipe-to-cook-events.patch b/patches/server/0612-Add-recipe-to-cook-events.patch
index 183bc80987..183bc80987 100644
--- a/patches/server/0611-Add-recipe-to-cook-events.patch
+++ b/patches/server/0612-Add-recipe-to-cook-events.patch
diff --git a/patches/server/0612-Add-Block-isValidTool.patch b/patches/server/0613-Add-Block-isValidTool.patch
index 8442851de2..8442851de2 100644
--- a/patches/server/0612-Add-Block-isValidTool.patch
+++ b/patches/server/0613-Add-Block-isValidTool.patch
diff --git a/patches/server/0613-Allow-using-signs-inside-spawn-protection.patch b/patches/server/0614-Allow-using-signs-inside-spawn-protection.patch
index 2134c6d27d..2134c6d27d 100644
--- a/patches/server/0613-Allow-using-signs-inside-spawn-protection.patch
+++ b/patches/server/0614-Allow-using-signs-inside-spawn-protection.patch
diff --git a/patches/server/0614-Implement-Keyed-on-World.patch b/patches/server/0615-Implement-Keyed-on-World.patch
index 6c9519f39b..6c9519f39b 100644
--- a/patches/server/0614-Implement-Keyed-on-World.patch
+++ b/patches/server/0615-Implement-Keyed-on-World.patch
diff --git a/patches/server/0615-Add-fast-alternative-constructor-for-Rotations.patch b/patches/server/0616-Add-fast-alternative-constructor-for-Rotations.patch
index d2a627b5b6..d2a627b5b6 100644
--- a/patches/server/0615-Add-fast-alternative-constructor-for-Rotations.patch
+++ b/patches/server/0616-Add-fast-alternative-constructor-for-Rotations.patch
diff --git a/patches/server/0616-Item-Rarity-API.patch b/patches/server/0617-Item-Rarity-API.patch
index 5275b557e6..29bd01b295 100644
--- a/patches/server/0616-Item-Rarity-API.patch
+++ b/patches/server/0617-Item-Rarity-API.patch
@@ -5,12 +5,12 @@ Subject: [PATCH] Item Rarity API
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 7a4ae640aaaf2017ad4f95ca1393b554b0b30302..a4d5990101aeb0bd08a0ec2bd7b7ff704dfedfc0 100644
+index 9374dd74d42e005b7573800d3e9a356e1c57ea86..9cd69efe2923fd4c1680d386b8c16084359561c4 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -512,6 +512,20 @@ public final class CraftMagicNumbers implements UnsafeValues {
- public int nextEntityId() {
- return net.minecraft.world.entity.Entity.nextEntityId();
+@@ -517,6 +517,20 @@ public final class CraftMagicNumbers implements UnsafeValues {
+ public <T extends org.bukkit.Keyed> Registry<T> registryFor(Class<T> classOfT) {
+ return io.papermc.paper.registry.PaperRegistry.getRegistry(classOfT);
}
+
+ @Override
diff --git a/patches/server/0617-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch b/patches/server/0618-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch
index ff46048dcd..ff46048dcd 100644
--- a/patches/server/0617-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch
+++ b/patches/server/0618-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch
diff --git a/patches/server/0618-copy-TESign-isEditable-from-snapshots.patch b/patches/server/0619-copy-TESign-isEditable-from-snapshots.patch
index 0cfc8f03a3..0cfc8f03a3 100644
--- a/patches/server/0618-copy-TESign-isEditable-from-snapshots.patch
+++ b/patches/server/0619-copy-TESign-isEditable-from-snapshots.patch
diff --git a/patches/server/0619-Drop-carried-item-when-player-has-disconnected.patch b/patches/server/0620-Drop-carried-item-when-player-has-disconnected.patch
index 26cffa4d21..26cffa4d21 100644
--- a/patches/server/0619-Drop-carried-item-when-player-has-disconnected.patch
+++ b/patches/server/0620-Drop-carried-item-when-player-has-disconnected.patch
diff --git a/patches/server/0620-forced-whitelist-use-configurable-kick-message.patch b/patches/server/0621-forced-whitelist-use-configurable-kick-message.patch
index 0ad726ab2a..3998240402 100644
--- a/patches/server/0620-forced-whitelist-use-configurable-kick-message.patch
+++ b/patches/server/0621-forced-whitelist-use-configurable-kick-message.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] forced whitelist: use configurable kick message
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 9912b4e10abb5c41f2b92d992a6fe00ee5545740..824d90b541355d711a170ff8e163a894ba17ff00 100644
+index c1e9b32fd8f147e0cbbe830a62b8b51ea62c9d30..1cac02ba1eced8c1cda0de750dfe640acdca21c0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -73,7 +73,6 @@ import net.minecraft.gametest.framework.GameTestTicker;
@@ -16,7 +16,7 @@ index 9912b4e10abb5c41f2b92d992a6fe00ee5545740..824d90b541355d711a170ff8e163a894
import net.minecraft.network.protocol.game.ClientboundChangeDifficultyPacket;
import net.minecraft.network.protocol.game.ClientboundSetTimePacket;
import net.minecraft.network.protocol.status.ServerStatus;
-@@ -2119,7 +2118,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+@@ -2120,7 +2119,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
if (!whitelist.isWhiteListed(entityplayer.getGameProfile()) && !this.getPlayerList().isOp(entityplayer.getGameProfile())) { // Paper - Fix kicking ops when whitelist is reloaded (MC-171420)
diff --git a/patches/server/0621-Don-t-ignore-result-of-PlayerEditBookEvent.patch b/patches/server/0622-Don-t-ignore-result-of-PlayerEditBookEvent.patch
index a80d297e37..a80d297e37 100644
--- a/patches/server/0621-Don-t-ignore-result-of-PlayerEditBookEvent.patch
+++ b/patches/server/0622-Don-t-ignore-result-of-PlayerEditBookEvent.patch
diff --git a/patches/server/0622-Entity-load-save-limit-per-chunk.patch b/patches/server/0623-Entity-load-save-limit-per-chunk.patch
index 177d06c8fc..177d06c8fc 100644
--- a/patches/server/0622-Entity-load-save-limit-per-chunk.patch
+++ b/patches/server/0623-Entity-load-save-limit-per-chunk.patch
diff --git a/patches/server/0623-Expose-protocol-version.patch b/patches/server/0624-Expose-protocol-version.patch
index aef4c581a5..3f69974e93 100644
--- a/patches/server/0623-Expose-protocol-version.patch
+++ b/patches/server/0624-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 a4d5990101aeb0bd08a0ec2bd7b7ff704dfedfc0..3f7aa98158cd79f80cee74a72c92a5f50efc5cdf 100644
+index 9cd69efe2923fd4c1680d386b8c16084359561c4..61a1992c3cd256c46f9a989bcb041f511f829378 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -526,6 +526,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -531,6 +531,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(org.bukkit.inventory.ItemStack itemStack) {
return io.papermc.paper.inventory.ItemRarity.values()[getItem(itemStack.getType()).getRarity(CraftItemStack.asNMSCopy(itemStack)).ordinal()];
}
diff --git a/patches/server/0624-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch b/patches/server/0625-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
index 1935ce4852..1935ce4852 100644
--- a/patches/server/0624-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
+++ b/patches/server/0625-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
diff --git a/patches/server/0625-Enhance-console-tab-completions-for-brigadier-comman.patch b/patches/server/0626-Enhance-console-tab-completions-for-brigadier-comman.patch
index 0fe6d987f6..0fe6d987f6 100644
--- a/patches/server/0625-Enhance-console-tab-completions-for-brigadier-comman.patch
+++ b/patches/server/0626-Enhance-console-tab-completions-for-brigadier-comman.patch
diff --git a/patches/server/0626-Fix-PlayerItemConsumeEvent-cancelling-properly.patch b/patches/server/0627-Fix-PlayerItemConsumeEvent-cancelling-properly.patch
index 7141d18a53..7141d18a53 100644
--- a/patches/server/0626-Fix-PlayerItemConsumeEvent-cancelling-properly.patch
+++ b/patches/server/0627-Fix-PlayerItemConsumeEvent-cancelling-properly.patch
diff --git a/patches/server/0627-Add-bypass-host-check.patch b/patches/server/0628-Add-bypass-host-check.patch
index a9a87f8a74..a9a87f8a74 100644
--- a/patches/server/0627-Add-bypass-host-check.patch
+++ b/patches/server/0628-Add-bypass-host-check.patch
diff --git a/patches/server/0628-Set-area-affect-cloud-rotation.patch b/patches/server/0629-Set-area-affect-cloud-rotation.patch
index b0f478a353..b0f478a353 100644
--- a/patches/server/0628-Set-area-affect-cloud-rotation.patch
+++ b/patches/server/0629-Set-area-affect-cloud-rotation.patch
diff --git a/patches/server/0629-add-isDeeplySleeping-to-HumanEntity.patch b/patches/server/0630-add-isDeeplySleeping-to-HumanEntity.patch
index 8c7bfe4fbb..8c7bfe4fbb 100644
--- a/patches/server/0629-add-isDeeplySleeping-to-HumanEntity.patch
+++ b/patches/server/0630-add-isDeeplySleeping-to-HumanEntity.patch
diff --git a/patches/server/0630-Fix-duplicating-give-items-on-item-drop-cancel.patch b/patches/server/0631-Fix-duplicating-give-items-on-item-drop-cancel.patch
index 1fdb5f16ee..1fdb5f16ee 100644
--- a/patches/server/0630-Fix-duplicating-give-items-on-item-drop-cancel.patch
+++ b/patches/server/0631-Fix-duplicating-give-items-on-item-drop-cancel.patch
diff --git a/patches/server/0631-add-consumeFuel-to-FurnaceBurnEvent.patch b/patches/server/0632-add-consumeFuel-to-FurnaceBurnEvent.patch
index ffb9062039..ffb9062039 100644
--- a/patches/server/0631-add-consumeFuel-to-FurnaceBurnEvent.patch
+++ b/patches/server/0632-add-consumeFuel-to-FurnaceBurnEvent.patch
diff --git a/patches/server/0632-add-get-set-drop-chance-to-EntityEquipment.patch b/patches/server/0633-add-get-set-drop-chance-to-EntityEquipment.patch
index 9720fcdaf4..9720fcdaf4 100644
--- a/patches/server/0632-add-get-set-drop-chance-to-EntityEquipment.patch
+++ b/patches/server/0633-add-get-set-drop-chance-to-EntityEquipment.patch
diff --git a/patches/server/0633-fix-PigZombieAngerEvent-cancellation.patch b/patches/server/0634-fix-PigZombieAngerEvent-cancellation.patch
index 9b69dc24f2..9b69dc24f2 100644
--- a/patches/server/0633-fix-PigZombieAngerEvent-cancellation.patch
+++ b/patches/server/0634-fix-PigZombieAngerEvent-cancellation.patch
diff --git a/patches/server/0634-Fix-checkReach-check-for-Shulker-boxes.patch b/patches/server/0635-Fix-checkReach-check-for-Shulker-boxes.patch
index e63651a68f..e63651a68f 100644
--- a/patches/server/0634-Fix-checkReach-check-for-Shulker-boxes.patch
+++ b/patches/server/0635-Fix-checkReach-check-for-Shulker-boxes.patch
diff --git a/patches/server/0635-fix-PlayerItemHeldEvent-firing-twice.patch b/patches/server/0636-fix-PlayerItemHeldEvent-firing-twice.patch
index 7a332176ff..7a332176ff 100644
--- a/patches/server/0635-fix-PlayerItemHeldEvent-firing-twice.patch
+++ b/patches/server/0636-fix-PlayerItemHeldEvent-firing-twice.patch
diff --git a/patches/server/0636-Added-PlayerDeepSleepEvent.patch b/patches/server/0637-Added-PlayerDeepSleepEvent.patch
index 00b71569b1..00b71569b1 100644
--- a/patches/server/0636-Added-PlayerDeepSleepEvent.patch
+++ b/patches/server/0637-Added-PlayerDeepSleepEvent.patch
diff --git a/patches/server/0637-More-World-API.patch b/patches/server/0638-More-World-API.patch
index 3fac16090a..3fac16090a 100644
--- a/patches/server/0637-More-World-API.patch
+++ b/patches/server/0638-More-World-API.patch
diff --git a/patches/server/0638-Added-PlayerBedFailEnterEvent.patch b/patches/server/0639-Added-PlayerBedFailEnterEvent.patch
index 95b8821728..95b8821728 100644
--- a/patches/server/0638-Added-PlayerBedFailEnterEvent.patch
+++ b/patches/server/0639-Added-PlayerBedFailEnterEvent.patch
diff --git a/patches/server/0639-Implement-methods-to-convert-between-Component-and-B.patch b/patches/server/0640-Implement-methods-to-convert-between-Component-and-B.patch
index ad3e98c8b5..ad3e98c8b5 100644
--- a/patches/server/0639-Implement-methods-to-convert-between-Component-and-B.patch
+++ b/patches/server/0640-Implement-methods-to-convert-between-Component-and-B.patch
diff --git a/patches/server/0640-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch b/patches/server/0641-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch
index 576aa63f5a..576aa63f5a 100644
--- a/patches/server/0640-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch
+++ b/patches/server/0641-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch
diff --git a/patches/server/0641-Introduce-beacon-activation-deactivation-events.patch b/patches/server/0642-Introduce-beacon-activation-deactivation-events.patch
index 4858e0f40b..4858e0f40b 100644
--- a/patches/server/0641-Introduce-beacon-activation-deactivation-events.patch
+++ b/patches/server/0642-Introduce-beacon-activation-deactivation-events.patch
diff --git a/patches/server/0642-add-RespawnFlags-to-PlayerRespawnEvent.patch b/patches/server/0643-add-RespawnFlags-to-PlayerRespawnEvent.patch
index 5fff43eeb8..5fff43eeb8 100644
--- a/patches/server/0642-add-RespawnFlags-to-PlayerRespawnEvent.patch
+++ b/patches/server/0643-add-RespawnFlags-to-PlayerRespawnEvent.patch
diff --git a/patches/server/0643-Add-Channel-initialization-listeners.patch b/patches/server/0644-Add-Channel-initialization-listeners.patch
index 1f7fe2772b..1f7fe2772b 100644
--- a/patches/server/0643-Add-Channel-initialization-listeners.patch
+++ b/patches/server/0644-Add-Channel-initialization-listeners.patch
diff --git a/patches/server/0644-Send-empty-commands-if-tab-completion-is-disabled.patch b/patches/server/0645-Send-empty-commands-if-tab-completion-is-disabled.patch
index 2b52bb5343..2b52bb5343 100644
--- a/patches/server/0644-Send-empty-commands-if-tab-completion-is-disabled.patch
+++ b/patches/server/0645-Send-empty-commands-if-tab-completion-is-disabled.patch
diff --git a/patches/server/0645-Add-more-WanderingTrader-API.patch b/patches/server/0646-Add-more-WanderingTrader-API.patch
index 65d351d6df..65d351d6df 100644
--- a/patches/server/0645-Add-more-WanderingTrader-API.patch
+++ b/patches/server/0646-Add-more-WanderingTrader-API.patch
diff --git a/patches/server/0646-Add-EntityBlockStorage-clearEntities.patch b/patches/server/0647-Add-EntityBlockStorage-clearEntities.patch
index 4742b14dac..4742b14dac 100644
--- a/patches/server/0646-Add-EntityBlockStorage-clearEntities.patch
+++ b/patches/server/0647-Add-EntityBlockStorage-clearEntities.patch
diff --git a/patches/server/0647-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch b/patches/server/0648-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
index b53cff9d00..b53cff9d00 100644
--- a/patches/server/0647-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
+++ b/patches/server/0648-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
diff --git a/patches/server/0648-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch b/patches/server/0649-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
index 0b88624654..0b88624654 100644
--- a/patches/server/0648-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/server/0649-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/server/0649-Inventory-close.patch b/patches/server/0650-Inventory-close.patch
index e7f478324a..e7f478324a 100644
--- a/patches/server/0649-Inventory-close.patch
+++ b/patches/server/0650-Inventory-close.patch
diff --git a/patches/server/0650-call-PortalCreateEvent-players-and-end-platform.patch b/patches/server/0651-call-PortalCreateEvent-players-and-end-platform.patch
index ea0c797028..ea0c797028 100644
--- a/patches/server/0650-call-PortalCreateEvent-players-and-end-platform.patch
+++ b/patches/server/0651-call-PortalCreateEvent-players-and-end-platform.patch
diff --git a/patches/server/0651-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/server/0652-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
index 9fc439f344..9fc439f344 100644
--- a/patches/server/0651-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
+++ b/patches/server/0652-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
diff --git a/patches/server/0652-Fix-CraftPotionBrewer-cache.patch b/patches/server/0653-Fix-CraftPotionBrewer-cache.patch
index 2d8295382f..2d8295382f 100644
--- a/patches/server/0652-Fix-CraftPotionBrewer-cache.patch
+++ b/patches/server/0653-Fix-CraftPotionBrewer-cache.patch
diff --git a/patches/server/0653-Add-basic-Datapack-API.patch b/patches/server/0654-Add-basic-Datapack-API.patch
index 9d3354fc69..9d3354fc69 100644
--- a/patches/server/0653-Add-basic-Datapack-API.patch
+++ b/patches/server/0654-Add-basic-Datapack-API.patch
diff --git a/patches/server/0654-Add-environment-variable-to-disable-server-gui.patch b/patches/server/0655-Add-environment-variable-to-disable-server-gui.patch
index a8785b7a29..a8785b7a29 100644
--- a/patches/server/0654-Add-environment-variable-to-disable-server-gui.patch
+++ b/patches/server/0655-Add-environment-variable-to-disable-server-gui.patch
diff --git a/patches/server/0655-additions-to-PlayerGameModeChangeEvent.patch b/patches/server/0656-additions-to-PlayerGameModeChangeEvent.patch
index 4f95b0914b..4f95b0914b 100644
--- a/patches/server/0655-additions-to-PlayerGameModeChangeEvent.patch
+++ b/patches/server/0656-additions-to-PlayerGameModeChangeEvent.patch
diff --git a/patches/server/0656-ItemStack-repair-check-API.patch b/patches/server/0657-ItemStack-repair-check-API.patch
index 2be96afd2b..4663820353 100644
--- a/patches/server/0656-ItemStack-repair-check-API.patch
+++ b/patches/server/0657-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 3f7aa98158cd79f80cee74a72c92a5f50efc5cdf..d338050613775d5f7593308e5419bba8b577a189 100644
+index 61a1992c3cd256c46f9a989bcb041f511f829378..cdd1c1a5486d3a8a08642aec9a752b2eaeeb8f96 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -527,6 +527,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -532,6 +532,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
return io.papermc.paper.inventory.ItemRarity.values()[getItem(itemStack.getType()).getRarity(CraftItemStack.asNMSCopy(itemStack)).ordinal()];
}
diff --git a/patches/server/0657-More-Enchantment-API.patch b/patches/server/0658-More-Enchantment-API.patch
index be8a7f96c7..be8a7f96c7 100644
--- a/patches/server/0657-More-Enchantment-API.patch
+++ b/patches/server/0658-More-Enchantment-API.patch
diff --git a/patches/server/0658-Fix-and-optimise-world-force-upgrading.patch b/patches/server/0659-Fix-and-optimise-world-force-upgrading.patch
index ffaa5bdd50..18f64f42aa 100644
--- a/patches/server/0658-Fix-and-optimise-world-force-upgrading.patch
+++ b/patches/server/0659-Fix-and-optimise-world-force-upgrading.patch
@@ -272,7 +272,7 @@ index 69dc1271be0a3f3f2fb4ce15981ed25d24dce785..1e0d261439255091a6f61485c0747231
Main.LOGGER.info("Forcing world upgrade! {}", session.getLevelId()); // CraftBukkit
WorldUpgrader worldupgrader = new WorldUpgrader(session, dataFixer, generatorOptions, eraseCache);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 824d90b541355d711a170ff8e163a894ba17ff00..e91c9caff8d789031f93fb5b3bd17599eb0b5c33 100644
+index 1cac02ba1eced8c1cda0de750dfe640acdca21c0..e2f647f3bdacd950ba098103d82a6f4f90794f36 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -557,11 +557,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/server/0659-Add-Mob-lookAt-API.patch b/patches/server/0660-Add-Mob-lookAt-API.patch
index 26b90782d2..26b90782d2 100644
--- a/patches/server/0659-Add-Mob-lookAt-API.patch
+++ b/patches/server/0660-Add-Mob-lookAt-API.patch
diff --git a/patches/server/0660-Add-Unix-domain-socket-support.patch b/patches/server/0661-Add-Unix-domain-socket-support.patch
index b70b3641af..b70b3641af 100644
--- a/patches/server/0660-Add-Unix-domain-socket-support.patch
+++ b/patches/server/0661-Add-Unix-domain-socket-support.patch
diff --git a/patches/server/0661-Add-EntityInsideBlockEvent.patch b/patches/server/0662-Add-EntityInsideBlockEvent.patch
index 2c221ccdeb..2c221ccdeb 100644
--- a/patches/server/0661-Add-EntityInsideBlockEvent.patch
+++ b/patches/server/0662-Add-EntityInsideBlockEvent.patch
diff --git a/patches/server/0662-Attributes-API-for-item-defaults.patch b/patches/server/0663-Attributes-API-for-item-defaults.patch
index 283a9135b4..dd2a25bfc9 100644
--- a/patches/server/0662-Attributes-API-for-item-defaults.patch
+++ b/patches/server/0663-Attributes-API-for-item-defaults.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Attributes API for item defaults
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index d338050613775d5f7593308e5419bba8b577a189..b5b8a97ca2fc7fdbc30ecb7991c2dc6320f094d1 100644
+index cdd1c1a5486d3a8a08642aec9a752b2eaeeb8f96..0a4a9a151c8f58cd44497bf43c3bed8f9a7d87c5 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -535,6 +535,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -540,6 +540,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
return CraftMagicNumbers.getItem(itemToBeRepaired.getType()).isValidRepairItem(CraftItemStack.asNMSCopy(itemToBeRepaired), CraftItemStack.asNMSCopy(repairMaterial));
}
diff --git a/patches/server/0663-Add-cause-to-Weather-ThunderChangeEvents.patch b/patches/server/0664-Add-cause-to-Weather-ThunderChangeEvents.patch
index 74ac72ae3b..74ac72ae3b 100644
--- a/patches/server/0663-Add-cause-to-Weather-ThunderChangeEvents.patch
+++ b/patches/server/0664-Add-cause-to-Weather-ThunderChangeEvents.patch
diff --git a/patches/server/0664-More-Lidded-Block-API.patch b/patches/server/0665-More-Lidded-Block-API.patch
index 5b7c8a3b64..5b7c8a3b64 100644
--- a/patches/server/0664-More-Lidded-Block-API.patch
+++ b/patches/server/0665-More-Lidded-Block-API.patch
diff --git a/patches/server/0665-Limit-item-frame-cursors-on-maps.patch b/patches/server/0666-Limit-item-frame-cursors-on-maps.patch
index dfc4282000..dfc4282000 100644
--- a/patches/server/0665-Limit-item-frame-cursors-on-maps.patch
+++ b/patches/server/0666-Limit-item-frame-cursors-on-maps.patch
diff --git a/patches/server/0666-Add-PlayerKickEvent-causes.patch b/patches/server/0667-Add-PlayerKickEvent-causes.patch
index ed375924a0..538e383f84 100644
--- a/patches/server/0666-Add-PlayerKickEvent-causes.patch
+++ b/patches/server/0667-Add-PlayerKickEvent-causes.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerKickEvent causes
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index e91c9caff8d789031f93fb5b3bd17599eb0b5c33..fd65fd87ae40cdc12ae351d3fd7e4305826b5d93 100644
+index e2f647f3bdacd950ba098103d82a6f4f90794f36..d33656cd5729f4debc7ffff2ab7194464c3e629e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -2122,7 +2122,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+@@ -2123,7 +2123,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
if (!whitelist.isWhiteListed(entityplayer.getGameProfile()) && !this.getPlayerList().isOp(entityplayer.getGameProfile())) { // Paper - Fix kicking ops when whitelist is reloaded (MC-171420)
diff --git a/patches/server/0667-Add-PufferFishStateChangeEvent.patch b/patches/server/0668-Add-PufferFishStateChangeEvent.patch
index e15126884a..e15126884a 100644
--- a/patches/server/0667-Add-PufferFishStateChangeEvent.patch
+++ b/patches/server/0668-Add-PufferFishStateChangeEvent.patch
diff --git a/patches/server/0668-Fix-PlayerBucketEmptyEvent-result-itemstack.patch b/patches/server/0669-Fix-PlayerBucketEmptyEvent-result-itemstack.patch
index 2d2d6ea63a..2d2d6ea63a 100644
--- a/patches/server/0668-Fix-PlayerBucketEmptyEvent-result-itemstack.patch
+++ b/patches/server/0669-Fix-PlayerBucketEmptyEvent-result-itemstack.patch
diff --git a/patches/server/0669-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch b/patches/server/0670-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch
index 670063cc65..670063cc65 100644
--- a/patches/server/0669-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch
+++ b/patches/server/0670-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch
diff --git a/patches/server/0670-Add-option-to-fix-items-merging-through-walls.patch b/patches/server/0671-Add-option-to-fix-items-merging-through-walls.patch
index 362a1b16f3..362a1b16f3 100644
--- a/patches/server/0670-Add-option-to-fix-items-merging-through-walls.patch
+++ b/patches/server/0671-Add-option-to-fix-items-merging-through-walls.patch
diff --git a/patches/server/0671-Add-BellRevealRaiderEvent.patch b/patches/server/0672-Add-BellRevealRaiderEvent.patch
index 587e0f0400..587e0f0400 100644
--- a/patches/server/0671-Add-BellRevealRaiderEvent.patch
+++ b/patches/server/0672-Add-BellRevealRaiderEvent.patch
diff --git a/patches/server/0672-Fix-invulnerable-end-crystals.patch b/patches/server/0673-Fix-invulnerable-end-crystals.patch
index 69911150b1..69911150b1 100644
--- a/patches/server/0672-Fix-invulnerable-end-crystals.patch
+++ b/patches/server/0673-Fix-invulnerable-end-crystals.patch
diff --git a/patches/server/0673-Add-ElderGuardianAppearanceEvent.patch b/patches/server/0674-Add-ElderGuardianAppearanceEvent.patch
index 540926f9ef..540926f9ef 100644
--- a/patches/server/0673-Add-ElderGuardianAppearanceEvent.patch
+++ b/patches/server/0674-Add-ElderGuardianAppearanceEvent.patch
diff --git a/patches/server/0674-Fix-dangerous-end-portal-logic.patch b/patches/server/0675-Fix-dangerous-end-portal-logic.patch
index 1be4e84ec5..1be4e84ec5 100644
--- a/patches/server/0674-Fix-dangerous-end-portal-logic.patch
+++ b/patches/server/0675-Fix-dangerous-end-portal-logic.patch
diff --git a/patches/server/0675-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch b/patches/server/0676-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch
index c3c7f53663..c3c7f53663 100644
--- a/patches/server/0675-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch
+++ b/patches/server/0676-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch
diff --git a/patches/server/0676-Make-item-validations-configurable.patch b/patches/server/0677-Make-item-validations-configurable.patch
index 1bff191b03..1bff191b03 100644
--- a/patches/server/0676-Make-item-validations-configurable.patch
+++ b/patches/server/0677-Make-item-validations-configurable.patch
diff --git a/patches/server/0677-Line-Of-Sight-Changes.patch b/patches/server/0678-Line-Of-Sight-Changes.patch
index 28e1141d0b..28e1141d0b 100644
--- a/patches/server/0677-Line-Of-Sight-Changes.patch
+++ b/patches/server/0678-Line-Of-Sight-Changes.patch
diff --git a/patches/server/0678-add-per-world-spawn-limits.patch b/patches/server/0679-add-per-world-spawn-limits.patch
index 68527d5cff..68527d5cff 100644
--- a/patches/server/0678-add-per-world-spawn-limits.patch
+++ b/patches/server/0679-add-per-world-spawn-limits.patch
diff --git a/patches/server/0679-Fix-PotionSplashEvent-for-water-splash-potions.patch b/patches/server/0680-Fix-PotionSplashEvent-for-water-splash-potions.patch
index 56f02dad6e..56f02dad6e 100644
--- a/patches/server/0679-Fix-PotionSplashEvent-for-water-splash-potions.patch
+++ b/patches/server/0680-Fix-PotionSplashEvent-for-water-splash-potions.patch
diff --git a/patches/server/0680-Add-more-LimitedRegion-API.patch b/patches/server/0681-Add-more-LimitedRegion-API.patch
index e9e7611f99..e9e7611f99 100644
--- a/patches/server/0680-Add-more-LimitedRegion-API.patch
+++ b/patches/server/0681-Add-more-LimitedRegion-API.patch
diff --git a/patches/server/0681-Fix-PlayerDropItemEvent-using-wrong-item.patch b/patches/server/0682-Fix-PlayerDropItemEvent-using-wrong-item.patch
index 6ae023df0a..6ae023df0a 100644
--- a/patches/server/0681-Fix-PlayerDropItemEvent-using-wrong-item.patch
+++ b/patches/server/0682-Fix-PlayerDropItemEvent-using-wrong-item.patch
diff --git a/patches/server/0682-Missing-Entity-Behavior-API.patch b/patches/server/0683-Missing-Entity-Behavior-API.patch
index ac5c9fdaa1..ac5c9fdaa1 100644
--- a/patches/server/0682-Missing-Entity-Behavior-API.patch
+++ b/patches/server/0683-Missing-Entity-Behavior-API.patch
diff --git a/patches/server/0683-Ensure-disconnect-for-book-edit-is-called-on-main.patch b/patches/server/0684-Ensure-disconnect-for-book-edit-is-called-on-main.patch
index 61eab94f77..61eab94f77 100644
--- a/patches/server/0683-Ensure-disconnect-for-book-edit-is-called-on-main.patch
+++ b/patches/server/0684-Ensure-disconnect-for-book-edit-is-called-on-main.patch
diff --git a/patches/server/0684-Fix-return-value-of-Block-applyBoneMeal-always-being.patch b/patches/server/0685-Fix-return-value-of-Block-applyBoneMeal-always-being.patch
index 179e878420..179e878420 100644
--- a/patches/server/0684-Fix-return-value-of-Block-applyBoneMeal-always-being.patch
+++ b/patches/server/0685-Fix-return-value-of-Block-applyBoneMeal-always-being.patch
diff --git a/patches/server/0685-Use-getChunkIfLoadedImmediately-in-places.patch b/patches/server/0686-Use-getChunkIfLoadedImmediately-in-places.patch
index 99213d6d81..99213d6d81 100644
--- a/patches/server/0685-Use-getChunkIfLoadedImmediately-in-places.patch
+++ b/patches/server/0686-Use-getChunkIfLoadedImmediately-in-places.patch
diff --git a/patches/server/0686-Fix-commands-from-signs-not-firing-command-events.patch b/patches/server/0687-Fix-commands-from-signs-not-firing-command-events.patch
index ae4da58c6b..ae4da58c6b 100644
--- a/patches/server/0686-Fix-commands-from-signs-not-firing-command-events.patch
+++ b/patches/server/0687-Fix-commands-from-signs-not-firing-command-events.patch
diff --git a/patches/server/0687-Adds-PlayerArmSwingEvent.patch b/patches/server/0688-Adds-PlayerArmSwingEvent.patch
index 0ac17873c1..0ac17873c1 100644
--- a/patches/server/0687-Adds-PlayerArmSwingEvent.patch
+++ b/patches/server/0688-Adds-PlayerArmSwingEvent.patch
diff --git a/patches/server/0688-Fixes-kick-event-leave-message-not-being-sent.patch b/patches/server/0689-Fixes-kick-event-leave-message-not-being-sent.patch
index 316e9e0de5..316e9e0de5 100644
--- a/patches/server/0688-Fixes-kick-event-leave-message-not-being-sent.patch
+++ b/patches/server/0689-Fixes-kick-event-leave-message-not-being-sent.patch
diff --git a/patches/server/0689-Add-config-for-mobs-immune-to-default-effects.patch b/patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch
index 1119d3551b..1119d3551b 100644
--- a/patches/server/0689-Add-config-for-mobs-immune-to-default-effects.patch
+++ b/patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch
diff --git a/patches/server/0690-Fix-incorrect-message-for-outdated-client.patch b/patches/server/0691-Fix-incorrect-message-for-outdated-client.patch
index 87ff34d0b8..87ff34d0b8 100644
--- a/patches/server/0690-Fix-incorrect-message-for-outdated-client.patch
+++ b/patches/server/0691-Fix-incorrect-message-for-outdated-client.patch
diff --git a/patches/server/0691-Don-t-apply-cramming-damage-to-players.patch b/patches/server/0692-Don-t-apply-cramming-damage-to-players.patch
index 2e2e9543af..2e2e9543af 100644
--- a/patches/server/0691-Don-t-apply-cramming-damage-to-players.patch
+++ b/patches/server/0692-Don-t-apply-cramming-damage-to-players.patch
diff --git a/patches/server/0692-Rate-options-and-timings-for-sensors-and-behaviors.patch b/patches/server/0693-Rate-options-and-timings-for-sensors-and-behaviors.patch
index 95d554e0ea..95d554e0ea 100644
--- a/patches/server/0692-Rate-options-and-timings-for-sensors-and-behaviors.patch
+++ b/patches/server/0693-Rate-options-and-timings-for-sensors-and-behaviors.patch
diff --git a/patches/server/0693-Add-a-bunch-of-missing-forceDrop-toggles.patch b/patches/server/0694-Add-a-bunch-of-missing-forceDrop-toggles.patch
index 8e69a76f25..8e69a76f25 100644
--- a/patches/server/0693-Add-a-bunch-of-missing-forceDrop-toggles.patch
+++ b/patches/server/0694-Add-a-bunch-of-missing-forceDrop-toggles.patch
diff --git a/patches/server/0694-Stinger-API.patch b/patches/server/0695-Stinger-API.patch
index 33f8959315..33f8959315 100644
--- a/patches/server/0694-Stinger-API.patch
+++ b/patches/server/0695-Stinger-API.patch
diff --git a/patches/server/0695-Fix-incosistency-issue-with-empty-map-items-in-CB.patch b/patches/server/0696-Fix-incosistency-issue-with-empty-map-items-in-CB.patch
index 8d4fe001d2..8d4fe001d2 100644
--- a/patches/server/0695-Fix-incosistency-issue-with-empty-map-items-in-CB.patch
+++ b/patches/server/0696-Fix-incosistency-issue-with-empty-map-items-in-CB.patch
diff --git a/patches/server/0696-Add-System.out-err-catcher.patch b/patches/server/0697-Add-System.out-err-catcher.patch
index 704b758183..704b758183 100644
--- a/patches/server/0696-Add-System.out-err-catcher.patch
+++ b/patches/server/0697-Add-System.out-err-catcher.patch
diff --git a/patches/server/0697-Fix-test-not-bootstrapping.patch b/patches/server/0698-Fix-test-not-bootstrapping.patch
index 5d0466c3b3..5d0466c3b3 100644
--- a/patches/server/0697-Fix-test-not-bootstrapping.patch
+++ b/patches/server/0698-Fix-test-not-bootstrapping.patch
diff --git a/patches/server/0698-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch b/patches/server/0699-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
index 10cd90749d..10cd90749d 100644
--- a/patches/server/0698-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
+++ b/patches/server/0699-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
diff --git a/patches/server/0699-Improve-boat-collision-performance.patch b/patches/server/0700-Improve-boat-collision-performance.patch
index 24fc315296..24fc315296 100644
--- a/patches/server/0699-Improve-boat-collision-performance.patch
+++ b/patches/server/0700-Improve-boat-collision-performance.patch
diff --git a/patches/server/0700-Prevent-AFK-kick-while-watching-end-credits.patch b/patches/server/0701-Prevent-AFK-kick-while-watching-end-credits.patch
index 44c6dff957..44c6dff957 100644
--- a/patches/server/0700-Prevent-AFK-kick-while-watching-end-credits.patch
+++ b/patches/server/0701-Prevent-AFK-kick-while-watching-end-credits.patch
diff --git a/patches/server/0701-Allow-skipping-writing-of-comments-to-server.propert.patch b/patches/server/0702-Allow-skipping-writing-of-comments-to-server.propert.patch
index 6395f3f4a8..6395f3f4a8 100644
--- a/patches/server/0701-Allow-skipping-writing-of-comments-to-server.propert.patch
+++ b/patches/server/0702-Allow-skipping-writing-of-comments-to-server.propert.patch
diff --git a/patches/server/0702-Add-PlayerSetSpawnEvent.patch b/patches/server/0703-Add-PlayerSetSpawnEvent.patch
index 2b8050b030..2b8050b030 100644
--- a/patches/server/0702-Add-PlayerSetSpawnEvent.patch
+++ b/patches/server/0703-Add-PlayerSetSpawnEvent.patch
diff --git a/patches/server/0703-Make-hoppers-respect-inventory-max-stack-size.patch b/patches/server/0704-Make-hoppers-respect-inventory-max-stack-size.patch
index ea86736121..ea86736121 100644
--- a/patches/server/0703-Make-hoppers-respect-inventory-max-stack-size.patch
+++ b/patches/server/0704-Make-hoppers-respect-inventory-max-stack-size.patch
diff --git a/patches/server/0704-Optimize-entity-tracker-passenger-checks.patch b/patches/server/0705-Optimize-entity-tracker-passenger-checks.patch
index cf8b4494f3..cf8b4494f3 100644
--- a/patches/server/0704-Optimize-entity-tracker-passenger-checks.patch
+++ b/patches/server/0705-Optimize-entity-tracker-passenger-checks.patch
diff --git a/patches/server/0705-Config-option-for-Piglins-guarding-chests.patch b/patches/server/0706-Config-option-for-Piglins-guarding-chests.patch
index 4134b7a5f1..4134b7a5f1 100644
--- a/patches/server/0705-Config-option-for-Piglins-guarding-chests.patch
+++ b/patches/server/0706-Config-option-for-Piglins-guarding-chests.patch
diff --git a/patches/server/0706-Added-EntityDamageItemEvent.patch b/patches/server/0707-Added-EntityDamageItemEvent.patch
index 0f5056e7ce..0f5056e7ce 100644
--- a/patches/server/0706-Added-EntityDamageItemEvent.patch
+++ b/patches/server/0707-Added-EntityDamageItemEvent.patch
diff --git a/patches/server/0707-Optimize-indirect-passenger-iteration.patch b/patches/server/0708-Optimize-indirect-passenger-iteration.patch
index 3f6f8f2a1f..3f6f8f2a1f 100644
--- a/patches/server/0707-Optimize-indirect-passenger-iteration.patch
+++ b/patches/server/0708-Optimize-indirect-passenger-iteration.patch
diff --git a/patches/server/0708-Fix-block-drops-position-losing-precision-millions-o.patch b/patches/server/0709-Fix-block-drops-position-losing-precision-millions-o.patch
index a32af5a891..a32af5a891 100644
--- a/patches/server/0708-Fix-block-drops-position-losing-precision-millions-o.patch
+++ b/patches/server/0709-Fix-block-drops-position-losing-precision-millions-o.patch
diff --git a/patches/server/0709-Configurable-item-frame-map-cursor-update-interval.patch b/patches/server/0710-Configurable-item-frame-map-cursor-update-interval.patch
index 8378741c11..8378741c11 100644
--- a/patches/server/0709-Configurable-item-frame-map-cursor-update-interval.patch
+++ b/patches/server/0710-Configurable-item-frame-map-cursor-update-interval.patch
diff --git a/patches/server/0710-Make-EntityUnleashEvent-cancellable.patch b/patches/server/0711-Make-EntityUnleashEvent-cancellable.patch
index 2d8246afff..2d8246afff 100644
--- a/patches/server/0710-Make-EntityUnleashEvent-cancellable.patch
+++ b/patches/server/0711-Make-EntityUnleashEvent-cancellable.patch
diff --git a/patches/server/0711-Clear-bucket-NBT-after-dispense.patch b/patches/server/0712-Clear-bucket-NBT-after-dispense.patch
index 50f3155d75..50f3155d75 100644
--- a/patches/server/0711-Clear-bucket-NBT-after-dispense.patch
+++ b/patches/server/0712-Clear-bucket-NBT-after-dispense.patch
diff --git a/patches/server/0712-Respect-despawn-rate-in-item-merge-check.patch b/patches/server/0713-Respect-despawn-rate-in-item-merge-check.patch
index 8967390e3e..8967390e3e 100644
--- a/patches/server/0712-Respect-despawn-rate-in-item-merge-check.patch
+++ b/patches/server/0713-Respect-despawn-rate-in-item-merge-check.patch
diff --git a/patches/server/0713-Change-EnderEye-target-without-changing-other-things.patch b/patches/server/0714-Change-EnderEye-target-without-changing-other-things.patch
index e4af6267df..e4af6267df 100644
--- a/patches/server/0713-Change-EnderEye-target-without-changing-other-things.patch
+++ b/patches/server/0714-Change-EnderEye-target-without-changing-other-things.patch
diff --git a/patches/server/0714-Add-BlockBreakBlockEvent.patch b/patches/server/0715-Add-BlockBreakBlockEvent.patch
index b7f264d94f..b7f264d94f 100644
--- a/patches/server/0714-Add-BlockBreakBlockEvent.patch
+++ b/patches/server/0715-Add-BlockBreakBlockEvent.patch
diff --git a/patches/server/0715-Option-to-prevent-NBT-copy-in-smithing-recipes.patch b/patches/server/0716-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
index 14e666a79e..14e666a79e 100644
--- a/patches/server/0715-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
+++ b/patches/server/0716-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
diff --git a/patches/server/0716-More-CommandBlock-API.patch b/patches/server/0717-More-CommandBlock-API.patch
index daf682f8a0..daf682f8a0 100644
--- a/patches/server/0716-More-CommandBlock-API.patch
+++ b/patches/server/0717-More-CommandBlock-API.patch
diff --git a/patches/server/0717-Add-missing-team-sidebar-display-slots.patch b/patches/server/0718-Add-missing-team-sidebar-display-slots.patch
index 5581728a48..5581728a48 100644
--- a/patches/server/0717-Add-missing-team-sidebar-display-slots.patch
+++ b/patches/server/0718-Add-missing-team-sidebar-display-slots.patch
diff --git a/patches/server/0718-Add-back-EntityPortalExitEvent.patch b/patches/server/0719-Add-back-EntityPortalExitEvent.patch
index a44e713ebd..a44e713ebd 100644
--- a/patches/server/0718-Add-back-EntityPortalExitEvent.patch
+++ b/patches/server/0719-Add-back-EntityPortalExitEvent.patch
diff --git a/patches/server/0719-Add-methods-to-find-targets-for-lightning-strikes.patch b/patches/server/0720-Add-methods-to-find-targets-for-lightning-strikes.patch
index 742d7716ff..742d7716ff 100644
--- a/patches/server/0719-Add-methods-to-find-targets-for-lightning-strikes.patch
+++ b/patches/server/0720-Add-methods-to-find-targets-for-lightning-strikes.patch
diff --git a/patches/server/0720-Get-entity-default-attributes.patch b/patches/server/0721-Get-entity-default-attributes.patch
index 80fa4b36c2..6ae983a717 100644
--- a/patches/server/0720-Get-entity-default-attributes.patch
+++ b/patches/server/0721-Get-entity-default-attributes.patch
@@ -90,10 +90,10 @@ index 0000000000000000000000000000000000000000..4ecba0b02c2813a890aecc5586987879
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index b5b8a97ca2fc7fdbc30ecb7991c2dc6320f094d1..879d8fa743deac17a7788c3f979ad7a791af8d83 100644
+index 0a4a9a151c8f58cd44497bf43c3bed8f9a7d87c5..40574ff722e3cb3dcce0e7fa0b0d2a692d33e3f9 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -552,6 +552,18 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -557,6 +557,18 @@ public final class CraftMagicNumbers implements UnsafeValues {
public int getProtocolVersion() {
return net.minecraft.SharedConstants.getCurrentVersion().getProtocolVersion();
}
diff --git a/patches/server/0721-Left-handed-API.patch b/patches/server/0722-Left-handed-API.patch
index dd1acc7723..dd1acc7723 100644
--- a/patches/server/0721-Left-handed-API.patch
+++ b/patches/server/0722-Left-handed-API.patch
diff --git a/patches/server/0722-Add-advancement-display-API.patch b/patches/server/0723-Add-advancement-display-API.patch
index c2bd6b94c0..c2bd6b94c0 100644
--- a/patches/server/0722-Add-advancement-display-API.patch
+++ b/patches/server/0723-Add-advancement-display-API.patch
diff --git a/patches/server/0723-Add-ItemFactory-getMonsterEgg-API.patch b/patches/server/0724-Add-ItemFactory-getMonsterEgg-API.patch
index f22d19fef2..f22d19fef2 100644
--- a/patches/server/0723-Add-ItemFactory-getMonsterEgg-API.patch
+++ b/patches/server/0724-Add-ItemFactory-getMonsterEgg-API.patch
diff --git a/patches/server/0724-Add-critical-damage-API.patch b/patches/server/0725-Add-critical-damage-API.patch
index ca4be99b06..ca4be99b06 100644
--- a/patches/server/0724-Add-critical-damage-API.patch
+++ b/patches/server/0725-Add-critical-damage-API.patch
diff --git a/patches/server/0725-Fix-issues-with-mob-conversion.patch b/patches/server/0726-Fix-issues-with-mob-conversion.patch
index 69feb4b3a4..69feb4b3a4 100644
--- a/patches/server/0725-Fix-issues-with-mob-conversion.patch
+++ b/patches/server/0726-Fix-issues-with-mob-conversion.patch
diff --git a/patches/server/0726-Add-isCollidable-methods-to-various-places.patch b/patches/server/0727-Add-isCollidable-methods-to-various-places.patch
index 9e73b6511b..6e08b33501 100644
--- a/patches/server/0726-Add-isCollidable-methods-to-various-places.patch
+++ b/patches/server/0727-Add-isCollidable-methods-to-various-places.patch
@@ -37,10 +37,10 @@ index 7b9e943b391c061782fccd2b8d705ceec8db50fe..966ac60daebb7bb211ab8096fc0c5f33
+ // 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 879d8fa743deac17a7788c3f979ad7a791af8d83..a451cbbff84b8f156ba4de807f4927f7645c3363 100644
+index 40574ff722e3cb3dcce0e7fa0b0d2a692d33e3f9..17e67d32522ddeb9a8db06089fb7b7f3ed894d4d 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -564,6 +564,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -569,6 +569,12 @@ 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.Registry.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(bukkitEntityKey)));
return new io.papermc.paper.attribute.UnmodifiableAttributeMap(supplier);
}
diff --git a/patches/server/0727-Goat-ram-API.patch b/patches/server/0728-Goat-ram-API.patch
index f1fcff3a29..f1fcff3a29 100644
--- a/patches/server/0727-Goat-ram-API.patch
+++ b/patches/server/0728-Goat-ram-API.patch
diff --git a/patches/server/0728-Add-API-for-resetting-a-single-score.patch b/patches/server/0729-Add-API-for-resetting-a-single-score.patch
index c2e1fd93b9..c2e1fd93b9 100644
--- a/patches/server/0728-Add-API-for-resetting-a-single-score.patch
+++ b/patches/server/0729-Add-API-for-resetting-a-single-score.patch
diff --git a/patches/server/0729-Add-Raw-Byte-Entity-Serialization.patch b/patches/server/0730-Add-Raw-Byte-Entity-Serialization.patch
index 39fb7967f8..39fb7967f8 100644
--- a/patches/server/0729-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/server/0730-Add-Raw-Byte-Entity-Serialization.patch
diff --git a/patches/server/0730-Vanilla-command-permission-fixes.patch b/patches/server/0731-Vanilla-command-permission-fixes.patch
index d9b53520f4..d9b53520f4 100644
--- a/patches/server/0730-Vanilla-command-permission-fixes.patch
+++ b/patches/server/0731-Vanilla-command-permission-fixes.patch
diff --git a/patches/server/0731-Make-CallbackExecutor-strict-again.patch b/patches/server/0732-Make-CallbackExecutor-strict-again.patch
index b1f2cffeba..b1f2cffeba 100644
--- a/patches/server/0731-Make-CallbackExecutor-strict-again.patch
+++ b/patches/server/0732-Make-CallbackExecutor-strict-again.patch
diff --git a/patches/server/0732-Do-not-allow-the-server-to-unload-chunks-at-request-.patch b/patches/server/0733-Do-not-allow-the-server-to-unload-chunks-at-request-.patch
index d2c7c618d7..d2c7c618d7 100644
--- a/patches/server/0732-Do-not-allow-the-server-to-unload-chunks-at-request-.patch
+++ b/patches/server/0733-Do-not-allow-the-server-to-unload-chunks-at-request-.patch
diff --git a/patches/server/0733-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch b/patches/server/0734-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch
index b4e5807041..b4e5807041 100644
--- a/patches/server/0733-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch
+++ b/patches/server/0734-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch
diff --git a/patches/server/0734-Correctly-handle-recursion-for-chunkholder-updates.patch b/patches/server/0735-Correctly-handle-recursion-for-chunkholder-updates.patch
index 48e805996a..48e805996a 100644
--- a/patches/server/0734-Correctly-handle-recursion-for-chunkholder-updates.patch
+++ b/patches/server/0735-Correctly-handle-recursion-for-chunkholder-updates.patch
diff --git a/patches/server/0735-Separate-lookup-locking-from-state-access-in-UserCac.patch b/patches/server/0736-Separate-lookup-locking-from-state-access-in-UserCac.patch
index 86c0e502fd..86c0e502fd 100644
--- a/patches/server/0735-Separate-lookup-locking-from-state-access-in-UserCac.patch
+++ b/patches/server/0736-Separate-lookup-locking-from-state-access-in-UserCac.patch
diff --git a/patches/server/0736-Fix-chunks-refusing-to-unload-at-low-TPS.patch b/patches/server/0737-Fix-chunks-refusing-to-unload-at-low-TPS.patch
index 0ea9e0770d..0ea9e0770d 100644
--- a/patches/server/0736-Fix-chunks-refusing-to-unload-at-low-TPS.patch
+++ b/patches/server/0737-Fix-chunks-refusing-to-unload-at-low-TPS.patch
diff --git a/patches/server/0737-Do-not-allow-ticket-level-changes-while-unloading-pl.patch b/patches/server/0738-Do-not-allow-ticket-level-changes-while-unloading-pl.patch
index a057742e50..a057742e50 100644
--- a/patches/server/0737-Do-not-allow-ticket-level-changes-while-unloading-pl.patch
+++ b/patches/server/0738-Do-not-allow-ticket-level-changes-while-unloading-pl.patch
diff --git a/patches/server/0738-Do-not-allow-ticket-level-changes-when-updating-chun.patch b/patches/server/0739-Do-not-allow-ticket-level-changes-when-updating-chun.patch
index d0f51016fc..d0f51016fc 100644
--- a/patches/server/0738-Do-not-allow-ticket-level-changes-when-updating-chun.patch
+++ b/patches/server/0739-Do-not-allow-ticket-level-changes-when-updating-chun.patch
diff --git a/patches/server/0739-Do-not-submit-profile-lookups-to-worldgen-threads.patch b/patches/server/0740-Do-not-submit-profile-lookups-to-worldgen-threads.patch
index 7654abc8b4..7654abc8b4 100644
--- a/patches/server/0739-Do-not-submit-profile-lookups-to-worldgen-threads.patch
+++ b/patches/server/0740-Do-not-submit-profile-lookups-to-worldgen-threads.patch
diff --git a/patches/server/0740-Log-when-the-async-catcher-is-tripped.patch b/patches/server/0741-Log-when-the-async-catcher-is-tripped.patch
index bede76faf6..bede76faf6 100644
--- a/patches/server/0740-Log-when-the-async-catcher-is-tripped.patch
+++ b/patches/server/0741-Log-when-the-async-catcher-is-tripped.patch
diff --git a/patches/server/0741-Add-paper-mobcaps-and-paper-playermobcaps.patch b/patches/server/0742-Add-paper-mobcaps-and-paper-playermobcaps.patch
index 906528460b..906528460b 100644
--- a/patches/server/0741-Add-paper-mobcaps-and-paper-playermobcaps.patch
+++ b/patches/server/0742-Add-paper-mobcaps-and-paper-playermobcaps.patch
diff --git a/patches/server/0742-Prevent-unload-calls-removing-tickets-for-sync-loads.patch b/patches/server/0743-Prevent-unload-calls-removing-tickets-for-sync-loads.patch
index e2c4416234..e2c4416234 100644
--- a/patches/server/0742-Prevent-unload-calls-removing-tickets-for-sync-loads.patch
+++ b/patches/server/0743-Prevent-unload-calls-removing-tickets-for-sync-loads.patch
diff --git a/patches/server/0743-Sanitize-ResourceLocation-error-logging.patch b/patches/server/0744-Sanitize-ResourceLocation-error-logging.patch
index ff7e0b7826..ff7e0b7826 100644
--- a/patches/server/0743-Sanitize-ResourceLocation-error-logging.patch
+++ b/patches/server/0744-Sanitize-ResourceLocation-error-logging.patch
diff --git a/patches/server/0744-Optimise-general-POI-access.patch b/patches/server/0745-Optimise-general-POI-access.patch
index 7fa35796de..7fa35796de 100644
--- a/patches/server/0744-Optimise-general-POI-access.patch
+++ b/patches/server/0745-Optimise-general-POI-access.patch
diff --git a/patches/server/0745-Allow-controlled-flushing-for-network-manager.patch b/patches/server/0746-Allow-controlled-flushing-for-network-manager.patch
index 9b061bed55..9b061bed55 100644
--- a/patches/server/0745-Allow-controlled-flushing-for-network-manager.patch
+++ b/patches/server/0746-Allow-controlled-flushing-for-network-manager.patch
diff --git a/patches/server/0746-Add-more-async-catchers.patch b/patches/server/0747-Add-more-async-catchers.patch
index f0813b3370..f0813b3370 100644
--- a/patches/server/0746-Add-more-async-catchers.patch
+++ b/patches/server/0747-Add-more-async-catchers.patch
diff --git a/patches/server/0747-Rewrite-entity-bounding-box-lookup-calls.patch b/patches/server/0748-Rewrite-entity-bounding-box-lookup-calls.patch
index 0a840e45df..0a840e45df 100644
--- a/patches/server/0747-Rewrite-entity-bounding-box-lookup-calls.patch
+++ b/patches/server/0748-Rewrite-entity-bounding-box-lookup-calls.patch
diff --git a/patches/server/0748-Optimise-chunk-tick-iteration.patch b/patches/server/0749-Optimise-chunk-tick-iteration.patch
index 7485f16502..7485f16502 100644
--- a/patches/server/0748-Optimise-chunk-tick-iteration.patch
+++ b/patches/server/0749-Optimise-chunk-tick-iteration.patch
diff --git a/patches/server/0749-Execute-chunk-tasks-mid-tick.patch b/patches/server/0750-Execute-chunk-tasks-mid-tick.patch
index 577f243d3b..c71b6c7cd1 100644
--- a/patches/server/0749-Execute-chunk-tasks-mid-tick.patch
+++ b/patches/server/0750-Execute-chunk-tasks-mid-tick.patch
@@ -19,7 +19,7 @@ index b27021a42cbed3f0648a8d0903d00d03922ae221..eada966d7f108a6081be7a848f5c1dfc
private MinecraftTimings() {}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index fd65fd87ae40cdc12ae351d3fd7e4305826b5d93..e7c0f933a141aa2c846bb2fc07f161f9ef6c091d 100644
+index d33656cd5729f4debc7ffff2ab7194464c3e629e..f37dfe1bd53567239bf69852e75f09440dc1628c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1348,6 +1348,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -30,7 +30,7 @@ index fd65fd87ae40cdc12ae351d3fd7e4305826b5d93..e7c0f933a141aa2c846bb2fc07f161f9
return true;
} else {
if (this.haveTime()) {
-@@ -2670,4 +2671,74 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+@@ -2671,4 +2672,74 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
// Paper end
diff --git a/patches/server/0750-Do-not-copy-visible-chunks.patch b/patches/server/0751-Do-not-copy-visible-chunks.patch
index fdcf7f41ba..fdcf7f41ba 100644
--- a/patches/server/0750-Do-not-copy-visible-chunks.patch
+++ b/patches/server/0751-Do-not-copy-visible-chunks.patch
diff --git a/patches/server/0751-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch b/patches/server/0752-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch
index 5459269b64..5459269b64 100644
--- a/patches/server/0751-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch
+++ b/patches/server/0752-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch
diff --git a/patches/server/0752-Custom-table-implementation-for-blockstate-state-loo.patch b/patches/server/0753-Custom-table-implementation-for-blockstate-state-loo.patch
index 9b556d7fe8..9b556d7fe8 100644
--- a/patches/server/0752-Custom-table-implementation-for-blockstate-state-loo.patch
+++ b/patches/server/0753-Custom-table-implementation-for-blockstate-state-loo.patch
diff --git a/patches/server/0753-Detail-more-information-in-watchdog-dumps.patch b/patches/server/0754-Detail-more-information-in-watchdog-dumps.patch
index 7d2d44d42b..7d2d44d42b 100644
--- a/patches/server/0753-Detail-more-information-in-watchdog-dumps.patch
+++ b/patches/server/0754-Detail-more-information-in-watchdog-dumps.patch
diff --git a/patches/server/0754-Manually-inline-methods-in-BlockPosition.patch b/patches/server/0755-Manually-inline-methods-in-BlockPosition.patch
index 6668339cba..6668339cba 100644
--- a/patches/server/0754-Manually-inline-methods-in-BlockPosition.patch
+++ b/patches/server/0755-Manually-inline-methods-in-BlockPosition.patch
diff --git a/patches/server/0755-Distance-manager-tick-timings.patch b/patches/server/0756-Distance-manager-tick-timings.patch
index 69c8bf095e..69c8bf095e 100644
--- a/patches/server/0755-Distance-manager-tick-timings.patch
+++ b/patches/server/0756-Distance-manager-tick-timings.patch
diff --git a/patches/server/0756-Name-craft-scheduler-threads-according-to-the-plugin.patch b/patches/server/0757-Name-craft-scheduler-threads-according-to-the-plugin.patch
index 7d081ee195..7d081ee195 100644
--- a/patches/server/0756-Name-craft-scheduler-threads-according-to-the-plugin.patch
+++ b/patches/server/0757-Name-craft-scheduler-threads-according-to-the-plugin.patch
diff --git a/patches/server/0757-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch b/patches/server/0758-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch
index c3f6182749..c3f6182749 100644
--- a/patches/server/0757-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch
+++ b/patches/server/0758-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch
diff --git a/patches/server/0758-Add-packet-limiter-config.patch b/patches/server/0759-Add-packet-limiter-config.patch
index 4647b9c71b..4647b9c71b 100644
--- a/patches/server/0758-Add-packet-limiter-config.patch
+++ b/patches/server/0759-Add-packet-limiter-config.patch
diff --git a/patches/server/0759-Lag-compensate-block-breaking.patch b/patches/server/0760-Lag-compensate-block-breaking.patch
index ca2395eead..ca2395eead 100644
--- a/patches/server/0759-Lag-compensate-block-breaking.patch
+++ b/patches/server/0760-Lag-compensate-block-breaking.patch
diff --git a/patches/server/0760-Use-correct-LevelStem-registry-when-loading-default-.patch b/patches/server/0761-Use-correct-LevelStem-registry-when-loading-default-.patch
index 6003909071..cea585163e 100644
--- a/patches/server/0760-Use-correct-LevelStem-registry-when-loading-default-.patch
+++ b/patches/server/0761-Use-correct-LevelStem-registry-when-loading-default-.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Use correct LevelStem registry when loading default
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index e7c0f933a141aa2c846bb2fc07f161f9ef6c091d..d86e74c9363d10428d611cb232243a872abd9d5f 100644
+index f37dfe1bd53567239bf69852e75f09440dc1628c..a9fce6bd112c06453b7f460f3d746e290dca5f4a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -565,7 +565,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/server/0761-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch b/patches/server/0762-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch
index c5bd6526f7..c5bd6526f7 100644
--- a/patches/server/0761-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch
+++ b/patches/server/0762-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch
diff --git a/patches/server/0762-Consolidate-flush-calls-for-entity-tracker-packets.patch b/patches/server/0763-Consolidate-flush-calls-for-entity-tracker-packets.patch
index 4669941fb1..4669941fb1 100644
--- a/patches/server/0762-Consolidate-flush-calls-for-entity-tracker-packets.patch
+++ b/patches/server/0763-Consolidate-flush-calls-for-entity-tracker-packets.patch
diff --git a/patches/server/0763-Don-t-lookup-fluid-state-when-raytracing.patch b/patches/server/0764-Don-t-lookup-fluid-state-when-raytracing.patch
index eef7de0e32..eef7de0e32 100644
--- a/patches/server/0763-Don-t-lookup-fluid-state-when-raytracing.patch
+++ b/patches/server/0764-Don-t-lookup-fluid-state-when-raytracing.patch
diff --git a/patches/server/0764-Time-scoreboard-search.patch b/patches/server/0765-Time-scoreboard-search.patch
index 48469b83af..48469b83af 100644
--- a/patches/server/0764-Time-scoreboard-search.patch
+++ b/patches/server/0765-Time-scoreboard-search.patch
diff --git a/patches/server/0765-Send-full-pos-packets-for-hard-colliding-entities.patch b/patches/server/0766-Send-full-pos-packets-for-hard-colliding-entities.patch
index 87d034b685..87d034b685 100644
--- a/patches/server/0765-Send-full-pos-packets-for-hard-colliding-entities.patch
+++ b/patches/server/0766-Send-full-pos-packets-for-hard-colliding-entities.patch
diff --git a/patches/server/0766-Do-not-run-raytrace-logic-for-AIR.patch b/patches/server/0767-Do-not-run-raytrace-logic-for-AIR.patch
index baedf55a9d..baedf55a9d 100644
--- a/patches/server/0766-Do-not-run-raytrace-logic-for-AIR.patch
+++ b/patches/server/0767-Do-not-run-raytrace-logic-for-AIR.patch
diff --git a/patches/server/0767-Oprimise-map-impl-for-tracked-players.patch b/patches/server/0768-Oprimise-map-impl-for-tracked-players.patch
index 7ee2e496b9..7ee2e496b9 100644
--- a/patches/server/0767-Oprimise-map-impl-for-tracked-players.patch
+++ b/patches/server/0768-Oprimise-map-impl-for-tracked-players.patch
diff --git a/patches/server/0768-Optimise-BlockSoil-nearby-water-lookup.patch b/patches/server/0769-Optimise-BlockSoil-nearby-water-lookup.patch
index f3fe0f0f17..f3fe0f0f17 100644
--- a/patches/server/0768-Optimise-BlockSoil-nearby-water-lookup.patch
+++ b/patches/server/0769-Optimise-BlockSoil-nearby-water-lookup.patch
diff --git a/patches/server/0769-Allow-removal-addition-of-entities-to-entity-ticklis.patch b/patches/server/0770-Allow-removal-addition-of-entities-to-entity-ticklis.patch
index d68c8524e7..d68c8524e7 100644
--- a/patches/server/0769-Allow-removal-addition-of-entities-to-entity-ticklis.patch
+++ b/patches/server/0770-Allow-removal-addition-of-entities-to-entity-ticklis.patch
diff --git a/patches/server/0770-Optimise-random-block-ticking.patch b/patches/server/0771-Optimise-random-block-ticking.patch
index 1d0d60fbe6..1d0d60fbe6 100644
--- a/patches/server/0770-Optimise-random-block-ticking.patch
+++ b/patches/server/0771-Optimise-random-block-ticking.patch
diff --git a/patches/server/0771-Optimise-non-flush-packet-sending.patch b/patches/server/0772-Optimise-non-flush-packet-sending.patch
index f4d6e1b6b4..f4d6e1b6b4 100644
--- a/patches/server/0771-Optimise-non-flush-packet-sending.patch
+++ b/patches/server/0772-Optimise-non-flush-packet-sending.patch
diff --git a/patches/server/0772-Optimise-nearby-player-lookups.patch b/patches/server/0773-Optimise-nearby-player-lookups.patch
index fe7448ae4f..fe7448ae4f 100644
--- a/patches/server/0772-Optimise-nearby-player-lookups.patch
+++ b/patches/server/0773-Optimise-nearby-player-lookups.patch
diff --git a/patches/server/0773-Optimise-WorldServer-notify.patch b/patches/server/0774-Optimise-WorldServer-notify.patch
index 6cfd3dac52..6cfd3dac52 100644
--- a/patches/server/0773-Optimise-WorldServer-notify.patch
+++ b/patches/server/0774-Optimise-WorldServer-notify.patch
diff --git a/patches/server/0774-Remove-streams-for-villager-AI.patch b/patches/server/0775-Remove-streams-for-villager-AI.patch
index 8257c2de40..8257c2de40 100644
--- a/patches/server/0774-Remove-streams-for-villager-AI.patch
+++ b/patches/server/0775-Remove-streams-for-villager-AI.patch
diff --git a/patches/server/0775-Rewrite-dataconverter-system.patch b/patches/server/0776-Rewrite-dataconverter-system.patch
index 72192de57f..72192de57f 100644
--- a/patches/server/0775-Rewrite-dataconverter-system.patch
+++ b/patches/server/0776-Rewrite-dataconverter-system.patch
diff --git a/patches/server/0776-Use-Velocity-compression-and-cipher-natives.patch b/patches/server/0777-Use-Velocity-compression-and-cipher-natives.patch
index cb29c8b7b1..cb29c8b7b1 100644
--- a/patches/server/0776-Use-Velocity-compression-and-cipher-natives.patch
+++ b/patches/server/0777-Use-Velocity-compression-and-cipher-natives.patch
diff --git a/patches/server/0777-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch b/patches/server/0778-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch
index 5103d7a24c..5103d7a24c 100644
--- a/patches/server/0777-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch
+++ b/patches/server/0778-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch
diff --git a/patches/server/0778-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch b/patches/server/0779-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch
index 5c0a433617..5c0a433617 100644
--- a/patches/server/0778-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch
+++ b/patches/server/0779-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch
diff --git a/patches/server/0779-Async-catch-modifications-to-critical-entity-state.patch b/patches/server/0780-Async-catch-modifications-to-critical-entity-state.patch
index 305329fc53..305329fc53 100644
--- a/patches/server/0779-Async-catch-modifications-to-critical-entity-state.patch
+++ b/patches/server/0780-Async-catch-modifications-to-critical-entity-state.patch
diff --git a/patches/server/0780-Fix-Bukkit-NamespacedKey-shenanigans.patch b/patches/server/0781-Fix-Bukkit-NamespacedKey-shenanigans.patch
index 8f152dd0e7..8f152dd0e7 100644
--- a/patches/server/0780-Fix-Bukkit-NamespacedKey-shenanigans.patch
+++ b/patches/server/0781-Fix-Bukkit-NamespacedKey-shenanigans.patch
diff --git a/patches/server/0781-Fix-merchant-inventory-not-closing-on-entity-removal.patch b/patches/server/0782-Fix-merchant-inventory-not-closing-on-entity-removal.patch
index 8dfad9ab0f..8dfad9ab0f 100644
--- a/patches/server/0781-Fix-merchant-inventory-not-closing-on-entity-removal.patch
+++ b/patches/server/0782-Fix-merchant-inventory-not-closing-on-entity-removal.patch
diff --git a/patches/server/0782-Check-requirement-before-suggesting-root-nodes.patch b/patches/server/0783-Check-requirement-before-suggesting-root-nodes.patch
index da19d3f1ca..da19d3f1ca 100644
--- a/patches/server/0782-Check-requirement-before-suggesting-root-nodes.patch
+++ b/patches/server/0783-Check-requirement-before-suggesting-root-nodes.patch
diff --git a/patches/server/0783-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch b/patches/server/0784-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
index 5f48d6b3b1..5f48d6b3b1 100644
--- a/patches/server/0783-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
+++ b/patches/server/0784-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
diff --git a/patches/server/0784-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch b/patches/server/0785-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
index 31e987614a..31e987614a 100644
--- a/patches/server/0784-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
+++ b/patches/server/0785-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
diff --git a/patches/server/0785-Ensure-valid-vehicle-status.patch b/patches/server/0786-Ensure-valid-vehicle-status.patch
index 5715c2ca86..5715c2ca86 100644
--- a/patches/server/0785-Ensure-valid-vehicle-status.patch
+++ b/patches/server/0786-Ensure-valid-vehicle-status.patch
diff --git a/patches/server/0786-Prevent-softlocked-end-exit-portal-generation.patch b/patches/server/0787-Prevent-softlocked-end-exit-portal-generation.patch
index 855c2ec833..855c2ec833 100644
--- a/patches/server/0786-Prevent-softlocked-end-exit-portal-generation.patch
+++ b/patches/server/0787-Prevent-softlocked-end-exit-portal-generation.patch
diff --git a/patches/server/0787-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch b/patches/server/0788-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch
index 2ce994e362..2ce994e362 100644
--- a/patches/server/0787-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch
+++ b/patches/server/0788-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch
diff --git a/patches/server/0788-Don-t-log-debug-logging-being-disabled.patch b/patches/server/0789-Don-t-log-debug-logging-being-disabled.patch
index 5bec880eb8..5bec880eb8 100644
--- a/patches/server/0788-Don-t-log-debug-logging-being-disabled.patch
+++ b/patches/server/0789-Don-t-log-debug-logging-being-disabled.patch
diff --git a/patches/server/0789-Mark-fish-and-axolotls-from-buckets-as-persistent.patch b/patches/server/0790-Mark-fish-and-axolotls-from-buckets-as-persistent.patch
index a29e839964..a29e839964 100644
--- a/patches/server/0789-Mark-fish-and-axolotls-from-buckets-as-persistent.patch
+++ b/patches/server/0790-Mark-fish-and-axolotls-from-buckets-as-persistent.patch
diff --git a/patches/server/0790-fix-various-menus-with-empty-level-accesses.patch b/patches/server/0791-fix-various-menus-with-empty-level-accesses.patch
index 3bda24b9c6..3bda24b9c6 100644
--- a/patches/server/0790-fix-various-menus-with-empty-level-accesses.patch
+++ b/patches/server/0791-fix-various-menus-with-empty-level-accesses.patch
diff --git a/patches/server/0791-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch b/patches/server/0792-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch
index 9672075382..9672075382 100644
--- a/patches/server/0791-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch
+++ b/patches/server/0792-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch
diff --git a/patches/server/0792-Preserve-overstacked-loot.patch b/patches/server/0793-Preserve-overstacked-loot.patch
index 2d41e5c253..2d41e5c253 100644
--- a/patches/server/0792-Preserve-overstacked-loot.patch
+++ b/patches/server/0793-Preserve-overstacked-loot.patch
diff --git a/patches/server/0793-Update-head-rotation-in-missing-places.patch b/patches/server/0794-Update-head-rotation-in-missing-places.patch
index 2dd4efaae9..2dd4efaae9 100644
--- a/patches/server/0793-Update-head-rotation-in-missing-places.patch
+++ b/patches/server/0794-Update-head-rotation-in-missing-places.patch
diff --git a/patches/server/0794-prevent-unintended-light-block-manipulation.patch b/patches/server/0795-prevent-unintended-light-block-manipulation.patch
index 08bd6164f5..08bd6164f5 100644
--- a/patches/server/0794-prevent-unintended-light-block-manipulation.patch
+++ b/patches/server/0795-prevent-unintended-light-block-manipulation.patch
diff --git a/patches/server/0795-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch b/patches/server/0796-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch
index 89603862f0..89603862f0 100644
--- a/patches/server/0795-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch
+++ b/patches/server/0796-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch
diff --git a/patches/server/0796-Fix-CraftCriteria-defaults-map.patch b/patches/server/0797-Fix-CraftCriteria-defaults-map.patch
index 11fce3ca24..11fce3ca24 100644
--- a/patches/server/0796-Fix-CraftCriteria-defaults-map.patch
+++ b/patches/server/0797-Fix-CraftCriteria-defaults-map.patch
diff --git a/patches/server/0797-Fix-upstreams-block-state-factories.patch b/patches/server/0798-Fix-upstreams-block-state-factories.patch
index 4a88c25608..4a88c25608 100644
--- a/patches/server/0797-Fix-upstreams-block-state-factories.patch
+++ b/patches/server/0798-Fix-upstreams-block-state-factories.patch
diff --git a/patches/server/0798-Add-config-option-for-logging-player-ip-addresses.patch b/patches/server/0799-Add-config-option-for-logging-player-ip-addresses.patch
index cc81a11fff..cc81a11fff 100644
--- a/patches/server/0798-Add-config-option-for-logging-player-ip-addresses.patch
+++ b/patches/server/0799-Add-config-option-for-logging-player-ip-addresses.patch
diff --git a/patches/server/0799-Configurable-feature-seeds.patch b/patches/server/0800-Configurable-feature-seeds.patch
index e0ce52de05..5eaf0ff3d3 100644
--- a/patches/server/0799-Configurable-feature-seeds.patch
+++ b/patches/server/0800-Configurable-feature-seeds.patch
@@ -79,10 +79,10 @@ index e5eeab49d167a9a151301ca910e1421550e14245..0a70dfd7880f5fcf1292dd2fdae2964b
return getIntOrDefault(behaviorTickRates, typeName, entityType, def);
}
diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-index 4864fce027b0871e50b2060880be9e24bfdd3887..eb2f0bc997a6823c74f32ec01330ced39a14fdd0 100644
+index 97b29671a8df6d102be3982443f6f784e2e1d6e1..8bdf3ec461d870204452833bf6f65fe6c35595d8 100644
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-@@ -521,7 +521,7 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
+@@ -527,7 +527,7 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
int j = list.size();
try {
@@ -91,7 +91,7 @@ index 4864fce027b0871e50b2060880be9e24bfdd3887..eb2f0bc997a6823c74f32ec01330ced3
int k = Math.max(GenerationStep.Decoration.values().length, j);
for (int l = 0; l < k; ++l) {
-@@ -594,7 +594,15 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
+@@ -600,7 +600,15 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
return (String) optional.orElseGet(placedfeature::toString);
};
diff --git a/patches/server/0800-VanillaCommandWrapper-didnt-account-for-entity-sende.patch b/patches/server/0801-VanillaCommandWrapper-didnt-account-for-entity-sende.patch
index 6e33709dbe..6e33709dbe 100644
--- a/patches/server/0800-VanillaCommandWrapper-didnt-account-for-entity-sende.patch
+++ b/patches/server/0801-VanillaCommandWrapper-didnt-account-for-entity-sende.patch
diff --git a/patches/server/0801-Add-root-admin-user-detection.patch b/patches/server/0802-Add-root-admin-user-detection.patch
index 86c355de50..86c355de50 100644
--- a/patches/server/0801-Add-root-admin-user-detection.patch
+++ b/patches/server/0802-Add-root-admin-user-detection.patch
diff --git a/patches/server/0802-Always-allow-item-changing-in-Fireball.patch b/patches/server/0803-Always-allow-item-changing-in-Fireball.patch
index fe4cbf2ef1..fe4cbf2ef1 100644
--- a/patches/server/0802-Always-allow-item-changing-in-Fireball.patch
+++ b/patches/server/0803-Always-allow-item-changing-in-Fireball.patch
diff --git a/patches/server/0803-don-t-attempt-to-teleport-dead-entities.patch b/patches/server/0804-don-t-attempt-to-teleport-dead-entities.patch
index 0d78c1bee5..0d78c1bee5 100644
--- a/patches/server/0803-don-t-attempt-to-teleport-dead-entities.patch
+++ b/patches/server/0804-don-t-attempt-to-teleport-dead-entities.patch
diff --git a/patches/server/0804-Fix-anvil-prepare-event-not-working-with-zero-xp.patch b/patches/server/0805-Fix-anvil-prepare-event-not-working-with-zero-xp.patch
index efa5aa2399..efa5aa2399 100644
--- a/patches/server/0804-Fix-anvil-prepare-event-not-working-with-zero-xp.patch
+++ b/patches/server/0805-Fix-anvil-prepare-event-not-working-with-zero-xp.patch
diff --git a/patches/server/0805-Prevent-excessive-velocity-through-repeated-crits.patch b/patches/server/0806-Prevent-excessive-velocity-through-repeated-crits.patch
index 4304993831..4304993831 100644
--- a/patches/server/0805-Prevent-excessive-velocity-through-repeated-crits.patch
+++ b/patches/server/0806-Prevent-excessive-velocity-through-repeated-crits.patch
diff --git a/patches/server/0806-Remove-client-side-code-using-deprecated-for-removal.patch b/patches/server/0807-Remove-client-side-code-using-deprecated-for-removal.patch
index a11975f1ad..a11975f1ad 100644
--- a/patches/server/0806-Remove-client-side-code-using-deprecated-for-removal.patch
+++ b/patches/server/0807-Remove-client-side-code-using-deprecated-for-removal.patch
diff --git a/patches/server/0807-Rewrite-the-light-engine.patch b/patches/server/0808-Rewrite-the-light-engine.patch
index a558bbc963..a558bbc963 100644
--- a/patches/server/0807-Rewrite-the-light-engine.patch
+++ b/patches/server/0808-Rewrite-the-light-engine.patch
diff --git a/patches/server/0808-Always-parse-protochunk-light-sources-unless-it-is-m.patch b/patches/server/0809-Always-parse-protochunk-light-sources-unless-it-is-m.patch
index a1b655d7c1..a1b655d7c1 100644
--- a/patches/server/0808-Always-parse-protochunk-light-sources-unless-it-is-m.patch
+++ b/patches/server/0809-Always-parse-protochunk-light-sources-unless-it-is-m.patch
diff --git a/patches/server/0809-Fix-removing-recipes-from-RecipeIterator.patch b/patches/server/0810-Fix-removing-recipes-from-RecipeIterator.patch
index 5784fd4dc3..5784fd4dc3 100644
--- a/patches/server/0809-Fix-removing-recipes-from-RecipeIterator.patch
+++ b/patches/server/0810-Fix-removing-recipes-from-RecipeIterator.patch
diff --git a/patches/server/0810-Prevent-sending-oversized-item-data-in-equipment-and.patch b/patches/server/0811-Prevent-sending-oversized-item-data-in-equipment-and.patch
index e35fbc79b1..e35fbc79b1 100644
--- a/patches/server/0810-Prevent-sending-oversized-item-data-in-equipment-and.patch
+++ b/patches/server/0811-Prevent-sending-oversized-item-data-in-equipment-and.patch
diff --git a/patches/server/0811-Hide-unnecessary-itemmeta-from-clients.patch b/patches/server/0812-Hide-unnecessary-itemmeta-from-clients.patch
index 9231e57b2b..9231e57b2b 100644
--- a/patches/server/0811-Hide-unnecessary-itemmeta-from-clients.patch
+++ b/patches/server/0812-Hide-unnecessary-itemmeta-from-clients.patch
diff --git a/patches/server/0812-Fix-kelp-modifier-changing-growth-for-other-crops.patch b/patches/server/0813-Fix-kelp-modifier-changing-growth-for-other-crops.patch
index da0f208d4e..da0f208d4e 100644
--- a/patches/server/0812-Fix-kelp-modifier-changing-growth-for-other-crops.patch
+++ b/patches/server/0813-Fix-kelp-modifier-changing-growth-for-other-crops.patch
diff --git a/patches/server/0813-Prevent-ContainerOpenersCounter-openCount-from-going.patch b/patches/server/0814-Prevent-ContainerOpenersCounter-openCount-from-going.patch
index 0e41fd2743..0e41fd2743 100644
--- a/patches/server/0813-Prevent-ContainerOpenersCounter-openCount-from-going.patch
+++ b/patches/server/0814-Prevent-ContainerOpenersCounter-openCount-from-going.patch
diff --git a/patches/server/0814-Add-PlayerItemFrameChangeEvent.patch b/patches/server/0815-Add-PlayerItemFrameChangeEvent.patch
index 464f2144c1..464f2144c1 100644
--- a/patches/server/0814-Add-PlayerItemFrameChangeEvent.patch
+++ b/patches/server/0815-Add-PlayerItemFrameChangeEvent.patch
diff --git a/patches/server/0815-Add-player-health-update-API.patch b/patches/server/0816-Add-player-health-update-API.patch
index 133c17a922..133c17a922 100644
--- a/patches/server/0815-Add-player-health-update-API.patch
+++ b/patches/server/0816-Add-player-health-update-API.patch
diff --git a/patches/server/0816-Optimize-HashMapPalette.patch b/patches/server/0817-Optimize-HashMapPalette.patch
index ef1880895f..ef1880895f 100644
--- a/patches/server/0816-Optimize-HashMapPalette.patch
+++ b/patches/server/0817-Optimize-HashMapPalette.patch
diff --git a/patches/server/0817-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/server/0818-Allow-delegation-to-vanilla-chunk-gen.patch
index fd3b042044..fd3b042044 100644
--- a/patches/server/0817-Allow-delegation-to-vanilla-chunk-gen.patch
+++ b/patches/server/0818-Allow-delegation-to-vanilla-chunk-gen.patch
diff --git a/patches/server/0818-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch b/patches/server/0819-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch
index 99a5334c59..99a5334c59 100644
--- a/patches/server/0818-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch
+++ b/patches/server/0819-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch
diff --git a/patches/server/0819-Optimise-collision-checking-in-player-move-packet-ha.patch b/patches/server/0820-Optimise-collision-checking-in-player-move-packet-ha.patch
index f33b2ef6aa..f33b2ef6aa 100644
--- a/patches/server/0819-Optimise-collision-checking-in-player-move-packet-ha.patch
+++ b/patches/server/0820-Optimise-collision-checking-in-player-move-packet-ha.patch
diff --git a/patches/server/0820-Actually-unload-POI-data.patch b/patches/server/0821-Actually-unload-POI-data.patch
index a9863251a5..a9863251a5 100644
--- a/patches/server/0820-Actually-unload-POI-data.patch
+++ b/patches/server/0821-Actually-unload-POI-data.patch
diff --git a/patches/server/0821-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch b/patches/server/0822-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch
index c03eefb28c..c03eefb28c 100644
--- a/patches/server/0821-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch
+++ b/patches/server/0822-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch
diff --git a/patches/server/0822-Update-Log4j.patch b/patches/server/0823-Update-Log4j.patch
index 1b301675ed..1b301675ed 100644
--- a/patches/server/0822-Update-Log4j.patch
+++ b/patches/server/0823-Update-Log4j.patch
diff --git a/patches/server/0823-Add-more-Campfire-API.patch b/patches/server/0824-Add-more-Campfire-API.patch
index 75cef9d65b..75cef9d65b 100644
--- a/patches/server/0823-Add-more-Campfire-API.patch
+++ b/patches/server/0824-Add-more-Campfire-API.patch
diff --git a/patches/server/0824-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch b/patches/server/0825-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch
index 324e828c7c..324e828c7c 100644
--- a/patches/server/0824-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch
+++ b/patches/server/0825-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch
diff --git a/patches/server/0825-Fix-tripwire-state-inconsistency.patch b/patches/server/0826-Fix-tripwire-state-inconsistency.patch
index ef3e8540d4..ef3e8540d4 100644
--- a/patches/server/0825-Fix-tripwire-state-inconsistency.patch
+++ b/patches/server/0826-Fix-tripwire-state-inconsistency.patch
diff --git a/patches/server/0826-Fix-fluid-logging-on-Block-breakNaturally.patch b/patches/server/0827-Fix-fluid-logging-on-Block-breakNaturally.patch
index 3d1428bea5..3d1428bea5 100644
--- a/patches/server/0826-Fix-fluid-logging-on-Block-breakNaturally.patch
+++ b/patches/server/0827-Fix-fluid-logging-on-Block-breakNaturally.patch
diff --git a/patches/server/0827-Forward-CraftEntity-in-teleport-command.patch b/patches/server/0828-Forward-CraftEntity-in-teleport-command.patch
index 9eec59ce99..9eec59ce99 100644
--- a/patches/server/0827-Forward-CraftEntity-in-teleport-command.patch
+++ b/patches/server/0828-Forward-CraftEntity-in-teleport-command.patch
diff --git a/patches/server/0828-Improve-scoreboard-entries.patch b/patches/server/0829-Improve-scoreboard-entries.patch
index 07b32e52e9..07b32e52e9 100644
--- a/patches/server/0828-Improve-scoreboard-entries.patch
+++ b/patches/server/0829-Improve-scoreboard-entries.patch
diff --git a/patches/server/0829-Entity-powdered-snow-API.patch b/patches/server/0830-Entity-powdered-snow-API.patch
index 7df19b80b9..7df19b80b9 100644
--- a/patches/server/0829-Entity-powdered-snow-API.patch
+++ b/patches/server/0830-Entity-powdered-snow-API.patch
diff --git a/patches/server/0830-Add-API-for-item-entity-health.patch b/patches/server/0831-Add-API-for-item-entity-health.patch
index c475b8fda1..c475b8fda1 100644
--- a/patches/server/0830-Add-API-for-item-entity-health.patch
+++ b/patches/server/0831-Add-API-for-item-entity-health.patch
diff --git a/patches/server/0831-Fix-entity-type-tags-suggestions-in-selectors.patch b/patches/server/0832-Fix-entity-type-tags-suggestions-in-selectors.patch
index 8e61b0d569..8e61b0d569 100644
--- a/patches/server/0831-Fix-entity-type-tags-suggestions-in-selectors.patch
+++ b/patches/server/0832-Fix-entity-type-tags-suggestions-in-selectors.patch
diff --git a/patches/server/0832-Configurable-max-block-light-for-monster-spawning.patch b/patches/server/0833-Configurable-max-block-light-for-monster-spawning.patch
index 6b5f660377..6b5f660377 100644
--- a/patches/server/0832-Configurable-max-block-light-for-monster-spawning.patch
+++ b/patches/server/0833-Configurable-max-block-light-for-monster-spawning.patch
diff --git a/patches/server/0833-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch b/patches/server/0834-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch
index 8ed1ba062d..8ed1ba062d 100644
--- a/patches/server/0833-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch
+++ b/patches/server/0834-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch
diff --git a/patches/server/0834-Load-effect-amplifiers-greater-than-127-correctly.patch b/patches/server/0835-Load-effect-amplifiers-greater-than-127-correctly.patch
index 83f5b4740d..83f5b4740d 100644
--- a/patches/server/0834-Load-effect-amplifiers-greater-than-127-correctly.patch
+++ b/patches/server/0835-Load-effect-amplifiers-greater-than-127-correctly.patch
diff --git a/patches/server/0835-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/server/0836-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
index 9f3ee548ee..9f3ee548ee 100644
--- a/patches/server/0835-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
+++ b/patches/server/0836-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
diff --git a/patches/server/0836-Fix-bees-aging-inside-hives.patch b/patches/server/0837-Fix-bees-aging-inside-hives.patch
index c9303da67b..c9303da67b 100644
--- a/patches/server/0836-Fix-bees-aging-inside-hives.patch
+++ b/patches/server/0837-Fix-bees-aging-inside-hives.patch
diff --git a/patches/server/0837-Bucketable-API.patch b/patches/server/0838-Bucketable-API.patch
index ff1194970a..ff1194970a 100644
--- a/patches/server/0837-Bucketable-API.patch
+++ b/patches/server/0838-Bucketable-API.patch
diff --git a/patches/server/0838-Check-player-world-in-endPortalSoundRadius.patch b/patches/server/0839-Check-player-world-in-endPortalSoundRadius.patch
index a632d3d594..a632d3d594 100644
--- a/patches/server/0838-Check-player-world-in-endPortalSoundRadius.patch
+++ b/patches/server/0839-Check-player-world-in-endPortalSoundRadius.patch
diff --git a/patches/server/0839-Validate-usernames.patch b/patches/server/0840-Validate-usernames.patch
index 1b417d320d..1b417d320d 100644
--- a/patches/server/0839-Validate-usernames.patch
+++ b/patches/server/0840-Validate-usernames.patch
diff --git a/patches/server/0840-Fix-saving-configs-with-more-long-comments.patch b/patches/server/0841-Fix-saving-configs-with-more-long-comments.patch
index 7d52b01085..7d52b01085 100644
--- a/patches/server/0840-Fix-saving-configs-with-more-long-comments.patch
+++ b/patches/server/0841-Fix-saving-configs-with-more-long-comments.patch
diff --git a/patches/server/0841-Make-water-animal-spawn-height-configurable.patch b/patches/server/0842-Make-water-animal-spawn-height-configurable.patch
index 70d7bcd1a9..70d7bcd1a9 100644
--- a/patches/server/0841-Make-water-animal-spawn-height-configurable.patch
+++ b/patches/server/0842-Make-water-animal-spawn-height-configurable.patch
diff --git a/patches/server/0842-Expose-vanilla-BiomeProvider-from-WorldInfo.patch b/patches/server/0843-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
index db11b10e30..3570231be3 100644
--- a/patches/server/0842-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
+++ b/patches/server/0843-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Expose vanilla BiomeProvider from WorldInfo
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index d86e74c9363d10428d611cb232243a872abd9d5f..c2ddd9f8bf9dded65a7cd1fa69b30113336cd409 100644
+index a9fce6bd112c06453b7f460f3d746e290dca5f4a..7a3ca8968e4d2ea26ed20bb4c8d78ab12ee44258 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -584,7 +584,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/server/0843-Add-config-option-for-worlds-affected-by-time-cmd.patch b/patches/server/0844-Add-config-option-for-worlds-affected-by-time-cmd.patch
index 052a280f72..052a280f72 100644
--- a/patches/server/0843-Add-config-option-for-worlds-affected-by-time-cmd.patch
+++ b/patches/server/0844-Add-config-option-for-worlds-affected-by-time-cmd.patch
diff --git a/patches/server/0844-Add-new-overload-to-PersistentDataContainer-has.patch b/patches/server/0845-Add-new-overload-to-PersistentDataContainer-has.patch
index d19f7179e1..d19f7179e1 100644
--- a/patches/server/0844-Add-new-overload-to-PersistentDataContainer-has.patch
+++ b/patches/server/0845-Add-new-overload-to-PersistentDataContainer-has.patch
diff --git a/patches/server/0845-Multiple-Entries-with-Scoreboards.patch b/patches/server/0846-Multiple-Entries-with-Scoreboards.patch
index 2f9e8e9118..2f9e8e9118 100644
--- a/patches/server/0845-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/server/0846-Multiple-Entries-with-Scoreboards.patch
diff --git a/patches/server/0846-Reset-placed-block-on-exception.patch b/patches/server/0847-Reset-placed-block-on-exception.patch
index 7666ecdfe1..7666ecdfe1 100644
--- a/patches/server/0846-Reset-placed-block-on-exception.patch
+++ b/patches/server/0847-Reset-placed-block-on-exception.patch
diff --git a/patches/server/0847-Add-configurable-height-for-slime-spawn.patch b/patches/server/0848-Add-configurable-height-for-slime-spawn.patch
index 4491816842..4491816842 100644
--- a/patches/server/0847-Add-configurable-height-for-slime-spawn.patch
+++ b/patches/server/0848-Add-configurable-height-for-slime-spawn.patch
diff --git a/patches/server/0848-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch b/patches/server/0849-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
index a834180d50..a834180d50 100644
--- a/patches/server/0848-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/server/0849-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/server/0849-Fix-xp-reward-for-baby-zombies.patch b/patches/server/0850-Fix-xp-reward-for-baby-zombies.patch
index 0c5733a372..0c5733a372 100644
--- a/patches/server/0849-Fix-xp-reward-for-baby-zombies.patch
+++ b/patches/server/0850-Fix-xp-reward-for-baby-zombies.patch
diff --git a/patches/server/0850-Kick-on-main-for-illegal-chars.patch b/patches/server/0851-Kick-on-main-for-illegal-chars.patch
index f5c7e34afc..f5c7e34afc 100644
--- a/patches/server/0850-Kick-on-main-for-illegal-chars.patch
+++ b/patches/server/0851-Kick-on-main-for-illegal-chars.patch
diff --git a/patches/server/0851-Multi-Block-Change-API-Implementation.patch b/patches/server/0852-Multi-Block-Change-API-Implementation.patch
index c2863f8ade..c2863f8ade 100644
--- a/patches/server/0851-Multi-Block-Change-API-Implementation.patch
+++ b/patches/server/0852-Multi-Block-Change-API-Implementation.patch
diff --git a/patches/server/0852-Fix-NotePlayEvent.patch b/patches/server/0853-Fix-NotePlayEvent.patch
index 3d7aa4d732..3d7aa4d732 100644
--- a/patches/server/0852-Fix-NotePlayEvent.patch
+++ b/patches/server/0853-Fix-NotePlayEvent.patch
diff --git a/patches/server/0853-Freeze-Tick-Lock-API.patch b/patches/server/0854-Freeze-Tick-Lock-API.patch
index e3599f4743..e3599f4743 100644
--- a/patches/server/0853-Freeze-Tick-Lock-API.patch
+++ b/patches/server/0854-Freeze-Tick-Lock-API.patch
diff --git a/patches/server/0854-Dolphin-API.patch b/patches/server/0855-Dolphin-API.patch
index 4bb12a6785..4bb12a6785 100644
--- a/patches/server/0854-Dolphin-API.patch
+++ b/patches/server/0855-Dolphin-API.patch
diff --git a/patches/server/0855-More-PotionEffectType-API.patch b/patches/server/0856-More-PotionEffectType-API.patch
index 14fb482187..14fb482187 100644
--- a/patches/server/0855-More-PotionEffectType-API.patch
+++ b/patches/server/0856-More-PotionEffectType-API.patch
diff --git a/patches/server/0856-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch b/patches/server/0857-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch
index 3b79f9947c..3b79f9947c 100644
--- a/patches/server/0856-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch
+++ b/patches/server/0857-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch
diff --git a/patches/server/0857-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/server/0858-API-for-creating-command-sender-which-forwards-feedb.patch
index 8123d804ba..8123d804ba 100644
--- a/patches/server/0857-API-for-creating-command-sender-which-forwards-feedb.patch
+++ b/patches/server/0858-API-for-creating-command-sender-which-forwards-feedb.patch
diff --git a/patches/server/0858-Add-config-for-stronghold-seed.patch b/patches/server/0859-Add-config-for-stronghold-seed.patch
index 4f078313a4..80cbff8309 100644
--- a/patches/server/0858-Add-config-for-stronghold-seed.patch
+++ b/patches/server/0859-Add-config-for-stronghold-seed.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add config for stronghold seed
diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-index eb2f0bc997a6823c74f32ec01330ced39a14fdd0..56c41fd1c4aedd43d432e3cb3c4e790d0419c159 100644
+index 6bbec801ecaa37f498d449639ad55626025d705c..2ad0642c97c0d38d401ede432bebac2bbd95166d 100644
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
@@ -223,7 +223,13 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
diff --git a/patches/server/0859-Implement-regenerateChunk.patch b/patches/server/0860-Implement-regenerateChunk.patch
index 21a5aa32b4..21a5aa32b4 100644
--- a/patches/server/0859-Implement-regenerateChunk.patch
+++ b/patches/server/0860-Implement-regenerateChunk.patch
diff --git a/patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch b/patches/server/0861-Log-exceptions-thrown-during-chat-processing.patch
index 76bdbcdd9c..76bdbcdd9c 100644
--- a/patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch
+++ b/patches/server/0861-Log-exceptions-thrown-during-chat-processing.patch
diff --git a/patches/server/0861-Fix-cancelled-powdered-snow-bucket-placement.patch b/patches/server/0862-Fix-cancelled-powdered-snow-bucket-placement.patch
index 9a95fdb1d3..9a95fdb1d3 100644
--- a/patches/server/0861-Fix-cancelled-powdered-snow-bucket-placement.patch
+++ b/patches/server/0862-Fix-cancelled-powdered-snow-bucket-placement.patch
diff --git a/patches/server/0862-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch b/patches/server/0863-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
index b72e1c19b3..b72e1c19b3 100644
--- a/patches/server/0862-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
+++ b/patches/server/0863-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
diff --git a/patches/server/0863-Add-GameEvent-tags.patch b/patches/server/0864-Add-GameEvent-tags.patch
index 74cb5fcbb6..74cb5fcbb6 100644
--- a/patches/server/0863-Add-GameEvent-tags.patch
+++ b/patches/server/0864-Add-GameEvent-tags.patch
diff --git a/patches/server/0864-Replace-player-chunk-loader-system.patch b/patches/server/0865-Replace-player-chunk-loader-system.patch
index 6898d1fd95..6898d1fd95 100644
--- a/patches/server/0864-Replace-player-chunk-loader-system.patch
+++ b/patches/server/0865-Replace-player-chunk-loader-system.patch
diff --git a/patches/server/0865-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch b/patches/server/0866-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch
index f36aa20770..c61f8a7c2f 100644
--- a/patches/server/0865-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch
+++ b/patches/server/0866-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch
@@ -9,7 +9,7 @@ This might result in chunks loading far slower in the nether,
for example.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index c2ddd9f8bf9dded65a7cd1fa69b30113336cd409..d19d816ee511bf5d44151c3e159adb288b60bc03 100644
+index 7a3ca8968e4d2ea26ed20bb4c8d78ab12ee44258..63c86ae637eabb07095a46852da530b53acb9ff3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1358,6 +1358,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/server/0866-Replace-ticket-level-propagator.patch b/patches/server/0867-Replace-ticket-level-propagator.patch
index 03d6ba0cb1..03d6ba0cb1 100644
--- a/patches/server/0866-Replace-ticket-level-propagator.patch
+++ b/patches/server/0867-Replace-ticket-level-propagator.patch
diff --git a/patches/server/0867-Furnace-RecipesUsed-API.patch b/patches/server/0868-Furnace-RecipesUsed-API.patch
index 2e6cf1c2fe..2e6cf1c2fe 100644
--- a/patches/server/0867-Furnace-RecipesUsed-API.patch
+++ b/patches/server/0868-Furnace-RecipesUsed-API.patch
diff --git a/patches/server/0868-Configurable-sculk-sensor-listener-range.patch b/patches/server/0869-Configurable-sculk-sensor-listener-range.patch
index 2e9adfa399..2e9adfa399 100644
--- a/patches/server/0868-Configurable-sculk-sensor-listener-range.patch
+++ b/patches/server/0869-Configurable-sculk-sensor-listener-range.patch
diff --git a/patches/server/0869-Add-missing-block-data-mins-and-maxes.patch b/patches/server/0870-Add-missing-block-data-mins-and-maxes.patch
index 6f3d051671..6f3d051671 100644
--- a/patches/server/0869-Add-missing-block-data-mins-and-maxes.patch
+++ b/patches/server/0870-Add-missing-block-data-mins-and-maxes.patch
diff --git a/patches/server/0870-Option-to-have-default-CustomSpawners-in-custom-worl.patch b/patches/server/0871-Option-to-have-default-CustomSpawners-in-custom-worl.patch
index cef52178d6..e9b999758a 100644
--- a/patches/server/0870-Option-to-have-default-CustomSpawners-in-custom-worl.patch
+++ b/patches/server/0871-Option-to-have-default-CustomSpawners-in-custom-worl.patch
@@ -24,7 +24,7 @@ index 153f07bac06093b43a1f5b0f8e1a46ffbe6407e5..a7ebf6d9f79ce50a90c3c903563e00a1
+ }
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index d19d816ee511bf5d44151c3e159adb288b60bc03..115e06e0c6865f1c04f58a74509332f7c5043d91 100644
+index 63c86ae637eabb07095a46852da530b53acb9ff3..3a0b022880e250fc8afeb74c18272573d08c4166 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -619,7 +619,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/server/0871-Put-world-into-worldlist-before-initing-the-world.patch b/patches/server/0872-Put-world-into-worldlist-before-initing-the-world.patch
index 517ce2e848..7219e3d55f 100644
--- a/patches/server/0871-Put-world-into-worldlist-before-initing-the-world.patch
+++ b/patches/server/0872-Put-world-into-worldlist-before-initing-the-world.patch
@@ -7,7 +7,7 @@ Some parts of legacy conversion will need the overworld
to get the legacy structure data storage
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 115e06e0c6865f1c04f58a74509332f7c5043d91..f60120f788bdd1e1a159b87c18655d9e00920c89 100644
+index 3a0b022880e250fc8afeb74c18272573d08c4166..b1653735b2f5048d049c45dc57f74eb7edc15547 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -631,9 +631,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
diff --git a/patches/server/0872-Fix-Entity-Position-Desync.patch b/patches/server/0873-Fix-Entity-Position-Desync.patch
index 32aeaec69d..32aeaec69d 100644
--- a/patches/server/0872-Fix-Entity-Position-Desync.patch
+++ b/patches/server/0873-Fix-Entity-Position-Desync.patch
diff --git a/patches/server/0873-Custom-Potion-Mixes.patch b/patches/server/0874-Custom-Potion-Mixes.patch
index 3e22e5b043..19a78eeae4 100644
--- a/patches/server/0873-Custom-Potion-Mixes.patch
+++ b/patches/server/0874-Custom-Potion-Mixes.patch
@@ -24,13 +24,13 @@ index 0000000000000000000000000000000000000000..6b0bed550763f34e18c9e92f9a47ec0c
+ }
+}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index f60120f788bdd1e1a159b87c18655d9e00920c89..0a0bc8c45cb70073cb94dee25b5e54fb98bf9c8e 100644
+index bfa1e44aa9368b26cc6b10fec8d0848335f15d4e..750cac1cec048250494a4228c30d652717e03233 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -2060,6 +2060,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
- this.packRepository.setSelected(dataPacks);
+@@ -2061,6 +2061,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.worldData.setDataPackConfig(MinecraftServer.getSelectedPacks(this.packRepository));
this.resources.managers.updateRegistryTags(this.registryAccess());
+ io.papermc.paper.registry.PaperRegistry.clearCaches(); // Paper
+ net.minecraft.world.item.alchemy.PotionBrewing.reload(); // Paper
new io.papermc.paper.event.server.ServerResourcesReloadedEvent(cause).callEvent(); // Paper
if (Thread.currentThread() != this.serverThread) return; // Paper
diff --git a/patches/server/0874-Fix-Fluid-tags-isTagged-method.patch b/patches/server/0875-Fix-Fluid-tags-isTagged-method.patch
index 074d24ea76..074d24ea76 100644
--- a/patches/server/0874-Fix-Fluid-tags-isTagged-method.patch
+++ b/patches/server/0875-Fix-Fluid-tags-isTagged-method.patch
diff --git a/patches/server/0875-Fix-World-locateNearestStructure.patch b/patches/server/0876-Fix-World-locateNearestStructure.patch
index 0006208930..4134beeb77 100644
--- a/patches/server/0875-Fix-World-locateNearestStructure.patch
+++ b/patches/server/0876-Fix-World-locateNearestStructure.patch
@@ -7,12 +7,12 @@ Subject: [PATCH] Fix World#locateNearestStructure
impl needs to be changed to reflect that
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 0a0bc8c45cb70073cb94dee25b5e54fb98bf9c8e..3a9c27ece0ad18b2c4686164766794c56fcea268 100644
+index 750cac1cec048250494a4228c30d652717e03233..d86fa3bbdc6cc838ed0ab96c2c084386dd4593e9 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -2061,6 +2061,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
- this.worldData.setDataPackConfig(MinecraftServer.getSelectedPacks(this.packRepository));
+@@ -2062,6 +2062,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.resources.managers.updateRegistryTags(this.registryAccess());
+ io.papermc.paper.registry.PaperRegistry.clearCaches(); // Paper
net.minecraft.world.item.alchemy.PotionBrewing.reload(); // Paper
+ // Paper start - clear cache cause datapacks can add more configured structures
+ for (ServerLevel level : this.levels.values()) {
diff --git a/patches/server/0876-Force-close-world-loading-screen.patch b/patches/server/0877-Force-close-world-loading-screen.patch
index 24a6fd821f..24a6fd821f 100644
--- a/patches/server/0876-Force-close-world-loading-screen.patch
+++ b/patches/server/0877-Force-close-world-loading-screen.patch