aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2023-11-22 20:56:28 -0800
committerGitHub <[email protected]>2023-11-22 20:56:28 -0800
commit96d5e6ca481591842f44d05ab2451f943be6a7c7 (patch)
treead35d855fa33f6feb8e365ce12aa312bd225ff3f
parente1cd9e59e53aabd50e501cb01feee277a8f69902 (diff)
downloadPaper-96d5e6ca481591842f44d05ab2451f943be6a7c7.tar.gz
Paper-96d5e6ca481591842f44d05ab2451f943be6a7c7.zip
Code Generation for TypedKeys (#9233)
Currently includes generated key holder classes for types used in the Registry Modification API
-rw-r--r--.editorconfig3
-rw-r--r--.gitignore1
-rw-r--r--paper-api-generator/build.gradle.kts28
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/BiomeKeys.java490
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java462
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/StructureTypeKeys.java147
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/TrimMaterialKeys.java112
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/TrimPatternKeys.java154
-rw-r--r--paper-api-generator/src/main/java/io/papermc/generator/Main.java85
-rw-r--r--paper-api-generator/src/main/java/io/papermc/generator/types/Annotations.java24
-rw-r--r--paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java205
-rw-r--r--paper-api-generator/src/main/java/io/papermc/generator/types/SourceGenerator.java11
-rw-r--r--paper-api-generator/src/main/java/io/papermc/generator/utils/CollectingContext.java28
-rw-r--r--paper-api-generator/wideners.at6
-rw-r--r--patches/api/0004-Code-Generation.patch251
-rw-r--r--patches/api/0005-Add-FastUtil-to-Bukkit.patch (renamed from patches/api/0004-Add-FastUtil-to-Bukkit.patch)2
-rw-r--r--patches/api/0006-Adventure.patch (renamed from patches/api/0005-Adventure.patch)6
-rw-r--r--patches/api/0007-Paper-Utils.patch (renamed from patches/api/0006-Paper-Utils.patch)0
-rw-r--r--patches/api/0008-Use-ASM-for-event-executors.patch (renamed from patches/api/0007-Use-ASM-for-event-executors.patch)2
-rw-r--r--patches/api/0009-Paper-Plugins.patch (renamed from patches/api/0008-Paper-Plugins.patch)4
-rw-r--r--patches/api/0010-Add-Position.patch (renamed from patches/api/0009-Add-Position.patch)0
-rw-r--r--patches/api/0011-Timings-v2.patch (renamed from patches/api/0010-Timings-v2.patch)0
-rw-r--r--patches/api/0012-Add-command-line-option-to-load-extra-plugin-jars-no.patch (renamed from patches/api/0011-Add-command-line-option-to-load-extra-plugin-jars-no.patch)0
-rw-r--r--patches/api/0013-Player-affects-spawning-API.patch (renamed from patches/api/0012-Player-affects-spawning-API.patch)0
-rw-r--r--patches/api/0014-Add-getTPS-method.patch (renamed from patches/api/0013-Add-getTPS-method.patch)0
-rw-r--r--patches/api/0015-Version-Command-2.0.patch (renamed from patches/api/0014-Version-Command-2.0.patch)0
-rw-r--r--patches/api/0016-Entity-Origin-API.patch (renamed from patches/api/0015-Entity-Origin-API.patch)0
-rw-r--r--patches/api/0017-Add-PlayerLocaleChangeEvent.patch (renamed from patches/api/0016-Add-PlayerLocaleChangeEvent.patch)0
-rw-r--r--patches/api/0018-Add-view-distance-API.patch (renamed from patches/api/0017-Add-view-distance-API.patch)0
-rw-r--r--patches/api/0019-Add-BeaconEffectEvent.patch (renamed from patches/api/0018-Add-BeaconEffectEvent.patch)0
-rw-r--r--patches/api/0020-Add-PlayerInitialSpawnEvent.patch (renamed from patches/api/0019-Add-PlayerInitialSpawnEvent.patch)0
-rw-r--r--patches/api/0021-Expose-server-CommandMap.patch (renamed from patches/api/0020-Expose-server-CommandMap.patch)0
-rw-r--r--patches/api/0022-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch (renamed from patches/api/0021-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch)0
-rw-r--r--patches/api/0023-Add-exception-reporting-event.patch (renamed from patches/api/0022-Add-exception-reporting-event.patch)0
-rw-r--r--patches/api/0024-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch (renamed from patches/api/0023-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch)0
-rw-r--r--patches/api/0025-Fix-ServerListPingEvent-flagging-as-Async.patch (renamed from patches/api/0024-Fix-ServerListPingEvent-flagging-as-Async.patch)0
-rw-r--r--patches/api/0026-Player-Tab-List-and-Title-APIs.patch (renamed from patches/api/0025-Player-Tab-List-and-Title-APIs.patch)0
-rw-r--r--patches/api/0027-Add-methods-for-working-with-arrows-stuck-in-living-.patch (renamed from patches/api/0026-Add-methods-for-working-with-arrows-stuck-in-living-.patch)0
-rw-r--r--patches/api/0028-Complete-resource-pack-API.patch (renamed from patches/api/0027-Complete-resource-pack-API.patch)0
-rw-r--r--patches/api/0029-Add-a-call-helper-to-Event.patch (renamed from patches/api/0028-Add-a-call-helper-to-Event.patch)0
-rw-r--r--patches/api/0030-Add-sender-name-to-commands.yml-replacement.patch (renamed from patches/api/0029-Add-sender-name-to-commands.yml-replacement.patch)0
-rw-r--r--patches/api/0031-Add-command-to-reload-permissions.yml-and-require-co.patch (renamed from patches/api/0030-Add-command-to-reload-permissions.yml-and-require-co.patch)0
-rw-r--r--patches/api/0032-Custom-replacement-for-eaten-items.patch (renamed from patches/api/0031-Custom-replacement-for-eaten-items.patch)0
-rw-r--r--patches/api/0033-Entity-AddTo-RemoveFrom-World-Events.patch (renamed from patches/api/0032-Entity-AddTo-RemoveFrom-World-Events.patch)0
-rw-r--r--patches/api/0034-EntityPathfindEvent.patch (renamed from patches/api/0033-EntityPathfindEvent.patch)0
-rw-r--r--patches/api/0035-Reduce-thread-synchronization-in-MetadataStoreBase.patch (renamed from patches/api/0034-Reduce-thread-synchronization-in-MetadataStoreBase.patch)0
-rw-r--r--patches/api/0036-Add-MetadataStoreBase.removeAll-Plugin.patch (renamed from patches/api/0035-Add-MetadataStoreBase.removeAll-Plugin.patch)0
-rw-r--r--patches/api/0037-Add-PlayerUseUnknownEntityEvent.patch (renamed from patches/api/0036-Add-PlayerUseUnknownEntityEvent.patch)0
-rw-r--r--patches/api/0038-Add-handshake-event-to-allow-plugins-to-handle-clien.patch (renamed from patches/api/0037-Add-handshake-event-to-allow-plugins-to-handle-clien.patch)0
-rw-r--r--patches/api/0039-Arrow-pickup-rule-API.patch (renamed from patches/api/0038-Arrow-pickup-rule-API.patch)0
-rw-r--r--patches/api/0040-EntityRegainHealthEvent-isFastRegen-API.patch (renamed from patches/api/0039-EntityRegainHealthEvent-isFastRegen-API.patch)0
-rw-r--r--patches/api/0041-LootTable-API.patch (renamed from patches/api/0040-LootTable-API.patch)0
-rw-r--r--patches/api/0042-Add-EntityZapEvent.patch (renamed from patches/api/0041-Add-EntityZapEvent.patch)0
-rw-r--r--patches/api/0043-Misc-Utils.patch (renamed from patches/api/0042-Misc-Utils.patch)0
-rw-r--r--patches/api/0044-Allow-Reloading-of-Command-Aliases.patch (renamed from patches/api/0043-Allow-Reloading-of-Command-Aliases.patch)0
-rw-r--r--patches/api/0045-Add-source-to-PlayerExpChangeEvent.patch (renamed from patches/api/0044-Add-source-to-PlayerExpChangeEvent.patch)0
-rw-r--r--patches/api/0046-Add-ProjectileCollideEvent.patch (renamed from patches/api/0045-Add-ProjectileCollideEvent.patch)0
-rw-r--r--patches/api/0047-Add-String-based-Action-Bar-API.patch (renamed from patches/api/0046-Add-String-based-Action-Bar-API.patch)0
-rw-r--r--patches/api/0048-Add-API-methods-to-control-if-armour-stands-can-move.patch (renamed from patches/api/0047-Add-API-methods-to-control-if-armour-stands-can-move.patch)0
-rw-r--r--patches/api/0049-IllegalPacketEvent.patch (renamed from patches/api/0048-IllegalPacketEvent.patch)0
-rw-r--r--patches/api/0050-Fireworks-API-s.patch (renamed from patches/api/0049-Fireworks-API-s.patch)0
-rw-r--r--patches/api/0051-PlayerTeleportEndGatewayEvent.patch (renamed from patches/api/0050-PlayerTeleportEndGatewayEvent.patch)0
-rw-r--r--patches/api/0052-Provide-E-TE-Chunk-count-stat-methods.patch (renamed from patches/api/0051-Provide-E-TE-Chunk-count-stat-methods.patch)0
-rw-r--r--patches/api/0053-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch (renamed from patches/api/0052-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch)0
-rw-r--r--patches/api/0054-Expose-WorldBorder-isInBounds-Location-check.patch (renamed from patches/api/0053-Expose-WorldBorder-isInBounds-Location-check.patch)0
-rw-r--r--patches/api/0055-Add-configuration-option-to-prevent-player-names-fro.patch (renamed from patches/api/0054-Add-configuration-option-to-prevent-player-names-fro.patch)0
-rw-r--r--patches/api/0056-Fix-upstream-javadocs.patch (renamed from patches/api/0055-Fix-upstream-javadocs.patch)0
-rw-r--r--patches/api/0057-Item-canEntityPickup.patch (renamed from patches/api/0056-Item-canEntityPickup.patch)0
-rw-r--r--patches/api/0058-PlayerAttemptPickupItemEvent.patch (renamed from patches/api/0057-PlayerAttemptPickupItemEvent.patch)0
-rw-r--r--patches/api/0059-Add-UnknownCommandEvent.patch (renamed from patches/api/0058-Add-UnknownCommandEvent.patch)0
-rw-r--r--patches/api/0060-Basic-PlayerProfile-API.patch (renamed from patches/api/0059-Basic-PlayerProfile-API.patch)0
-rw-r--r--patches/api/0061-PlayerPickupItemEvent-setFlyAtPlayer.patch (renamed from patches/api/0060-PlayerPickupItemEvent-setFlyAtPlayer.patch)0
-rw-r--r--patches/api/0062-Shoulder-Entities-Release-API.patch (renamed from patches/api/0061-Shoulder-Entities-Release-API.patch)0
-rw-r--r--patches/api/0063-Entity-fromMobSpawner.patch (renamed from patches/api/0062-Entity-fromMobSpawner.patch)0
-rw-r--r--patches/api/0064-Profile-Lookup-Events.patch (renamed from patches/api/0063-Profile-Lookup-Events.patch)0
-rw-r--r--patches/api/0065-Improve-the-Saddle-API-for-Horses.patch (renamed from patches/api/0064-Improve-the-Saddle-API-for-Horses.patch)0
-rw-r--r--patches/api/0066-Add-getI18NDisplayName-API.patch (renamed from patches/api/0065-Add-getI18NDisplayName-API.patch)0
-rw-r--r--patches/api/0067-ensureServerConversions-API.patch (renamed from patches/api/0066-ensureServerConversions-API.patch)0
-rw-r--r--patches/api/0068-LivingEntity-setKiller.patch (renamed from patches/api/0067-LivingEntity-setKiller.patch)0
-rw-r--r--patches/api/0069-ProfileWhitelistVerifyEvent.patch (renamed from patches/api/0068-ProfileWhitelistVerifyEvent.patch)0
-rw-r--r--patches/api/0070-Allow-plugins-to-use-SLF4J-for-logging.patch (renamed from patches/api/0069-Allow-plugins-to-use-SLF4J-for-logging.patch)6
-rw-r--r--patches/api/0071-Handle-plugin-prefixes-in-implementation-logging-con.patch (renamed from patches/api/0070-Handle-plugin-prefixes-in-implementation-logging-con.patch)0
-rw-r--r--patches/api/0072-Add-PlayerJumpEvent.patch (renamed from patches/api/0071-Add-PlayerJumpEvent.patch)0
-rw-r--r--patches/api/0073-Add-workaround-for-plugins-modifying-the-parent-of-t.patch (renamed from patches/api/0072-Add-workaround-for-plugins-modifying-the-parent-of-t.patch)0
-rw-r--r--patches/api/0074-Add-PlayerArmorChangeEvent.patch (renamed from patches/api/0073-Add-PlayerArmorChangeEvent.patch)0
-rw-r--r--patches/api/0075-API-to-get-a-BlockState-without-a-snapshot.patch (renamed from patches/api/0074-API-to-get-a-BlockState-without-a-snapshot.patch)0
-rw-r--r--patches/api/0076-AsyncTabCompleteEvent.patch (renamed from patches/api/0075-AsyncTabCompleteEvent.patch)0
-rw-r--r--patches/api/0077-Expose-client-protocol-version-and-virtual-host.patch (renamed from patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch)0
-rw-r--r--patches/api/0078-Display-warning-on-deprecated-recipe-API.patch (renamed from patches/api/0077-Display-warning-on-deprecated-recipe-API.patch)0
-rw-r--r--patches/api/0079-PlayerPickupExperienceEvent.patch (renamed from patches/api/0078-PlayerPickupExperienceEvent.patch)0
-rw-r--r--patches/api/0080-ExperienceOrbMergeEvent.patch (renamed from patches/api/0079-ExperienceOrbMergeEvent.patch)0
-rw-r--r--patches/api/0081-Ability-to-apply-mending-to-XP-API.patch (renamed from patches/api/0080-Ability-to-apply-mending-to-XP-API.patch)0
-rw-r--r--patches/api/0082-PreCreatureSpawnEvent.patch (renamed from patches/api/0081-PreCreatureSpawnEvent.patch)0
-rw-r--r--patches/api/0083-PlayerNaturallySpawnCreaturesEvent.patch (renamed from patches/api/0082-PlayerNaturallySpawnCreaturesEvent.patch)0
-rw-r--r--patches/api/0084-Add-setPlayerProfile-API-for-Skulls.patch (renamed from patches/api/0083-Add-setPlayerProfile-API-for-Skulls.patch)0
-rw-r--r--patches/api/0086-Fill-Profile-Property-Events.patch (renamed from patches/api/0084-Fill-Profile-Property-Events.patch)0
-rw-r--r--patches/api/0087-Add-ArmorStand-Item-Meta.patch (renamed from patches/api/0086-Add-ArmorStand-Item-Meta.patch)0
-rw-r--r--patches/api/0088-Optimize-Hoppers.patch (renamed from patches/api/0087-Optimize-Hoppers.patch)0
-rw-r--r--patches/api/0089-Tameable-getOwnerUniqueId-API.patch (renamed from patches/api/0088-Tameable-getOwnerUniqueId-API.patch)0
-rw-r--r--patches/api/0090-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch (renamed from patches/api/0089-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch)0
-rw-r--r--patches/api/0091-Add-extended-PaperServerListPingEvent.patch (renamed from patches/api/0090-Add-extended-PaperServerListPingEvent.patch)0
-rw-r--r--patches/api/0092-Player.setPlayerProfile-API.patch (renamed from patches/api/0091-Player.setPlayerProfile-API.patch)0
-rw-r--r--patches/api/0093-getPlayerUniqueId-API.patch (renamed from patches/api/0092-getPlayerUniqueId-API.patch)0
-rw-r--r--patches/api/0094-Add-legacy-ping-support-to-PaperServerListPingEvent.patch (renamed from patches/api/0093-Add-legacy-ping-support-to-PaperServerListPingEvent.patch)0
-rw-r--r--patches/api/0095-Add-openSign-method-to-HumanEntity.patch (renamed from patches/api/0094-Add-openSign-method-to-HumanEntity.patch)0
-rw-r--r--patches/api/0096-Add-Ban-Methods-to-Player-Objects.patch (renamed from patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch)0
-rw-r--r--patches/api/0097-EndermanEscapeEvent.patch (renamed from patches/api/0096-EndermanEscapeEvent.patch)0
-rw-r--r--patches/api/0098-Enderman.teleportRandomly.patch (renamed from patches/api/0097-Enderman.teleportRandomly.patch)0
-rw-r--r--patches/api/0099-Additional-world.getNearbyEntities-API-s.patch (renamed from patches/api/0098-Additional-world.getNearbyEntities-API-s.patch)0
-rw-r--r--patches/api/0100-Location.isChunkLoaded-API.patch (renamed from patches/api/0099-Location.isChunkLoaded-API.patch)0
-rw-r--r--patches/api/0101-Expand-World.spawnParticle-API-and-add-Builder.patch (renamed from patches/api/0100-Expand-World.spawnParticle-API-and-add-Builder.patch)0
-rw-r--r--patches/api/0102-EndermanAttackPlayerEvent.patch (renamed from patches/api/0101-EndermanAttackPlayerEvent.patch)0
-rw-r--r--patches/api/0103-WitchConsumePotionEvent.patch (renamed from patches/api/0102-WitchConsumePotionEvent.patch)0
-rw-r--r--patches/api/0104-WitchThrowPotionEvent.patch (renamed from patches/api/0103-WitchThrowPotionEvent.patch)0
-rw-r--r--patches/api/0105-Location.toBlockLocation-toCenterLocation.patch (renamed from patches/api/0104-Location.toBlockLocation-toCenterLocation.patch)0
-rw-r--r--patches/api/0106-PotionEffect-clone-methods.patch (renamed from patches/api/0105-PotionEffect-clone-methods.patch)0
-rw-r--r--patches/api/0107-WitchReadyPotionEvent.patch (renamed from patches/api/0106-WitchReadyPotionEvent.patch)0
-rw-r--r--patches/api/0108-ItemStack-getMaxItemUseDuration.patch (renamed from patches/api/0107-ItemStack-getMaxItemUseDuration.patch)0
-rw-r--r--patches/api/0109-Add-EntityTeleportEndGatewayEvent.patch (renamed from patches/api/0108-Add-EntityTeleportEndGatewayEvent.patch)0
-rw-r--r--patches/api/0110-Make-shield-blocking-delay-configurable.patch (renamed from patches/api/0109-Make-shield-blocking-delay-configurable.patch)0
-rw-r--r--patches/api/0111-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch (renamed from patches/api/0110-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch)0
-rw-r--r--patches/api/0112-Add-getNearbyXXX-methods-to-Location.patch (renamed from patches/api/0111-Add-getNearbyXXX-methods-to-Location.patch)0
-rw-r--r--patches/api/0113-PlayerReadyArrowEvent.patch (renamed from patches/api/0112-PlayerReadyArrowEvent.patch)0
-rw-r--r--patches/api/0114-Add-EntityKnockbackByEntityEvent-and-EntityPushedByE.patch (renamed from patches/api/0113-Add-EntityKnockbackByEntityEvent-and-EntityPushedByE.patch)0
-rw-r--r--patches/api/0115-Expand-Explosions-API.patch (renamed from patches/api/0114-Expand-Explosions-API.patch)0
-rw-r--r--patches/api/0116-ItemStack-API-additions-for-quantity-flags-lore.patch (renamed from patches/api/0115-ItemStack-API-additions-for-quantity-flags-lore.patch)0
-rw-r--r--patches/api/0117-LivingEntity-Hand-Raised-Item-Use-API.patch (renamed from patches/api/0116-LivingEntity-Hand-Raised-Item-Use-API.patch)0
-rw-r--r--patches/api/0118-RangedEntity-API.patch (renamed from patches/api/0117-RangedEntity-API.patch)0
-rw-r--r--patches/api/0119-Add-World.getEntity-UUID-API.patch (renamed from patches/api/0118-Add-World.getEntity-UUID-API.patch)0
-rw-r--r--patches/api/0120-InventoryCloseEvent-Reason-API.patch (renamed from patches/api/0119-InventoryCloseEvent-Reason-API.patch)0
-rw-r--r--patches/api/0121-Allow-setting-the-vex-s-summoner.patch (renamed from patches/api/0120-Allow-setting-the-vex-s-summoner.patch)0
-rw-r--r--patches/api/0122-Entity-getChunk-API.patch (renamed from patches/api/0121-Entity-getChunk-API.patch)0
-rw-r--r--patches/api/0123-EnderDragon-Events.patch (renamed from patches/api/0122-EnderDragon-Events.patch)0
-rw-r--r--patches/api/0124-PlayerElytraBoostEvent.patch (renamed from patches/api/0123-PlayerElytraBoostEvent.patch)0
-rw-r--r--patches/api/0125-PlayerLaunchProjectileEvent.patch (renamed from patches/api/0124-PlayerLaunchProjectileEvent.patch)0
-rw-r--r--patches/api/0126-EntityTransformedEvent.patch (renamed from patches/api/0125-EntityTransformedEvent.patch)0
-rw-r--r--patches/api/0127-Allow-disabling-armour-stand-ticking.patch (renamed from patches/api/0126-Allow-disabling-armour-stand-ticking.patch)0
-rw-r--r--patches/api/0128-SkeletonHorse-Additions.patch (renamed from patches/api/0127-SkeletonHorse-Additions.patch)0
-rw-r--r--patches/api/0129-Expand-Location-Manipulation-API.patch (renamed from patches/api/0128-Expand-Location-Manipulation-API.patch)0
-rw-r--r--patches/api/0130-Expand-ArmorStand-API.patch (renamed from patches/api/0129-Expand-ArmorStand-API.patch)0
-rw-r--r--patches/api/0131-AnvilDamageEvent.patch (renamed from patches/api/0130-AnvilDamageEvent.patch)0
-rw-r--r--patches/api/0132-Add-TNTPrimeEvent.patch (renamed from patches/api/0131-Add-TNTPrimeEvent.patch)0
-rw-r--r--patches/api/0133-Provide-Chunk-Coordinates-as-a-Long-API.patch (renamed from patches/api/0132-Provide-Chunk-Coordinates-as-a-Long-API.patch)0
-rw-r--r--patches/api/0134-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch (renamed from patches/api/0133-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch)0
-rw-r--r--patches/api/0135-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch (renamed from patches/api/0134-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch)0
-rw-r--r--patches/api/0136-Allow-Blocks-to-be-accessed-via-a-long-key.patch (renamed from patches/api/0135-Allow-Blocks-to-be-accessed-via-a-long-key.patch)0
-rw-r--r--patches/api/0137-Slime-Pathfinder-Events.patch (renamed from patches/api/0136-Slime-Pathfinder-Events.patch)0
-rw-r--r--patches/api/0138-Add-PhantomPreSpawnEvent.patch (renamed from patches/api/0137-Add-PhantomPreSpawnEvent.patch)0
-rw-r--r--patches/api/0139-Add-More-Creeper-API.patch (renamed from patches/api/0138-Add-More-Creeper-API.patch)0
-rw-r--r--patches/api/0140-Inventory-removeItemAnySlot.patch (renamed from patches/api/0139-Inventory-removeItemAnySlot.patch)0
-rw-r--r--patches/api/0141-isChunkGenerated-API.patch (renamed from patches/api/0140-isChunkGenerated-API.patch)0
-rw-r--r--patches/api/0142-Add-source-block-constructor-and-getChangedBlockData.patch (renamed from patches/api/0141-Add-source-block-constructor-and-getChangedBlockData.patch)0
-rw-r--r--patches/api/0143-Async-Chunks-API.patch (renamed from patches/api/0142-Async-Chunks-API.patch)0
-rw-r--r--patches/api/0144-Add-ray-tracing-methods-to-LivingEntity.patch (renamed from patches/api/0143-Add-ray-tracing-methods-to-LivingEntity.patch)0
-rw-r--r--patches/api/0145-Expose-attack-cooldown-methods-for-Player.patch (renamed from patches/api/0144-Expose-attack-cooldown-methods-for-Player.patch)0
-rw-r--r--patches/api/0146-Improve-death-events.patch (renamed from patches/api/0145-Improve-death-events.patch)0
-rw-r--r--patches/api/0147-Add-Git-information-to-version-command-on-startup.patch (renamed from patches/api/0146-Add-Git-information-to-version-command-on-startup.patch)0
-rw-r--r--patches/api/0148-Mob-Pathfinding-API.patch (renamed from patches/api/0147-Mob-Pathfinding-API.patch)0
-rw-r--r--patches/api/0149-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch (renamed from patches/api/0148-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch)0
-rw-r--r--patches/api/0150-Performance-Concurrency-Improvements-to-Permissions.patch (renamed from patches/api/0149-Performance-Concurrency-Improvements-to-Permissions.patch)0
-rw-r--r--patches/api/0151-Add-ItemStackRecipeChoice-Draft-API.patch (renamed from patches/api/0150-Add-ItemStackRecipeChoice-Draft-API.patch)0
-rw-r--r--patches/api/0152-Implement-furnace-cook-speed-multiplier-API.patch (renamed from patches/api/0151-Implement-furnace-cook-speed-multiplier-API.patch)0
-rw-r--r--patches/api/0153-Material-API-additions.patch (renamed from patches/api/0152-Material-API-additions.patch)0
-rw-r--r--patches/api/0154-Add-Material-Tags.patch (renamed from patches/api/0153-Add-Material-Tags.patch)0
-rw-r--r--patches/api/0155-PreSpawnerSpawnEvent.patch (renamed from patches/api/0154-PreSpawnerSpawnEvent.patch)0
-rw-r--r--patches/api/0156-Add-LivingEntity-getTargetEntity.patch (renamed from patches/api/0155-Add-LivingEntity-getTargetEntity.patch)0
-rw-r--r--patches/api/0157-Add-sun-related-API.patch (renamed from patches/api/0156-Add-sun-related-API.patch)0
-rw-r--r--patches/api/0158-Turtle-API.patch (renamed from patches/api/0157-Turtle-API.patch)0
-rw-r--r--patches/api/0159-Add-spectator-target-events.patch (renamed from patches/api/0158-Add-spectator-target-events.patch)0
-rw-r--r--patches/api/0160-Add-more-Witch-API.patch (renamed from patches/api/0159-Add-more-Witch-API.patch)0
-rw-r--r--patches/api/0161-Make-the-default-permission-message-configurable.patch (renamed from patches/api/0160-Make-the-default-permission-message-configurable.patch)0
-rw-r--r--patches/api/0162-Support-cancellation-supression-of-EntityDismount-Ve.patch (renamed from patches/api/0161-Support-cancellation-supression-of-EntityDismount-Ve.patch)0
-rw-r--r--patches/api/0163-Add-more-Zombie-API.patch (renamed from patches/api/0162-Add-more-Zombie-API.patch)0
-rw-r--r--patches/api/0164-Change-the-reserved-channel-check-to-be-sensible.patch (renamed from patches/api/0163-Change-the-reserved-channel-check-to-be-sensible.patch)0
-rw-r--r--patches/api/0165-Add-PlayerConnectionCloseEvent.patch (renamed from patches/api/0164-Add-PlayerConnectionCloseEvent.patch)0
-rw-r--r--patches/api/0166-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch (renamed from patches/api/0165-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch)0
-rw-r--r--patches/api/0167-Add-ItemStack-Recipe-API-helper-methods.patch (renamed from patches/api/0166-Add-ItemStack-Recipe-API-helper-methods.patch)0
-rw-r--r--patches/api/0168-BlockDestroyEvent.patch (renamed from patches/api/0167-BlockDestroyEvent.patch)0
-rw-r--r--patches/api/0169-Add-WhitelistToggleEvent.patch (renamed from patches/api/0168-Add-WhitelistToggleEvent.patch)0
-rw-r--r--patches/api/0170-Add-GS4-Query-event.patch (renamed from patches/api/0169-Add-GS4-Query-event.patch)0
-rw-r--r--patches/api/0171-Add-PlayerPostRespawnEvent.patch (renamed from patches/api/0170-Add-PlayerPostRespawnEvent.patch)0
-rw-r--r--patches/api/0172-Entity-getEntitySpawnReason.patch (renamed from patches/api/0171-Entity-getEntitySpawnReason.patch)0
-rw-r--r--patches/api/0173-Fix-Spigot-annotation-mistakes.patch (renamed from patches/api/0172-Fix-Spigot-annotation-mistakes.patch)0
-rw-r--r--patches/api/0174-Server-Tick-Events.patch (renamed from patches/api/0173-Server-Tick-Events.patch)0
-rw-r--r--patches/api/0175-PlayerDeathEvent-getItemsToKeep.patch (renamed from patches/api/0174-PlayerDeathEvent-getItemsToKeep.patch)0
-rw-r--r--patches/api/0176-Add-Heightmap-API.patch (renamed from patches/api/0175-Add-Heightmap-API.patch)0
-rw-r--r--patches/api/0177-Mob-Spawner-API-Enhancements.patch (renamed from patches/api/0176-Mob-Spawner-API-Enhancements.patch)0
-rw-r--r--patches/api/0178-Add-BlockSoundGroup-interface.patch (renamed from patches/api/0177-Add-BlockSoundGroup-interface.patch)0
-rw-r--r--patches/api/0179-Amend-PlayerInteractAtEntityEvent-javadoc-for-ArmorS.patch (renamed from patches/api/0178-Amend-PlayerInteractAtEntityEvent-javadoc-for-ArmorS.patch)0
-rw-r--r--patches/api/0180-Increase-custom-payload-channel-message-size.patch (renamed from patches/api/0179-Increase-custom-payload-channel-message-size.patch)0
-rw-r--r--patches/api/0181-Expose-the-internal-current-tick.patch (renamed from patches/api/0180-Expose-the-internal-current-tick.patch)0
-rw-r--r--patches/api/0182-Improve-Block-breakNaturally-API.patch (renamed from patches/api/0181-Improve-Block-breakNaturally-API.patch)0
-rw-r--r--patches/api/0183-PlayerDeathEvent-shouldDropExperience.patch (renamed from patches/api/0182-PlayerDeathEvent-shouldDropExperience.patch)0
-rw-r--r--patches/api/0184-Add-ThrownEggHatchEvent.patch (renamed from patches/api/0183-Add-ThrownEggHatchEvent.patch)0
-rw-r--r--patches/api/0185-Entity-Jump-API.patch (renamed from patches/api/0184-Entity-Jump-API.patch)0
-rw-r--r--patches/api/0186-add-hand-to-BlockMultiPlaceEvent.patch (renamed from patches/api/0185-add-hand-to-BlockMultiPlaceEvent.patch)0
-rw-r--r--patches/api/0187-Add-tick-times-API.patch (renamed from patches/api/0186-Add-tick-times-API.patch)0
-rw-r--r--patches/api/0188-Expose-MinecraftServer-isRunning.patch (renamed from patches/api/0187-Expose-MinecraftServer-isRunning.patch)0
-rw-r--r--patches/api/0189-Add-Raw-Byte-ItemStack-Serialization.patch (renamed from patches/api/0188-Add-Raw-Byte-ItemStack-Serialization.patch)0
-rw-r--r--patches/api/0190-Add-Player-Client-Options-API.patch (renamed from patches/api/0189-Add-Player-Client-Options-API.patch)0
-rw-r--r--patches/api/0191-Add-PlayerAttackEntityCooldownResetEvent.patch (renamed from patches/api/0190-Add-PlayerAttackEntityCooldownResetEvent.patch)0
-rw-r--r--patches/api/0192-Fix-Potion-toItemStack-swapping-the-extended-and-upg.patch (renamed from patches/api/0191-Fix-Potion-toItemStack-swapping-the-extended-and-upg.patch)0
-rw-r--r--patches/api/0193-Add-item-slot-convenience-methods.patch (renamed from patches/api/0192-Add-item-slot-convenience-methods.patch)0
-rw-r--r--patches/api/0194-Villager-Restocks-API.patch (renamed from patches/api/0193-Villager-Restocks-API.patch)0
-rw-r--r--patches/api/0195-Expose-game-version.patch (renamed from patches/api/0194-Expose-game-version.patch)0
-rw-r--r--patches/api/0196-Add-Mob-Goal-API.patch (renamed from patches/api/0195-Add-Mob-Goal-API.patch)0
-rw-r--r--patches/api/0197-Add-villager-reputation-API.patch (renamed from patches/api/0196-Add-villager-reputation-API.patch)0
-rw-r--r--patches/api/0198-Spawn-Reason-API.patch (renamed from patches/api/0197-Spawn-Reason-API.patch)0
-rw-r--r--patches/api/0199-Potential-bed-API.patch (renamed from patches/api/0198-Potential-bed-API.patch)0
-rw-r--r--patches/api/0200-Inventory-getHolder-method-without-block-snapshot.patch (renamed from patches/api/0199-Inventory-getHolder-method-without-block-snapshot.patch)0
-rw-r--r--patches/api/0201-Improve-Arrow-API.patch (renamed from patches/api/0200-Improve-Arrow-API.patch)0
-rw-r--r--patches/api/0202-Add-and-implement-PlayerRecipeBookClickEvent.patch (renamed from patches/api/0201-Add-and-implement-PlayerRecipeBookClickEvent.patch)0
-rw-r--r--patches/api/0203-Support-components-in-ItemMeta.patch (renamed from patches/api/0202-Support-components-in-ItemMeta.patch)0
-rw-r--r--patches/api/0204-added-2-new-TargetReasons-for-1.16-mob-behavior.patch (renamed from patches/api/0203-added-2-new-TargetReasons-for-1.16-mob-behavior.patch)0
-rw-r--r--patches/api/0205-Add-entity-liquid-API.patch (renamed from patches/api/0204-Add-entity-liquid-API.patch)0
-rw-r--r--patches/api/0206-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch (renamed from patches/api/0205-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch)0
-rw-r--r--patches/api/0208-Brand-support.patch (renamed from patches/api/0206-Brand-support.patch)0
-rw-r--r--patches/api/0209-Add-moon-phase-API.patch (renamed from patches/api/0208-Add-moon-phase-API.patch)0
-rw-r--r--patches/api/0210-Add-playPickupItemAnimation-to-LivingEntity.patch (renamed from patches/api/0209-Add-playPickupItemAnimation-to-LivingEntity.patch)0
-rw-r--r--patches/api/0211-Add-more-Evoker-API.patch (renamed from patches/api/0210-Add-more-Evoker-API.patch)0
-rw-r--r--patches/api/0212-Add-methods-to-get-translation-keys.patch (renamed from patches/api/0211-Add-methods-to-get-translation-keys.patch)0
-rw-r--r--patches/api/0213-Create-HoverEvent-from-ItemStack-Entity.patch (renamed from patches/api/0212-Create-HoverEvent-from-ItemStack-Entity.patch)0
-rw-r--r--patches/api/0214-Add-additional-open-container-api-to-HumanEntity.patch (renamed from patches/api/0213-Add-additional-open-container-api-to-HumanEntity.patch)0
-rw-r--r--patches/api/0215-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch (renamed from patches/api/0214-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch)0
-rw-r--r--patches/api/0216-Entity-isTicking.patch (renamed from patches/api/0215-Entity-isTicking.patch)0
-rw-r--r--patches/api/0217-Villager-resetOffers.patch (renamed from patches/api/0216-Villager-resetOffers.patch)0
-rw-r--r--patches/api/0218-Player-elytra-boost-API.patch (renamed from patches/api/0217-Player-elytra-boost-API.patch)0
-rw-r--r--patches/api/0219-Add-getOfflinePlayerIfCached-String.patch (renamed from patches/api/0218-Add-getOfflinePlayerIfCached-String.patch)0
-rw-r--r--patches/api/0220-Add-ignore-discounts-API.patch (renamed from patches/api/0219-Add-ignore-discounts-API.patch)0
-rw-r--r--patches/api/0221-Item-no-age-no-player-pickup.patch (renamed from patches/api/0220-Item-no-age-no-player-pickup.patch)0
-rw-r--r--patches/api/0222-Beacon-API-custom-effect-ranges.patch (renamed from patches/api/0221-Beacon-API-custom-effect-ranges.patch)0
-rw-r--r--patches/api/0223-Add-API-for-quit-reason.patch (renamed from patches/api/0222-Add-API-for-quit-reason.patch)0
-rw-r--r--patches/api/0224-Add-Destroy-Speed-API.patch (renamed from patches/api/0223-Add-Destroy-Speed-API.patch)0
-rw-r--r--patches/api/0225-Add-LivingEntity-clearActiveItem.patch (renamed from patches/api/0224-Add-LivingEntity-clearActiveItem.patch)0
-rw-r--r--patches/api/0226-Add-PlayerItemCooldownEvent.patch (renamed from patches/api/0225-Add-PlayerItemCooldownEvent.patch)0
-rw-r--r--patches/api/0227-More-lightning-API.patch (renamed from patches/api/0226-More-lightning-API.patch)0
-rw-r--r--patches/api/0228-Add-PlayerShearBlockEvent.patch (renamed from patches/api/0227-Add-PlayerShearBlockEvent.patch)0
-rw-r--r--patches/api/0229-Player-Chunk-Load-Unload-Events.patch (renamed from patches/api/0228-Player-Chunk-Load-Unload-Events.patch)0
-rw-r--r--patches/api/0230-Expose-LivingEntity-hurt-direction.patch (renamed from patches/api/0229-Expose-LivingEntity-hurt-direction.patch)0
-rw-r--r--patches/api/0231-Add-OBSTRUCTED-reason-to-BedEnterResult.patch (renamed from patches/api/0230-Add-OBSTRUCTED-reason-to-BedEnterResult.patch)0
-rw-r--r--patches/api/0232-Added-PlayerTradeEvent.patch (renamed from patches/api/0231-Added-PlayerTradeEvent.patch)0
-rw-r--r--patches/api/0233-Add-TargetHitEvent-API.patch (renamed from patches/api/0232-Add-TargetHitEvent-API.patch)0
-rw-r--r--patches/api/0234-Additional-Block-Material-API-s.patch (renamed from patches/api/0233-Additional-Block-Material-API-s.patch)0
-rw-r--r--patches/api/0235-Add-API-to-get-Material-from-Boats-and-Minecarts.patch (renamed from patches/api/0234-Add-API-to-get-Material-from-Boats-and-Minecarts.patch)0
-rw-r--r--patches/api/0236-Add-PlayerFlowerPotManipulateEvent.patch (renamed from patches/api/0235-Add-PlayerFlowerPotManipulateEvent.patch)0
-rw-r--r--patches/api/0237-Zombie-API-breaking-doors.patch (renamed from patches/api/0236-Zombie-API-breaking-doors.patch)0
-rw-r--r--patches/api/0238-Add-EntityLoadCrossbowEvent.patch (renamed from patches/api/0237-Add-EntityLoadCrossbowEvent.patch)0
-rw-r--r--patches/api/0239-Added-WorldGameRuleChangeEvent.patch (renamed from patches/api/0238-Added-WorldGameRuleChangeEvent.patch)0
-rw-r--r--patches/api/0240-Added-ServerResourcesReloadedEvent.patch (renamed from patches/api/0239-Added-ServerResourcesReloadedEvent.patch)0
-rw-r--r--patches/api/0241-Add-BlockFailedDispenseEvent.patch (renamed from patches/api/0240-Add-BlockFailedDispenseEvent.patch)0
-rw-r--r--patches/api/0242-Added-PlayerLecternPageChangeEvent.patch (renamed from patches/api/0241-Added-PlayerLecternPageChangeEvent.patch)0
-rw-r--r--patches/api/0243-Added-PlayerLoomPatternSelectEvent.patch (renamed from patches/api/0242-Added-PlayerLoomPatternSelectEvent.patch)0
-rw-r--r--patches/api/0244-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch (renamed from patches/api/0243-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch)0
-rw-r--r--patches/api/0245-Add-sendOpLevel-API.patch (renamed from patches/api/0244-Add-sendOpLevel-API.patch)0
-rw-r--r--patches/api/0246-Add-PaperRegistry.patch (renamed from patches/api/0245-Add-PaperRegistry.patch)0
-rw-r--r--patches/api/0247-Add-StructuresLocateEvent.patch (renamed from patches/api/0246-Add-StructuresLocateEvent.patch)0
-rw-r--r--patches/api/0248-Add-BlockPreDispenseEvent.patch (renamed from patches/api/0247-Add-BlockPreDispenseEvent.patch)0
-rw-r--r--patches/api/0249-Added-missing-vanilla-tags.patch (renamed from patches/api/0248-Added-missing-vanilla-tags.patch)0
-rw-r--r--patches/api/0250-Added-PlayerChangeBeaconEffectEvent.patch (renamed from patches/api/0249-Added-PlayerChangeBeaconEffectEvent.patch)0
-rw-r--r--patches/api/0251-Added-PlayerStonecutterRecipeSelectEvent.patch (renamed from patches/api/0250-Added-PlayerStonecutterRecipeSelectEvent.patch)0
-rw-r--r--patches/api/0252-Add-dropLeash-variable-to-EntityUnleashEvent.patch (renamed from patches/api/0251-Add-dropLeash-variable-to-EntityUnleashEvent.patch)0
-rw-r--r--patches/api/0253-add-DragonEggFormEvent.patch (renamed from patches/api/0252-add-DragonEggFormEvent.patch)0
-rw-r--r--patches/api/0254-EntityMoveEvent.patch (renamed from patches/api/0253-EntityMoveEvent.patch)0
-rw-r--r--patches/api/0255-Allow-adding-items-to-BlockDropItemEvent.patch (renamed from patches/api/0254-Allow-adding-items-to-BlockDropItemEvent.patch)0
-rw-r--r--patches/api/0256-Add-getMainThreadExecutor-to-BukkitScheduler.patch (renamed from patches/api/0255-Add-getMainThreadExecutor-to-BukkitScheduler.patch)0
-rw-r--r--patches/api/0257-living-entity-allow-attribute-registration.patch (renamed from patches/api/0256-living-entity-allow-attribute-registration.patch)0
-rw-r--r--patches/api/0258-Add-missing-effects.patch (renamed from patches/api/0257-Add-missing-effects.patch)0
-rw-r--r--patches/api/0259-Expose-Tracked-Players.patch (renamed from patches/api/0258-Expose-Tracked-Players.patch)0
-rw-r--r--patches/api/0260-Cache-the-result-of-Material-isBlock.patch (renamed from patches/api/0259-Cache-the-result-of-Material-isBlock.patch)0
-rw-r--r--patches/api/0261-Add-worldborder-events.patch (renamed from patches/api/0260-Add-worldborder-events.patch)0
-rw-r--r--patches/api/0262-added-PlayerNameEntityEvent.patch (renamed from patches/api/0261-added-PlayerNameEntityEvent.patch)0
-rw-r--r--patches/api/0263-Add-recipe-to-cook-events.patch (renamed from patches/api/0262-Add-recipe-to-cook-events.patch)0
-rw-r--r--patches/api/0264-Add-Block-isValidTool.patch (renamed from patches/api/0263-Add-Block-isValidTool.patch)0
-rw-r--r--patches/api/0265-Expand-world-key-API.patch (renamed from patches/api/0264-Expand-world-key-API.patch)0
-rw-r--r--patches/api/0266-Item-Rarity-API.patch (renamed from patches/api/0265-Item-Rarity-API.patch)0
-rw-r--r--patches/api/0267-Expose-protocol-version.patch (renamed from patches/api/0266-Expose-protocol-version.patch)0
-rw-r--r--patches/api/0268-add-isDeeplySleeping-to-HumanEntity.patch (renamed from patches/api/0267-add-isDeeplySleeping-to-HumanEntity.patch)0
-rw-r--r--patches/api/0269-add-consumeFuel-to-FurnaceBurnEvent.patch (renamed from patches/api/0268-add-consumeFuel-to-FurnaceBurnEvent.patch)0
-rw-r--r--patches/api/0270-add-get-set-drop-chance-to-EntityEquipment.patch (renamed from patches/api/0269-add-get-set-drop-chance-to-EntityEquipment.patch)0
-rw-r--r--patches/api/0271-Added-PlayerDeepSleepEvent.patch (renamed from patches/api/0270-Added-PlayerDeepSleepEvent.patch)0
-rw-r--r--patches/api/0272-More-World-API.patch (renamed from patches/api/0271-More-World-API.patch)0
-rw-r--r--patches/api/0273-Added-PlayerBedFailEnterEvent.patch (renamed from patches/api/0272-Added-PlayerBedFailEnterEvent.patch)0
-rw-r--r--patches/api/0274-Introduce-beacon-activation-deactivation-events.patch (renamed from patches/api/0273-Introduce-beacon-activation-deactivation-events.patch)0
-rw-r--r--patches/api/0275-PlayerMoveEvent-Improvements.patch (renamed from patches/api/0274-PlayerMoveEvent-Improvements.patch)0
-rw-r--r--patches/api/0276-add-RespawnFlags-to-PlayerRespawnEvent.patch (renamed from patches/api/0275-add-RespawnFlags-to-PlayerRespawnEvent.patch)0
-rw-r--r--patches/api/0277-Add-more-WanderingTrader-API.patch (renamed from patches/api/0276-Add-more-WanderingTrader-API.patch)0
-rw-r--r--patches/api/0278-Add-EntityBlockStorage-clearEntities.patch (renamed from patches/api/0277-Add-EntityBlockStorage-clearEntities.patch)0
-rw-r--r--patches/api/0279-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch (renamed from patches/api/0278-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch)0
-rw-r--r--patches/api/0280-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/api/0279-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/api/0281-Inventory-close.patch (renamed from patches/api/0280-Inventory-close.patch)0
-rw-r--r--patches/api/0282-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch (renamed from patches/api/0281-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch)0
-rw-r--r--patches/api/0283-Add-basic-Datapack-API.patch (renamed from patches/api/0282-Add-basic-Datapack-API.patch)0
-rw-r--r--patches/api/0284-additions-to-PlayerGameModeChangeEvent.patch (renamed from patches/api/0283-additions-to-PlayerGameModeChangeEvent.patch)0
-rw-r--r--patches/api/0285-ItemStack-repair-check-API.patch (renamed from patches/api/0284-ItemStack-repair-check-API.patch)0
-rw-r--r--patches/api/0286-More-Enchantment-API.patch (renamed from patches/api/0285-More-Enchantment-API.patch)0
-rw-r--r--patches/api/0287-Add-Mob-lookAt-API.patch (renamed from patches/api/0286-Add-Mob-lookAt-API.patch)0
-rw-r--r--patches/api/0288-ItemStack-editMeta.patch (renamed from patches/api/0287-ItemStack-editMeta.patch)0
-rw-r--r--patches/api/0289-Add-EntityInsideBlockEvent.patch (renamed from patches/api/0288-Add-EntityInsideBlockEvent.patch)0
-rw-r--r--patches/api/0290-Attributes-API-for-item-defaults.patch (renamed from patches/api/0289-Attributes-API-for-item-defaults.patch)0
-rw-r--r--patches/api/0291-Add-cause-to-Weather-ThunderChangeEvents.patch (renamed from patches/api/0290-Add-cause-to-Weather-ThunderChangeEvents.patch)0
-rw-r--r--patches/api/0292-More-Lidded-Block-API.patch (renamed from patches/api/0291-More-Lidded-Block-API.patch)0
-rw-r--r--patches/api/0293-Add-PlayerKickEvent-causes.patch (renamed from patches/api/0292-Add-PlayerKickEvent-causes.patch)0
-rw-r--r--patches/api/0294-Add-PufferFishStateChangeEvent.patch (renamed from patches/api/0293-Add-PufferFishStateChangeEvent.patch)0
-rw-r--r--patches/api/0295-Add-BellRevealRaiderEvent.patch (renamed from patches/api/0294-Add-BellRevealRaiderEvent.patch)0
-rw-r--r--patches/api/0296-Add-ElderGuardianAppearanceEvent.patch (renamed from patches/api/0295-Add-ElderGuardianAppearanceEvent.patch)0
-rw-r--r--patches/api/0297-Add-more-line-of-sight-methods.patch (renamed from patches/api/0296-Add-more-line-of-sight-methods.patch)0
-rw-r--r--patches/api/0298-Add-WaterBottleSplashEvent.patch (renamed from patches/api/0297-Add-WaterBottleSplashEvent.patch)0
-rw-r--r--patches/api/0299-Add-more-LimitedRegion-API.patch (renamed from patches/api/0298-Add-more-LimitedRegion-API.patch)0
-rw-r--r--patches/api/0300-Missing-Entity-API.patch (renamed from patches/api/0299-Missing-Entity-API.patch)0
-rw-r--r--patches/api/0301-Adds-PlayerArmSwingEvent.patch (renamed from patches/api/0300-Adds-PlayerArmSwingEvent.patch)0
-rw-r--r--patches/api/0302-Add-PlayerSignCommandPreprocessEvent.patch (renamed from patches/api/0301-Add-PlayerSignCommandPreprocessEvent.patch)0
-rw-r--r--patches/api/0303-fix-empty-array-elements-in-command-arguments.patch (renamed from patches/api/0302-fix-empty-array-elements-in-command-arguments.patch)0
-rw-r--r--patches/api/0304-Stinger-API.patch (renamed from patches/api/0303-Stinger-API.patch)0
-rw-r--r--patches/api/0305-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch (renamed from patches/api/0304-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch)0
-rw-r--r--patches/api/0306-Add-PlayerSetSpawnEvent.patch (renamed from patches/api/0305-Add-PlayerSetSpawnEvent.patch)0
-rw-r--r--patches/api/0307-Added-EntityDamageItemEvent.patch (renamed from patches/api/0306-Added-EntityDamageItemEvent.patch)0
-rw-r--r--patches/api/0308-Make-EntityUnleashEvent-cancellable.patch (renamed from patches/api/0307-Make-EntityUnleashEvent-cancellable.patch)0
-rw-r--r--patches/api/0309-Change-EnderEye-target-without-changing-other-things.patch (renamed from patches/api/0308-Change-EnderEye-target-without-changing-other-things.patch)0
-rw-r--r--patches/api/0310-Add-BlockBreakBlockEvent.patch (renamed from patches/api/0309-Add-BlockBreakBlockEvent.patch)0
-rw-r--r--patches/api/0311-Add-helpers-for-left-right-click-to-Action.patch (renamed from patches/api/0310-Add-helpers-for-left-right-click-to-Action.patch)0
-rw-r--r--patches/api/0312-Option-to-prevent-NBT-copy-in-smithing-recipes.patch (renamed from patches/api/0311-Option-to-prevent-NBT-copy-in-smithing-recipes.patch)0
-rw-r--r--patches/api/0313-More-CommandBlock-API.patch (renamed from patches/api/0312-More-CommandBlock-API.patch)0
-rw-r--r--patches/api/0314-Add-missing-team-sidebar-display-slots.patch (renamed from patches/api/0313-Add-missing-team-sidebar-display-slots.patch)0
-rw-r--r--patches/api/0315-add-back-EntityPortalExitEvent.patch (renamed from patches/api/0314-add-back-EntityPortalExitEvent.patch)0
-rw-r--r--patches/api/0316-Add-methods-to-find-targets-for-lightning-strikes.patch (renamed from patches/api/0315-Add-methods-to-find-targets-for-lightning-strikes.patch)0
-rw-r--r--patches/api/0317-Get-entity-default-attributes.patch (renamed from patches/api/0316-Get-entity-default-attributes.patch)0
-rw-r--r--patches/api/0318-Left-handed-API.patch (renamed from patches/api/0317-Left-handed-API.patch)0
-rw-r--r--patches/api/0320-Add-more-advancement-API.patch (renamed from patches/api/0318-Add-more-advancement-API.patch)0
-rw-r--r--patches/api/0321-Fix-issues-with-mob-conversion.patch (renamed from patches/api/0320-Fix-issues-with-mob-conversion.patch)0
-rw-r--r--patches/api/0322-Add-isCollidable-methods-to-various-places.patch (renamed from patches/api/0321-Add-isCollidable-methods-to-various-places.patch)0
-rw-r--r--patches/api/0323-Goat-ram-API.patch (renamed from patches/api/0322-Goat-ram-API.patch)0
-rw-r--r--patches/api/0324-Add-API-for-resetting-a-single-score.patch (renamed from patches/api/0323-Add-API-for-resetting-a-single-score.patch)0
-rw-r--r--patches/api/0325-Add-Raw-Byte-Entity-Serialization.patch (renamed from patches/api/0324-Add-Raw-Byte-Entity-Serialization.patch)0
-rw-r--r--patches/api/0326-Add-PlayerItemFrameChangeEvent.patch (renamed from patches/api/0325-Add-PlayerItemFrameChangeEvent.patch)0
-rw-r--r--patches/api/0327-Allow-delegation-to-vanilla-chunk-gen.patch (renamed from patches/api/0326-Allow-delegation-to-vanilla-chunk-gen.patch)0
-rw-r--r--patches/api/0328-Add-more-Campfire-API.patch (renamed from patches/api/0327-Add-more-Campfire-API.patch)0
-rw-r--r--patches/api/0329-Move-VehicleCollisionEvent-HandlerList-up.patch (renamed from patches/api/0328-Move-VehicleCollisionEvent-HandlerList-up.patch)0
-rw-r--r--patches/api/0330-Improve-scoreboard-entries.patch (renamed from patches/api/0329-Improve-scoreboard-entries.patch)0
-rw-r--r--patches/api/0331-Entity-powdered-snow-API.patch (renamed from patches/api/0330-Entity-powdered-snow-API.patch)0
-rw-r--r--patches/api/0332-Add-API-for-item-entity-health.patch (renamed from patches/api/0331-Add-API-for-item-entity-health.patch)0
-rw-r--r--patches/api/0333-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch (renamed from patches/api/0332-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch)0
-rw-r--r--patches/api/0334-Bucketable-API.patch (renamed from patches/api/0333-Bucketable-API.patch)0
-rw-r--r--patches/api/0335-System-prop-for-default-config-comment-parsing.patch (renamed from patches/api/0334-System-prop-for-default-config-comment-parsing.patch)0
-rw-r--r--patches/api/0336-Expose-vanilla-BiomeProvider-from-WorldInfo.patch (renamed from patches/api/0335-Expose-vanilla-BiomeProvider-from-WorldInfo.patch)0
-rw-r--r--patches/api/0337-Add-new-overload-to-PersistentDataContainer-has.patch (renamed from patches/api/0336-Add-new-overload-to-PersistentDataContainer-has.patch)0
-rw-r--r--patches/api/0338-Multiple-Entries-with-Scoreboards.patch (renamed from patches/api/0337-Multiple-Entries-with-Scoreboards.patch)0
-rw-r--r--patches/api/0339-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/api/0338-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/api/0340-Warn-on-strange-EventHandler-return-types.patch (renamed from patches/api/0339-Warn-on-strange-EventHandler-return-types.patch)0
-rw-r--r--patches/api/0341-Multi-Block-Change-API.patch (renamed from patches/api/0340-Multi-Block-Change-API.patch)0
-rw-r--r--patches/api/0342-Fix-NotePlayEvent.patch (renamed from patches/api/0341-Fix-NotePlayEvent.patch)0
-rw-r--r--patches/api/0343-Freeze-Tick-Lock-API.patch (renamed from patches/api/0342-Freeze-Tick-Lock-API.patch)0
-rw-r--r--patches/api/0344-Dolphin-API.patch (renamed from patches/api/0343-Dolphin-API.patch)0
-rw-r--r--patches/api/0345-More-PotionEffectType-API.patch (renamed from patches/api/0344-More-PotionEffectType-API.patch)0
-rw-r--r--patches/api/0346-API-for-creating-command-sender-which-forwards-feedb.patch (renamed from patches/api/0345-API-for-creating-command-sender-which-forwards-feedb.patch)0
-rw-r--r--patches/api/0347-Implement-regenerateChunk.patch (renamed from patches/api/0346-Implement-regenerateChunk.patch)0
-rw-r--r--patches/api/0348-Add-GameEvent-tags.patch (renamed from patches/api/0347-Add-GameEvent-tags.patch)0
-rw-r--r--patches/api/0349-Furnace-RecipesUsed-API.patch (renamed from patches/api/0348-Furnace-RecipesUsed-API.patch)0
-rw-r--r--patches/api/0350-Configurable-sculk-sensor-listener-range.patch (renamed from patches/api/0349-Configurable-sculk-sensor-listener-range.patch)0
-rw-r--r--patches/api/0351-Add-missing-block-data-mins-and-maxes.patch (renamed from patches/api/0350-Add-missing-block-data-mins-and-maxes.patch)0
-rw-r--r--patches/api/0352-Custom-Potion-Mixes.patch (renamed from patches/api/0351-Custom-Potion-Mixes.patch)0
-rw-r--r--patches/api/0353-Expose-furnace-minecart-push-values.patch (renamed from patches/api/0352-Expose-furnace-minecart-push-values.patch)0
-rw-r--r--patches/api/0354-More-Projectile-API.patch (renamed from patches/api/0353-More-Projectile-API.patch)0
-rw-r--r--patches/api/0355-Add-getComputedBiome-API.patch (renamed from patches/api/0354-Add-getComputedBiome-API.patch)0
-rw-r--r--patches/api/0356-Add-enchantWithLevels-API.patch (renamed from patches/api/0355-Add-enchantWithLevels-API.patch)0
-rw-r--r--patches/api/0357-Add-TameableDeathMessageEvent.patch (renamed from patches/api/0356-Add-TameableDeathMessageEvent.patch)0
-rw-r--r--patches/api/0358-Allow-to-change-the-podium-of-the-EnderDragon.patch (renamed from patches/api/0357-Allow-to-change-the-podium-of-the-EnderDragon.patch)0
-rw-r--r--patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch (renamed from patches/api/0358-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch)0
-rw-r--r--patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch (renamed from patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch)0
-rw-r--r--patches/api/0361-WorldCreator-keepSpawnLoaded.patch (renamed from patches/api/0360-WorldCreator-keepSpawnLoaded.patch)0
-rw-r--r--patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch (renamed from patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch)0
-rw-r--r--patches/api/0363-Add-PlayerStopUsingItemEvent.patch (renamed from patches/api/0362-Add-PlayerStopUsingItemEvent.patch)0
-rw-r--r--patches/api/0364-Expand-FallingBlock-API.patch (renamed from patches/api/0363-Expand-FallingBlock-API.patch)2
-rw-r--r--patches/api/0365-Keyed-Cat-Type.patch (renamed from patches/api/0364-Keyed-Cat-Type.patch)0
-rw-r--r--patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch (renamed from patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch)0
-rw-r--r--patches/api/0367-Add-WardenAngerChangeEvent.patch (renamed from patches/api/0366-Add-WardenAngerChangeEvent.patch)0
-rw-r--r--patches/api/0368-Nameable-Banner-API.patch (renamed from patches/api/0367-Nameable-Banner-API.patch)0
-rw-r--r--patches/api/0369-Add-Player-getFishHook.patch (renamed from patches/api/0368-Add-Player-getFishHook.patch)0
-rw-r--r--patches/api/0370-More-Teleport-API.patch (renamed from patches/api/0369-More-Teleport-API.patch)0
-rw-r--r--patches/api/0371-Add-EntityPortalReadyEvent.patch (renamed from patches/api/0370-Add-EntityPortalReadyEvent.patch)0
-rw-r--r--patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch (renamed from patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch)0
-rw-r--r--patches/api/0373-Collision-API.patch (renamed from patches/api/0372-Collision-API.patch)0
-rw-r--r--patches/api/0374-Block-Ticking-API.patch (renamed from patches/api/0373-Block-Ticking-API.patch)0
-rw-r--r--patches/api/0375-Add-NamespacedKey-biome-methods.patch (renamed from patches/api/0374-Add-NamespacedKey-biome-methods.patch)0
-rw-r--r--patches/api/0376-Also-load-resources-from-LibraryLoader.patch (renamed from patches/api/0375-Also-load-resources-from-LibraryLoader.patch)0
-rw-r--r--patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch (renamed from patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch)0
-rw-r--r--patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch (renamed from patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch)0
-rw-r--r--patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch (renamed from patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch)0
-rw-r--r--patches/api/0380-Add-getDrops-to-BlockState.patch (renamed from patches/api/0379-Add-getDrops-to-BlockState.patch)0
-rw-r--r--patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch (renamed from patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch)0
-rw-r--r--patches/api/0382-Elder-Guardian-appearance-API.patch (renamed from patches/api/0381-Elder-Guardian-appearance-API.patch)0
-rw-r--r--patches/api/0383-Allow-changing-bed-s-occupied-property.patch (renamed from patches/api/0382-Allow-changing-bed-s-occupied-property.patch)0
-rw-r--r--patches/api/0384-Add-EquipmentSlot-convenience-methods.patch (renamed from patches/api/0383-Add-EquipmentSlot-convenience-methods.patch)0
-rw-r--r--patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch (renamed from patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch)0
-rw-r--r--patches/api/0386-Add-entity-knockback-API.patch (renamed from patches/api/0385-Add-entity-knockback-API.patch)0
-rw-r--r--patches/api/0387-Added-EntityToggleSitEvent.patch (renamed from patches/api/0386-Added-EntityToggleSitEvent.patch)0
-rw-r--r--patches/api/0388-Add-Moving-Piston-API.patch (renamed from patches/api/0387-Add-Moving-Piston-API.patch)0
-rw-r--r--patches/api/0389-Add-PrePlayerAttackEntityEvent.patch (renamed from patches/api/0388-Add-PrePlayerAttackEntityEvent.patch)0
-rw-r--r--patches/api/0390-Add-Player-Warden-Warning-API.patch (renamed from patches/api/0389-Add-Player-Warden-Warning-API.patch)0
-rw-r--r--patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch (renamed from patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch)0
-rw-r--r--patches/api/0392-Add-paper-dumplisteners-command.patch (renamed from patches/api/0391-Add-paper-dumplisteners-command.patch)0
-rw-r--r--patches/api/0393-ItemStack-damage-API.patch (renamed from patches/api/0392-ItemStack-damage-API.patch)0
-rw-r--r--patches/api/0394-Add-Tick-TemporalUnit.patch (renamed from patches/api/0393-Add-Tick-TemporalUnit.patch)0
-rw-r--r--patches/api/0395-Friction-API.patch (renamed from patches/api/0394-Friction-API.patch)0
-rw-r--r--patches/api/0396-Player-Entity-Tracking-Events.patch (renamed from patches/api/0395-Player-Entity-Tracking-Events.patch)0
-rw-r--r--patches/api/0397-Add-missing-Fluid-type.patch (renamed from patches/api/0396-Add-missing-Fluid-type.patch)0
-rw-r--r--patches/api/0398-fix-Instruments.patch (renamed from patches/api/0397-fix-Instruments.patch)0
-rw-r--r--patches/api/0399-Add-BlockLockCheckEvent.patch (renamed from patches/api/0398-Add-BlockLockCheckEvent.patch)0
-rw-r--r--patches/api/0400-Add-Sneaking-API-for-Entities.patch (renamed from patches/api/0399-Add-Sneaking-API-for-Entities.patch)0
-rw-r--r--patches/api/0401-Improve-PortalEvents.patch (renamed from patches/api/0400-Improve-PortalEvents.patch)0
-rw-r--r--patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch (renamed from patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch)0
-rw-r--r--patches/api/0403-Flying-Fall-Damage-API.patch (renamed from patches/api/0402-Flying-Fall-Damage-API.patch)0
-rw-r--r--patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch (renamed from patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch)0
-rw-r--r--patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch (renamed from patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch)0
-rw-r--r--patches/api/0406-Win-Screen-API.patch (renamed from patches/api/0405-Win-Screen-API.patch)0
-rw-r--r--patches/api/0407-Add-Entity-Body-Yaw-API.patch (renamed from patches/api/0406-Add-Entity-Body-Yaw-API.patch)0
-rw-r--r--patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch (renamed from patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch)0
-rw-r--r--patches/api/0409-Add-EntityFertilizeEggEvent.patch (renamed from patches/api/0408-Add-EntityFertilizeEggEvent.patch)0
-rw-r--r--patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch (renamed from patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch)0
-rw-r--r--patches/api/0411-Add-Shearable-API.patch (renamed from patches/api/0410-Add-Shearable-API.patch)0
-rw-r--r--patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch (renamed from patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch)0
-rw-r--r--patches/api/0413-Add-Mob-Experience-reward-API.patch (renamed from patches/api/0412-Add-Mob-Experience-reward-API.patch)0
-rw-r--r--patches/api/0414-Expand-PlayerItemMendEvent.patch (renamed from patches/api/0413-Expand-PlayerItemMendEvent.patch)0
-rw-r--r--patches/api/0415-Add-transient-modifier-API.patch (renamed from patches/api/0414-Add-transient-modifier-API.patch)0
-rw-r--r--patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch (renamed from patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch)0
-rw-r--r--patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch (renamed from patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch)0
-rw-r--r--patches/api/0418-Folia-scheduler-and-owned-region-API.patch (renamed from patches/api/0417-Folia-scheduler-and-owned-region-API.patch)0
-rw-r--r--patches/api/0419-Add-event-for-player-editing-sign.patch (renamed from patches/api/0418-Add-event-for-player-editing-sign.patch)0
-rw-r--r--patches/api/0420-Add-Sign-getInteractableSideFor.patch (renamed from patches/api/0419-Add-Sign-getInteractableSideFor.patch)0
-rw-r--r--patches/api/0421-Fix-BanList-API.patch (renamed from patches/api/0420-Fix-BanList-API.patch)0
-rw-r--r--patches/api/0422-Add-whitelist-events.patch (renamed from patches/api/0421-Add-whitelist-events.patch)0
-rw-r--r--patches/api/0423-API-for-updating-recipes-on-clients.patch (renamed from patches/api/0422-API-for-updating-recipes-on-clients.patch)0
-rw-r--r--patches/api/0424-Add-PlayerFailMoveEvent.patch (renamed from patches/api/0423-Add-PlayerFailMoveEvent.patch)0
-rw-r--r--patches/api/0425-Fix-custom-statistic-criteria-creation.patch (renamed from patches/api/0424-Fix-custom-statistic-criteria-creation.patch)0
-rw-r--r--patches/api/0426-SculkCatalyst-bloom-API.patch (renamed from patches/api/0425-SculkCatalyst-bloom-API.patch)0
-rw-r--r--patches/api/0427-API-for-an-entity-s-scoreboard-name.patch (renamed from patches/api/0426-API-for-an-entity-s-scoreboard-name.patch)0
-rw-r--r--patches/api/0428-Deprecate-and-replace-methods-with-old-StructureType.patch (renamed from patches/api/0427-Deprecate-and-replace-methods-with-old-StructureType.patch)0
-rw-r--r--patches/api/0429-Add-Listing-API-for-Player.patch (renamed from patches/api/0428-Add-Listing-API-for-Player.patch)0
-rw-r--r--patches/api/0430-Expose-clicked-BlockFace-during-BlockDamageEvent.patch (renamed from patches/api/0429-Expose-clicked-BlockFace-during-BlockDamageEvent.patch)0
-rw-r--r--patches/api/0431-Fix-NPE-on-Boat-getStatus.patch (renamed from patches/api/0430-Fix-NPE-on-Boat-getStatus.patch)0
-rw-r--r--patches/api/0432-Expand-Pose-API.patch (renamed from patches/api/0431-Expand-Pose-API.patch)0
-rw-r--r--patches/api/0433-MerchantRecipe-add-copy-constructor.patch (renamed from patches/api/0432-MerchantRecipe-add-copy-constructor.patch)0
-rw-r--r--patches/api/0434-More-DragonBattle-API.patch (renamed from patches/api/0433-More-DragonBattle-API.patch)0
-rw-r--r--patches/api/0435-Add-PlayerPickItemEvent.patch (renamed from patches/api/0434-Add-PlayerPickItemEvent.patch)0
-rw-r--r--patches/api/0436-Allow-trident-custom-damage.patch (renamed from patches/api/0435-Allow-trident-custom-damage.patch)0
-rw-r--r--patches/api/0437-Expose-hand-during-BlockCanBuildEvent.patch (renamed from patches/api/0436-Expose-hand-during-BlockCanBuildEvent.patch)0
-rw-r--r--patches/api/0438-Limit-setBurnTime-to-valid-short-values.patch (renamed from patches/api/0437-Limit-setBurnTime-to-valid-short-values.patch)0
-rw-r--r--patches/api/0439-Add-OfflinePlayer-isConnected.patch (renamed from patches/api/0438-Add-OfflinePlayer-isConnected.patch)0
-rw-r--r--patches/api/0440-Add-titleOverride-to-InventoryOpenEvent.patch (renamed from patches/api/0439-Add-titleOverride-to-InventoryOpenEvent.patch)0
-rw-r--r--patches/api/0441-Allow-proper-checking-of-empty-item-stacks.patch (renamed from patches/api/0440-Allow-proper-checking-of-empty-item-stacks.patch)0
-rw-r--r--patches/api/0442-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch (renamed from patches/api/0441-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch)0
-rw-r--r--patches/api/0443-Add-player-idle-duration-API.patch (renamed from patches/api/0442-Add-player-idle-duration-API.patch)0
-rw-r--r--patches/api/0444-Add-API-to-get-the-collision-shape-of-a-block-before.patch (renamed from patches/api/0443-Add-API-to-get-the-collision-shape-of-a-block-before.patch)0
-rw-r--r--patches/api/0445-Add-predicate-for-blocks-when-raytracing.patch (renamed from patches/api/0444-Add-predicate-for-blocks-when-raytracing.patch)2
-rw-r--r--patches/api/0448-Expand-LingeringPotion-API.patch (renamed from patches/api/0445-Expand-LingeringPotion-API.patch)0
-rw-r--r--patches/server/0004-Test-changes.patch39
-rw-r--r--settings.gradle.kts20
456 files changed, 2073 insertions, 17 deletions
diff --git a/.editorconfig b/.editorconfig
index df706b347c..2874476cf4 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -35,3 +35,6 @@ ij_java_use_fq_class_names = false
[Paper-Server/src/main/resources/data/**/*.json]
indent_size = 2
+
+[paper-api-generator/generated/**/*.java]
+ij_java_imports_layout = $*,|,*
diff --git a/.gitignore b/.gitignore
index 29fc656b7d..71fa37fc83 100644
--- a/.gitignore
+++ b/.gitignore
@@ -72,3 +72,4 @@ paperclip.properties
!gradle/wrapper/gradle-wrapper.jar
test-plugin.settings.gradle.kts
+paper-api-generator.settings.gradle.kts
diff --git a/paper-api-generator/build.gradle.kts b/paper-api-generator/build.gradle.kts
new file mode 100644
index 0000000000..50cc3c1e59
--- /dev/null
+++ b/paper-api-generator/build.gradle.kts
@@ -0,0 +1,28 @@
+import org.spongepowered.gradle.vanilla.repository.MinecraftPlatform
+
+plugins {
+ java
+ id("org.spongepowered.gradle.vanilla") version "0.2.1-SNAPSHOT"
+}
+
+minecraft {
+ version(property("mcVersion").toString())
+ platform(MinecraftPlatform.SERVER)
+
+ runs {
+ server("generate") {
+ mainClass("io.papermc.generator.Main")
+ accessWideners(projectDir.toPath().resolve("wideners.at"))
+ args(projectDir.toPath().resolve("generated").toString())
+ }
+ }
+}
+
+dependencies {
+ implementation("com.squareup:javapoet:1.13.0")
+ implementation(project(":paper-api"))
+}
+
+group = "io.papermc.paper"
+version = "1.0-SNAPSHOT"
+
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/BiomeKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/BiomeKeys.java
new file mode 100644
index 0000000000..84e6385588
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/BiomeKeys.java
@@ -0,0 +1,490 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.block.Biome;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#BIOME}.
+ *
+ * @apiNote The fields provided here are a direct representation of
+ * what is available from the vanilla game source. They may be
+ * changed (including removals) on any Minecraft version
+ * bump, so cross-version compatibility is not provided on the
+ * same level as it is on most of the other API.
+ */
+@SuppressWarnings({
+ "unused",
+ "SpellCheckingInspection"
+})
+@GeneratedFrom("1.20.2")
+public final class BiomeKeys {
+ /**
+ * {@code minecraft:badlands}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> BADLANDS = create(key("badlands"));
+
+ /**
+ * {@code minecraft:bamboo_jungle}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> BAMBOO_JUNGLE = create(key("bamboo_jungle"));
+
+ /**
+ * {@code minecraft:basalt_deltas}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> BASALT_DELTAS = create(key("basalt_deltas"));
+
+ /**
+ * {@code minecraft:beach}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> BEACH = create(key("beach"));
+
+ /**
+ * {@code minecraft:birch_forest}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> BIRCH_FOREST = create(key("birch_forest"));
+
+ /**
+ * {@code minecraft:cherry_grove}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> CHERRY_GROVE = create(key("cherry_grove"));
+
+ /**
+ * {@code minecraft:cold_ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> COLD_OCEAN = create(key("cold_ocean"));
+
+ /**
+ * {@code minecraft:crimson_forest}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> CRIMSON_FOREST = create(key("crimson_forest"));
+
+ /**
+ * {@code minecraft:dark_forest}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> DARK_FOREST = create(key("dark_forest"));
+
+ /**
+ * {@code minecraft:deep_cold_ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> DEEP_COLD_OCEAN = create(key("deep_cold_ocean"));
+
+ /**
+ * {@code minecraft:deep_dark}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> DEEP_DARK = create(key("deep_dark"));
+
+ /**
+ * {@code minecraft:deep_frozen_ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> DEEP_FROZEN_OCEAN = create(key("deep_frozen_ocean"));
+
+ /**
+ * {@code minecraft:deep_lukewarm_ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> DEEP_LUKEWARM_OCEAN = create(key("deep_lukewarm_ocean"));
+
+ /**
+ * {@code minecraft:deep_ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> DEEP_OCEAN = create(key("deep_ocean"));
+
+ /**
+ * {@code minecraft:desert}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> DESERT = create(key("desert"));
+
+ /**
+ * {@code minecraft:dripstone_caves}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> DRIPSTONE_CAVES = create(key("dripstone_caves"));
+
+ /**
+ * {@code minecraft:end_barrens}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> END_BARRENS = create(key("end_barrens"));
+
+ /**
+ * {@code minecraft:end_highlands}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> END_HIGHLANDS = create(key("end_highlands"));
+
+ /**
+ * {@code minecraft:end_midlands}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> END_MIDLANDS = create(key("end_midlands"));
+
+ /**
+ * {@code minecraft:eroded_badlands}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> ERODED_BADLANDS = create(key("eroded_badlands"));
+
+ /**
+ * {@code minecraft:flower_forest}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> FLOWER_FOREST = create(key("flower_forest"));
+
+ /**
+ * {@code minecraft:forest}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> FOREST = create(key("forest"));
+
+ /**
+ * {@code minecraft:frozen_ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> FROZEN_OCEAN = create(key("frozen_ocean"));
+
+ /**
+ * {@code minecraft:frozen_peaks}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> FROZEN_PEAKS = create(key("frozen_peaks"));
+
+ /**
+ * {@code minecraft:frozen_river}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> FROZEN_RIVER = create(key("frozen_river"));
+
+ /**
+ * {@code minecraft:grove}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> GROVE = create(key("grove"));
+
+ /**
+ * {@code minecraft:ice_spikes}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> ICE_SPIKES = create(key("ice_spikes"));
+
+ /**
+ * {@code minecraft:jagged_peaks}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> JAGGED_PEAKS = create(key("jagged_peaks"));
+
+ /**
+ * {@code minecraft:jungle}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> JUNGLE = create(key("jungle"));
+
+ /**
+ * {@code minecraft:lukewarm_ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> LUKEWARM_OCEAN = create(key("lukewarm_ocean"));
+
+ /**
+ * {@code minecraft:lush_caves}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> LUSH_CAVES = create(key("lush_caves"));
+
+ /**
+ * {@code minecraft:mangrove_swamp}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> MANGROVE_SWAMP = create(key("mangrove_swamp"));
+
+ /**
+ * {@code minecraft:meadow}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> MEADOW = create(key("meadow"));
+
+ /**
+ * {@code minecraft:mushroom_fields}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> MUSHROOM_FIELDS = create(key("mushroom_fields"));
+
+ /**
+ * {@code minecraft:nether_wastes}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> NETHER_WASTES = create(key("nether_wastes"));
+
+ /**
+ * {@code minecraft:ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> OCEAN = create(key("ocean"));
+
+ /**
+ * {@code minecraft:old_growth_birch_forest}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> OLD_GROWTH_BIRCH_FOREST = create(key("old_growth_birch_forest"));
+
+ /**
+ * {@code minecraft:old_growth_pine_taiga}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> OLD_GROWTH_PINE_TAIGA = create(key("old_growth_pine_taiga"));
+
+ /**
+ * {@code minecraft:old_growth_spruce_taiga}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> OLD_GROWTH_SPRUCE_TAIGA = create(key("old_growth_spruce_taiga"));
+
+ /**
+ * {@code minecraft:plains}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> PLAINS = create(key("plains"));
+
+ /**
+ * {@code minecraft:river}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> RIVER = create(key("river"));
+
+ /**
+ * {@code minecraft:savanna}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SAVANNA = create(key("savanna"));
+
+ /**
+ * {@code minecraft:savanna_plateau}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SAVANNA_PLATEAU = create(key("savanna_plateau"));
+
+ /**
+ * {@code minecraft:small_end_islands}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SMALL_END_ISLANDS = create(key("small_end_islands"));
+
+ /**
+ * {@code minecraft:snowy_beach}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SNOWY_BEACH = create(key("snowy_beach"));
+
+ /**
+ * {@code minecraft:snowy_plains}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SNOWY_PLAINS = create(key("snowy_plains"));
+
+ /**
+ * {@code minecraft:snowy_slopes}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SNOWY_SLOPES = create(key("snowy_slopes"));
+
+ /**
+ * {@code minecraft:snowy_taiga}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SNOWY_TAIGA = create(key("snowy_taiga"));
+
+ /**
+ * {@code minecraft:soul_sand_valley}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SOUL_SAND_VALLEY = create(key("soul_sand_valley"));
+
+ /**
+ * {@code minecraft:sparse_jungle}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SPARSE_JUNGLE = create(key("sparse_jungle"));
+
+ /**
+ * {@code minecraft:stony_peaks}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> STONY_PEAKS = create(key("stony_peaks"));
+
+ /**
+ * {@code minecraft:stony_shore}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> STONY_SHORE = create(key("stony_shore"));
+
+ /**
+ * {@code minecraft:sunflower_plains}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SUNFLOWER_PLAINS = create(key("sunflower_plains"));
+
+ /**
+ * {@code minecraft:swamp}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> SWAMP = create(key("swamp"));
+
+ /**
+ * {@code minecraft:taiga}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> TAIGA = create(key("taiga"));
+
+ /**
+ * {@code minecraft:the_end}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> THE_END = create(key("the_end"));
+
+ /**
+ * {@code minecraft:the_void}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> THE_VOID = create(key("the_void"));
+
+ /**
+ * {@code minecraft:warm_ocean}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> WARM_OCEAN = create(key("warm_ocean"));
+
+ /**
+ * {@code minecraft:warped_forest}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> WARPED_FOREST = create(key("warped_forest"));
+
+ /**
+ * {@code minecraft:windswept_forest}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> WINDSWEPT_FOREST = create(key("windswept_forest"));
+
+ /**
+ * {@code minecraft:windswept_gravelly_hills}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> WINDSWEPT_GRAVELLY_HILLS = create(key("windswept_gravelly_hills"));
+
+ /**
+ * {@code minecraft:windswept_hills}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> WINDSWEPT_HILLS = create(key("windswept_hills"));
+
+ /**
+ * {@code minecraft:windswept_savanna}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> WINDSWEPT_SAVANNA = create(key("windswept_savanna"));
+
+ /**
+ * {@code minecraft:wooded_badlands}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Biome> WOODED_BADLANDS = create(key("wooded_badlands"));
+
+ private BiomeKeys() {
+ }
+
+ /**
+ * Creates a key for {@link Biome} in a registry.
+ *
+ * @param key the value's key in the registry
+ * @return a new typed key
+ */
+ @ApiStatus.Experimental
+ public static @NotNull TypedKey<Biome> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.BIOME, key);
+ }
+}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java
new file mode 100644
index 0000000000..978ed4aed5
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java
@@ -0,0 +1,462 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.GameEvent;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#GAME_EVENT}.
+ *
+ * @apiNote The fields provided here are a direct representation of
+ * what is available from the vanilla game source. They may be
+ * changed (including removals) on any Minecraft version
+ * bump, so cross-version compatibility is not provided on the
+ * same level as it is on most of the other API.
+ */
+@SuppressWarnings({
+ "unused",
+ "SpellCheckingInspection"
+})
+@GeneratedFrom("1.20.2")
+public final class GameEventKeys {
+ /**
+ * {@code minecraft:block_activate}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_ACTIVATE = create(key("block_activate"));
+
+ /**
+ * {@code minecraft:block_attach}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_ATTACH = create(key("block_attach"));
+
+ /**
+ * {@code minecraft:block_change}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_CHANGE = create(key("block_change"));
+
+ /**
+ * {@code minecraft:block_close}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_CLOSE = create(key("block_close"));
+
+ /**
+ * {@code minecraft:block_deactivate}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_DEACTIVATE = create(key("block_deactivate"));
+
+ /**
+ * {@code minecraft:block_destroy}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_DESTROY = create(key("block_destroy"));
+
+ /**
+ * {@code minecraft:block_detach}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_DETACH = create(key("block_detach"));
+
+ /**
+ * {@code minecraft:block_open}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_OPEN = create(key("block_open"));
+
+ /**
+ * {@code minecraft:block_place}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> BLOCK_PLACE = create(key("block_place"));
+
+ /**
+ * {@code minecraft:container_close}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> CONTAINER_CLOSE = create(key("container_close"));
+
+ /**
+ * {@code minecraft:container_open}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> CONTAINER_OPEN = create(key("container_open"));
+
+ /**
+ * {@code minecraft:drink}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> DRINK = create(key("drink"));
+
+ /**
+ * {@code minecraft:eat}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> EAT = create(key("eat"));
+
+ /**
+ * {@code minecraft:elytra_glide}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ELYTRA_GLIDE = create(key("elytra_glide"));
+
+ /**
+ * {@code minecraft:entity_damage}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ENTITY_DAMAGE = create(key("entity_damage"));
+
+ /**
+ * {@code minecraft:entity_die}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ENTITY_DIE = create(key("entity_die"));
+
+ /**
+ * {@code minecraft:entity_dismount}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ENTITY_DISMOUNT = create(key("entity_dismount"));
+
+ /**
+ * {@code minecraft:entity_interact}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ENTITY_INTERACT = create(key("entity_interact"));
+
+ /**
+ * {@code minecraft:entity_mount}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ENTITY_MOUNT = create(key("entity_mount"));
+
+ /**
+ * {@code minecraft:entity_place}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ENTITY_PLACE = create(key("entity_place"));
+
+ /**
+ * {@code minecraft:entity_action}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ENTITY_ACTION = create(key("entity_action"));
+
+ /**
+ * {@code minecraft:equip}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> EQUIP = create(key("equip"));
+
+ /**
+ * {@code minecraft:explode}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> EXPLODE = create(key("explode"));
+
+ /**
+ * {@code minecraft:flap}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> FLAP = create(key("flap"));
+
+ /**
+ * {@code minecraft:fluid_pickup}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> FLUID_PICKUP = create(key("fluid_pickup"));
+
+ /**
+ * {@code minecraft:fluid_place}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> FLUID_PLACE = create(key("fluid_place"));
+
+ /**
+ * {@code minecraft:hit_ground}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> HIT_GROUND = create(key("hit_ground"));
+
+ /**
+ * {@code minecraft:instrument_play}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> INSTRUMENT_PLAY = create(key("instrument_play"));
+
+ /**
+ * {@code minecraft:item_interact_finish}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ITEM_INTERACT_FINISH = create(key("item_interact_finish"));
+
+ /**
+ * {@code minecraft:item_interact_start}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> ITEM_INTERACT_START = create(key("item_interact_start"));
+
+ /**
+ * {@code minecraft:jukebox_play}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> JUKEBOX_PLAY = create(key("jukebox_play"));
+
+ /**
+ * {@code minecraft:jukebox_stop_play}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> JUKEBOX_STOP_PLAY = create(key("jukebox_stop_play"));
+
+ /**
+ * {@code minecraft:lightning_strike}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> LIGHTNING_STRIKE = create(key("lightning_strike"));
+
+ /**
+ * {@code minecraft:note_block_play}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> NOTE_BLOCK_PLAY = create(key("note_block_play"));
+
+ /**
+ * {@code minecraft:prime_fuse}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> PRIME_FUSE = create(key("prime_fuse"));
+
+ /**
+ * {@code minecraft:projectile_land}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> PROJECTILE_LAND = create(key("projectile_land"));
+
+ /**
+ * {@code minecraft:projectile_shoot}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> PROJECTILE_SHOOT = create(key("projectile_shoot"));
+
+ /**
+ * {@code minecraft:sculk_sensor_tendrils_clicking}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> SCULK_SENSOR_TENDRILS_CLICKING = create(key("sculk_sensor_tendrils_clicking"));
+
+ /**
+ * {@code minecraft:shear}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> SHEAR = create(key("shear"));
+
+ /**
+ * {@code minecraft:shriek}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> SHRIEK = create(key("shriek"));
+
+ /**
+ * {@code minecraft:splash}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> SPLASH = create(key("splash"));
+
+ /**
+ * {@code minecraft:step}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> STEP = create(key("step"));
+
+ /**
+ * {@code minecraft:swim}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> SWIM = create(key("swim"));
+
+ /**
+ * {@code minecraft:teleport}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> TELEPORT = create(key("teleport"));
+
+ /**
+ * {@code minecraft:unequip}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> UNEQUIP = create(key("unequip"));
+
+ /**
+ * {@code minecraft:resonate_1}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_1 = create(key("resonate_1"));
+
+ /**
+ * {@code minecraft:resonate_2}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_2 = create(key("resonate_2"));
+
+ /**
+ * {@code minecraft:resonate_3}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_3 = create(key("resonate_3"));
+
+ /**
+ * {@code minecraft:resonate_4}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_4 = create(key("resonate_4"));
+
+ /**
+ * {@code minecraft:resonate_5}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_5 = create(key("resonate_5"));
+
+ /**
+ * {@code minecraft:resonate_6}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_6 = create(key("resonate_6"));
+
+ /**
+ * {@code minecraft:resonate_7}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_7 = create(key("resonate_7"));
+
+ /**
+ * {@code minecraft:resonate_8}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_8 = create(key("resonate_8"));
+
+ /**
+ * {@code minecraft:resonate_9}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_9 = create(key("resonate_9"));
+
+ /**
+ * {@code minecraft:resonate_10}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_10 = create(key("resonate_10"));
+
+ /**
+ * {@code minecraft:resonate_11}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_11 = create(key("resonate_11"));
+
+ /**
+ * {@code minecraft:resonate_12}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_12 = create(key("resonate_12"));
+
+ /**
+ * {@code minecraft:resonate_13}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_13 = create(key("resonate_13"));
+
+ /**
+ * {@code minecraft:resonate_14}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_14 = create(key("resonate_14"));
+
+ /**
+ * {@code minecraft:resonate_15}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<GameEvent> RESONATE_15 = create(key("resonate_15"));
+
+ private GameEventKeys() {
+ }
+
+ /**
+ * Creates a key for {@link GameEvent} in a registry.
+ *
+ * @param key the value's key in the registry
+ * @return a new typed key
+ */
+ @ApiStatus.Experimental
+ public static @NotNull TypedKey<GameEvent> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.GAME_EVENT, key);
+ }
+}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureTypeKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureTypeKeys.java
new file mode 100644
index 0000000000..03fc2b494f
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureTypeKeys.java
@@ -0,0 +1,147 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.generator.structure.StructureType;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#STRUCTURE_TYPE}.
+ *
+ * @apiNote The fields provided here are a direct representation of
+ * what is available from the vanilla game source. They may be
+ * changed (including removals) on any Minecraft version
+ * bump, so cross-version compatibility is not provided on the
+ * same level as it is on most of the other API.
+ */
+@SuppressWarnings({
+ "unused",
+ "SpellCheckingInspection"
+})
+@GeneratedFrom("1.20.2")
+public final class StructureTypeKeys {
+ /**
+ * {@code minecraft:buried_treasure}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> BURIED_TREASURE = create(key("buried_treasure"));
+
+ /**
+ * {@code minecraft:desert_pyramid}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> DESERT_PYRAMID = create(key("desert_pyramid"));
+
+ /**
+ * {@code minecraft:end_city}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> END_CITY = create(key("end_city"));
+
+ /**
+ * {@code minecraft:fortress}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> FORTRESS = create(key("fortress"));
+
+ /**
+ * {@code minecraft:igloo}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> IGLOO = create(key("igloo"));
+
+ /**
+ * {@code minecraft:jigsaw}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> JIGSAW = create(key("jigsaw"));
+
+ /**
+ * {@code minecraft:jungle_temple}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> JUNGLE_TEMPLE = create(key("jungle_temple"));
+
+ /**
+ * {@code minecraft:mineshaft}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> MINESHAFT = create(key("mineshaft"));
+
+ /**
+ * {@code minecraft:nether_fossil}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> NETHER_FOSSIL = create(key("nether_fossil"));
+
+ /**
+ * {@code minecraft:ocean_monument}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> OCEAN_MONUMENT = create(key("ocean_monument"));
+
+ /**
+ * {@code minecraft:ocean_ruin}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> OCEAN_RUIN = create(key("ocean_ruin"));
+
+ /**
+ * {@code minecraft:ruined_portal}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> RUINED_PORTAL = create(key("ruined_portal"));
+
+ /**
+ * {@code minecraft:shipwreck}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> SHIPWRECK = create(key("shipwreck"));
+
+ /**
+ * {@code minecraft:stronghold}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> STRONGHOLD = create(key("stronghold"));
+
+ /**
+ * {@code minecraft:swamp_hut}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> SWAMP_HUT = create(key("swamp_hut"));
+
+ /**
+ * {@code minecraft:woodland_mansion}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<StructureType> WOODLAND_MANSION = create(key("woodland_mansion"));
+
+ private StructureTypeKeys() {
+ }
+
+ private static @NotNull TypedKey<StructureType> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.STRUCTURE_TYPE, key);
+ }
+}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimMaterialKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimMaterialKeys.java
new file mode 100644
index 0000000000..bb54110ab1
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimMaterialKeys.java
@@ -0,0 +1,112 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.inventory.meta.trim.TrimMaterial;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#TRIM_MATERIAL}.
+ *
+ * @apiNote The fields provided here are a direct representation of
+ * what is available from the vanilla game source. They may be
+ * changed (including removals) on any Minecraft version
+ * bump, so cross-version compatibility is not provided on the
+ * same level as it is on most of the other API.
+ */
+@SuppressWarnings({
+ "unused",
+ "SpellCheckingInspection"
+})
+@GeneratedFrom("1.20.2")
+public final class TrimMaterialKeys {
+ /**
+ * {@code minecraft:amethyst}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> AMETHYST = create(key("amethyst"));
+
+ /**
+ * {@code minecraft:copper}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> COPPER = create(key("copper"));
+
+ /**
+ * {@code minecraft:diamond}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> DIAMOND = create(key("diamond"));
+
+ /**
+ * {@code minecraft:emerald}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> EMERALD = create(key("emerald"));
+
+ /**
+ * {@code minecraft:gold}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> GOLD = create(key("gold"));
+
+ /**
+ * {@code minecraft:iron}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> IRON = create(key("iron"));
+
+ /**
+ * {@code minecraft:lapis}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> LAPIS = create(key("lapis"));
+
+ /**
+ * {@code minecraft:netherite}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> NETHERITE = create(key("netherite"));
+
+ /**
+ * {@code minecraft:quartz}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> QUARTZ = create(key("quartz"));
+
+ /**
+ * {@code minecraft:redstone}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimMaterial> REDSTONE = create(key("redstone"));
+
+ private TrimMaterialKeys() {
+ }
+
+ /**
+ * Creates a key for {@link TrimMaterial} in a registry.
+ *
+ * @param key the value's key in the registry
+ * @return a new typed key
+ */
+ @ApiStatus.Experimental
+ public static @NotNull TypedKey<TrimMaterial> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.TRIM_MATERIAL, key);
+ }
+}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimPatternKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimPatternKeys.java
new file mode 100644
index 0000000000..8576ff1669
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimPatternKeys.java
@@ -0,0 +1,154 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.inventory.meta.trim.TrimPattern;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#TRIM_PATTERN}.
+ *
+ * @apiNote The fields provided here are a direct representation of
+ * what is available from the vanilla game source. They may be
+ * changed (including removals) on any Minecraft version
+ * bump, so cross-version compatibility is not provided on the
+ * same level as it is on most of the other API.
+ */
+@SuppressWarnings({
+ "unused",
+ "SpellCheckingInspection"
+})
+@GeneratedFrom("1.20.2")
+public final class TrimPatternKeys {
+ /**
+ * {@code minecraft:coast}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> COAST = create(key("coast"));
+
+ /**
+ * {@code minecraft:dune}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> DUNE = create(key("dune"));
+
+ /**
+ * {@code minecraft:eye}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> EYE = create(key("eye"));
+
+ /**
+ * {@code minecraft:host}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> HOST = create(key("host"));
+
+ /**
+ * {@code minecraft:raiser}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> RAISER = create(key("raiser"));
+
+ /**
+ * {@code minecraft:rib}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> RIB = create(key("rib"));
+
+ /**
+ * {@code minecraft:sentry}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> SENTRY = create(key("sentry"));
+
+ /**
+ * {@code minecraft:shaper}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> SHAPER = create(key("shaper"));
+
+ /**
+ * {@code minecraft:silence}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> SILENCE = create(key("silence"));
+
+ /**
+ * {@code minecraft:snout}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> SNOUT = create(key("snout"));
+
+ /**
+ * {@code minecraft:spire}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> SPIRE = create(key("spire"));
+
+ /**
+ * {@code minecraft:tide}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> TIDE = create(key("tide"));
+
+ /**
+ * {@code minecraft:vex}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> VEX = create(key("vex"));
+
+ /**
+ * {@code minecraft:ward}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> WARD = create(key("ward"));
+
+ /**
+ * {@code minecraft:wayfinder}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> WAYFINDER = create(key("wayfinder"));
+
+ /**
+ * {@code minecraft:wild}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<TrimPattern> WILD = create(key("wild"));
+
+ private TrimPatternKeys() {
+ }
+
+ /**
+ * Creates a key for {@link TrimPattern} in a registry.
+ *
+ * @param key the value's key in the registry
+ * @return a new typed key
+ */
+ @ApiStatus.Experimental
+ public static @NotNull TypedKey<TrimPattern> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.TRIM_PATTERN, key);
+ }
+}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/Main.java b/paper-api-generator/src/main/java/io/papermc/generator/Main.java
new file mode 100644
index 0000000000..6e02e0b48f
--- /dev/null
+++ b/paper-api-generator/src/main/java/io/papermc/generator/Main.java
@@ -0,0 +1,85 @@
+package io.papermc.generator;
+
+import com.mojang.logging.LogUtils;
+import io.papermc.generator.types.GeneratedKeyType;
+import io.papermc.generator.types.SourceGenerator;
+import io.papermc.paper.registry.RegistryKey;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import net.kyori.adventure.key.Keyed;
+import net.minecraft.SharedConstants;
+import net.minecraft.core.LayeredRegistryAccess;
+import net.minecraft.core.Registry;
+import net.minecraft.core.RegistryAccess;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.resources.RegistryDataLoader;
+import net.minecraft.resources.ResourceKey;
+import net.minecraft.server.Bootstrap;
+import net.minecraft.server.RegistryLayer;
+import net.minecraft.server.WorldLoader;
+import net.minecraft.server.packs.PackType;
+import net.minecraft.server.packs.repository.Pack;
+import net.minecraft.server.packs.repository.PackRepository;
+import net.minecraft.server.packs.repository.ServerPacksSource;
+import net.minecraft.server.packs.resources.MultiPackResourceManager;
+import org.apache.commons.io.file.PathUtils;
+import org.bukkit.GameEvent;
+import org.bukkit.block.Biome;
+import org.bukkit.generator.structure.StructureType;
+import org.bukkit.inventory.meta.trim.TrimMaterial;
+import org.bukkit.inventory.meta.trim.TrimPattern;
+import org.slf4j.Logger;
+
+public final class Main {
+
+ private static final Logger LOGGER = LogUtils.getLogger();
+ public static final RegistryAccess.Frozen REGISTRY_ACCESS;
+
+ static {
+ SharedConstants.tryDetectVersion();
+ Bootstrap.bootStrap();
+ final PackRepository resourceRepository = ServerPacksSource.createVanillaTrustedRepository();
+ resourceRepository.reload();
+ final MultiPackResourceManager resourceManager = new MultiPackResourceManager(PackType.SERVER_DATA, resourceRepository.getAvailablePacks().stream().map(Pack::open).toList());
+ LayeredRegistryAccess<RegistryLayer> layers = RegistryLayer.createRegistryAccess();
+ layers = WorldLoader.loadAndReplaceLayer(resourceManager, layers, RegistryLayer.WORLDGEN, RegistryDataLoader.WORLDGEN_REGISTRIES);
+ REGISTRY_ACCESS = layers.compositeAccess().freeze();
+ }
+
+ private static final List<SourceGenerator> GENERATORS = List.of(
+ simpleKey("GameEventKeys", GameEvent.class, Registries.GAME_EVENT, RegistryKey.GAME_EVENT, true),
+ simpleKey("BiomeKeys", Biome.class, Registries.BIOME, RegistryKey.BIOME, true),
+ simpleKey("TrimMaterialKeys", TrimMaterial.class, Registries.TRIM_MATERIAL, RegistryKey.TRIM_MATERIAL, true),
+ simpleKey("TrimPatternKeys", TrimPattern.class, Registries.TRIM_PATTERN, RegistryKey.TRIM_PATTERN, true),
+ simpleKey("StructureTypeKeys", StructureType.class, Registries.STRUCTURE_TYPE, RegistryKey.STRUCTURE_TYPE, false)
+ );
+
+ private static <T, A> SourceGenerator simpleKey(final String className, final Class<A> apiType, final ResourceKey<? extends Registry<T>> registryKey, final RegistryKey<A> apiRegistryKey, final boolean publicCreateKeyMethod) {
+ return new GeneratedKeyType<>(className, apiType, "io.papermc.paper.registry.keys", registryKey, apiRegistryKey, publicCreateKeyMethod);
+ }
+
+ private Main() {
+ }
+
+ public static void main(final String[] args) {
+ final Path output = Paths.get(args[0]);
+ try {
+ if (Files.exists(output)) {
+ PathUtils.deleteDirectory(output);
+ }
+ Files.createDirectories(output);
+
+ for (final SourceGenerator generator : GENERATORS) {
+ generator.writeToFile(output);
+ }
+
+ LOGGER.info("Files written to {}", output.toAbsolutePath());
+ } catch (final Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+
+}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/types/Annotations.java b/paper-api-generator/src/main/java/io/papermc/generator/types/Annotations.java
new file mode 100644
index 0000000000..342d80454b
--- /dev/null
+++ b/paper-api-generator/src/main/java/io/papermc/generator/types/Annotations.java
@@ -0,0 +1,24 @@
+package io.papermc.generator.types;
+
+import com.squareup.javapoet.AnnotationSpec;
+import java.util.List;
+import org.bukkit.MinecraftExperimental;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+public final class Annotations {
+
+ public static final List<AnnotationSpec> EXPERIMENTAL_ANNOTATIONS = List.of(
+ AnnotationSpec.builder(ApiStatus.Experimental.class).build(),
+ AnnotationSpec.builder(MinecraftExperimental.class)
+ .addMember("value", "$S", "update 1.20")
+ .build()
+ );
+
+ @ApiStatus.Experimental
+ public static final AnnotationSpec EXPERIMENTAL_API_ANNOTATION = AnnotationSpec.builder(ApiStatus.Experimental.class).build();
+ public static final AnnotationSpec NOT_NULL = AnnotationSpec.builder(NotNull.class).build();
+
+ private Annotations() {
+ }
+}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java
new file mode 100644
index 0000000000..2af1bc8fb6
--- /dev/null
+++ b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java
@@ -0,0 +1,205 @@
+package io.papermc.generator.types;
+
+import com.squareup.javapoet.AnnotationSpec;
+import com.squareup.javapoet.FieldSpec;
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.ParameterSpec;
+import com.squareup.javapoet.ParameterizedTypeName;
+import com.squareup.javapoet.TypeName;
+import com.squareup.javapoet.TypeSpec;
+import io.papermc.generator.Main;
+import io.papermc.generator.utils.CollectingContext;
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import net.kyori.adventure.key.Key;
+import net.minecraft.SharedConstants;
+import net.minecraft.core.Registry;
+import net.minecraft.core.RegistrySetBuilder;
+import net.minecraft.resources.ResourceKey;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.checkerframework.framework.qual.DefaultQualifier;
+
+import static com.squareup.javapoet.TypeSpec.classBuilder;
+import static io.papermc.generator.types.Annotations.EXPERIMENTAL_ANNOTATIONS;
+import static io.papermc.generator.types.Annotations.EXPERIMENTAL_API_ANNOTATION;
+import static io.papermc.generator.types.Annotations.NOT_NULL;
+import static java.util.Objects.requireNonNull;
+import static javax.lang.model.element.Modifier.FINAL;
+import static javax.lang.model.element.Modifier.PRIVATE;
+import static javax.lang.model.element.Modifier.PUBLIC;
+import static javax.lang.model.element.Modifier.STATIC;
+
+@DefaultQualifier(NonNull.class)
+public class GeneratedKeyType<T, A> implements SourceGenerator {
+
+ // don't exist anymore
+ // private static final Map<ResourceKey<? extends Registry<?>>, RegistrySetBuilder.RegistryBootstrap<?>> EXPERIMENTAL_REGISTRY_ENTRIES = UpdateOneTwentyRegistries.BUILDER.entries.stream()
+ // .collect(Collectors.toMap(RegistrySetBuilder.RegistryStub::key, RegistrySetBuilder.RegistryStub::bootstrap));
+ private static final Map<ResourceKey<? extends Registry<?>>, RegistrySetBuilder.RegistryBootstrap<?>> EXPERIMENTAL_REGISTRY_ENTRIES = Collections.emptyMap();
+
+ private static final Map<RegistryKey<?>, String> REGISTRY_KEY_FIELD_NAMES;
+ static {
+ final Map<RegistryKey<?>, String> map = new HashMap<>();
+ try {
+ for (final Field field : RegistryKey.class.getFields()) {
+ if (!Modifier.isStatic(field.getModifiers()) || !Modifier.isFinal(field.getModifiers()) || field.getType() != RegistryKey.class) {
+ continue;
+ }
+ map.put((RegistryKey<?>) field.get(null), field.getName());
+ }
+ REGISTRY_KEY_FIELD_NAMES = Map.copyOf(map);
+ } catch (final ReflectiveOperationException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static final AnnotationSpec SUPPRESS_WARNINGS = AnnotationSpec.builder(SuppressWarnings.class)
+ .addMember("value", "$S", "unused")
+ .addMember("value", "$S", "SpellCheckingInspection")
+ .build();
+ private static final AnnotationSpec GENERATED_FROM = AnnotationSpec.builder(GeneratedFrom.class)
+ .addMember("value", "$S", SharedConstants.getCurrentVersion().getName())
+ .build();
+ private static final String TYPE_JAVADOC = """
+ Vanilla keys for {@link $T#$L}.
+
+ @apiNote The fields provided here are a direct representation of
+ what is available from the vanilla game source. They may be
+ changed (including removals) on any Minecraft version
+ bump, so cross-version compatibility is not provided on the
+ same level as it is on most of the other API.
+ """;
+ private static final String FIELD_JAVADOC = """
+ {@code $L}
+
+ @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ """;
+ private static final String CREATE_JAVADOC = """
+ Creates a key for {@link $T} in a registry.
+
+ @param key the value's key in the registry
+ @return a new typed key
+ """;
+
+ private final String keysClassName;
+ private final Class<A> apiType;
+ private final String pkg;
+ private final ResourceKey<? extends Registry<T>> registryKey;
+ private final RegistryKey<A> apiRegistryKey;
+ private final boolean publicCreateKeyMethod;
+
+ public GeneratedKeyType(final String keysClassName, final Class<A> apiType, final String pkg, final ResourceKey<? extends Registry<T>> registryKey, final RegistryKey<A> apiRegistryKey, final boolean publicCreateKeyMethod) {
+ this.keysClassName = keysClassName;
+ this.apiType = apiType;
+ this.pkg = pkg;
+ this.registryKey = registryKey;
+ this.apiRegistryKey = apiRegistryKey;
+ this.publicCreateKeyMethod = publicCreateKeyMethod;
+ }
+
+ private MethodSpec.Builder createMethod(final TypeName returnType) {
+ final TypeName keyType = TypeName.get(Key.class).annotated(NOT_NULL);
+
+ final ParameterSpec keyParam = ParameterSpec.builder(keyType, "key", FINAL).build();
+ final MethodSpec.Builder create = MethodSpec.methodBuilder("create")
+ .addModifiers(this.publicCreateKeyMethod ? PUBLIC : PRIVATE, STATIC)
+ .addParameter(keyParam)
+ .addCode("return $T.create($T.$L, $N);", TypedKey.class, RegistryKey.class, requireNonNull(REGISTRY_KEY_FIELD_NAMES.get(this.apiRegistryKey), "Missing field for " + this.apiRegistryKey), keyParam)
+ .returns(returnType.annotated(NOT_NULL));
+ if (this.publicCreateKeyMethod) {
+ create.addAnnotation(EXPERIMENTAL_API_ANNOTATION); // TODO remove once not experimental
+ create.addJavadoc(CREATE_JAVADOC, this.apiType);
+ }
+ return create;
+ }
+
+ private TypeSpec.Builder keyHolderType() {
+ return classBuilder(this.keysClassName)
+ .addModifiers(PUBLIC, FINAL)
+ .addJavadoc(TYPE_JAVADOC, RegistryKey.class, REGISTRY_KEY_FIELD_NAMES.get(this.apiRegistryKey))
+ .addAnnotation(SUPPRESS_WARNINGS).addAnnotation(GENERATED_FROM)
+ .addMethod(MethodSpec.constructorBuilder()
+ .addModifiers(PRIVATE)
+ .build()
+ );
+ }
+
+ protected TypeSpec createTypeSpec() {
+ final TypeName typedKey = ParameterizedTypeName.get(TypedKey.class, this.apiType);
+
+ final TypeSpec.Builder typeBuilder = this.keyHolderType();
+ typeBuilder.addAnnotation(EXPERIMENTAL_API_ANNOTATION); // TODO experimental API
+ final MethodSpec.Builder createMethod = this.createMethod(typedKey);
+
+ final Registry<T> registry = Main.REGISTRY_ACCESS.registryOrThrow(this.registryKey);
+ final List<ResourceKey<T>> experimental = this.collectExperimentalKeys(registry);
+
+ boolean allExperimental = true;
+ for (final T value : registry) {
+ final ResourceKey<T> key = registry.getResourceKey(value).orElseThrow();
+ final String keyPath = key.location().getPath();
+ final String fieldName = keyPath.toUpperCase(Locale.ENGLISH).replaceAll("[.-/]", "_"); // replace invalid field name chars
+ final FieldSpec.Builder fieldBuilder = FieldSpec.builder(typedKey, fieldName, PUBLIC, STATIC, FINAL)
+ .initializer("$N(key($S))", createMethod.build(), keyPath)
+ .addJavadoc(FIELD_JAVADOC, key.location().toString());
+ if (experimental.contains(key)) {
+ fieldBuilder.addAnnotations(EXPERIMENTAL_ANNOTATIONS);
+ } else {
+ allExperimental = false;
+ }
+ typeBuilder.addField(fieldBuilder.build());
+ }
+ if (allExperimental) {
+ typeBuilder.addAnnotations(EXPERIMENTAL_ANNOTATIONS);
+ createMethod.addAnnotations(EXPERIMENTAL_ANNOTATIONS);
+ }
+ return typeBuilder.addMethod(createMethod.build()).build();
+ }
+
+ @SuppressWarnings("unchecked")
+ private List<ResourceKey<T>> collectExperimentalKeys(final Registry<T> registry) {
+ final RegistrySetBuilder.@Nullable RegistryBootstrap<T> registryBootstrap = (RegistrySetBuilder.RegistryBootstrap<T>) EXPERIMENTAL_REGISTRY_ENTRIES.get(this.registryKey);
+ if (registryBootstrap == null) {
+ return Collections.emptyList();
+ }
+ final List<ResourceKey<T>> experimental = new ArrayList<>();
+ final CollectingContext<T> context = new CollectingContext<>(experimental, registry);
+ registryBootstrap.run(context);
+ return experimental;
+ }
+
+ protected JavaFile createFile() {
+ return JavaFile.builder(this.pkg, this.createTypeSpec())
+ .skipJavaLangImports(true)
+ .addStaticImport(Key.class, "key")
+ .indent(" ")
+ .build();
+ }
+
+ @Override
+ public final String outputString() {
+ return this.createFile().toString();
+ }
+
+ @Override
+ public void writeToFile(final Path parent) throws IOException {
+ final Path pkgDir = parent.resolve(this.pkg.replace('.', '/'));
+ Files.createDirectories(pkgDir);
+ Files.writeString(pkgDir.resolve(this.keysClassName + ".java"), this.outputString(), StandardCharsets.UTF_8);
+ }
+}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/types/SourceGenerator.java b/paper-api-generator/src/main/java/io/papermc/generator/types/SourceGenerator.java
new file mode 100644
index 0000000000..50d176e9ea
--- /dev/null
+++ b/paper-api-generator/src/main/java/io/papermc/generator/types/SourceGenerator.java
@@ -0,0 +1,11 @@
+package io.papermc.generator.types;
+
+import java.io.IOException;
+import java.nio.file.Path;
+
+public interface SourceGenerator {
+
+ String outputString();
+
+ void writeToFile(Path parent) throws IOException;
+}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/utils/CollectingContext.java b/paper-api-generator/src/main/java/io/papermc/generator/utils/CollectingContext.java
new file mode 100644
index 0000000000..98f707846e
--- /dev/null
+++ b/paper-api-generator/src/main/java/io/papermc/generator/utils/CollectingContext.java
@@ -0,0 +1,28 @@
+package io.papermc.generator.utils;
+
+import com.mojang.serialization.Lifecycle;
+import io.papermc.generator.Main;
+import java.util.List;
+import net.minecraft.core.Holder;
+import net.minecraft.core.HolderGetter;
+import net.minecraft.core.Registry;
+import net.minecraft.data.worldgen.BootstapContext;
+import net.minecraft.resources.ResourceKey;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.framework.qual.DefaultQualifier;
+
+@DefaultQualifier(NonNull.class)
+public record CollectingContext<T>(List<ResourceKey<T>> registered,
+ Registry<T> registry) implements BootstapContext<T> {
+
+ @Override
+ public Holder.Reference<T> register(final ResourceKey<T> resourceKey, final @NonNull T t, final Lifecycle lifecycle) {
+ this.registered.add(resourceKey);
+ return Holder.Reference.createStandAlone(this.registry.holderOwner(), resourceKey);
+ }
+
+ @Override
+ public <S> HolderGetter<S> lookup(final ResourceKey<? extends Registry<? extends S>> resourceKey) {
+ return Main.REGISTRY_ACCESS.registryOrThrow(resourceKey).asLookup();
+ }
+}
diff --git a/paper-api-generator/wideners.at b/paper-api-generator/wideners.at
new file mode 100644
index 0000000000..cc899edd9d
--- /dev/null
+++ b/paper-api-generator/wideners.at
@@ -0,0 +1,6 @@
+accessWidener v1 named
+accessible method net/minecraft/server/WorldLoader loadAndReplaceLayer (Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/core/LayeredRegistryAccess;Lnet/minecraft/server/RegistryLayer;Ljava/util/List;)Lnet/minecraft/core/LayeredRegistryAccess;
+
+# for auto-marking experimental stuff
+accessible field net/minecraft/core/RegistrySetBuilder entries Ljava/util/List;
+accessible class net/minecraft/core/RegistrySetBuilder$RegistryStub
diff --git a/patches/api/0004-Code-Generation.patch b/patches/api/0004-Code-Generation.patch
new file mode 100644
index 0000000000..a34c9218f5
--- /dev/null
+++ b/patches/api/0004-Code-Generation.patch
@@ -0,0 +1,251 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Fri, 26 May 2023 18:14:44 -0700
+Subject: [PATCH] Code Generation
+
+Currently includes generated key holder classes for types
+used in the Registry Modification API
+
+diff --git a/build.gradle.kts b/build.gradle.kts
+index 75bfb0ab8049ebbb52240abf661d469de5526767..87e4ee95a8da287b02c13fac5f24f66902bc84c9 100644
+--- a/build.gradle.kts
++++ b/build.gradle.kts
+@@ -1,6 +1,7 @@
+ plugins {
+ `java-library`
+ `maven-publish`
++ idea // Paper
+ }
+
+ java {
+@@ -46,6 +47,22 @@ dependencies {
+ testImplementation("org.ow2.asm:asm-tree:9.5")
+ }
+
++// Paper start
++val generatedApiPath: java.nio.file.Path = rootProject.projectDir.toPath().resolve("paper-api-generator/generated")
++idea {
++ module {
++ generatedSourceDirs.add(generatedApiPath.toFile())
++ }
++}
++sourceSets {
++ main {
++ java {
++ srcDir(generatedApiPath)
++ }
++ }
++}
++// Paper end
++
+ configure<PublishingExtension> {
+ publications.create<MavenPublication>("maven") {
+ from(components["java"])
+@@ -122,3 +139,14 @@ tasks.check {
+ dependsOn(scanJar)
+ }
+ // Paper end
++// Paper start
++val scanJarForOldGeneratedCode = tasks.register("scanJarForOldGeneratedCode", io.papermc.paperweight.tasks.ScanJarForOldGeneratedCode::class) {
++ mcVersion.set(providers.gradleProperty("mcVersion"))
++ annotation.set("Lio/papermc/paper/generated/GeneratedFrom;")
++ jarToScan.set(tasks.jar.flatMap { it.archiveFile })
++ classpath.from(configurations.compileClasspath)
++}
++tasks.check {
++ dependsOn(scanJarForOldGeneratedCode)
++}
++// Paper end
+diff --git a/src/main/java/io/papermc/paper/generated/GeneratedFrom.java b/src/main/java/io/papermc/paper/generated/GeneratedFrom.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..2512dba27edfdccbc4430815b6cba048e3d93484
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/generated/GeneratedFrom.java
+@@ -0,0 +1,21 @@
++package io.papermc.paper.generated;
++
++import java.lang.annotation.Documented;
++import java.lang.annotation.ElementType;
++import java.lang.annotation.Retention;
++import java.lang.annotation.RetentionPolicy;
++import java.lang.annotation.Target;
++import org.jetbrains.annotations.ApiStatus;
++
++/**
++ * Used to mark classes which are generated from
++ * a specific version of minecraft.
++ */
++@Documented
++@Retention(RetentionPolicy.RUNTIME)
++@Target(ElementType.TYPE)
++public @interface GeneratedFrom {
++
++ String value();
++}
+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..5251f922d2d14da35f61098c11694371f591cd2a
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/RegistryKey.java
+@@ -0,0 +1,61 @@
++package io.papermc.paper.registry;
++
++import net.kyori.adventure.key.Keyed;
++import org.bukkit.GameEvent;
++import org.bukkit.block.Biome;
++import org.bukkit.generator.structure.StructureType;
++import org.bukkit.inventory.meta.trim.TrimMaterial;
++import org.bukkit.inventory.meta.trim.TrimPattern;
++import org.jetbrains.annotations.ApiStatus;
++
++import static io.papermc.paper.registry.RegistryKeyImpl.create;
++
++/**
++ * Identifier for a specific registry. For use with
++ * {@link TypedKey} and the registry modification API.
++ * <p>
++ * There are 2 types of registries, identified as "built-in"
++ * or "data-driven". The former are not changeable by datapacks (which
++ * doesn't necessarily mean they aren't changeable in the API) and
++ * are loaded first. "Data-driven" registries are all created by
++ * reading in data from the vanilla and other datapacks.
++ *
++ * @param <T> the value type
++ */
++@SuppressWarnings("unused")
++public sealed interface RegistryKey<T> extends Keyed permits RegistryKeyImpl {
++
++ /* ******************* *
++ * Built-in Registries *
++ * ******************* */
++ /**
++ * Built-in registry for game events
++ * @see io.papermc.paper.registry.keys.GameEventKeys
++ */
++ RegistryKey<GameEvent> GAME_EVENT = create("game_event");
++ /**
++ * Built-in registry for structure types.
++ * @see io.papermc.paper.registry.keys.StructureTypeKeys
++ */
++ RegistryKey<StructureType> STRUCTURE_TYPE = create("worldgen/structure_type");
++
++ /* ********************** *
++ * Data-driven Registries *
++ * ********************** */
++ /**
++ * Data-driven registry for structure types.
++ * @see io.papermc.paper.registry.keys.BiomeKeys
++ */
++ RegistryKey<Biome> BIOME = create("worldgen/biome");
++ /**
++ * Data-driven registry for structure types.
++ * @see io.papermc.paper.registry.keys.TrimMaterialKeys
++ */
++ RegistryKey<TrimMaterial> TRIM_MATERIAL = create("trim_material");
++ /**
++ * Data-driven registry for structure types.
++ * @see io.papermc.paper.registry.keys.TrimPatternKeys
++ */
++ RegistryKey<TrimPattern> TRIM_PATTERN = create("trim_pattern");
++}
+diff --git a/src/main/java/io/papermc/paper/registry/RegistryKeyImpl.java b/src/main/java/io/papermc/paper/registry/RegistryKeyImpl.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..9ad300fa1668cb59bbd85ff8091591db69b8c9dc
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/RegistryKeyImpl.java
+@@ -0,0 +1,19 @@
++package io.papermc.paper.registry;
++
++import com.google.common.collect.Sets;
++import java.util.Set;
++import net.kyori.adventure.key.Key;
++import org.intellij.lang.annotations.Subst;
++import org.jetbrains.annotations.NotNull;
++
++record RegistryKeyImpl<T>(@NotNull Key key) implements RegistryKey<T> {
++
++ static final Set<RegistryKey<?>> REGISTRY_KEYS = Sets.newIdentityHashSet();
++
++ static <T> RegistryKey<T> create(@Subst("some_key") final String key) {
++ final RegistryKey<T> registryKey = new RegistryKeyImpl<>(Key.key(Key.MINECRAFT_NAMESPACE, key));
++ REGISTRY_KEYS.add(registryKey);
++ return registryKey;
++ }
++
++}
+diff --git a/src/main/java/io/papermc/paper/registry/TypedKey.java b/src/main/java/io/papermc/paper/registry/TypedKey.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..271454cd1b92ada4301025b57348ea77da9116a1
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/TypedKey.java
+@@ -0,0 +1,44 @@
++package io.papermc.paper.registry;
++
++import net.kyori.adventure.key.Key;
++import net.kyori.adventure.key.Keyed;
++import org.jetbrains.annotations.ApiStatus;
++import org.jetbrains.annotations.NotNull;
++
++/**
++ * Represents a key for a value in a specific registry.
++ *
++ * @param <T> the value type for the registry
++ */
++public sealed interface TypedKey<T> extends Keyed permits TypedKeyImpl {
++
++ /**
++ * Gets the key for the value in the registry.
++ *
++ * @return the value's key
++ */
++ @Override
++ @NotNull Key key();
++
++ /**
++ * Gets the registry key for the value this key
++ * represents.
++ *
++ * @return the registry key
++ */
++ @NotNull RegistryKey<T> registryKey();
++
++ /**
++ * Create a typed key from a key and a registry key.
++ *
++ * @param registryKey the registry this key is for
++ * @param key the key for the value in the registry
++ * @param <T> value type
++ * @return a new key for the value key and registry key
++ */
++ @ApiStatus.Experimental
++ static <T extends Keyed> @NotNull TypedKey<T> create(final @NotNull RegistryKey<T> registryKey, final @NotNull Key key) {
++ return new TypedKeyImpl<>(key, registryKey);
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/registry/TypedKeyImpl.java b/src/main/java/io/papermc/paper/registry/TypedKeyImpl.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..3c3fd73f7742bb8602e2f9164dd4c1208a412255
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/TypedKeyImpl.java
+@@ -0,0 +1,8 @@
++package io.papermc.paper.registry;
++
++import net.kyori.adventure.key.Key;
++import net.kyori.adventure.key.Keyed;
++import org.jetbrains.annotations.NotNull;
++
++record TypedKeyImpl<T extends Keyed>(@NotNull Key key, @NotNull RegistryKey<T> registryKey) implements TypedKey<T> {
++}
+diff --git a/src/main/java/org/bukkit/MinecraftExperimental.java b/src/main/java/org/bukkit/MinecraftExperimental.java
+index 2365a8c620be709b280fb08855752bb0995838fc..b63e24b3c4d2f1a08e39434caa527bb2e0edea22 100644
+--- a/src/main/java/org/bukkit/MinecraftExperimental.java
++++ b/src/main/java/org/bukkit/MinecraftExperimental.java
+@@ -24,4 +24,5 @@ import org.jetbrains.annotations.ApiStatus;
+ })
+ @ApiStatus.Internal
+ public @interface MinecraftExperimental {
++ String value() default ""; // Paper
+ }
diff --git a/patches/api/0004-Add-FastUtil-to-Bukkit.patch b/patches/api/0005-Add-FastUtil-to-Bukkit.patch
index 2498686f3c..5a3f7d83ea 100644
--- a/patches/api/0004-Add-FastUtil-to-Bukkit.patch
+++ b/patches/api/0005-Add-FastUtil-to-Bukkit.patch
@@ -9,7 +9,7 @@ diff --git a/build.gradle.kts b/build.gradle.kts
index 75bfb0ab8049ebbb52240abf661d469de5526767..ecba866b84bc5f86a442bf220ab24ed8706aadf9 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -22,6 +22,7 @@ dependencies {
+@@ -23,6 +23,7 @@ dependencies {
api("com.googlecode.json-simple:json-simple:1.1.1") {
isTransitive = false // includes junit
}
diff --git a/patches/api/0005-Adventure.patch b/patches/api/0006-Adventure.patch
index 901f90e758..e127e5c070 100644
--- a/patches/api/0005-Adventure.patch
+++ b/patches/api/0006-Adventure.patch
@@ -10,7 +10,7 @@ diff --git a/build.gradle.kts b/build.gradle.kts
index ecba866b84bc5f86a442bf220ab24ed8706aadf9..2377d476aee8c88d26ca715fdb756dc97749aac8 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -10,12 +10,24 @@ java {
+@@ -11,12 +11,24 @@ java {
val annotationsVersion = "24.0.1"
val bungeeCordChatVersion = "1.20-R0.1"
@@ -36,7 +36,7 @@ index ecba866b84bc5f86a442bf220ab24ed8706aadf9..2377d476aee8c88d26ca715fdb756dc9
api("org.yaml:snakeyaml:2.2")
api("org.joml:joml:1.10.5")
// Paper start
-@@ -23,6 +35,13 @@ dependencies {
+@@ -24,6 +36,13 @@ dependencies {
isTransitive = false // includes junit
}
api("it.unimi.dsi:fastutil:8.5.6")
@@ -50,7 +50,7 @@ index ecba866b84bc5f86a442bf220ab24ed8706aadf9..2377d476aee8c88d26ca715fdb756dc9
// Paper end
compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
-@@ -83,14 +102,30 @@ tasks.withType<Javadoc> {
+@@ -100,14 +119,30 @@ tasks.withType<Javadoc> {
"https://guava.dev/releases/32.1.2-jre/api/docs/",
"https://javadoc.io/doc/org.yaml/snakeyaml/2.2/",
"https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations
diff --git a/patches/api/0006-Paper-Utils.patch b/patches/api/0007-Paper-Utils.patch
index a647b698ad..a647b698ad 100644
--- a/patches/api/0006-Paper-Utils.patch
+++ b/patches/api/0007-Paper-Utils.patch
diff --git a/patches/api/0007-Use-ASM-for-event-executors.patch b/patches/api/0008-Use-ASM-for-event-executors.patch
index 1bf57e8a2d..115007f17e 100644
--- a/patches/api/0007-Use-ASM-for-event-executors.patch
+++ b/patches/api/0008-Use-ASM-for-event-executors.patch
@@ -9,7 +9,7 @@ diff --git a/build.gradle.kts b/build.gradle.kts
index 2377d476aee8c88d26ca715fdb756dc97749aac8..0c6e0bb90fe5ea29c467323a179a47ec122ba0f6 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -42,6 +42,9 @@ dependencies {
+@@ -43,6 +43,9 @@ dependencies {
apiAndDocs("net.kyori:adventure-text-serializer-legacy")
apiAndDocs("net.kyori:adventure-text-serializer-plain")
apiAndDocs("net.kyori:adventure-text-logger-slf4j")
diff --git a/patches/api/0008-Paper-Plugins.patch b/patches/api/0009-Paper-Plugins.patch
index 2729ba9194..223d7015ab 100644
--- a/patches/api/0008-Paper-Plugins.patch
+++ b/patches/api/0009-Paper-Plugins.patch
@@ -8,7 +8,7 @@ diff --git a/build.gradle.kts b/build.gradle.kts
index 0c6e0bb90fe5ea29c467323a179a47ec122ba0f6..145f6209a984e74da2d2de03cf725c06c77ef8da 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -47,7 +47,7 @@ dependencies {
+@@ -48,7 +48,7 @@ dependencies {
implementation("org.ow2.asm:asm-commons:9.4")
// Paper end
@@ -17,7 +17,7 @@ index 0c6e0bb90fe5ea29c467323a179a47ec122ba0f6..145f6209a984e74da2d2de03cf725c06
compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
compileOnly("com.google.code.findbugs:jsr305:1.3.9") // Paper
-@@ -118,6 +118,7 @@ tasks.withType<Javadoc> {
+@@ -135,6 +135,7 @@ tasks.withType<Javadoc> {
"https://jd.advntr.dev/text-serializer-plain/$adventureVersion/",
"https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
// Paper end
diff --git a/patches/api/0009-Add-Position.patch b/patches/api/0010-Add-Position.patch
index c56e4e0a0e..c56e4e0a0e 100644
--- a/patches/api/0009-Add-Position.patch
+++ b/patches/api/0010-Add-Position.patch
diff --git a/patches/api/0010-Timings-v2.patch b/patches/api/0011-Timings-v2.patch
index 1ca70f8a1e..1ca70f8a1e 100644
--- a/patches/api/0010-Timings-v2.patch
+++ b/patches/api/0011-Timings-v2.patch
diff --git a/patches/api/0011-Add-command-line-option-to-load-extra-plugin-jars-no.patch b/patches/api/0012-Add-command-line-option-to-load-extra-plugin-jars-no.patch
index e404df1b65..e404df1b65 100644
--- a/patches/api/0011-Add-command-line-option-to-load-extra-plugin-jars-no.patch
+++ b/patches/api/0012-Add-command-line-option-to-load-extra-plugin-jars-no.patch
diff --git a/patches/api/0012-Player-affects-spawning-API.patch b/patches/api/0013-Player-affects-spawning-API.patch
index b089e1d2ca..b089e1d2ca 100644
--- a/patches/api/0012-Player-affects-spawning-API.patch
+++ b/patches/api/0013-Player-affects-spawning-API.patch
diff --git a/patches/api/0013-Add-getTPS-method.patch b/patches/api/0014-Add-getTPS-method.patch
index dc188f645e..dc188f645e 100644
--- a/patches/api/0013-Add-getTPS-method.patch
+++ b/patches/api/0014-Add-getTPS-method.patch
diff --git a/patches/api/0014-Version-Command-2.0.patch b/patches/api/0015-Version-Command-2.0.patch
index 99c72a7b3d..99c72a7b3d 100644
--- a/patches/api/0014-Version-Command-2.0.patch
+++ b/patches/api/0015-Version-Command-2.0.patch
diff --git a/patches/api/0015-Entity-Origin-API.patch b/patches/api/0016-Entity-Origin-API.patch
index 33fcdeb93b..33fcdeb93b 100644
--- a/patches/api/0015-Entity-Origin-API.patch
+++ b/patches/api/0016-Entity-Origin-API.patch
diff --git a/patches/api/0016-Add-PlayerLocaleChangeEvent.patch b/patches/api/0017-Add-PlayerLocaleChangeEvent.patch
index 1dd6084278..1dd6084278 100644
--- a/patches/api/0016-Add-PlayerLocaleChangeEvent.patch
+++ b/patches/api/0017-Add-PlayerLocaleChangeEvent.patch
diff --git a/patches/api/0017-Add-view-distance-API.patch b/patches/api/0018-Add-view-distance-API.patch
index ed3258121d..ed3258121d 100644
--- a/patches/api/0017-Add-view-distance-API.patch
+++ b/patches/api/0018-Add-view-distance-API.patch
diff --git a/patches/api/0018-Add-BeaconEffectEvent.patch b/patches/api/0019-Add-BeaconEffectEvent.patch
index 43af3c3828..43af3c3828 100644
--- a/patches/api/0018-Add-BeaconEffectEvent.patch
+++ b/patches/api/0019-Add-BeaconEffectEvent.patch
diff --git a/patches/api/0019-Add-PlayerInitialSpawnEvent.patch b/patches/api/0020-Add-PlayerInitialSpawnEvent.patch
index 122054772a..122054772a 100644
--- a/patches/api/0019-Add-PlayerInitialSpawnEvent.patch
+++ b/patches/api/0020-Add-PlayerInitialSpawnEvent.patch
diff --git a/patches/api/0020-Expose-server-CommandMap.patch b/patches/api/0021-Expose-server-CommandMap.patch
index 16ac67db3a..16ac67db3a 100644
--- a/patches/api/0020-Expose-server-CommandMap.patch
+++ b/patches/api/0021-Expose-server-CommandMap.patch
diff --git a/patches/api/0021-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch b/patches/api/0022-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
index cdceeb1c0f..cdceeb1c0f 100644
--- a/patches/api/0021-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
+++ b/patches/api/0022-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
diff --git a/patches/api/0022-Add-exception-reporting-event.patch b/patches/api/0023-Add-exception-reporting-event.patch
index f4d1eb65f8..f4d1eb65f8 100644
--- a/patches/api/0022-Add-exception-reporting-event.patch
+++ b/patches/api/0023-Add-exception-reporting-event.patch
diff --git a/patches/api/0023-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch b/patches/api/0024-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch
index 02e7138c10..02e7138c10 100644
--- a/patches/api/0023-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch
+++ b/patches/api/0024-Add-BaseComponent-sendMessage-methods-to-CommandSend.patch
diff --git a/patches/api/0024-Fix-ServerListPingEvent-flagging-as-Async.patch b/patches/api/0025-Fix-ServerListPingEvent-flagging-as-Async.patch
index 87d3369578..87d3369578 100644
--- a/patches/api/0024-Fix-ServerListPingEvent-flagging-as-Async.patch
+++ b/patches/api/0025-Fix-ServerListPingEvent-flagging-as-Async.patch
diff --git a/patches/api/0025-Player-Tab-List-and-Title-APIs.patch b/patches/api/0026-Player-Tab-List-and-Title-APIs.patch
index c95a880263..c95a880263 100644
--- a/patches/api/0025-Player-Tab-List-and-Title-APIs.patch
+++ b/patches/api/0026-Player-Tab-List-and-Title-APIs.patch
diff --git a/patches/api/0026-Add-methods-for-working-with-arrows-stuck-in-living-.patch b/patches/api/0027-Add-methods-for-working-with-arrows-stuck-in-living-.patch
index 5fda7e4691..5fda7e4691 100644
--- a/patches/api/0026-Add-methods-for-working-with-arrows-stuck-in-living-.patch
+++ b/patches/api/0027-Add-methods-for-working-with-arrows-stuck-in-living-.patch
diff --git a/patches/api/0027-Complete-resource-pack-API.patch b/patches/api/0028-Complete-resource-pack-API.patch
index 670123b021..670123b021 100644
--- a/patches/api/0027-Complete-resource-pack-API.patch
+++ b/patches/api/0028-Complete-resource-pack-API.patch
diff --git a/patches/api/0028-Add-a-call-helper-to-Event.patch b/patches/api/0029-Add-a-call-helper-to-Event.patch
index 4b287bfa56..4b287bfa56 100644
--- a/patches/api/0028-Add-a-call-helper-to-Event.patch
+++ b/patches/api/0029-Add-a-call-helper-to-Event.patch
diff --git a/patches/api/0029-Add-sender-name-to-commands.yml-replacement.patch b/patches/api/0030-Add-sender-name-to-commands.yml-replacement.patch
index 7122fed4a2..7122fed4a2 100644
--- a/patches/api/0029-Add-sender-name-to-commands.yml-replacement.patch
+++ b/patches/api/0030-Add-sender-name-to-commands.yml-replacement.patch
diff --git a/patches/api/0030-Add-command-to-reload-permissions.yml-and-require-co.patch b/patches/api/0031-Add-command-to-reload-permissions.yml-and-require-co.patch
index 5dea7265c0..5dea7265c0 100644
--- a/patches/api/0030-Add-command-to-reload-permissions.yml-and-require-co.patch
+++ b/patches/api/0031-Add-command-to-reload-permissions.yml-and-require-co.patch
diff --git a/patches/api/0031-Custom-replacement-for-eaten-items.patch b/patches/api/0032-Custom-replacement-for-eaten-items.patch
index f7a9207fb3..f7a9207fb3 100644
--- a/patches/api/0031-Custom-replacement-for-eaten-items.patch
+++ b/patches/api/0032-Custom-replacement-for-eaten-items.patch
diff --git a/patches/api/0032-Entity-AddTo-RemoveFrom-World-Events.patch b/patches/api/0033-Entity-AddTo-RemoveFrom-World-Events.patch
index 5dc11c88f8..5dc11c88f8 100644
--- a/patches/api/0032-Entity-AddTo-RemoveFrom-World-Events.patch
+++ b/patches/api/0033-Entity-AddTo-RemoveFrom-World-Events.patch
diff --git a/patches/api/0033-EntityPathfindEvent.patch b/patches/api/0034-EntityPathfindEvent.patch
index 697b76661a..697b76661a 100644
--- a/patches/api/0033-EntityPathfindEvent.patch
+++ b/patches/api/0034-EntityPathfindEvent.patch
diff --git a/patches/api/0034-Reduce-thread-synchronization-in-MetadataStoreBase.patch b/patches/api/0035-Reduce-thread-synchronization-in-MetadataStoreBase.patch
index 9bc7e49e8d..9bc7e49e8d 100644
--- a/patches/api/0034-Reduce-thread-synchronization-in-MetadataStoreBase.patch
+++ b/patches/api/0035-Reduce-thread-synchronization-in-MetadataStoreBase.patch
diff --git a/patches/api/0035-Add-MetadataStoreBase.removeAll-Plugin.patch b/patches/api/0036-Add-MetadataStoreBase.removeAll-Plugin.patch
index 2496de7423..2496de7423 100644
--- a/patches/api/0035-Add-MetadataStoreBase.removeAll-Plugin.patch
+++ b/patches/api/0036-Add-MetadataStoreBase.removeAll-Plugin.patch
diff --git a/patches/api/0036-Add-PlayerUseUnknownEntityEvent.patch b/patches/api/0037-Add-PlayerUseUnknownEntityEvent.patch
index 61dbf320c2..61dbf320c2 100644
--- a/patches/api/0036-Add-PlayerUseUnknownEntityEvent.patch
+++ b/patches/api/0037-Add-PlayerUseUnknownEntityEvent.patch
diff --git a/patches/api/0037-Add-handshake-event-to-allow-plugins-to-handle-clien.patch b/patches/api/0038-Add-handshake-event-to-allow-plugins-to-handle-clien.patch
index e041c954a7..e041c954a7 100644
--- a/patches/api/0037-Add-handshake-event-to-allow-plugins-to-handle-clien.patch
+++ b/patches/api/0038-Add-handshake-event-to-allow-plugins-to-handle-clien.patch
diff --git a/patches/api/0038-Arrow-pickup-rule-API.patch b/patches/api/0039-Arrow-pickup-rule-API.patch
index fb3753f0e1..fb3753f0e1 100644
--- a/patches/api/0038-Arrow-pickup-rule-API.patch
+++ b/patches/api/0039-Arrow-pickup-rule-API.patch
diff --git a/patches/api/0039-EntityRegainHealthEvent-isFastRegen-API.patch b/patches/api/0040-EntityRegainHealthEvent-isFastRegen-API.patch
index f06ee13d15..f06ee13d15 100644
--- a/patches/api/0039-EntityRegainHealthEvent-isFastRegen-API.patch
+++ b/patches/api/0040-EntityRegainHealthEvent-isFastRegen-API.patch
diff --git a/patches/api/0040-LootTable-API.patch b/patches/api/0041-LootTable-API.patch
index 1f8dd8b256..1f8dd8b256 100644
--- a/patches/api/0040-LootTable-API.patch
+++ b/patches/api/0041-LootTable-API.patch
diff --git a/patches/api/0041-Add-EntityZapEvent.patch b/patches/api/0042-Add-EntityZapEvent.patch
index cb9acafef2..cb9acafef2 100644
--- a/patches/api/0041-Add-EntityZapEvent.patch
+++ b/patches/api/0042-Add-EntityZapEvent.patch
diff --git a/patches/api/0042-Misc-Utils.patch b/patches/api/0043-Misc-Utils.patch
index fac858b16c..fac858b16c 100644
--- a/patches/api/0042-Misc-Utils.patch
+++ b/patches/api/0043-Misc-Utils.patch
diff --git a/patches/api/0043-Allow-Reloading-of-Command-Aliases.patch b/patches/api/0044-Allow-Reloading-of-Command-Aliases.patch
index b966a58c4d..b966a58c4d 100644
--- a/patches/api/0043-Allow-Reloading-of-Command-Aliases.patch
+++ b/patches/api/0044-Allow-Reloading-of-Command-Aliases.patch
diff --git a/patches/api/0044-Add-source-to-PlayerExpChangeEvent.patch b/patches/api/0045-Add-source-to-PlayerExpChangeEvent.patch
index 675b2be839..675b2be839 100644
--- a/patches/api/0044-Add-source-to-PlayerExpChangeEvent.patch
+++ b/patches/api/0045-Add-source-to-PlayerExpChangeEvent.patch
diff --git a/patches/api/0045-Add-ProjectileCollideEvent.patch b/patches/api/0046-Add-ProjectileCollideEvent.patch
index 24d739cb59..24d739cb59 100644
--- a/patches/api/0045-Add-ProjectileCollideEvent.patch
+++ b/patches/api/0046-Add-ProjectileCollideEvent.patch
diff --git a/patches/api/0046-Add-String-based-Action-Bar-API.patch b/patches/api/0047-Add-String-based-Action-Bar-API.patch
index 50bab710de..50bab710de 100644
--- a/patches/api/0046-Add-String-based-Action-Bar-API.patch
+++ b/patches/api/0047-Add-String-based-Action-Bar-API.patch
diff --git a/patches/api/0047-Add-API-methods-to-control-if-armour-stands-can-move.patch b/patches/api/0048-Add-API-methods-to-control-if-armour-stands-can-move.patch
index 5253041ed0..5253041ed0 100644
--- a/patches/api/0047-Add-API-methods-to-control-if-armour-stands-can-move.patch
+++ b/patches/api/0048-Add-API-methods-to-control-if-armour-stands-can-move.patch
diff --git a/patches/api/0048-IllegalPacketEvent.patch b/patches/api/0049-IllegalPacketEvent.patch
index 7eb8d61aaa..7eb8d61aaa 100644
--- a/patches/api/0048-IllegalPacketEvent.patch
+++ b/patches/api/0049-IllegalPacketEvent.patch
diff --git a/patches/api/0049-Fireworks-API-s.patch b/patches/api/0050-Fireworks-API-s.patch
index 126f0b838d..126f0b838d 100644
--- a/patches/api/0049-Fireworks-API-s.patch
+++ b/patches/api/0050-Fireworks-API-s.patch
diff --git a/patches/api/0050-PlayerTeleportEndGatewayEvent.patch b/patches/api/0051-PlayerTeleportEndGatewayEvent.patch
index 664edd24cd..664edd24cd 100644
--- a/patches/api/0050-PlayerTeleportEndGatewayEvent.patch
+++ b/patches/api/0051-PlayerTeleportEndGatewayEvent.patch
diff --git a/patches/api/0051-Provide-E-TE-Chunk-count-stat-methods.patch b/patches/api/0052-Provide-E-TE-Chunk-count-stat-methods.patch
index 4bc411fd8f..4bc411fd8f 100644
--- a/patches/api/0051-Provide-E-TE-Chunk-count-stat-methods.patch
+++ b/patches/api/0052-Provide-E-TE-Chunk-count-stat-methods.patch
diff --git a/patches/api/0052-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch b/patches/api/0053-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
index 5dadaf640f..5dadaf640f 100644
--- a/patches/api/0052-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
+++ b/patches/api/0053-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
diff --git a/patches/api/0053-Expose-WorldBorder-isInBounds-Location-check.patch b/patches/api/0054-Expose-WorldBorder-isInBounds-Location-check.patch
index 95db493acf..95db493acf 100644
--- a/patches/api/0053-Expose-WorldBorder-isInBounds-Location-check.patch
+++ b/patches/api/0054-Expose-WorldBorder-isInBounds-Location-check.patch
diff --git a/patches/api/0054-Add-configuration-option-to-prevent-player-names-fro.patch b/patches/api/0055-Add-configuration-option-to-prevent-player-names-fro.patch
index f46d307145..f46d307145 100644
--- a/patches/api/0054-Add-configuration-option-to-prevent-player-names-fro.patch
+++ b/patches/api/0055-Add-configuration-option-to-prevent-player-names-fro.patch
diff --git a/patches/api/0055-Fix-upstream-javadocs.patch b/patches/api/0056-Fix-upstream-javadocs.patch
index 16b9148ee8..16b9148ee8 100644
--- a/patches/api/0055-Fix-upstream-javadocs.patch
+++ b/patches/api/0056-Fix-upstream-javadocs.patch
diff --git a/patches/api/0056-Item-canEntityPickup.patch b/patches/api/0057-Item-canEntityPickup.patch
index 1d18a940a2..1d18a940a2 100644
--- a/patches/api/0056-Item-canEntityPickup.patch
+++ b/patches/api/0057-Item-canEntityPickup.patch
diff --git a/patches/api/0057-PlayerAttemptPickupItemEvent.patch b/patches/api/0058-PlayerAttemptPickupItemEvent.patch
index 6b504ae688..6b504ae688 100644
--- a/patches/api/0057-PlayerAttemptPickupItemEvent.patch
+++ b/patches/api/0058-PlayerAttemptPickupItemEvent.patch
diff --git a/patches/api/0058-Add-UnknownCommandEvent.patch b/patches/api/0059-Add-UnknownCommandEvent.patch
index df31d3cf28..df31d3cf28 100644
--- a/patches/api/0058-Add-UnknownCommandEvent.patch
+++ b/patches/api/0059-Add-UnknownCommandEvent.patch
diff --git a/patches/api/0059-Basic-PlayerProfile-API.patch b/patches/api/0060-Basic-PlayerProfile-API.patch
index ab35d1c971..ab35d1c971 100644
--- a/patches/api/0059-Basic-PlayerProfile-API.patch
+++ b/patches/api/0060-Basic-PlayerProfile-API.patch
diff --git a/patches/api/0060-PlayerPickupItemEvent-setFlyAtPlayer.patch b/patches/api/0061-PlayerPickupItemEvent-setFlyAtPlayer.patch
index 353d395911..353d395911 100644
--- a/patches/api/0060-PlayerPickupItemEvent-setFlyAtPlayer.patch
+++ b/patches/api/0061-PlayerPickupItemEvent-setFlyAtPlayer.patch
diff --git a/patches/api/0061-Shoulder-Entities-Release-API.patch b/patches/api/0062-Shoulder-Entities-Release-API.patch
index 5dbabdff87..5dbabdff87 100644
--- a/patches/api/0061-Shoulder-Entities-Release-API.patch
+++ b/patches/api/0062-Shoulder-Entities-Release-API.patch
diff --git a/patches/api/0062-Entity-fromMobSpawner.patch b/patches/api/0063-Entity-fromMobSpawner.patch
index 7fe0e96d19..7fe0e96d19 100644
--- a/patches/api/0062-Entity-fromMobSpawner.patch
+++ b/patches/api/0063-Entity-fromMobSpawner.patch
diff --git a/patches/api/0063-Profile-Lookup-Events.patch b/patches/api/0064-Profile-Lookup-Events.patch
index 1cdb35476d..1cdb35476d 100644
--- a/patches/api/0063-Profile-Lookup-Events.patch
+++ b/patches/api/0064-Profile-Lookup-Events.patch
diff --git a/patches/api/0064-Improve-the-Saddle-API-for-Horses.patch b/patches/api/0065-Improve-the-Saddle-API-for-Horses.patch
index 85814456bf..85814456bf 100644
--- a/patches/api/0064-Improve-the-Saddle-API-for-Horses.patch
+++ b/patches/api/0065-Improve-the-Saddle-API-for-Horses.patch
diff --git a/patches/api/0065-Add-getI18NDisplayName-API.patch b/patches/api/0066-Add-getI18NDisplayName-API.patch
index ca75771d14..ca75771d14 100644
--- a/patches/api/0065-Add-getI18NDisplayName-API.patch
+++ b/patches/api/0066-Add-getI18NDisplayName-API.patch
diff --git a/patches/api/0066-ensureServerConversions-API.patch b/patches/api/0067-ensureServerConversions-API.patch
index 75f8c9aded..75f8c9aded 100644
--- a/patches/api/0066-ensureServerConversions-API.patch
+++ b/patches/api/0067-ensureServerConversions-API.patch
diff --git a/patches/api/0067-LivingEntity-setKiller.patch b/patches/api/0068-LivingEntity-setKiller.patch
index 632b924756..632b924756 100644
--- a/patches/api/0067-LivingEntity-setKiller.patch
+++ b/patches/api/0068-LivingEntity-setKiller.patch
diff --git a/patches/api/0068-ProfileWhitelistVerifyEvent.patch b/patches/api/0069-ProfileWhitelistVerifyEvent.patch
index 9bf74b4d3e..9bf74b4d3e 100644
--- a/patches/api/0068-ProfileWhitelistVerifyEvent.patch
+++ b/patches/api/0069-ProfileWhitelistVerifyEvent.patch
diff --git a/patches/api/0069-Allow-plugins-to-use-SLF4J-for-logging.patch b/patches/api/0070-Allow-plugins-to-use-SLF4J-for-logging.patch
index b530e27068..8d10a87ad3 100644
--- a/patches/api/0069-Allow-plugins-to-use-SLF4J-for-logging.patch
+++ b/patches/api/0070-Allow-plugins-to-use-SLF4J-for-logging.patch
@@ -17,7 +17,7 @@ diff --git a/build.gradle.kts b/build.gradle.kts
index 145f6209a984e74da2d2de03cf725c06c77ef8da..639651972fddce4dff63a0f0a7e566a15b9e2dd6 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -11,6 +11,8 @@ java {
+@@ -12,6 +12,8 @@ java {
val annotationsVersion = "24.0.1"
val bungeeCordChatVersion = "1.20-R0.1"
val adventureVersion = "4.14.0"
@@ -26,7 +26,7 @@ index 145f6209a984e74da2d2de03cf725c06c77ef8da..639651972fddce4dff63a0f0a7e566a1
val apiAndDocs: Configuration by configurations.creating {
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
-@@ -42,6 +44,8 @@ dependencies {
+@@ -43,6 +45,8 @@ dependencies {
apiAndDocs("net.kyori:adventure-text-serializer-legacy")
apiAndDocs("net.kyori:adventure-text-serializer-plain")
apiAndDocs("net.kyori:adventure-text-logger-slf4j")
@@ -35,7 +35,7 @@ index 145f6209a984e74da2d2de03cf725c06c77ef8da..639651972fddce4dff63a0f0a7e566a1
implementation("org.ow2.asm:asm:9.4")
implementation("org.ow2.asm:asm-commons:9.4")
-@@ -117,6 +121,8 @@ tasks.withType<Javadoc> {
+@@ -134,6 +138,8 @@ tasks.withType<Javadoc> {
"https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/",
"https://jd.advntr.dev/text-serializer-plain/$adventureVersion/",
"https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
diff --git a/patches/api/0070-Handle-plugin-prefixes-in-implementation-logging-con.patch b/patches/api/0071-Handle-plugin-prefixes-in-implementation-logging-con.patch
index 55b6e4b2f9..55b6e4b2f9 100644
--- a/patches/api/0070-Handle-plugin-prefixes-in-implementation-logging-con.patch
+++ b/patches/api/0071-Handle-plugin-prefixes-in-implementation-logging-con.patch
diff --git a/patches/api/0071-Add-PlayerJumpEvent.patch b/patches/api/0072-Add-PlayerJumpEvent.patch
index 18f2c35b4d..18f2c35b4d 100644
--- a/patches/api/0071-Add-PlayerJumpEvent.patch
+++ b/patches/api/0072-Add-PlayerJumpEvent.patch
diff --git a/patches/api/0072-Add-workaround-for-plugins-modifying-the-parent-of-t.patch b/patches/api/0073-Add-workaround-for-plugins-modifying-the-parent-of-t.patch
index 3b10918fc8..3b10918fc8 100644
--- a/patches/api/0072-Add-workaround-for-plugins-modifying-the-parent-of-t.patch
+++ b/patches/api/0073-Add-workaround-for-plugins-modifying-the-parent-of-t.patch
diff --git a/patches/api/0073-Add-PlayerArmorChangeEvent.patch b/patches/api/0074-Add-PlayerArmorChangeEvent.patch
index fc6dc06ab6..fc6dc06ab6 100644
--- a/patches/api/0073-Add-PlayerArmorChangeEvent.patch
+++ b/patches/api/0074-Add-PlayerArmorChangeEvent.patch
diff --git a/patches/api/0074-API-to-get-a-BlockState-without-a-snapshot.patch b/patches/api/0075-API-to-get-a-BlockState-without-a-snapshot.patch
index 323b157741..323b157741 100644
--- a/patches/api/0074-API-to-get-a-BlockState-without-a-snapshot.patch
+++ b/patches/api/0075-API-to-get-a-BlockState-without-a-snapshot.patch
diff --git a/patches/api/0075-AsyncTabCompleteEvent.patch b/patches/api/0076-AsyncTabCompleteEvent.patch
index 453dd2fbc4..453dd2fbc4 100644
--- a/patches/api/0075-AsyncTabCompleteEvent.patch
+++ b/patches/api/0076-AsyncTabCompleteEvent.patch
diff --git a/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch b/patches/api/0077-Expose-client-protocol-version-and-virtual-host.patch
index 225a9fa26a..225a9fa26a 100644
--- a/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch
+++ b/patches/api/0077-Expose-client-protocol-version-and-virtual-host.patch
diff --git a/patches/api/0077-Display-warning-on-deprecated-recipe-API.patch b/patches/api/0078-Display-warning-on-deprecated-recipe-API.patch
index 94f1cdd1f2..94f1cdd1f2 100644
--- a/patches/api/0077-Display-warning-on-deprecated-recipe-API.patch
+++ b/patches/api/0078-Display-warning-on-deprecated-recipe-API.patch
diff --git a/patches/api/0078-PlayerPickupExperienceEvent.patch b/patches/api/0079-PlayerPickupExperienceEvent.patch
index 906a8ec7c3..906a8ec7c3 100644
--- a/patches/api/0078-PlayerPickupExperienceEvent.patch
+++ b/patches/api/0079-PlayerPickupExperienceEvent.patch
diff --git a/patches/api/0079-ExperienceOrbMergeEvent.patch b/patches/api/0080-ExperienceOrbMergeEvent.patch
index 3a4722a776..3a4722a776 100644
--- a/patches/api/0079-ExperienceOrbMergeEvent.patch
+++ b/patches/api/0080-ExperienceOrbMergeEvent.patch
diff --git a/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch b/patches/api/0081-Ability-to-apply-mending-to-XP-API.patch
index 74f4182cfc..74f4182cfc 100644
--- a/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch
+++ b/patches/api/0081-Ability-to-apply-mending-to-XP-API.patch
diff --git a/patches/api/0081-PreCreatureSpawnEvent.patch b/patches/api/0082-PreCreatureSpawnEvent.patch
index 3213ed0ab2..3213ed0ab2 100644
--- a/patches/api/0081-PreCreatureSpawnEvent.patch
+++ b/patches/api/0082-PreCreatureSpawnEvent.patch
diff --git a/patches/api/0082-PlayerNaturallySpawnCreaturesEvent.patch b/patches/api/0083-PlayerNaturallySpawnCreaturesEvent.patch
index a6fa8a9b72..a6fa8a9b72 100644
--- a/patches/api/0082-PlayerNaturallySpawnCreaturesEvent.patch
+++ b/patches/api/0083-PlayerNaturallySpawnCreaturesEvent.patch
diff --git a/patches/api/0083-Add-setPlayerProfile-API-for-Skulls.patch b/patches/api/0084-Add-setPlayerProfile-API-for-Skulls.patch
index 62d576949f..62d576949f 100644
--- a/patches/api/0083-Add-setPlayerProfile-API-for-Skulls.patch
+++ b/patches/api/0084-Add-setPlayerProfile-API-for-Skulls.patch
diff --git a/patches/api/0084-Fill-Profile-Property-Events.patch b/patches/api/0086-Fill-Profile-Property-Events.patch
index 5511f6449a..5511f6449a 100644
--- a/patches/api/0084-Fill-Profile-Property-Events.patch
+++ b/patches/api/0086-Fill-Profile-Property-Events.patch
diff --git a/patches/api/0086-Add-ArmorStand-Item-Meta.patch b/patches/api/0087-Add-ArmorStand-Item-Meta.patch
index 6287ef49e7..6287ef49e7 100644
--- a/patches/api/0086-Add-ArmorStand-Item-Meta.patch
+++ b/patches/api/0087-Add-ArmorStand-Item-Meta.patch
diff --git a/patches/api/0087-Optimize-Hoppers.patch b/patches/api/0088-Optimize-Hoppers.patch
index 3cf0268664..3cf0268664 100644
--- a/patches/api/0087-Optimize-Hoppers.patch
+++ b/patches/api/0088-Optimize-Hoppers.patch
diff --git a/patches/api/0088-Tameable-getOwnerUniqueId-API.patch b/patches/api/0089-Tameable-getOwnerUniqueId-API.patch
index b911542a60..b911542a60 100644
--- a/patches/api/0088-Tameable-getOwnerUniqueId-API.patch
+++ b/patches/api/0089-Tameable-getOwnerUniqueId-API.patch
diff --git a/patches/api/0089-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch b/patches/api/0090-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch
index 178267a089..178267a089 100644
--- a/patches/api/0089-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch
+++ b/patches/api/0090-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch
diff --git a/patches/api/0090-Add-extended-PaperServerListPingEvent.patch b/patches/api/0091-Add-extended-PaperServerListPingEvent.patch
index 6fd11cfebc..6fd11cfebc 100644
--- a/patches/api/0090-Add-extended-PaperServerListPingEvent.patch
+++ b/patches/api/0091-Add-extended-PaperServerListPingEvent.patch
diff --git a/patches/api/0091-Player.setPlayerProfile-API.patch b/patches/api/0092-Player.setPlayerProfile-API.patch
index 82f7bbfe85..82f7bbfe85 100644
--- a/patches/api/0091-Player.setPlayerProfile-API.patch
+++ b/patches/api/0092-Player.setPlayerProfile-API.patch
diff --git a/patches/api/0092-getPlayerUniqueId-API.patch b/patches/api/0093-getPlayerUniqueId-API.patch
index e47af44398..e47af44398 100644
--- a/patches/api/0092-getPlayerUniqueId-API.patch
+++ b/patches/api/0093-getPlayerUniqueId-API.patch
diff --git a/patches/api/0093-Add-legacy-ping-support-to-PaperServerListPingEvent.patch b/patches/api/0094-Add-legacy-ping-support-to-PaperServerListPingEvent.patch
index f21c766148..f21c766148 100644
--- a/patches/api/0093-Add-legacy-ping-support-to-PaperServerListPingEvent.patch
+++ b/patches/api/0094-Add-legacy-ping-support-to-PaperServerListPingEvent.patch
diff --git a/patches/api/0094-Add-openSign-method-to-HumanEntity.patch b/patches/api/0095-Add-openSign-method-to-HumanEntity.patch
index d97f715ca3..d97f715ca3 100644
--- a/patches/api/0094-Add-openSign-method-to-HumanEntity.patch
+++ b/patches/api/0095-Add-openSign-method-to-HumanEntity.patch
diff --git a/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch b/patches/api/0096-Add-Ban-Methods-to-Player-Objects.patch
index cd13623b8c..cd13623b8c 100644
--- a/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch
+++ b/patches/api/0096-Add-Ban-Methods-to-Player-Objects.patch
diff --git a/patches/api/0096-EndermanEscapeEvent.patch b/patches/api/0097-EndermanEscapeEvent.patch
index 82d22fd0ea..82d22fd0ea 100644
--- a/patches/api/0096-EndermanEscapeEvent.patch
+++ b/patches/api/0097-EndermanEscapeEvent.patch
diff --git a/patches/api/0097-Enderman.teleportRandomly.patch b/patches/api/0098-Enderman.teleportRandomly.patch
index 907a74cf51..907a74cf51 100644
--- a/patches/api/0097-Enderman.teleportRandomly.patch
+++ b/patches/api/0098-Enderman.teleportRandomly.patch
diff --git a/patches/api/0098-Additional-world.getNearbyEntities-API-s.patch b/patches/api/0099-Additional-world.getNearbyEntities-API-s.patch
index 62ccb90725..62ccb90725 100644
--- a/patches/api/0098-Additional-world.getNearbyEntities-API-s.patch
+++ b/patches/api/0099-Additional-world.getNearbyEntities-API-s.patch
diff --git a/patches/api/0099-Location.isChunkLoaded-API.patch b/patches/api/0100-Location.isChunkLoaded-API.patch
index be4937a770..be4937a770 100644
--- a/patches/api/0099-Location.isChunkLoaded-API.patch
+++ b/patches/api/0100-Location.isChunkLoaded-API.patch
diff --git a/patches/api/0100-Expand-World.spawnParticle-API-and-add-Builder.patch b/patches/api/0101-Expand-World.spawnParticle-API-and-add-Builder.patch
index dbfdf2da44..dbfdf2da44 100644
--- a/patches/api/0100-Expand-World.spawnParticle-API-and-add-Builder.patch
+++ b/patches/api/0101-Expand-World.spawnParticle-API-and-add-Builder.patch
diff --git a/patches/api/0101-EndermanAttackPlayerEvent.patch b/patches/api/0102-EndermanAttackPlayerEvent.patch
index 9f3e105c9d..9f3e105c9d 100644
--- a/patches/api/0101-EndermanAttackPlayerEvent.patch
+++ b/patches/api/0102-EndermanAttackPlayerEvent.patch
diff --git a/patches/api/0102-WitchConsumePotionEvent.patch b/patches/api/0103-WitchConsumePotionEvent.patch
index fab6106411..fab6106411 100644
--- a/patches/api/0102-WitchConsumePotionEvent.patch
+++ b/patches/api/0103-WitchConsumePotionEvent.patch
diff --git a/patches/api/0103-WitchThrowPotionEvent.patch b/patches/api/0104-WitchThrowPotionEvent.patch
index a5dfe42f35..a5dfe42f35 100644
--- a/patches/api/0103-WitchThrowPotionEvent.patch
+++ b/patches/api/0104-WitchThrowPotionEvent.patch
diff --git a/patches/api/0104-Location.toBlockLocation-toCenterLocation.patch b/patches/api/0105-Location.toBlockLocation-toCenterLocation.patch
index 30032ac6cf..30032ac6cf 100644
--- a/patches/api/0104-Location.toBlockLocation-toCenterLocation.patch
+++ b/patches/api/0105-Location.toBlockLocation-toCenterLocation.patch
diff --git a/patches/api/0105-PotionEffect-clone-methods.patch b/patches/api/0106-PotionEffect-clone-methods.patch
index 201a73d2b8..201a73d2b8 100644
--- a/patches/api/0105-PotionEffect-clone-methods.patch
+++ b/patches/api/0106-PotionEffect-clone-methods.patch
diff --git a/patches/api/0106-WitchReadyPotionEvent.patch b/patches/api/0107-WitchReadyPotionEvent.patch
index 2231308ed2..2231308ed2 100644
--- a/patches/api/0106-WitchReadyPotionEvent.patch
+++ b/patches/api/0107-WitchReadyPotionEvent.patch
diff --git a/patches/api/0107-ItemStack-getMaxItemUseDuration.patch b/patches/api/0108-ItemStack-getMaxItemUseDuration.patch
index 18991e040f..18991e040f 100644
--- a/patches/api/0107-ItemStack-getMaxItemUseDuration.patch
+++ b/patches/api/0108-ItemStack-getMaxItemUseDuration.patch
diff --git a/patches/api/0108-Add-EntityTeleportEndGatewayEvent.patch b/patches/api/0109-Add-EntityTeleportEndGatewayEvent.patch
index 0422ec9858..0422ec9858 100644
--- a/patches/api/0108-Add-EntityTeleportEndGatewayEvent.patch
+++ b/patches/api/0109-Add-EntityTeleportEndGatewayEvent.patch
diff --git a/patches/api/0109-Make-shield-blocking-delay-configurable.patch b/patches/api/0110-Make-shield-blocking-delay-configurable.patch
index e7fe3e1f17..e7fe3e1f17 100644
--- a/patches/api/0109-Make-shield-blocking-delay-configurable.patch
+++ b/patches/api/0110-Make-shield-blocking-delay-configurable.patch
diff --git a/patches/api/0110-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch b/patches/api/0111-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch
index 71a82a8eae..71a82a8eae 100644
--- a/patches/api/0110-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch
+++ b/patches/api/0111-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch
diff --git a/patches/api/0111-Add-getNearbyXXX-methods-to-Location.patch b/patches/api/0112-Add-getNearbyXXX-methods-to-Location.patch
index f34c5396b7..f34c5396b7 100644
--- a/patches/api/0111-Add-getNearbyXXX-methods-to-Location.patch
+++ b/patches/api/0112-Add-getNearbyXXX-methods-to-Location.patch
diff --git a/patches/api/0112-PlayerReadyArrowEvent.patch b/patches/api/0113-PlayerReadyArrowEvent.patch
index 7ea1740581..7ea1740581 100644
--- a/patches/api/0112-PlayerReadyArrowEvent.patch
+++ b/patches/api/0113-PlayerReadyArrowEvent.patch
diff --git a/patches/api/0113-Add-EntityKnockbackByEntityEvent-and-EntityPushedByE.patch b/patches/api/0114-Add-EntityKnockbackByEntityEvent-and-EntityPushedByE.patch
index 31a2d09ee8..31a2d09ee8 100644
--- a/patches/api/0113-Add-EntityKnockbackByEntityEvent-and-EntityPushedByE.patch
+++ b/patches/api/0114-Add-EntityKnockbackByEntityEvent-and-EntityPushedByE.patch
diff --git a/patches/api/0114-Expand-Explosions-API.patch b/patches/api/0115-Expand-Explosions-API.patch
index afbf3c97c5..afbf3c97c5 100644
--- a/patches/api/0114-Expand-Explosions-API.patch
+++ b/patches/api/0115-Expand-Explosions-API.patch
diff --git a/patches/api/0115-ItemStack-API-additions-for-quantity-flags-lore.patch b/patches/api/0116-ItemStack-API-additions-for-quantity-flags-lore.patch
index 0e4f6385f6..0e4f6385f6 100644
--- a/patches/api/0115-ItemStack-API-additions-for-quantity-flags-lore.patch
+++ b/patches/api/0116-ItemStack-API-additions-for-quantity-flags-lore.patch
diff --git a/patches/api/0116-LivingEntity-Hand-Raised-Item-Use-API.patch b/patches/api/0117-LivingEntity-Hand-Raised-Item-Use-API.patch
index 7ceb852dcb..7ceb852dcb 100644
--- a/patches/api/0116-LivingEntity-Hand-Raised-Item-Use-API.patch
+++ b/patches/api/0117-LivingEntity-Hand-Raised-Item-Use-API.patch
diff --git a/patches/api/0117-RangedEntity-API.patch b/patches/api/0118-RangedEntity-API.patch
index 50af709e0a..50af709e0a 100644
--- a/patches/api/0117-RangedEntity-API.patch
+++ b/patches/api/0118-RangedEntity-API.patch
diff --git a/patches/api/0118-Add-World.getEntity-UUID-API.patch b/patches/api/0119-Add-World.getEntity-UUID-API.patch
index 97c7cea1fa..97c7cea1fa 100644
--- a/patches/api/0118-Add-World.getEntity-UUID-API.patch
+++ b/patches/api/0119-Add-World.getEntity-UUID-API.patch
diff --git a/patches/api/0119-InventoryCloseEvent-Reason-API.patch b/patches/api/0120-InventoryCloseEvent-Reason-API.patch
index e8d8154e21..e8d8154e21 100644
--- a/patches/api/0119-InventoryCloseEvent-Reason-API.patch
+++ b/patches/api/0120-InventoryCloseEvent-Reason-API.patch
diff --git a/patches/api/0120-Allow-setting-the-vex-s-summoner.patch b/patches/api/0121-Allow-setting-the-vex-s-summoner.patch
index 1e6b3abb27..1e6b3abb27 100644
--- a/patches/api/0120-Allow-setting-the-vex-s-summoner.patch
+++ b/patches/api/0121-Allow-setting-the-vex-s-summoner.patch
diff --git a/patches/api/0121-Entity-getChunk-API.patch b/patches/api/0122-Entity-getChunk-API.patch
index 1db2f570f9..1db2f570f9 100644
--- a/patches/api/0121-Entity-getChunk-API.patch
+++ b/patches/api/0122-Entity-getChunk-API.patch
diff --git a/patches/api/0122-EnderDragon-Events.patch b/patches/api/0123-EnderDragon-Events.patch
index 1a81af508a..1a81af508a 100644
--- a/patches/api/0122-EnderDragon-Events.patch
+++ b/patches/api/0123-EnderDragon-Events.patch
diff --git a/patches/api/0123-PlayerElytraBoostEvent.patch b/patches/api/0124-PlayerElytraBoostEvent.patch
index c5d8e5ddf3..c5d8e5ddf3 100644
--- a/patches/api/0123-PlayerElytraBoostEvent.patch
+++ b/patches/api/0124-PlayerElytraBoostEvent.patch
diff --git a/patches/api/0124-PlayerLaunchProjectileEvent.patch b/patches/api/0125-PlayerLaunchProjectileEvent.patch
index d2c69beeea..d2c69beeea 100644
--- a/patches/api/0124-PlayerLaunchProjectileEvent.patch
+++ b/patches/api/0125-PlayerLaunchProjectileEvent.patch
diff --git a/patches/api/0125-EntityTransformedEvent.patch b/patches/api/0126-EntityTransformedEvent.patch
index 11dfd0e1b7..11dfd0e1b7 100644
--- a/patches/api/0125-EntityTransformedEvent.patch
+++ b/patches/api/0126-EntityTransformedEvent.patch
diff --git a/patches/api/0126-Allow-disabling-armour-stand-ticking.patch b/patches/api/0127-Allow-disabling-armour-stand-ticking.patch
index 1bb68e268b..1bb68e268b 100644
--- a/patches/api/0126-Allow-disabling-armour-stand-ticking.patch
+++ b/patches/api/0127-Allow-disabling-armour-stand-ticking.patch
diff --git a/patches/api/0127-SkeletonHorse-Additions.patch b/patches/api/0128-SkeletonHorse-Additions.patch
index d50767241a..d50767241a 100644
--- a/patches/api/0127-SkeletonHorse-Additions.patch
+++ b/patches/api/0128-SkeletonHorse-Additions.patch
diff --git a/patches/api/0128-Expand-Location-Manipulation-API.patch b/patches/api/0129-Expand-Location-Manipulation-API.patch
index 05fe72fd36..05fe72fd36 100644
--- a/patches/api/0128-Expand-Location-Manipulation-API.patch
+++ b/patches/api/0129-Expand-Location-Manipulation-API.patch
diff --git a/patches/api/0129-Expand-ArmorStand-API.patch b/patches/api/0130-Expand-ArmorStand-API.patch
index 418a52b6ee..418a52b6ee 100644
--- a/patches/api/0129-Expand-ArmorStand-API.patch
+++ b/patches/api/0130-Expand-ArmorStand-API.patch
diff --git a/patches/api/0130-AnvilDamageEvent.patch b/patches/api/0131-AnvilDamageEvent.patch
index 66c4996773..66c4996773 100644
--- a/patches/api/0130-AnvilDamageEvent.patch
+++ b/patches/api/0131-AnvilDamageEvent.patch
diff --git a/patches/api/0131-Add-TNTPrimeEvent.patch b/patches/api/0132-Add-TNTPrimeEvent.patch
index 9282ea8794..9282ea8794 100644
--- a/patches/api/0131-Add-TNTPrimeEvent.patch
+++ b/patches/api/0132-Add-TNTPrimeEvent.patch
diff --git a/patches/api/0132-Provide-Chunk-Coordinates-as-a-Long-API.patch b/patches/api/0133-Provide-Chunk-Coordinates-as-a-Long-API.patch
index c239c5731e..c239c5731e 100644
--- a/patches/api/0132-Provide-Chunk-Coordinates-as-a-Long-API.patch
+++ b/patches/api/0133-Provide-Chunk-Coordinates-as-a-Long-API.patch
diff --git a/patches/api/0133-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch b/patches/api/0134-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
index 8c532bba78..8c532bba78 100644
--- a/patches/api/0133-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
+++ b/patches/api/0134-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
diff --git a/patches/api/0134-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch b/patches/api/0135-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch
index 83897ac115..83897ac115 100644
--- a/patches/api/0134-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch
+++ b/patches/api/0135-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch
diff --git a/patches/api/0135-Allow-Blocks-to-be-accessed-via-a-long-key.patch b/patches/api/0136-Allow-Blocks-to-be-accessed-via-a-long-key.patch
index 5ba59b0ca5..5ba59b0ca5 100644
--- a/patches/api/0135-Allow-Blocks-to-be-accessed-via-a-long-key.patch
+++ b/patches/api/0136-Allow-Blocks-to-be-accessed-via-a-long-key.patch
diff --git a/patches/api/0136-Slime-Pathfinder-Events.patch b/patches/api/0137-Slime-Pathfinder-Events.patch
index 5c828a3cab..5c828a3cab 100644
--- a/patches/api/0136-Slime-Pathfinder-Events.patch
+++ b/patches/api/0137-Slime-Pathfinder-Events.patch
diff --git a/patches/api/0137-Add-PhantomPreSpawnEvent.patch b/patches/api/0138-Add-PhantomPreSpawnEvent.patch
index ebe7d01d9e..ebe7d01d9e 100644
--- a/patches/api/0137-Add-PhantomPreSpawnEvent.patch
+++ b/patches/api/0138-Add-PhantomPreSpawnEvent.patch
diff --git a/patches/api/0138-Add-More-Creeper-API.patch b/patches/api/0139-Add-More-Creeper-API.patch
index 9054588ca5..9054588ca5 100644
--- a/patches/api/0138-Add-More-Creeper-API.patch
+++ b/patches/api/0139-Add-More-Creeper-API.patch
diff --git a/patches/api/0139-Inventory-removeItemAnySlot.patch b/patches/api/0140-Inventory-removeItemAnySlot.patch
index 25b79cf6bd..25b79cf6bd 100644
--- a/patches/api/0139-Inventory-removeItemAnySlot.patch
+++ b/patches/api/0140-Inventory-removeItemAnySlot.patch
diff --git a/patches/api/0140-isChunkGenerated-API.patch b/patches/api/0141-isChunkGenerated-API.patch
index 1309083cfc..1309083cfc 100644
--- a/patches/api/0140-isChunkGenerated-API.patch
+++ b/patches/api/0141-isChunkGenerated-API.patch
diff --git a/patches/api/0141-Add-source-block-constructor-and-getChangedBlockData.patch b/patches/api/0142-Add-source-block-constructor-and-getChangedBlockData.patch
index 9f9e760855..9f9e760855 100644
--- a/patches/api/0141-Add-source-block-constructor-and-getChangedBlockData.patch
+++ b/patches/api/0142-Add-source-block-constructor-and-getChangedBlockData.patch
diff --git a/patches/api/0142-Async-Chunks-API.patch b/patches/api/0143-Async-Chunks-API.patch
index d8422cf04a..d8422cf04a 100644
--- a/patches/api/0142-Async-Chunks-API.patch
+++ b/patches/api/0143-Async-Chunks-API.patch
diff --git a/patches/api/0143-Add-ray-tracing-methods-to-LivingEntity.patch b/patches/api/0144-Add-ray-tracing-methods-to-LivingEntity.patch
index 53018a8cb6..53018a8cb6 100644
--- a/patches/api/0143-Add-ray-tracing-methods-to-LivingEntity.patch
+++ b/patches/api/0144-Add-ray-tracing-methods-to-LivingEntity.patch
diff --git a/patches/api/0144-Expose-attack-cooldown-methods-for-Player.patch b/patches/api/0145-Expose-attack-cooldown-methods-for-Player.patch
index 1d7bc22a46..1d7bc22a46 100644
--- a/patches/api/0144-Expose-attack-cooldown-methods-for-Player.patch
+++ b/patches/api/0145-Expose-attack-cooldown-methods-for-Player.patch
diff --git a/patches/api/0145-Improve-death-events.patch b/patches/api/0146-Improve-death-events.patch
index 8ee8acb362..8ee8acb362 100644
--- a/patches/api/0145-Improve-death-events.patch
+++ b/patches/api/0146-Improve-death-events.patch
diff --git a/patches/api/0146-Add-Git-information-to-version-command-on-startup.patch b/patches/api/0147-Add-Git-information-to-version-command-on-startup.patch
index 6395f98250..6395f98250 100644
--- a/patches/api/0146-Add-Git-information-to-version-command-on-startup.patch
+++ b/patches/api/0147-Add-Git-information-to-version-command-on-startup.patch
diff --git a/patches/api/0147-Mob-Pathfinding-API.patch b/patches/api/0148-Mob-Pathfinding-API.patch
index ebd31df062..ebd31df062 100644
--- a/patches/api/0147-Mob-Pathfinding-API.patch
+++ b/patches/api/0148-Mob-Pathfinding-API.patch
diff --git a/patches/api/0148-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch b/patches/api/0149-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch
index 4ba25025b1..4ba25025b1 100644
--- a/patches/api/0148-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch
+++ b/patches/api/0149-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch
diff --git a/patches/api/0149-Performance-Concurrency-Improvements-to-Permissions.patch b/patches/api/0150-Performance-Concurrency-Improvements-to-Permissions.patch
index 6befcec378..6befcec378 100644
--- a/patches/api/0149-Performance-Concurrency-Improvements-to-Permissions.patch
+++ b/patches/api/0150-Performance-Concurrency-Improvements-to-Permissions.patch
diff --git a/patches/api/0150-Add-ItemStackRecipeChoice-Draft-API.patch b/patches/api/0151-Add-ItemStackRecipeChoice-Draft-API.patch
index 4cfddc6f59..4cfddc6f59 100644
--- a/patches/api/0150-Add-ItemStackRecipeChoice-Draft-API.patch
+++ b/patches/api/0151-Add-ItemStackRecipeChoice-Draft-API.patch
diff --git a/patches/api/0151-Implement-furnace-cook-speed-multiplier-API.patch b/patches/api/0152-Implement-furnace-cook-speed-multiplier-API.patch
index 6e836a844d..6e836a844d 100644
--- a/patches/api/0151-Implement-furnace-cook-speed-multiplier-API.patch
+++ b/patches/api/0152-Implement-furnace-cook-speed-multiplier-API.patch
diff --git a/patches/api/0152-Material-API-additions.patch b/patches/api/0153-Material-API-additions.patch
index 6705f33335..6705f33335 100644
--- a/patches/api/0152-Material-API-additions.patch
+++ b/patches/api/0153-Material-API-additions.patch
diff --git a/patches/api/0153-Add-Material-Tags.patch b/patches/api/0154-Add-Material-Tags.patch
index 7ffc6ee166..7ffc6ee166 100644
--- a/patches/api/0153-Add-Material-Tags.patch
+++ b/patches/api/0154-Add-Material-Tags.patch
diff --git a/patches/api/0154-PreSpawnerSpawnEvent.patch b/patches/api/0155-PreSpawnerSpawnEvent.patch
index dcb362d8bc..dcb362d8bc 100644
--- a/patches/api/0154-PreSpawnerSpawnEvent.patch
+++ b/patches/api/0155-PreSpawnerSpawnEvent.patch
diff --git a/patches/api/0155-Add-LivingEntity-getTargetEntity.patch b/patches/api/0156-Add-LivingEntity-getTargetEntity.patch
index d23917ea2f..d23917ea2f 100644
--- a/patches/api/0155-Add-LivingEntity-getTargetEntity.patch
+++ b/patches/api/0156-Add-LivingEntity-getTargetEntity.patch
diff --git a/patches/api/0156-Add-sun-related-API.patch b/patches/api/0157-Add-sun-related-API.patch
index b58796a9c2..b58796a9c2 100644
--- a/patches/api/0156-Add-sun-related-API.patch
+++ b/patches/api/0157-Add-sun-related-API.patch
diff --git a/patches/api/0157-Turtle-API.patch b/patches/api/0158-Turtle-API.patch
index a8eec937cc..a8eec937cc 100644
--- a/patches/api/0157-Turtle-API.patch
+++ b/patches/api/0158-Turtle-API.patch
diff --git a/patches/api/0158-Add-spectator-target-events.patch b/patches/api/0159-Add-spectator-target-events.patch
index c5d4b7c4db..c5d4b7c4db 100644
--- a/patches/api/0158-Add-spectator-target-events.patch
+++ b/patches/api/0159-Add-spectator-target-events.patch
diff --git a/patches/api/0159-Add-more-Witch-API.patch b/patches/api/0160-Add-more-Witch-API.patch
index 0da75bb9b7..0da75bb9b7 100644
--- a/patches/api/0159-Add-more-Witch-API.patch
+++ b/patches/api/0160-Add-more-Witch-API.patch
diff --git a/patches/api/0160-Make-the-default-permission-message-configurable.patch b/patches/api/0161-Make-the-default-permission-message-configurable.patch
index 2f6f5f4ef1..2f6f5f4ef1 100644
--- a/patches/api/0160-Make-the-default-permission-message-configurable.patch
+++ b/patches/api/0161-Make-the-default-permission-message-configurable.patch
diff --git a/patches/api/0161-Support-cancellation-supression-of-EntityDismount-Ve.patch b/patches/api/0162-Support-cancellation-supression-of-EntityDismount-Ve.patch
index 6eec419672..6eec419672 100644
--- a/patches/api/0161-Support-cancellation-supression-of-EntityDismount-Ve.patch
+++ b/patches/api/0162-Support-cancellation-supression-of-EntityDismount-Ve.patch
diff --git a/patches/api/0162-Add-more-Zombie-API.patch b/patches/api/0163-Add-more-Zombie-API.patch
index 38efc859d8..38efc859d8 100644
--- a/patches/api/0162-Add-more-Zombie-API.patch
+++ b/patches/api/0163-Add-more-Zombie-API.patch
diff --git a/patches/api/0163-Change-the-reserved-channel-check-to-be-sensible.patch b/patches/api/0164-Change-the-reserved-channel-check-to-be-sensible.patch
index 8975ff3c43..8975ff3c43 100644
--- a/patches/api/0163-Change-the-reserved-channel-check-to-be-sensible.patch
+++ b/patches/api/0164-Change-the-reserved-channel-check-to-be-sensible.patch
diff --git a/patches/api/0164-Add-PlayerConnectionCloseEvent.patch b/patches/api/0165-Add-PlayerConnectionCloseEvent.patch
index f1a017f4fb..f1a017f4fb 100644
--- a/patches/api/0164-Add-PlayerConnectionCloseEvent.patch
+++ b/patches/api/0165-Add-PlayerConnectionCloseEvent.patch
diff --git a/patches/api/0165-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch b/patches/api/0166-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
index 552d9f92c6..552d9f92c6 100644
--- a/patches/api/0165-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
+++ b/patches/api/0166-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
diff --git a/patches/api/0166-Add-ItemStack-Recipe-API-helper-methods.patch b/patches/api/0167-Add-ItemStack-Recipe-API-helper-methods.patch
index d01ff8e6d9..d01ff8e6d9 100644
--- a/patches/api/0166-Add-ItemStack-Recipe-API-helper-methods.patch
+++ b/patches/api/0167-Add-ItemStack-Recipe-API-helper-methods.patch
diff --git a/patches/api/0167-BlockDestroyEvent.patch b/patches/api/0168-BlockDestroyEvent.patch
index c414a42532..c414a42532 100644
--- a/patches/api/0167-BlockDestroyEvent.patch
+++ b/patches/api/0168-BlockDestroyEvent.patch
diff --git a/patches/api/0168-Add-WhitelistToggleEvent.patch b/patches/api/0169-Add-WhitelistToggleEvent.patch
index 4bb54b5c92..4bb54b5c92 100644
--- a/patches/api/0168-Add-WhitelistToggleEvent.patch
+++ b/patches/api/0169-Add-WhitelistToggleEvent.patch
diff --git a/patches/api/0169-Add-GS4-Query-event.patch b/patches/api/0170-Add-GS4-Query-event.patch
index ffab49a92a..ffab49a92a 100644
--- a/patches/api/0169-Add-GS4-Query-event.patch
+++ b/patches/api/0170-Add-GS4-Query-event.patch
diff --git a/patches/api/0170-Add-PlayerPostRespawnEvent.patch b/patches/api/0171-Add-PlayerPostRespawnEvent.patch
index 01106b663b..01106b663b 100644
--- a/patches/api/0170-Add-PlayerPostRespawnEvent.patch
+++ b/patches/api/0171-Add-PlayerPostRespawnEvent.patch
diff --git a/patches/api/0171-Entity-getEntitySpawnReason.patch b/patches/api/0172-Entity-getEntitySpawnReason.patch
index 2b37c961ed..2b37c961ed 100644
--- a/patches/api/0171-Entity-getEntitySpawnReason.patch
+++ b/patches/api/0172-Entity-getEntitySpawnReason.patch
diff --git a/patches/api/0172-Fix-Spigot-annotation-mistakes.patch b/patches/api/0173-Fix-Spigot-annotation-mistakes.patch
index 277d463438..277d463438 100644
--- a/patches/api/0172-Fix-Spigot-annotation-mistakes.patch
+++ b/patches/api/0173-Fix-Spigot-annotation-mistakes.patch
diff --git a/patches/api/0173-Server-Tick-Events.patch b/patches/api/0174-Server-Tick-Events.patch
index 22b552c65a..22b552c65a 100644
--- a/patches/api/0173-Server-Tick-Events.patch
+++ b/patches/api/0174-Server-Tick-Events.patch
diff --git a/patches/api/0174-PlayerDeathEvent-getItemsToKeep.patch b/patches/api/0175-PlayerDeathEvent-getItemsToKeep.patch
index 999842766c..999842766c 100644
--- a/patches/api/0174-PlayerDeathEvent-getItemsToKeep.patch
+++ b/patches/api/0175-PlayerDeathEvent-getItemsToKeep.patch
diff --git a/patches/api/0175-Add-Heightmap-API.patch b/patches/api/0176-Add-Heightmap-API.patch
index 5100bb0ae9..5100bb0ae9 100644
--- a/patches/api/0175-Add-Heightmap-API.patch
+++ b/patches/api/0176-Add-Heightmap-API.patch
diff --git a/patches/api/0176-Mob-Spawner-API-Enhancements.patch b/patches/api/0177-Mob-Spawner-API-Enhancements.patch
index 4928839428..4928839428 100644
--- a/patches/api/0176-Mob-Spawner-API-Enhancements.patch
+++ b/patches/api/0177-Mob-Spawner-API-Enhancements.patch
diff --git a/patches/api/0177-Add-BlockSoundGroup-interface.patch b/patches/api/0178-Add-BlockSoundGroup-interface.patch
index dd3fc87e20..dd3fc87e20 100644
--- a/patches/api/0177-Add-BlockSoundGroup-interface.patch
+++ b/patches/api/0178-Add-BlockSoundGroup-interface.patch
diff --git a/patches/api/0178-Amend-PlayerInteractAtEntityEvent-javadoc-for-ArmorS.patch b/patches/api/0179-Amend-PlayerInteractAtEntityEvent-javadoc-for-ArmorS.patch
index b5148c5574..b5148c5574 100644
--- a/patches/api/0178-Amend-PlayerInteractAtEntityEvent-javadoc-for-ArmorS.patch
+++ b/patches/api/0179-Amend-PlayerInteractAtEntityEvent-javadoc-for-ArmorS.patch
diff --git a/patches/api/0179-Increase-custom-payload-channel-message-size.patch b/patches/api/0180-Increase-custom-payload-channel-message-size.patch
index 24aacd2b29..24aacd2b29 100644
--- a/patches/api/0179-Increase-custom-payload-channel-message-size.patch
+++ b/patches/api/0180-Increase-custom-payload-channel-message-size.patch
diff --git a/patches/api/0180-Expose-the-internal-current-tick.patch b/patches/api/0181-Expose-the-internal-current-tick.patch
index e3ba57431c..e3ba57431c 100644
--- a/patches/api/0180-Expose-the-internal-current-tick.patch
+++ b/patches/api/0181-Expose-the-internal-current-tick.patch
diff --git a/patches/api/0181-Improve-Block-breakNaturally-API.patch b/patches/api/0182-Improve-Block-breakNaturally-API.patch
index d4871c1eb0..d4871c1eb0 100644
--- a/patches/api/0181-Improve-Block-breakNaturally-API.patch
+++ b/patches/api/0182-Improve-Block-breakNaturally-API.patch
diff --git a/patches/api/0182-PlayerDeathEvent-shouldDropExperience.patch b/patches/api/0183-PlayerDeathEvent-shouldDropExperience.patch
index 47dc1d2141..47dc1d2141 100644
--- a/patches/api/0182-PlayerDeathEvent-shouldDropExperience.patch
+++ b/patches/api/0183-PlayerDeathEvent-shouldDropExperience.patch
diff --git a/patches/api/0183-Add-ThrownEggHatchEvent.patch b/patches/api/0184-Add-ThrownEggHatchEvent.patch
index f605a2a11b..f605a2a11b 100644
--- a/patches/api/0183-Add-ThrownEggHatchEvent.patch
+++ b/patches/api/0184-Add-ThrownEggHatchEvent.patch
diff --git a/patches/api/0184-Entity-Jump-API.patch b/patches/api/0185-Entity-Jump-API.patch
index 8b32879e2d..8b32879e2d 100644
--- a/patches/api/0184-Entity-Jump-API.patch
+++ b/patches/api/0185-Entity-Jump-API.patch
diff --git a/patches/api/0185-add-hand-to-BlockMultiPlaceEvent.patch b/patches/api/0186-add-hand-to-BlockMultiPlaceEvent.patch
index f15b482d62..f15b482d62 100644
--- a/patches/api/0185-add-hand-to-BlockMultiPlaceEvent.patch
+++ b/patches/api/0186-add-hand-to-BlockMultiPlaceEvent.patch
diff --git a/patches/api/0186-Add-tick-times-API.patch b/patches/api/0187-Add-tick-times-API.patch
index fcb596bb9f..fcb596bb9f 100644
--- a/patches/api/0186-Add-tick-times-API.patch
+++ b/patches/api/0187-Add-tick-times-API.patch
diff --git a/patches/api/0187-Expose-MinecraftServer-isRunning.patch b/patches/api/0188-Expose-MinecraftServer-isRunning.patch
index 1f925eb607..1f925eb607 100644
--- a/patches/api/0187-Expose-MinecraftServer-isRunning.patch
+++ b/patches/api/0188-Expose-MinecraftServer-isRunning.patch
diff --git a/patches/api/0188-Add-Raw-Byte-ItemStack-Serialization.patch b/patches/api/0189-Add-Raw-Byte-ItemStack-Serialization.patch
index 93f111f781..93f111f781 100644
--- a/patches/api/0188-Add-Raw-Byte-ItemStack-Serialization.patch
+++ b/patches/api/0189-Add-Raw-Byte-ItemStack-Serialization.patch
diff --git a/patches/api/0189-Add-Player-Client-Options-API.patch b/patches/api/0190-Add-Player-Client-Options-API.patch
index 14629ecc09..14629ecc09 100644
--- a/patches/api/0189-Add-Player-Client-Options-API.patch
+++ b/patches/api/0190-Add-Player-Client-Options-API.patch
diff --git a/patches/api/0190-Add-PlayerAttackEntityCooldownResetEvent.patch b/patches/api/0191-Add-PlayerAttackEntityCooldownResetEvent.patch
index 15fa2db392..15fa2db392 100644
--- a/patches/api/0190-Add-PlayerAttackEntityCooldownResetEvent.patch
+++ b/patches/api/0191-Add-PlayerAttackEntityCooldownResetEvent.patch
diff --git a/patches/api/0191-Fix-Potion-toItemStack-swapping-the-extended-and-upg.patch b/patches/api/0192-Fix-Potion-toItemStack-swapping-the-extended-and-upg.patch
index 2fa02a7788..2fa02a7788 100644
--- a/patches/api/0191-Fix-Potion-toItemStack-swapping-the-extended-and-upg.patch
+++ b/patches/api/0192-Fix-Potion-toItemStack-swapping-the-extended-and-upg.patch
diff --git a/patches/api/0192-Add-item-slot-convenience-methods.patch b/patches/api/0193-Add-item-slot-convenience-methods.patch
index 3f2480123e..3f2480123e 100644
--- a/patches/api/0192-Add-item-slot-convenience-methods.patch
+++ b/patches/api/0193-Add-item-slot-convenience-methods.patch
diff --git a/patches/api/0193-Villager-Restocks-API.patch b/patches/api/0194-Villager-Restocks-API.patch
index 5b3898429d..5b3898429d 100644
--- a/patches/api/0193-Villager-Restocks-API.patch
+++ b/patches/api/0194-Villager-Restocks-API.patch
diff --git a/patches/api/0194-Expose-game-version.patch b/patches/api/0195-Expose-game-version.patch
index 4bebadd38b..4bebadd38b 100644
--- a/patches/api/0194-Expose-game-version.patch
+++ b/patches/api/0195-Expose-game-version.patch
diff --git a/patches/api/0195-Add-Mob-Goal-API.patch b/patches/api/0196-Add-Mob-Goal-API.patch
index 58bccc5a6f..58bccc5a6f 100644
--- a/patches/api/0195-Add-Mob-Goal-API.patch
+++ b/patches/api/0196-Add-Mob-Goal-API.patch
diff --git a/patches/api/0196-Add-villager-reputation-API.patch b/patches/api/0197-Add-villager-reputation-API.patch
index 4a2093aab9..4a2093aab9 100644
--- a/patches/api/0196-Add-villager-reputation-API.patch
+++ b/patches/api/0197-Add-villager-reputation-API.patch
diff --git a/patches/api/0197-Spawn-Reason-API.patch b/patches/api/0198-Spawn-Reason-API.patch
index ff79247e98..ff79247e98 100644
--- a/patches/api/0197-Spawn-Reason-API.patch
+++ b/patches/api/0198-Spawn-Reason-API.patch
diff --git a/patches/api/0198-Potential-bed-API.patch b/patches/api/0199-Potential-bed-API.patch
index cdbbcebbbc..cdbbcebbbc 100644
--- a/patches/api/0198-Potential-bed-API.patch
+++ b/patches/api/0199-Potential-bed-API.patch
diff --git a/patches/api/0199-Inventory-getHolder-method-without-block-snapshot.patch b/patches/api/0200-Inventory-getHolder-method-without-block-snapshot.patch
index d834d6cdb3..d834d6cdb3 100644
--- a/patches/api/0199-Inventory-getHolder-method-without-block-snapshot.patch
+++ b/patches/api/0200-Inventory-getHolder-method-without-block-snapshot.patch
diff --git a/patches/api/0200-Improve-Arrow-API.patch b/patches/api/0201-Improve-Arrow-API.patch
index 1c70418e98..1c70418e98 100644
--- a/patches/api/0200-Improve-Arrow-API.patch
+++ b/patches/api/0201-Improve-Arrow-API.patch
diff --git a/patches/api/0201-Add-and-implement-PlayerRecipeBookClickEvent.patch b/patches/api/0202-Add-and-implement-PlayerRecipeBookClickEvent.patch
index 9bd7c5c12b..9bd7c5c12b 100644
--- a/patches/api/0201-Add-and-implement-PlayerRecipeBookClickEvent.patch
+++ b/patches/api/0202-Add-and-implement-PlayerRecipeBookClickEvent.patch
diff --git a/patches/api/0202-Support-components-in-ItemMeta.patch b/patches/api/0203-Support-components-in-ItemMeta.patch
index 00f7942262..00f7942262 100644
--- a/patches/api/0202-Support-components-in-ItemMeta.patch
+++ b/patches/api/0203-Support-components-in-ItemMeta.patch
diff --git a/patches/api/0203-added-2-new-TargetReasons-for-1.16-mob-behavior.patch b/patches/api/0204-added-2-new-TargetReasons-for-1.16-mob-behavior.patch
index 6c725bc833..6c725bc833 100644
--- a/patches/api/0203-added-2-new-TargetReasons-for-1.16-mob-behavior.patch
+++ b/patches/api/0204-added-2-new-TargetReasons-for-1.16-mob-behavior.patch
diff --git a/patches/api/0204-Add-entity-liquid-API.patch b/patches/api/0205-Add-entity-liquid-API.patch
index 11fa994481..11fa994481 100644
--- a/patches/api/0204-Add-entity-liquid-API.patch
+++ b/patches/api/0205-Add-entity-liquid-API.patch
diff --git a/patches/api/0205-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch b/patches/api/0206-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch
index 11b76de878..11b76de878 100644
--- a/patches/api/0205-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch
+++ b/patches/api/0206-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch
diff --git a/patches/api/0206-Brand-support.patch b/patches/api/0208-Brand-support.patch
index e6852c6468..e6852c6468 100644
--- a/patches/api/0206-Brand-support.patch
+++ b/patches/api/0208-Brand-support.patch
diff --git a/patches/api/0208-Add-moon-phase-API.patch b/patches/api/0209-Add-moon-phase-API.patch
index 0b33cb35ed..0b33cb35ed 100644
--- a/patches/api/0208-Add-moon-phase-API.patch
+++ b/patches/api/0209-Add-moon-phase-API.patch
diff --git a/patches/api/0209-Add-playPickupItemAnimation-to-LivingEntity.patch b/patches/api/0210-Add-playPickupItemAnimation-to-LivingEntity.patch
index 08b1135ece..08b1135ece 100644
--- a/patches/api/0209-Add-playPickupItemAnimation-to-LivingEntity.patch
+++ b/patches/api/0210-Add-playPickupItemAnimation-to-LivingEntity.patch
diff --git a/patches/api/0210-Add-more-Evoker-API.patch b/patches/api/0211-Add-more-Evoker-API.patch
index 0d6f0f7328..0d6f0f7328 100644
--- a/patches/api/0210-Add-more-Evoker-API.patch
+++ b/patches/api/0211-Add-more-Evoker-API.patch
diff --git a/patches/api/0211-Add-methods-to-get-translation-keys.patch b/patches/api/0212-Add-methods-to-get-translation-keys.patch
index e965c3e285..e965c3e285 100644
--- a/patches/api/0211-Add-methods-to-get-translation-keys.patch
+++ b/patches/api/0212-Add-methods-to-get-translation-keys.patch
diff --git a/patches/api/0212-Create-HoverEvent-from-ItemStack-Entity.patch b/patches/api/0213-Create-HoverEvent-from-ItemStack-Entity.patch
index 6c5c79f039..6c5c79f039 100644
--- a/patches/api/0212-Create-HoverEvent-from-ItemStack-Entity.patch
+++ b/patches/api/0213-Create-HoverEvent-from-ItemStack-Entity.patch
diff --git a/patches/api/0213-Add-additional-open-container-api-to-HumanEntity.patch b/patches/api/0214-Add-additional-open-container-api-to-HumanEntity.patch
index 9512168843..9512168843 100644
--- a/patches/api/0213-Add-additional-open-container-api-to-HumanEntity.patch
+++ b/patches/api/0214-Add-additional-open-container-api-to-HumanEntity.patch
diff --git a/patches/api/0214-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/api/0215-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
index 0118683bc2..0118683bc2 100644
--- a/patches/api/0214-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
+++ b/patches/api/0215-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
diff --git a/patches/api/0215-Entity-isTicking.patch b/patches/api/0216-Entity-isTicking.patch
index 345c297eaa..345c297eaa 100644
--- a/patches/api/0215-Entity-isTicking.patch
+++ b/patches/api/0216-Entity-isTicking.patch
diff --git a/patches/api/0216-Villager-resetOffers.patch b/patches/api/0217-Villager-resetOffers.patch
index 60fedfba0f..60fedfba0f 100644
--- a/patches/api/0216-Villager-resetOffers.patch
+++ b/patches/api/0217-Villager-resetOffers.patch
diff --git a/patches/api/0217-Player-elytra-boost-API.patch b/patches/api/0218-Player-elytra-boost-API.patch
index de1fdb9ea6..de1fdb9ea6 100644
--- a/patches/api/0217-Player-elytra-boost-API.patch
+++ b/patches/api/0218-Player-elytra-boost-API.patch
diff --git a/patches/api/0218-Add-getOfflinePlayerIfCached-String.patch b/patches/api/0219-Add-getOfflinePlayerIfCached-String.patch
index 275ba3d9ee..275ba3d9ee 100644
--- a/patches/api/0218-Add-getOfflinePlayerIfCached-String.patch
+++ b/patches/api/0219-Add-getOfflinePlayerIfCached-String.patch
diff --git a/patches/api/0219-Add-ignore-discounts-API.patch b/patches/api/0220-Add-ignore-discounts-API.patch
index 89655ddef8..89655ddef8 100644
--- a/patches/api/0219-Add-ignore-discounts-API.patch
+++ b/patches/api/0220-Add-ignore-discounts-API.patch
diff --git a/patches/api/0220-Item-no-age-no-player-pickup.patch b/patches/api/0221-Item-no-age-no-player-pickup.patch
index 5dd7572120..5dd7572120 100644
--- a/patches/api/0220-Item-no-age-no-player-pickup.patch
+++ b/patches/api/0221-Item-no-age-no-player-pickup.patch
diff --git a/patches/api/0221-Beacon-API-custom-effect-ranges.patch b/patches/api/0222-Beacon-API-custom-effect-ranges.patch
index effd7b3ae9..effd7b3ae9 100644
--- a/patches/api/0221-Beacon-API-custom-effect-ranges.patch
+++ b/patches/api/0222-Beacon-API-custom-effect-ranges.patch
diff --git a/patches/api/0222-Add-API-for-quit-reason.patch b/patches/api/0223-Add-API-for-quit-reason.patch
index 0350afaf92..0350afaf92 100644
--- a/patches/api/0222-Add-API-for-quit-reason.patch
+++ b/patches/api/0223-Add-API-for-quit-reason.patch
diff --git a/patches/api/0223-Add-Destroy-Speed-API.patch b/patches/api/0224-Add-Destroy-Speed-API.patch
index 84faaef8ce..84faaef8ce 100644
--- a/patches/api/0223-Add-Destroy-Speed-API.patch
+++ b/patches/api/0224-Add-Destroy-Speed-API.patch
diff --git a/patches/api/0224-Add-LivingEntity-clearActiveItem.patch b/patches/api/0225-Add-LivingEntity-clearActiveItem.patch
index 7bc93949fb..7bc93949fb 100644
--- a/patches/api/0224-Add-LivingEntity-clearActiveItem.patch
+++ b/patches/api/0225-Add-LivingEntity-clearActiveItem.patch
diff --git a/patches/api/0225-Add-PlayerItemCooldownEvent.patch b/patches/api/0226-Add-PlayerItemCooldownEvent.patch
index 378f88f6e6..378f88f6e6 100644
--- a/patches/api/0225-Add-PlayerItemCooldownEvent.patch
+++ b/patches/api/0226-Add-PlayerItemCooldownEvent.patch
diff --git a/patches/api/0226-More-lightning-API.patch b/patches/api/0227-More-lightning-API.patch
index 4197f480bf..4197f480bf 100644
--- a/patches/api/0226-More-lightning-API.patch
+++ b/patches/api/0227-More-lightning-API.patch
diff --git a/patches/api/0227-Add-PlayerShearBlockEvent.patch b/patches/api/0228-Add-PlayerShearBlockEvent.patch
index 051544b4a9..051544b4a9 100644
--- a/patches/api/0227-Add-PlayerShearBlockEvent.patch
+++ b/patches/api/0228-Add-PlayerShearBlockEvent.patch
diff --git a/patches/api/0228-Player-Chunk-Load-Unload-Events.patch b/patches/api/0229-Player-Chunk-Load-Unload-Events.patch
index e2ce87ec9d..e2ce87ec9d 100644
--- a/patches/api/0228-Player-Chunk-Load-Unload-Events.patch
+++ b/patches/api/0229-Player-Chunk-Load-Unload-Events.patch
diff --git a/patches/api/0229-Expose-LivingEntity-hurt-direction.patch b/patches/api/0230-Expose-LivingEntity-hurt-direction.patch
index 4af40bdf52..4af40bdf52 100644
--- a/patches/api/0229-Expose-LivingEntity-hurt-direction.patch
+++ b/patches/api/0230-Expose-LivingEntity-hurt-direction.patch
diff --git a/patches/api/0230-Add-OBSTRUCTED-reason-to-BedEnterResult.patch b/patches/api/0231-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
index 00552e9137..00552e9137 100644
--- a/patches/api/0230-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
+++ b/patches/api/0231-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
diff --git a/patches/api/0231-Added-PlayerTradeEvent.patch b/patches/api/0232-Added-PlayerTradeEvent.patch
index e09b088160..e09b088160 100644
--- a/patches/api/0231-Added-PlayerTradeEvent.patch
+++ b/patches/api/0232-Added-PlayerTradeEvent.patch
diff --git a/patches/api/0232-Add-TargetHitEvent-API.patch b/patches/api/0233-Add-TargetHitEvent-API.patch
index 247421fb61..247421fb61 100644
--- a/patches/api/0232-Add-TargetHitEvent-API.patch
+++ b/patches/api/0233-Add-TargetHitEvent-API.patch
diff --git a/patches/api/0233-Additional-Block-Material-API-s.patch b/patches/api/0234-Additional-Block-Material-API-s.patch
index f20f4d9d39..f20f4d9d39 100644
--- a/patches/api/0233-Additional-Block-Material-API-s.patch
+++ b/patches/api/0234-Additional-Block-Material-API-s.patch
diff --git a/patches/api/0234-Add-API-to-get-Material-from-Boats-and-Minecarts.patch b/patches/api/0235-Add-API-to-get-Material-from-Boats-and-Minecarts.patch
index d297dd5c24..d297dd5c24 100644
--- a/patches/api/0234-Add-API-to-get-Material-from-Boats-and-Minecarts.patch
+++ b/patches/api/0235-Add-API-to-get-Material-from-Boats-and-Minecarts.patch
diff --git a/patches/api/0235-Add-PlayerFlowerPotManipulateEvent.patch b/patches/api/0236-Add-PlayerFlowerPotManipulateEvent.patch
index d9cd5a9f01..d9cd5a9f01 100644
--- a/patches/api/0235-Add-PlayerFlowerPotManipulateEvent.patch
+++ b/patches/api/0236-Add-PlayerFlowerPotManipulateEvent.patch
diff --git a/patches/api/0236-Zombie-API-breaking-doors.patch b/patches/api/0237-Zombie-API-breaking-doors.patch
index 18f139227e..18f139227e 100644
--- a/patches/api/0236-Zombie-API-breaking-doors.patch
+++ b/patches/api/0237-Zombie-API-breaking-doors.patch
diff --git a/patches/api/0237-Add-EntityLoadCrossbowEvent.patch b/patches/api/0238-Add-EntityLoadCrossbowEvent.patch
index f96d912584..f96d912584 100644
--- a/patches/api/0237-Add-EntityLoadCrossbowEvent.patch
+++ b/patches/api/0238-Add-EntityLoadCrossbowEvent.patch
diff --git a/patches/api/0238-Added-WorldGameRuleChangeEvent.patch b/patches/api/0239-Added-WorldGameRuleChangeEvent.patch
index 8ef5f7efcd..8ef5f7efcd 100644
--- a/patches/api/0238-Added-WorldGameRuleChangeEvent.patch
+++ b/patches/api/0239-Added-WorldGameRuleChangeEvent.patch
diff --git a/patches/api/0239-Added-ServerResourcesReloadedEvent.patch b/patches/api/0240-Added-ServerResourcesReloadedEvent.patch
index de081bbae7..de081bbae7 100644
--- a/patches/api/0239-Added-ServerResourcesReloadedEvent.patch
+++ b/patches/api/0240-Added-ServerResourcesReloadedEvent.patch
diff --git a/patches/api/0240-Add-BlockFailedDispenseEvent.patch b/patches/api/0241-Add-BlockFailedDispenseEvent.patch
index 126714b965..126714b965 100644
--- a/patches/api/0240-Add-BlockFailedDispenseEvent.patch
+++ b/patches/api/0241-Add-BlockFailedDispenseEvent.patch
diff --git a/patches/api/0241-Added-PlayerLecternPageChangeEvent.patch b/patches/api/0242-Added-PlayerLecternPageChangeEvent.patch
index 2b65c3a245..2b65c3a245 100644
--- a/patches/api/0241-Added-PlayerLecternPageChangeEvent.patch
+++ b/patches/api/0242-Added-PlayerLecternPageChangeEvent.patch
diff --git a/patches/api/0242-Added-PlayerLoomPatternSelectEvent.patch b/patches/api/0243-Added-PlayerLoomPatternSelectEvent.patch
index 5677026956..5677026956 100644
--- a/patches/api/0242-Added-PlayerLoomPatternSelectEvent.patch
+++ b/patches/api/0243-Added-PlayerLoomPatternSelectEvent.patch
diff --git a/patches/api/0243-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch b/patches/api/0244-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch
index c25fbd796f..c25fbd796f 100644
--- a/patches/api/0243-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch
+++ b/patches/api/0244-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch
diff --git a/patches/api/0244-Add-sendOpLevel-API.patch b/patches/api/0245-Add-sendOpLevel-API.patch
index b6dee33776..b6dee33776 100644
--- a/patches/api/0244-Add-sendOpLevel-API.patch
+++ b/patches/api/0245-Add-sendOpLevel-API.patch
diff --git a/patches/api/0245-Add-PaperRegistry.patch b/patches/api/0246-Add-PaperRegistry.patch
index 8cc1e1b931..8cc1e1b931 100644
--- a/patches/api/0245-Add-PaperRegistry.patch
+++ b/patches/api/0246-Add-PaperRegistry.patch
diff --git a/patches/api/0246-Add-StructuresLocateEvent.patch b/patches/api/0247-Add-StructuresLocateEvent.patch
index 83e069116b..83e069116b 100644
--- a/patches/api/0246-Add-StructuresLocateEvent.patch
+++ b/patches/api/0247-Add-StructuresLocateEvent.patch
diff --git a/patches/api/0247-Add-BlockPreDispenseEvent.patch b/patches/api/0248-Add-BlockPreDispenseEvent.patch
index fb0b89a4ee..fb0b89a4ee 100644
--- a/patches/api/0247-Add-BlockPreDispenseEvent.patch
+++ b/patches/api/0248-Add-BlockPreDispenseEvent.patch
diff --git a/patches/api/0248-Added-missing-vanilla-tags.patch b/patches/api/0249-Added-missing-vanilla-tags.patch
index 1b1e570e1a..1b1e570e1a 100644
--- a/patches/api/0248-Added-missing-vanilla-tags.patch
+++ b/patches/api/0249-Added-missing-vanilla-tags.patch
diff --git a/patches/api/0249-Added-PlayerChangeBeaconEffectEvent.patch b/patches/api/0250-Added-PlayerChangeBeaconEffectEvent.patch
index c0621d7054..c0621d7054 100644
--- a/patches/api/0249-Added-PlayerChangeBeaconEffectEvent.patch
+++ b/patches/api/0250-Added-PlayerChangeBeaconEffectEvent.patch
diff --git a/patches/api/0250-Added-PlayerStonecutterRecipeSelectEvent.patch b/patches/api/0251-Added-PlayerStonecutterRecipeSelectEvent.patch
index ce446c46fe..ce446c46fe 100644
--- a/patches/api/0250-Added-PlayerStonecutterRecipeSelectEvent.patch
+++ b/patches/api/0251-Added-PlayerStonecutterRecipeSelectEvent.patch
diff --git a/patches/api/0251-Add-dropLeash-variable-to-EntityUnleashEvent.patch b/patches/api/0252-Add-dropLeash-variable-to-EntityUnleashEvent.patch
index f85f2a4f26..f85f2a4f26 100644
--- a/patches/api/0251-Add-dropLeash-variable-to-EntityUnleashEvent.patch
+++ b/patches/api/0252-Add-dropLeash-variable-to-EntityUnleashEvent.patch
diff --git a/patches/api/0252-add-DragonEggFormEvent.patch b/patches/api/0253-add-DragonEggFormEvent.patch
index c465295e88..c465295e88 100644
--- a/patches/api/0252-add-DragonEggFormEvent.patch
+++ b/patches/api/0253-add-DragonEggFormEvent.patch
diff --git a/patches/api/0253-EntityMoveEvent.patch b/patches/api/0254-EntityMoveEvent.patch
index 2855c3bdef..2855c3bdef 100644
--- a/patches/api/0253-EntityMoveEvent.patch
+++ b/patches/api/0254-EntityMoveEvent.patch
diff --git a/patches/api/0254-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/api/0255-Allow-adding-items-to-BlockDropItemEvent.patch
index 984da00f52..984da00f52 100644
--- a/patches/api/0254-Allow-adding-items-to-BlockDropItemEvent.patch
+++ b/patches/api/0255-Allow-adding-items-to-BlockDropItemEvent.patch
diff --git a/patches/api/0255-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/api/0256-Add-getMainThreadExecutor-to-BukkitScheduler.patch
index bbb81fdcf6..bbb81fdcf6 100644
--- a/patches/api/0255-Add-getMainThreadExecutor-to-BukkitScheduler.patch
+++ b/patches/api/0256-Add-getMainThreadExecutor-to-BukkitScheduler.patch
diff --git a/patches/api/0256-living-entity-allow-attribute-registration.patch b/patches/api/0257-living-entity-allow-attribute-registration.patch
index e7ded6dabb..e7ded6dabb 100644
--- a/patches/api/0256-living-entity-allow-attribute-registration.patch
+++ b/patches/api/0257-living-entity-allow-attribute-registration.patch
diff --git a/patches/api/0257-Add-missing-effects.patch b/patches/api/0258-Add-missing-effects.patch
index e61e36d1e3..e61e36d1e3 100644
--- a/patches/api/0257-Add-missing-effects.patch
+++ b/patches/api/0258-Add-missing-effects.patch
diff --git a/patches/api/0258-Expose-Tracked-Players.patch b/patches/api/0259-Expose-Tracked-Players.patch
index ef64931c5d..ef64931c5d 100644
--- a/patches/api/0258-Expose-Tracked-Players.patch
+++ b/patches/api/0259-Expose-Tracked-Players.patch
diff --git a/patches/api/0259-Cache-the-result-of-Material-isBlock.patch b/patches/api/0260-Cache-the-result-of-Material-isBlock.patch
index 514a9409e0..514a9409e0 100644
--- a/patches/api/0259-Cache-the-result-of-Material-isBlock.patch
+++ b/patches/api/0260-Cache-the-result-of-Material-isBlock.patch
diff --git a/patches/api/0260-Add-worldborder-events.patch b/patches/api/0261-Add-worldborder-events.patch
index 2a1d4164b2..2a1d4164b2 100644
--- a/patches/api/0260-Add-worldborder-events.patch
+++ b/patches/api/0261-Add-worldborder-events.patch
diff --git a/patches/api/0261-added-PlayerNameEntityEvent.patch b/patches/api/0262-added-PlayerNameEntityEvent.patch
index a38082f8e8..a38082f8e8 100644
--- a/patches/api/0261-added-PlayerNameEntityEvent.patch
+++ b/patches/api/0262-added-PlayerNameEntityEvent.patch
diff --git a/patches/api/0262-Add-recipe-to-cook-events.patch b/patches/api/0263-Add-recipe-to-cook-events.patch
index 8c8712541e..8c8712541e 100644
--- a/patches/api/0262-Add-recipe-to-cook-events.patch
+++ b/patches/api/0263-Add-recipe-to-cook-events.patch
diff --git a/patches/api/0263-Add-Block-isValidTool.patch b/patches/api/0264-Add-Block-isValidTool.patch
index 0a86ea4c67..0a86ea4c67 100644
--- a/patches/api/0263-Add-Block-isValidTool.patch
+++ b/patches/api/0264-Add-Block-isValidTool.patch
diff --git a/patches/api/0264-Expand-world-key-API.patch b/patches/api/0265-Expand-world-key-API.patch
index 213dc3023d..213dc3023d 100644
--- a/patches/api/0264-Expand-world-key-API.patch
+++ b/patches/api/0265-Expand-world-key-API.patch
diff --git a/patches/api/0265-Item-Rarity-API.patch b/patches/api/0266-Item-Rarity-API.patch
index bd9fc07cfc..bd9fc07cfc 100644
--- a/patches/api/0265-Item-Rarity-API.patch
+++ b/patches/api/0266-Item-Rarity-API.patch
diff --git a/patches/api/0266-Expose-protocol-version.patch b/patches/api/0267-Expose-protocol-version.patch
index 18c7331272..18c7331272 100644
--- a/patches/api/0266-Expose-protocol-version.patch
+++ b/patches/api/0267-Expose-protocol-version.patch
diff --git a/patches/api/0267-add-isDeeplySleeping-to-HumanEntity.patch b/patches/api/0268-add-isDeeplySleeping-to-HumanEntity.patch
index fc6f6dcab3..fc6f6dcab3 100644
--- a/patches/api/0267-add-isDeeplySleeping-to-HumanEntity.patch
+++ b/patches/api/0268-add-isDeeplySleeping-to-HumanEntity.patch
diff --git a/patches/api/0268-add-consumeFuel-to-FurnaceBurnEvent.patch b/patches/api/0269-add-consumeFuel-to-FurnaceBurnEvent.patch
index 07036efb43..07036efb43 100644
--- a/patches/api/0268-add-consumeFuel-to-FurnaceBurnEvent.patch
+++ b/patches/api/0269-add-consumeFuel-to-FurnaceBurnEvent.patch
diff --git a/patches/api/0269-add-get-set-drop-chance-to-EntityEquipment.patch b/patches/api/0270-add-get-set-drop-chance-to-EntityEquipment.patch
index a9a1c98000..a9a1c98000 100644
--- a/patches/api/0269-add-get-set-drop-chance-to-EntityEquipment.patch
+++ b/patches/api/0270-add-get-set-drop-chance-to-EntityEquipment.patch
diff --git a/patches/api/0270-Added-PlayerDeepSleepEvent.patch b/patches/api/0271-Added-PlayerDeepSleepEvent.patch
index d8dccca755..d8dccca755 100644
--- a/patches/api/0270-Added-PlayerDeepSleepEvent.patch
+++ b/patches/api/0271-Added-PlayerDeepSleepEvent.patch
diff --git a/patches/api/0271-More-World-API.patch b/patches/api/0272-More-World-API.patch
index 13634e19f8..13634e19f8 100644
--- a/patches/api/0271-More-World-API.patch
+++ b/patches/api/0272-More-World-API.patch
diff --git a/patches/api/0272-Added-PlayerBedFailEnterEvent.patch b/patches/api/0273-Added-PlayerBedFailEnterEvent.patch
index a622f2b98f..a622f2b98f 100644
--- a/patches/api/0272-Added-PlayerBedFailEnterEvent.patch
+++ b/patches/api/0273-Added-PlayerBedFailEnterEvent.patch
diff --git a/patches/api/0273-Introduce-beacon-activation-deactivation-events.patch b/patches/api/0274-Introduce-beacon-activation-deactivation-events.patch
index c2f0577191..c2f0577191 100644
--- a/patches/api/0273-Introduce-beacon-activation-deactivation-events.patch
+++ b/patches/api/0274-Introduce-beacon-activation-deactivation-events.patch
diff --git a/patches/api/0274-PlayerMoveEvent-Improvements.patch b/patches/api/0275-PlayerMoveEvent-Improvements.patch
index 33cf16e54b..33cf16e54b 100644
--- a/patches/api/0274-PlayerMoveEvent-Improvements.patch
+++ b/patches/api/0275-PlayerMoveEvent-Improvements.patch
diff --git a/patches/api/0275-add-RespawnFlags-to-PlayerRespawnEvent.patch b/patches/api/0276-add-RespawnFlags-to-PlayerRespawnEvent.patch
index c596be8b98..c596be8b98 100644
--- a/patches/api/0275-add-RespawnFlags-to-PlayerRespawnEvent.patch
+++ b/patches/api/0276-add-RespawnFlags-to-PlayerRespawnEvent.patch
diff --git a/patches/api/0276-Add-more-WanderingTrader-API.patch b/patches/api/0277-Add-more-WanderingTrader-API.patch
index 99045d4949..99045d4949 100644
--- a/patches/api/0276-Add-more-WanderingTrader-API.patch
+++ b/patches/api/0277-Add-more-WanderingTrader-API.patch
diff --git a/patches/api/0277-Add-EntityBlockStorage-clearEntities.patch b/patches/api/0278-Add-EntityBlockStorage-clearEntities.patch
index 7032ba6155..7032ba6155 100644
--- a/patches/api/0277-Add-EntityBlockStorage-clearEntities.patch
+++ b/patches/api/0278-Add-EntityBlockStorage-clearEntities.patch
diff --git a/patches/api/0278-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch b/patches/api/0279-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
index 16af3a7728..16af3a7728 100644
--- a/patches/api/0278-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
+++ b/patches/api/0279-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
diff --git a/patches/api/0279-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch b/patches/api/0280-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
index f42f7eed00..f42f7eed00 100644
--- a/patches/api/0279-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/api/0280-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/api/0280-Inventory-close.patch b/patches/api/0281-Inventory-close.patch
index 87dfa1a083..87dfa1a083 100644
--- a/patches/api/0280-Inventory-close.patch
+++ b/patches/api/0281-Inventory-close.patch
diff --git a/patches/api/0281-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/api/0282-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
index 3103f1ce2c..3103f1ce2c 100644
--- a/patches/api/0281-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
+++ b/patches/api/0282-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
diff --git a/patches/api/0282-Add-basic-Datapack-API.patch b/patches/api/0283-Add-basic-Datapack-API.patch
index a979142151..a979142151 100644
--- a/patches/api/0282-Add-basic-Datapack-API.patch
+++ b/patches/api/0283-Add-basic-Datapack-API.patch
diff --git a/patches/api/0283-additions-to-PlayerGameModeChangeEvent.patch b/patches/api/0284-additions-to-PlayerGameModeChangeEvent.patch
index b2e65ae490..b2e65ae490 100644
--- a/patches/api/0283-additions-to-PlayerGameModeChangeEvent.patch
+++ b/patches/api/0284-additions-to-PlayerGameModeChangeEvent.patch
diff --git a/patches/api/0284-ItemStack-repair-check-API.patch b/patches/api/0285-ItemStack-repair-check-API.patch
index 156f084676..156f084676 100644
--- a/patches/api/0284-ItemStack-repair-check-API.patch
+++ b/patches/api/0285-ItemStack-repair-check-API.patch
diff --git a/patches/api/0285-More-Enchantment-API.patch b/patches/api/0286-More-Enchantment-API.patch
index 88be180baf..88be180baf 100644
--- a/patches/api/0285-More-Enchantment-API.patch
+++ b/patches/api/0286-More-Enchantment-API.patch
diff --git a/patches/api/0286-Add-Mob-lookAt-API.patch b/patches/api/0287-Add-Mob-lookAt-API.patch
index 0dd5126905..0dd5126905 100644
--- a/patches/api/0286-Add-Mob-lookAt-API.patch
+++ b/patches/api/0287-Add-Mob-lookAt-API.patch
diff --git a/patches/api/0287-ItemStack-editMeta.patch b/patches/api/0288-ItemStack-editMeta.patch
index 7893a035c9..7893a035c9 100644
--- a/patches/api/0287-ItemStack-editMeta.patch
+++ b/patches/api/0288-ItemStack-editMeta.patch
diff --git a/patches/api/0288-Add-EntityInsideBlockEvent.patch b/patches/api/0289-Add-EntityInsideBlockEvent.patch
index 91451b592d..91451b592d 100644
--- a/patches/api/0288-Add-EntityInsideBlockEvent.patch
+++ b/patches/api/0289-Add-EntityInsideBlockEvent.patch
diff --git a/patches/api/0289-Attributes-API-for-item-defaults.patch b/patches/api/0290-Attributes-API-for-item-defaults.patch
index 0e51ebcf1e..0e51ebcf1e 100644
--- a/patches/api/0289-Attributes-API-for-item-defaults.patch
+++ b/patches/api/0290-Attributes-API-for-item-defaults.patch
diff --git a/patches/api/0290-Add-cause-to-Weather-ThunderChangeEvents.patch b/patches/api/0291-Add-cause-to-Weather-ThunderChangeEvents.patch
index 8e5d45d87b..8e5d45d87b 100644
--- a/patches/api/0290-Add-cause-to-Weather-ThunderChangeEvents.patch
+++ b/patches/api/0291-Add-cause-to-Weather-ThunderChangeEvents.patch
diff --git a/patches/api/0291-More-Lidded-Block-API.patch b/patches/api/0292-More-Lidded-Block-API.patch
index a89f206f9a..a89f206f9a 100644
--- a/patches/api/0291-More-Lidded-Block-API.patch
+++ b/patches/api/0292-More-Lidded-Block-API.patch
diff --git a/patches/api/0292-Add-PlayerKickEvent-causes.patch b/patches/api/0293-Add-PlayerKickEvent-causes.patch
index d168614b7b..d168614b7b 100644
--- a/patches/api/0292-Add-PlayerKickEvent-causes.patch
+++ b/patches/api/0293-Add-PlayerKickEvent-causes.patch
diff --git a/patches/api/0293-Add-PufferFishStateChangeEvent.patch b/patches/api/0294-Add-PufferFishStateChangeEvent.patch
index c3014534d3..c3014534d3 100644
--- a/patches/api/0293-Add-PufferFishStateChangeEvent.patch
+++ b/patches/api/0294-Add-PufferFishStateChangeEvent.patch
diff --git a/patches/api/0294-Add-BellRevealRaiderEvent.patch b/patches/api/0295-Add-BellRevealRaiderEvent.patch
index b3b35c594f..b3b35c594f 100644
--- a/patches/api/0294-Add-BellRevealRaiderEvent.patch
+++ b/patches/api/0295-Add-BellRevealRaiderEvent.patch
diff --git a/patches/api/0295-Add-ElderGuardianAppearanceEvent.patch b/patches/api/0296-Add-ElderGuardianAppearanceEvent.patch
index 8d925d10ac..8d925d10ac 100644
--- a/patches/api/0295-Add-ElderGuardianAppearanceEvent.patch
+++ b/patches/api/0296-Add-ElderGuardianAppearanceEvent.patch
diff --git a/patches/api/0296-Add-more-line-of-sight-methods.patch b/patches/api/0297-Add-more-line-of-sight-methods.patch
index 2751664e0f..2751664e0f 100644
--- a/patches/api/0296-Add-more-line-of-sight-methods.patch
+++ b/patches/api/0297-Add-more-line-of-sight-methods.patch
diff --git a/patches/api/0297-Add-WaterBottleSplashEvent.patch b/patches/api/0298-Add-WaterBottleSplashEvent.patch
index 2dbbb04b76..2dbbb04b76 100644
--- a/patches/api/0297-Add-WaterBottleSplashEvent.patch
+++ b/patches/api/0298-Add-WaterBottleSplashEvent.patch
diff --git a/patches/api/0298-Add-more-LimitedRegion-API.patch b/patches/api/0299-Add-more-LimitedRegion-API.patch
index 292f95c890..292f95c890 100644
--- a/patches/api/0298-Add-more-LimitedRegion-API.patch
+++ b/patches/api/0299-Add-more-LimitedRegion-API.patch
diff --git a/patches/api/0299-Missing-Entity-API.patch b/patches/api/0300-Missing-Entity-API.patch
index 859dcbf8e7..859dcbf8e7 100644
--- a/patches/api/0299-Missing-Entity-API.patch
+++ b/patches/api/0300-Missing-Entity-API.patch
diff --git a/patches/api/0300-Adds-PlayerArmSwingEvent.patch b/patches/api/0301-Adds-PlayerArmSwingEvent.patch
index 0a501495fe..0a501495fe 100644
--- a/patches/api/0300-Adds-PlayerArmSwingEvent.patch
+++ b/patches/api/0301-Adds-PlayerArmSwingEvent.patch
diff --git a/patches/api/0301-Add-PlayerSignCommandPreprocessEvent.patch b/patches/api/0302-Add-PlayerSignCommandPreprocessEvent.patch
index 8882c35337..8882c35337 100644
--- a/patches/api/0301-Add-PlayerSignCommandPreprocessEvent.patch
+++ b/patches/api/0302-Add-PlayerSignCommandPreprocessEvent.patch
diff --git a/patches/api/0302-fix-empty-array-elements-in-command-arguments.patch b/patches/api/0303-fix-empty-array-elements-in-command-arguments.patch
index 4b66990211..4b66990211 100644
--- a/patches/api/0302-fix-empty-array-elements-in-command-arguments.patch
+++ b/patches/api/0303-fix-empty-array-elements-in-command-arguments.patch
diff --git a/patches/api/0303-Stinger-API.patch b/patches/api/0304-Stinger-API.patch
index ae1f19d18d..ae1f19d18d 100644
--- a/patches/api/0303-Stinger-API.patch
+++ b/patches/api/0304-Stinger-API.patch
diff --git a/patches/api/0304-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch b/patches/api/0305-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
index 0f76131486..0f76131486 100644
--- a/patches/api/0304-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
+++ b/patches/api/0305-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
diff --git a/patches/api/0305-Add-PlayerSetSpawnEvent.patch b/patches/api/0306-Add-PlayerSetSpawnEvent.patch
index 9229c768c6..9229c768c6 100644
--- a/patches/api/0305-Add-PlayerSetSpawnEvent.patch
+++ b/patches/api/0306-Add-PlayerSetSpawnEvent.patch
diff --git a/patches/api/0306-Added-EntityDamageItemEvent.patch b/patches/api/0307-Added-EntityDamageItemEvent.patch
index 8bbe79f9f3..8bbe79f9f3 100644
--- a/patches/api/0306-Added-EntityDamageItemEvent.patch
+++ b/patches/api/0307-Added-EntityDamageItemEvent.patch
diff --git a/patches/api/0307-Make-EntityUnleashEvent-cancellable.patch b/patches/api/0308-Make-EntityUnleashEvent-cancellable.patch
index e99584c277..e99584c277 100644
--- a/patches/api/0307-Make-EntityUnleashEvent-cancellable.patch
+++ b/patches/api/0308-Make-EntityUnleashEvent-cancellable.patch
diff --git a/patches/api/0308-Change-EnderEye-target-without-changing-other-things.patch b/patches/api/0309-Change-EnderEye-target-without-changing-other-things.patch
index d8e53593ae..d8e53593ae 100644
--- a/patches/api/0308-Change-EnderEye-target-without-changing-other-things.patch
+++ b/patches/api/0309-Change-EnderEye-target-without-changing-other-things.patch
diff --git a/patches/api/0309-Add-BlockBreakBlockEvent.patch b/patches/api/0310-Add-BlockBreakBlockEvent.patch
index dfd13b1355..dfd13b1355 100644
--- a/patches/api/0309-Add-BlockBreakBlockEvent.patch
+++ b/patches/api/0310-Add-BlockBreakBlockEvent.patch
diff --git a/patches/api/0310-Add-helpers-for-left-right-click-to-Action.patch b/patches/api/0311-Add-helpers-for-left-right-click-to-Action.patch
index 9dac2fe612..9dac2fe612 100644
--- a/patches/api/0310-Add-helpers-for-left-right-click-to-Action.patch
+++ b/patches/api/0311-Add-helpers-for-left-right-click-to-Action.patch
diff --git a/patches/api/0311-Option-to-prevent-NBT-copy-in-smithing-recipes.patch b/patches/api/0312-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
index 7e61d68783..7e61d68783 100644
--- a/patches/api/0311-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
+++ b/patches/api/0312-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
diff --git a/patches/api/0312-More-CommandBlock-API.patch b/patches/api/0313-More-CommandBlock-API.patch
index c8c52c7587..c8c52c7587 100644
--- a/patches/api/0312-More-CommandBlock-API.patch
+++ b/patches/api/0313-More-CommandBlock-API.patch
diff --git a/patches/api/0313-Add-missing-team-sidebar-display-slots.patch b/patches/api/0314-Add-missing-team-sidebar-display-slots.patch
index cdecbd1764..cdecbd1764 100644
--- a/patches/api/0313-Add-missing-team-sidebar-display-slots.patch
+++ b/patches/api/0314-Add-missing-team-sidebar-display-slots.patch
diff --git a/patches/api/0314-add-back-EntityPortalExitEvent.patch b/patches/api/0315-add-back-EntityPortalExitEvent.patch
index 5a153e2345..5a153e2345 100644
--- a/patches/api/0314-add-back-EntityPortalExitEvent.patch
+++ b/patches/api/0315-add-back-EntityPortalExitEvent.patch
diff --git a/patches/api/0315-Add-methods-to-find-targets-for-lightning-strikes.patch b/patches/api/0316-Add-methods-to-find-targets-for-lightning-strikes.patch
index 2dfc41c4cb..2dfc41c4cb 100644
--- a/patches/api/0315-Add-methods-to-find-targets-for-lightning-strikes.patch
+++ b/patches/api/0316-Add-methods-to-find-targets-for-lightning-strikes.patch
diff --git a/patches/api/0316-Get-entity-default-attributes.patch b/patches/api/0317-Get-entity-default-attributes.patch
index 07b67050f3..07b67050f3 100644
--- a/patches/api/0316-Get-entity-default-attributes.patch
+++ b/patches/api/0317-Get-entity-default-attributes.patch
diff --git a/patches/api/0317-Left-handed-API.patch b/patches/api/0318-Left-handed-API.patch
index cae17a697b..cae17a697b 100644
--- a/patches/api/0317-Left-handed-API.patch
+++ b/patches/api/0318-Left-handed-API.patch
diff --git a/patches/api/0318-Add-more-advancement-API.patch b/patches/api/0320-Add-more-advancement-API.patch
index 179dbdc225..179dbdc225 100644
--- a/patches/api/0318-Add-more-advancement-API.patch
+++ b/patches/api/0320-Add-more-advancement-API.patch
diff --git a/patches/api/0320-Fix-issues-with-mob-conversion.patch b/patches/api/0321-Fix-issues-with-mob-conversion.patch
index f451d967b6..f451d967b6 100644
--- a/patches/api/0320-Fix-issues-with-mob-conversion.patch
+++ b/patches/api/0321-Fix-issues-with-mob-conversion.patch
diff --git a/patches/api/0321-Add-isCollidable-methods-to-various-places.patch b/patches/api/0322-Add-isCollidable-methods-to-various-places.patch
index b284622701..b284622701 100644
--- a/patches/api/0321-Add-isCollidable-methods-to-various-places.patch
+++ b/patches/api/0322-Add-isCollidable-methods-to-various-places.patch
diff --git a/patches/api/0322-Goat-ram-API.patch b/patches/api/0323-Goat-ram-API.patch
index 06d426a786..06d426a786 100644
--- a/patches/api/0322-Goat-ram-API.patch
+++ b/patches/api/0323-Goat-ram-API.patch
diff --git a/patches/api/0323-Add-API-for-resetting-a-single-score.patch b/patches/api/0324-Add-API-for-resetting-a-single-score.patch
index 14142e8f6c..14142e8f6c 100644
--- a/patches/api/0323-Add-API-for-resetting-a-single-score.patch
+++ b/patches/api/0324-Add-API-for-resetting-a-single-score.patch
diff --git a/patches/api/0324-Add-Raw-Byte-Entity-Serialization.patch b/patches/api/0325-Add-Raw-Byte-Entity-Serialization.patch
index ed15969264..ed15969264 100644
--- a/patches/api/0324-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/api/0325-Add-Raw-Byte-Entity-Serialization.patch
diff --git a/patches/api/0325-Add-PlayerItemFrameChangeEvent.patch b/patches/api/0326-Add-PlayerItemFrameChangeEvent.patch
index a62e452bb4..a62e452bb4 100644
--- a/patches/api/0325-Add-PlayerItemFrameChangeEvent.patch
+++ b/patches/api/0326-Add-PlayerItemFrameChangeEvent.patch
diff --git a/patches/api/0326-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/api/0327-Allow-delegation-to-vanilla-chunk-gen.patch
index a701c444dd..a701c444dd 100644
--- a/patches/api/0326-Allow-delegation-to-vanilla-chunk-gen.patch
+++ b/patches/api/0327-Allow-delegation-to-vanilla-chunk-gen.patch
diff --git a/patches/api/0327-Add-more-Campfire-API.patch b/patches/api/0328-Add-more-Campfire-API.patch
index 80cdc0bb39..80cdc0bb39 100644
--- a/patches/api/0327-Add-more-Campfire-API.patch
+++ b/patches/api/0328-Add-more-Campfire-API.patch
diff --git a/patches/api/0328-Move-VehicleCollisionEvent-HandlerList-up.patch b/patches/api/0329-Move-VehicleCollisionEvent-HandlerList-up.patch
index 4be8907b49..4be8907b49 100644
--- a/patches/api/0328-Move-VehicleCollisionEvent-HandlerList-up.patch
+++ b/patches/api/0329-Move-VehicleCollisionEvent-HandlerList-up.patch
diff --git a/patches/api/0329-Improve-scoreboard-entries.patch b/patches/api/0330-Improve-scoreboard-entries.patch
index 0dcc796b4d..0dcc796b4d 100644
--- a/patches/api/0329-Improve-scoreboard-entries.patch
+++ b/patches/api/0330-Improve-scoreboard-entries.patch
diff --git a/patches/api/0330-Entity-powdered-snow-API.patch b/patches/api/0331-Entity-powdered-snow-API.patch
index 0a4e36dee8..0a4e36dee8 100644
--- a/patches/api/0330-Entity-powdered-snow-API.patch
+++ b/patches/api/0331-Entity-powdered-snow-API.patch
diff --git a/patches/api/0331-Add-API-for-item-entity-health.patch b/patches/api/0332-Add-API-for-item-entity-health.patch
index 94373dbdf2..94373dbdf2 100644
--- a/patches/api/0331-Add-API-for-item-entity-health.patch
+++ b/patches/api/0332-Add-API-for-item-entity-health.patch
diff --git a/patches/api/0332-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/api/0333-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
index f094cdc255..f094cdc255 100644
--- a/patches/api/0332-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
+++ b/patches/api/0333-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
diff --git a/patches/api/0333-Bucketable-API.patch b/patches/api/0334-Bucketable-API.patch
index 26dbdc9f5d..26dbdc9f5d 100644
--- a/patches/api/0333-Bucketable-API.patch
+++ b/patches/api/0334-Bucketable-API.patch
diff --git a/patches/api/0334-System-prop-for-default-config-comment-parsing.patch b/patches/api/0335-System-prop-for-default-config-comment-parsing.patch
index 632f71e519..632f71e519 100644
--- a/patches/api/0334-System-prop-for-default-config-comment-parsing.patch
+++ b/patches/api/0335-System-prop-for-default-config-comment-parsing.patch
diff --git a/patches/api/0335-Expose-vanilla-BiomeProvider-from-WorldInfo.patch b/patches/api/0336-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
index 9b189fc918..9b189fc918 100644
--- a/patches/api/0335-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
+++ b/patches/api/0336-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
diff --git a/patches/api/0336-Add-new-overload-to-PersistentDataContainer-has.patch b/patches/api/0337-Add-new-overload-to-PersistentDataContainer-has.patch
index 73c49a2fc8..73c49a2fc8 100644
--- a/patches/api/0336-Add-new-overload-to-PersistentDataContainer-has.patch
+++ b/patches/api/0337-Add-new-overload-to-PersistentDataContainer-has.patch
diff --git a/patches/api/0337-Multiple-Entries-with-Scoreboards.patch b/patches/api/0338-Multiple-Entries-with-Scoreboards.patch
index 920c2f117e..920c2f117e 100644
--- a/patches/api/0337-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/api/0338-Multiple-Entries-with-Scoreboards.patch
diff --git a/patches/api/0338-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch b/patches/api/0339-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
index 2d133482d3..2d133482d3 100644
--- a/patches/api/0338-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/api/0339-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/api/0339-Warn-on-strange-EventHandler-return-types.patch b/patches/api/0340-Warn-on-strange-EventHandler-return-types.patch
index c7807b823b..c7807b823b 100644
--- a/patches/api/0339-Warn-on-strange-EventHandler-return-types.patch
+++ b/patches/api/0340-Warn-on-strange-EventHandler-return-types.patch
diff --git a/patches/api/0340-Multi-Block-Change-API.patch b/patches/api/0341-Multi-Block-Change-API.patch
index f8d6f396aa..f8d6f396aa 100644
--- a/patches/api/0340-Multi-Block-Change-API.patch
+++ b/patches/api/0341-Multi-Block-Change-API.patch
diff --git a/patches/api/0341-Fix-NotePlayEvent.patch b/patches/api/0342-Fix-NotePlayEvent.patch
index d3f827bfd8..d3f827bfd8 100644
--- a/patches/api/0341-Fix-NotePlayEvent.patch
+++ b/patches/api/0342-Fix-NotePlayEvent.patch
diff --git a/patches/api/0342-Freeze-Tick-Lock-API.patch b/patches/api/0343-Freeze-Tick-Lock-API.patch
index f046aa1023..f046aa1023 100644
--- a/patches/api/0342-Freeze-Tick-Lock-API.patch
+++ b/patches/api/0343-Freeze-Tick-Lock-API.patch
diff --git a/patches/api/0343-Dolphin-API.patch b/patches/api/0344-Dolphin-API.patch
index 73beed437b..73beed437b 100644
--- a/patches/api/0343-Dolphin-API.patch
+++ b/patches/api/0344-Dolphin-API.patch
diff --git a/patches/api/0344-More-PotionEffectType-API.patch b/patches/api/0345-More-PotionEffectType-API.patch
index 75f518b90d..75f518b90d 100644
--- a/patches/api/0344-More-PotionEffectType-API.patch
+++ b/patches/api/0345-More-PotionEffectType-API.patch
diff --git a/patches/api/0345-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/api/0346-API-for-creating-command-sender-which-forwards-feedb.patch
index 79af94fc3b..79af94fc3b 100644
--- a/patches/api/0345-API-for-creating-command-sender-which-forwards-feedb.patch
+++ b/patches/api/0346-API-for-creating-command-sender-which-forwards-feedb.patch
diff --git a/patches/api/0346-Implement-regenerateChunk.patch b/patches/api/0347-Implement-regenerateChunk.patch
index b3c78845fe..b3c78845fe 100644
--- a/patches/api/0346-Implement-regenerateChunk.patch
+++ b/patches/api/0347-Implement-regenerateChunk.patch
diff --git a/patches/api/0347-Add-GameEvent-tags.patch b/patches/api/0348-Add-GameEvent-tags.patch
index a0481cf89d..a0481cf89d 100644
--- a/patches/api/0347-Add-GameEvent-tags.patch
+++ b/patches/api/0348-Add-GameEvent-tags.patch
diff --git a/patches/api/0348-Furnace-RecipesUsed-API.patch b/patches/api/0349-Furnace-RecipesUsed-API.patch
index 7fed82db21..7fed82db21 100644
--- a/patches/api/0348-Furnace-RecipesUsed-API.patch
+++ b/patches/api/0349-Furnace-RecipesUsed-API.patch
diff --git a/patches/api/0349-Configurable-sculk-sensor-listener-range.patch b/patches/api/0350-Configurable-sculk-sensor-listener-range.patch
index b1ad0cdb5b..b1ad0cdb5b 100644
--- a/patches/api/0349-Configurable-sculk-sensor-listener-range.patch
+++ b/patches/api/0350-Configurable-sculk-sensor-listener-range.patch
diff --git a/patches/api/0350-Add-missing-block-data-mins-and-maxes.patch b/patches/api/0351-Add-missing-block-data-mins-and-maxes.patch
index 600497b952..600497b952 100644
--- a/patches/api/0350-Add-missing-block-data-mins-and-maxes.patch
+++ b/patches/api/0351-Add-missing-block-data-mins-and-maxes.patch
diff --git a/patches/api/0351-Custom-Potion-Mixes.patch b/patches/api/0352-Custom-Potion-Mixes.patch
index 3d48ba327b..3d48ba327b 100644
--- a/patches/api/0351-Custom-Potion-Mixes.patch
+++ b/patches/api/0352-Custom-Potion-Mixes.patch
diff --git a/patches/api/0352-Expose-furnace-minecart-push-values.patch b/patches/api/0353-Expose-furnace-minecart-push-values.patch
index 3d8c2336e7..3d8c2336e7 100644
--- a/patches/api/0352-Expose-furnace-minecart-push-values.patch
+++ b/patches/api/0353-Expose-furnace-minecart-push-values.patch
diff --git a/patches/api/0353-More-Projectile-API.patch b/patches/api/0354-More-Projectile-API.patch
index 569c337346..569c337346 100644
--- a/patches/api/0353-More-Projectile-API.patch
+++ b/patches/api/0354-More-Projectile-API.patch
diff --git a/patches/api/0354-Add-getComputedBiome-API.patch b/patches/api/0355-Add-getComputedBiome-API.patch
index 8239a273b8..8239a273b8 100644
--- a/patches/api/0354-Add-getComputedBiome-API.patch
+++ b/patches/api/0355-Add-getComputedBiome-API.patch
diff --git a/patches/api/0355-Add-enchantWithLevels-API.patch b/patches/api/0356-Add-enchantWithLevels-API.patch
index af548612d5..af548612d5 100644
--- a/patches/api/0355-Add-enchantWithLevels-API.patch
+++ b/patches/api/0356-Add-enchantWithLevels-API.patch
diff --git a/patches/api/0356-Add-TameableDeathMessageEvent.patch b/patches/api/0357-Add-TameableDeathMessageEvent.patch
index 6152eacbe6..6152eacbe6 100644
--- a/patches/api/0356-Add-TameableDeathMessageEvent.patch
+++ b/patches/api/0357-Add-TameableDeathMessageEvent.patch
diff --git a/patches/api/0357-Allow-to-change-the-podium-of-the-EnderDragon.patch b/patches/api/0358-Allow-to-change-the-podium-of-the-EnderDragon.patch
index 08ffa1fdde..08ffa1fdde 100644
--- a/patches/api/0357-Allow-to-change-the-podium-of-the-EnderDragon.patch
+++ b/patches/api/0358-Allow-to-change-the-podium-of-the-EnderDragon.patch
diff --git a/patches/api/0358-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch b/patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch
index 21b3f85c0b..21b3f85c0b 100644
--- a/patches/api/0358-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch
+++ b/patches/api/0359-Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch
diff --git a/patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
index 5775b6f33c..5775b6f33c 100644
--- a/patches/api/0359-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
+++ b/patches/api/0360-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
diff --git a/patches/api/0360-WorldCreator-keepSpawnLoaded.patch b/patches/api/0361-WorldCreator-keepSpawnLoaded.patch
index 287c313c58..287c313c58 100644
--- a/patches/api/0360-WorldCreator-keepSpawnLoaded.patch
+++ b/patches/api/0361-WorldCreator-keepSpawnLoaded.patch
diff --git a/patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch b/patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch
index 032a0872d1..032a0872d1 100644
--- a/patches/api/0361-Add-EntityDyeEvent-and-CollarColorable-interface.patch
+++ b/patches/api/0362-Add-EntityDyeEvent-and-CollarColorable-interface.patch
diff --git a/patches/api/0362-Add-PlayerStopUsingItemEvent.patch b/patches/api/0363-Add-PlayerStopUsingItemEvent.patch
index 0743d44ae1..0743d44ae1 100644
--- a/patches/api/0362-Add-PlayerStopUsingItemEvent.patch
+++ b/patches/api/0363-Add-PlayerStopUsingItemEvent.patch
diff --git a/patches/api/0363-Expand-FallingBlock-API.patch b/patches/api/0364-Expand-FallingBlock-API.patch
index 065484cd89..1bd034b64d 100644
--- a/patches/api/0363-Expand-FallingBlock-API.patch
+++ b/patches/api/0364-Expand-FallingBlock-API.patch
@@ -10,7 +10,7 @@ Subject: [PATCH] Expand FallingBlock API
Co-authored-by: Lukas Planz <[email protected]>
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 6606fa0fb7d8230546e42c51e4cd576118cba751..59c1224cf9b96bde607fa71d89c93a4eae053783 100644
+index 94e6fe6257b30112066b98ec4fdb1561dbcc93c4..bc6630345bb42eb365ba0057a4c52b1e10c6a05a 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -2242,8 +2242,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0364-Keyed-Cat-Type.patch b/patches/api/0365-Keyed-Cat-Type.patch
index b0797d78b7..b0797d78b7 100644
--- a/patches/api/0364-Keyed-Cat-Type.patch
+++ b/patches/api/0365-Keyed-Cat-Type.patch
diff --git a/patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch b/patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch
index 183594a39e..183594a39e 100644
--- a/patches/api/0365-Add-method-isTickingWorlds-to-Bukkit.patch
+++ b/patches/api/0366-Add-method-isTickingWorlds-to-Bukkit.patch
diff --git a/patches/api/0366-Add-WardenAngerChangeEvent.patch b/patches/api/0367-Add-WardenAngerChangeEvent.patch
index 136f87fdb0..136f87fdb0 100644
--- a/patches/api/0366-Add-WardenAngerChangeEvent.patch
+++ b/patches/api/0367-Add-WardenAngerChangeEvent.patch
diff --git a/patches/api/0367-Nameable-Banner-API.patch b/patches/api/0368-Nameable-Banner-API.patch
index eba196daaf..eba196daaf 100644
--- a/patches/api/0367-Nameable-Banner-API.patch
+++ b/patches/api/0368-Nameable-Banner-API.patch
diff --git a/patches/api/0368-Add-Player-getFishHook.patch b/patches/api/0369-Add-Player-getFishHook.patch
index 291eac5db5..291eac5db5 100644
--- a/patches/api/0368-Add-Player-getFishHook.patch
+++ b/patches/api/0369-Add-Player-getFishHook.patch
diff --git a/patches/api/0369-More-Teleport-API.patch b/patches/api/0370-More-Teleport-API.patch
index f5e3c2c59e..f5e3c2c59e 100644
--- a/patches/api/0369-More-Teleport-API.patch
+++ b/patches/api/0370-More-Teleport-API.patch
diff --git a/patches/api/0370-Add-EntityPortalReadyEvent.patch b/patches/api/0371-Add-EntityPortalReadyEvent.patch
index 4b1b1f1e1f..4b1b1f1e1f 100644
--- a/patches/api/0370-Add-EntityPortalReadyEvent.patch
+++ b/patches/api/0371-Add-EntityPortalReadyEvent.patch
diff --git a/patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch b/patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch
index a9b8e5de94..a9b8e5de94 100644
--- a/patches/api/0371-Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/api/0372-Custom-Chat-Completion-Suggestions-API.patch
diff --git a/patches/api/0372-Collision-API.patch b/patches/api/0373-Collision-API.patch
index 52beb80b45..52beb80b45 100644
--- a/patches/api/0372-Collision-API.patch
+++ b/patches/api/0373-Collision-API.patch
diff --git a/patches/api/0373-Block-Ticking-API.patch b/patches/api/0374-Block-Ticking-API.patch
index 122cb9dd52..122cb9dd52 100644
--- a/patches/api/0373-Block-Ticking-API.patch
+++ b/patches/api/0374-Block-Ticking-API.patch
diff --git a/patches/api/0374-Add-NamespacedKey-biome-methods.patch b/patches/api/0375-Add-NamespacedKey-biome-methods.patch
index ae9059caa8..ae9059caa8 100644
--- a/patches/api/0374-Add-NamespacedKey-biome-methods.patch
+++ b/patches/api/0375-Add-NamespacedKey-biome-methods.patch
diff --git a/patches/api/0375-Also-load-resources-from-LibraryLoader.patch b/patches/api/0376-Also-load-resources-from-LibraryLoader.patch
index c999e55c24..c999e55c24 100644
--- a/patches/api/0375-Also-load-resources-from-LibraryLoader.patch
+++ b/patches/api/0376-Also-load-resources-from-LibraryLoader.patch
diff --git a/patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch b/patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch
index 161c82afe3..161c82afe3 100644
--- a/patches/api/0376-Added-byte-array-serialization-deserialization-for-P.patch
+++ b/patches/api/0377-Added-byte-array-serialization-deserialization-for-P.patch
diff --git a/patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch b/patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
index f1884d2c5e..f1884d2c5e 100644
--- a/patches/api/0377-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
+++ b/patches/api/0378-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
diff --git a/patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch b/patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
index 9b5ef25cf4..9b5ef25cf4 100644
--- a/patches/api/0378-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
+++ b/patches/api/0379-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
diff --git a/patches/api/0379-Add-getDrops-to-BlockState.patch b/patches/api/0380-Add-getDrops-to-BlockState.patch
index 0a8d8ad13a..0a8d8ad13a 100644
--- a/patches/api/0379-Add-getDrops-to-BlockState.patch
+++ b/patches/api/0380-Add-getDrops-to-BlockState.patch
diff --git a/patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch b/patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch
index f094f9dbc9..f094f9dbc9 100644
--- a/patches/api/0380-Add-PlayerInventorySlotChangeEvent.patch
+++ b/patches/api/0381-Add-PlayerInventorySlotChangeEvent.patch
diff --git a/patches/api/0381-Elder-Guardian-appearance-API.patch b/patches/api/0382-Elder-Guardian-appearance-API.patch
index 80a2ac0dac..80a2ac0dac 100644
--- a/patches/api/0381-Elder-Guardian-appearance-API.patch
+++ b/patches/api/0382-Elder-Guardian-appearance-API.patch
diff --git a/patches/api/0382-Allow-changing-bed-s-occupied-property.patch b/patches/api/0383-Allow-changing-bed-s-occupied-property.patch
index 8dfafd6d33..8dfafd6d33 100644
--- a/patches/api/0382-Allow-changing-bed-s-occupied-property.patch
+++ b/patches/api/0383-Allow-changing-bed-s-occupied-property.patch
diff --git a/patches/api/0383-Add-EquipmentSlot-convenience-methods.patch b/patches/api/0384-Add-EquipmentSlot-convenience-methods.patch
index 0ef6b4c9b0..0ef6b4c9b0 100644
--- a/patches/api/0383-Add-EquipmentSlot-convenience-methods.patch
+++ b/patches/api/0384-Add-EquipmentSlot-convenience-methods.patch
diff --git a/patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch b/patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
index 86203fb4c3..86203fb4c3 100644
--- a/patches/api/0384-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
+++ b/patches/api/0385-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
diff --git a/patches/api/0385-Add-entity-knockback-API.patch b/patches/api/0386-Add-entity-knockback-API.patch
index 263f278b1b..263f278b1b 100644
--- a/patches/api/0385-Add-entity-knockback-API.patch
+++ b/patches/api/0386-Add-entity-knockback-API.patch
diff --git a/patches/api/0386-Added-EntityToggleSitEvent.patch b/patches/api/0387-Added-EntityToggleSitEvent.patch
index af2476123b..af2476123b 100644
--- a/patches/api/0386-Added-EntityToggleSitEvent.patch
+++ b/patches/api/0387-Added-EntityToggleSitEvent.patch
diff --git a/patches/api/0387-Add-Moving-Piston-API.patch b/patches/api/0388-Add-Moving-Piston-API.patch
index 8f889f1e3d..8f889f1e3d 100644
--- a/patches/api/0387-Add-Moving-Piston-API.patch
+++ b/patches/api/0388-Add-Moving-Piston-API.patch
diff --git a/patches/api/0388-Add-PrePlayerAttackEntityEvent.patch b/patches/api/0389-Add-PrePlayerAttackEntityEvent.patch
index 507b313e56..507b313e56 100644
--- a/patches/api/0388-Add-PrePlayerAttackEntityEvent.patch
+++ b/patches/api/0389-Add-PrePlayerAttackEntityEvent.patch
diff --git a/patches/api/0389-Add-Player-Warden-Warning-API.patch b/patches/api/0390-Add-Player-Warden-Warning-API.patch
index 0e1835d136..0e1835d136 100644
--- a/patches/api/0389-Add-Player-Warden-Warning-API.patch
+++ b/patches/api/0390-Add-Player-Warden-Warning-API.patch
diff --git a/patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch b/patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch
index f13fdb5601..f13fdb5601 100644
--- a/patches/api/0390-More-vanilla-friendly-methods-to-update-trades.patch
+++ b/patches/api/0391-More-vanilla-friendly-methods-to-update-trades.patch
diff --git a/patches/api/0391-Add-paper-dumplisteners-command.patch b/patches/api/0392-Add-paper-dumplisteners-command.patch
index 8053dc2c4f..8053dc2c4f 100644
--- a/patches/api/0391-Add-paper-dumplisteners-command.patch
+++ b/patches/api/0392-Add-paper-dumplisteners-command.patch
diff --git a/patches/api/0392-ItemStack-damage-API.patch b/patches/api/0393-ItemStack-damage-API.patch
index 3617adca85..3617adca85 100644
--- a/patches/api/0392-ItemStack-damage-API.patch
+++ b/patches/api/0393-ItemStack-damage-API.patch
diff --git a/patches/api/0393-Add-Tick-TemporalUnit.patch b/patches/api/0394-Add-Tick-TemporalUnit.patch
index 562eb00082..562eb00082 100644
--- a/patches/api/0393-Add-Tick-TemporalUnit.patch
+++ b/patches/api/0394-Add-Tick-TemporalUnit.patch
diff --git a/patches/api/0394-Friction-API.patch b/patches/api/0395-Friction-API.patch
index dd826ded3b..dd826ded3b 100644
--- a/patches/api/0394-Friction-API.patch
+++ b/patches/api/0395-Friction-API.patch
diff --git a/patches/api/0395-Player-Entity-Tracking-Events.patch b/patches/api/0396-Player-Entity-Tracking-Events.patch
index 4b11ceb409..4b11ceb409 100644
--- a/patches/api/0395-Player-Entity-Tracking-Events.patch
+++ b/patches/api/0396-Player-Entity-Tracking-Events.patch
diff --git a/patches/api/0396-Add-missing-Fluid-type.patch b/patches/api/0397-Add-missing-Fluid-type.patch
index c260bf8497..c260bf8497 100644
--- a/patches/api/0396-Add-missing-Fluid-type.patch
+++ b/patches/api/0397-Add-missing-Fluid-type.patch
diff --git a/patches/api/0397-fix-Instruments.patch b/patches/api/0398-fix-Instruments.patch
index a208b5d8c0..a208b5d8c0 100644
--- a/patches/api/0397-fix-Instruments.patch
+++ b/patches/api/0398-fix-Instruments.patch
diff --git a/patches/api/0398-Add-BlockLockCheckEvent.patch b/patches/api/0399-Add-BlockLockCheckEvent.patch
index 55a23307b1..55a23307b1 100644
--- a/patches/api/0398-Add-BlockLockCheckEvent.patch
+++ b/patches/api/0399-Add-BlockLockCheckEvent.patch
diff --git a/patches/api/0399-Add-Sneaking-API-for-Entities.patch b/patches/api/0400-Add-Sneaking-API-for-Entities.patch
index 1cd5be621d..1cd5be621d 100644
--- a/patches/api/0399-Add-Sneaking-API-for-Entities.patch
+++ b/patches/api/0400-Add-Sneaking-API-for-Entities.patch
diff --git a/patches/api/0400-Improve-PortalEvents.patch b/patches/api/0401-Improve-PortalEvents.patch
index f7f53b19fc..f7f53b19fc 100644
--- a/patches/api/0400-Improve-PortalEvents.patch
+++ b/patches/api/0401-Improve-PortalEvents.patch
diff --git a/patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch b/patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
index c9fd0c6501..c9fd0c6501 100644
--- a/patches/api/0401-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
+++ b/patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
diff --git a/patches/api/0402-Flying-Fall-Damage-API.patch b/patches/api/0403-Flying-Fall-Damage-API.patch
index f93a7cef3b..f93a7cef3b 100644
--- a/patches/api/0402-Flying-Fall-Damage-API.patch
+++ b/patches/api/0403-Flying-Fall-Damage-API.patch
diff --git a/patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch b/patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
index 25fa280b26..25fa280b26 100644
--- a/patches/api/0403-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
+++ b/patches/api/0404-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
diff --git a/patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch b/patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
index 3936bb4a92..3936bb4a92 100644
--- a/patches/api/0404-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
+++ b/patches/api/0405-Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
diff --git a/patches/api/0405-Win-Screen-API.patch b/patches/api/0406-Win-Screen-API.patch
index c4eb5368c9..c4eb5368c9 100644
--- a/patches/api/0405-Win-Screen-API.patch
+++ b/patches/api/0406-Win-Screen-API.patch
diff --git a/patches/api/0406-Add-Entity-Body-Yaw-API.patch b/patches/api/0407-Add-Entity-Body-Yaw-API.patch
index de7ca1a8b0..de7ca1a8b0 100644
--- a/patches/api/0406-Add-Entity-Body-Yaw-API.patch
+++ b/patches/api/0407-Add-Entity-Body-Yaw-API.patch
diff --git a/patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch b/patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
index 1ae7f17da6..1ae7f17da6 100644
--- a/patches/api/0407-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
+++ b/patches/api/0408-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
diff --git a/patches/api/0408-Add-EntityFertilizeEggEvent.patch b/patches/api/0409-Add-EntityFertilizeEggEvent.patch
index 52283a9df2..52283a9df2 100644
--- a/patches/api/0408-Add-EntityFertilizeEggEvent.patch
+++ b/patches/api/0409-Add-EntityFertilizeEggEvent.patch
diff --git a/patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch b/patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
index f720032bf2..f720032bf2 100644
--- a/patches/api/0409-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
+++ b/patches/api/0410-Add-CompostItemEvent-and-EntityCompostItemEvent.patch
diff --git a/patches/api/0410-Add-Shearable-API.patch b/patches/api/0411-Add-Shearable-API.patch
index 96049cfd38..96049cfd38 100644
--- a/patches/api/0410-Add-Shearable-API.patch
+++ b/patches/api/0411-Add-Shearable-API.patch
diff --git a/patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch b/patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch
index 4014e17083..4014e17083 100644
--- a/patches/api/0411-Fix-SpawnEggMeta-get-setSpawnedType.patch
+++ b/patches/api/0412-Fix-SpawnEggMeta-get-setSpawnedType.patch
diff --git a/patches/api/0412-Add-Mob-Experience-reward-API.patch b/patches/api/0413-Add-Mob-Experience-reward-API.patch
index 2e3a09921e..2e3a09921e 100644
--- a/patches/api/0412-Add-Mob-Experience-reward-API.patch
+++ b/patches/api/0413-Add-Mob-Experience-reward-API.patch
diff --git a/patches/api/0413-Expand-PlayerItemMendEvent.patch b/patches/api/0414-Expand-PlayerItemMendEvent.patch
index 223922e05e..223922e05e 100644
--- a/patches/api/0413-Expand-PlayerItemMendEvent.patch
+++ b/patches/api/0414-Expand-PlayerItemMendEvent.patch
diff --git a/patches/api/0414-Add-transient-modifier-API.patch b/patches/api/0415-Add-transient-modifier-API.patch
index a32e4c86a9..a32e4c86a9 100644
--- a/patches/api/0414-Add-transient-modifier-API.patch
+++ b/patches/api/0415-Add-transient-modifier-API.patch
diff --git a/patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch b/patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch
index adf74b3f77..adf74b3f77 100644
--- a/patches/api/0415-Properly-remove-the-experimental-smithing-inventory-.patch
+++ b/patches/api/0416-Properly-remove-the-experimental-smithing-inventory-.patch
diff --git a/patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch b/patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch
index d0a824c013..d0a824c013 100644
--- a/patches/api/0416-Add-method-to-remove-all-active-potion-effects.patch
+++ b/patches/api/0417-Add-method-to-remove-all-active-potion-effects.patch
diff --git a/patches/api/0417-Folia-scheduler-and-owned-region-API.patch b/patches/api/0418-Folia-scheduler-and-owned-region-API.patch
index 3803760991..3803760991 100644
--- a/patches/api/0417-Folia-scheduler-and-owned-region-API.patch
+++ b/patches/api/0418-Folia-scheduler-and-owned-region-API.patch
diff --git a/patches/api/0418-Add-event-for-player-editing-sign.patch b/patches/api/0419-Add-event-for-player-editing-sign.patch
index 738ff0d1f0..738ff0d1f0 100644
--- a/patches/api/0418-Add-event-for-player-editing-sign.patch
+++ b/patches/api/0419-Add-event-for-player-editing-sign.patch
diff --git a/patches/api/0419-Add-Sign-getInteractableSideFor.patch b/patches/api/0420-Add-Sign-getInteractableSideFor.patch
index c339b5b034..c339b5b034 100644
--- a/patches/api/0419-Add-Sign-getInteractableSideFor.patch
+++ b/patches/api/0420-Add-Sign-getInteractableSideFor.patch
diff --git a/patches/api/0420-Fix-BanList-API.patch b/patches/api/0421-Fix-BanList-API.patch
index 306478c765..306478c765 100644
--- a/patches/api/0420-Fix-BanList-API.patch
+++ b/patches/api/0421-Fix-BanList-API.patch
diff --git a/patches/api/0421-Add-whitelist-events.patch b/patches/api/0422-Add-whitelist-events.patch
index 236555f3ab..236555f3ab 100644
--- a/patches/api/0421-Add-whitelist-events.patch
+++ b/patches/api/0422-Add-whitelist-events.patch
diff --git a/patches/api/0422-API-for-updating-recipes-on-clients.patch b/patches/api/0423-API-for-updating-recipes-on-clients.patch
index e51f4a6052..e51f4a6052 100644
--- a/patches/api/0422-API-for-updating-recipes-on-clients.patch
+++ b/patches/api/0423-API-for-updating-recipes-on-clients.patch
diff --git a/patches/api/0423-Add-PlayerFailMoveEvent.patch b/patches/api/0424-Add-PlayerFailMoveEvent.patch
index 62ca61644a..62ca61644a 100644
--- a/patches/api/0423-Add-PlayerFailMoveEvent.patch
+++ b/patches/api/0424-Add-PlayerFailMoveEvent.patch
diff --git a/patches/api/0424-Fix-custom-statistic-criteria-creation.patch b/patches/api/0425-Fix-custom-statistic-criteria-creation.patch
index 42a05e6c6b..42a05e6c6b 100644
--- a/patches/api/0424-Fix-custom-statistic-criteria-creation.patch
+++ b/patches/api/0425-Fix-custom-statistic-criteria-creation.patch
diff --git a/patches/api/0425-SculkCatalyst-bloom-API.patch b/patches/api/0426-SculkCatalyst-bloom-API.patch
index 49d8c8c2bd..49d8c8c2bd 100644
--- a/patches/api/0425-SculkCatalyst-bloom-API.patch
+++ b/patches/api/0426-SculkCatalyst-bloom-API.patch
diff --git a/patches/api/0426-API-for-an-entity-s-scoreboard-name.patch b/patches/api/0427-API-for-an-entity-s-scoreboard-name.patch
index 7dd96c655d..7dd96c655d 100644
--- a/patches/api/0426-API-for-an-entity-s-scoreboard-name.patch
+++ b/patches/api/0427-API-for-an-entity-s-scoreboard-name.patch
diff --git a/patches/api/0427-Deprecate-and-replace-methods-with-old-StructureType.patch b/patches/api/0428-Deprecate-and-replace-methods-with-old-StructureType.patch
index 683527dfc2..683527dfc2 100644
--- a/patches/api/0427-Deprecate-and-replace-methods-with-old-StructureType.patch
+++ b/patches/api/0428-Deprecate-and-replace-methods-with-old-StructureType.patch
diff --git a/patches/api/0428-Add-Listing-API-for-Player.patch b/patches/api/0429-Add-Listing-API-for-Player.patch
index 42e91dbbab..42e91dbbab 100644
--- a/patches/api/0428-Add-Listing-API-for-Player.patch
+++ b/patches/api/0429-Add-Listing-API-for-Player.patch
diff --git a/patches/api/0429-Expose-clicked-BlockFace-during-BlockDamageEvent.patch b/patches/api/0430-Expose-clicked-BlockFace-during-BlockDamageEvent.patch
index 34d1940866..34d1940866 100644
--- a/patches/api/0429-Expose-clicked-BlockFace-during-BlockDamageEvent.patch
+++ b/patches/api/0430-Expose-clicked-BlockFace-during-BlockDamageEvent.patch
diff --git a/patches/api/0430-Fix-NPE-on-Boat-getStatus.patch b/patches/api/0431-Fix-NPE-on-Boat-getStatus.patch
index 1cf6096a92..1cf6096a92 100644
--- a/patches/api/0430-Fix-NPE-on-Boat-getStatus.patch
+++ b/patches/api/0431-Fix-NPE-on-Boat-getStatus.patch
diff --git a/patches/api/0431-Expand-Pose-API.patch b/patches/api/0432-Expand-Pose-API.patch
index 1e19715df2..1e19715df2 100644
--- a/patches/api/0431-Expand-Pose-API.patch
+++ b/patches/api/0432-Expand-Pose-API.patch
diff --git a/patches/api/0432-MerchantRecipe-add-copy-constructor.patch b/patches/api/0433-MerchantRecipe-add-copy-constructor.patch
index 1c5ba2803c..1c5ba2803c 100644
--- a/patches/api/0432-MerchantRecipe-add-copy-constructor.patch
+++ b/patches/api/0433-MerchantRecipe-add-copy-constructor.patch
diff --git a/patches/api/0433-More-DragonBattle-API.patch b/patches/api/0434-More-DragonBattle-API.patch
index f4ec0fbbcf..f4ec0fbbcf 100644
--- a/patches/api/0433-More-DragonBattle-API.patch
+++ b/patches/api/0434-More-DragonBattle-API.patch
diff --git a/patches/api/0434-Add-PlayerPickItemEvent.patch b/patches/api/0435-Add-PlayerPickItemEvent.patch
index c725cc690e..c725cc690e 100644
--- a/patches/api/0434-Add-PlayerPickItemEvent.patch
+++ b/patches/api/0435-Add-PlayerPickItemEvent.patch
diff --git a/patches/api/0435-Allow-trident-custom-damage.patch b/patches/api/0436-Allow-trident-custom-damage.patch
index 870b735548..870b735548 100644
--- a/patches/api/0435-Allow-trident-custom-damage.patch
+++ b/patches/api/0436-Allow-trident-custom-damage.patch
diff --git a/patches/api/0436-Expose-hand-during-BlockCanBuildEvent.patch b/patches/api/0437-Expose-hand-during-BlockCanBuildEvent.patch
index 97d99a40d2..97d99a40d2 100644
--- a/patches/api/0436-Expose-hand-during-BlockCanBuildEvent.patch
+++ b/patches/api/0437-Expose-hand-during-BlockCanBuildEvent.patch
diff --git a/patches/api/0437-Limit-setBurnTime-to-valid-short-values.patch b/patches/api/0438-Limit-setBurnTime-to-valid-short-values.patch
index 2faac56fd8..2faac56fd8 100644
--- a/patches/api/0437-Limit-setBurnTime-to-valid-short-values.patch
+++ b/patches/api/0438-Limit-setBurnTime-to-valid-short-values.patch
diff --git a/patches/api/0438-Add-OfflinePlayer-isConnected.patch b/patches/api/0439-Add-OfflinePlayer-isConnected.patch
index 1b0749a7f1..1b0749a7f1 100644
--- a/patches/api/0438-Add-OfflinePlayer-isConnected.patch
+++ b/patches/api/0439-Add-OfflinePlayer-isConnected.patch
diff --git a/patches/api/0439-Add-titleOverride-to-InventoryOpenEvent.patch b/patches/api/0440-Add-titleOverride-to-InventoryOpenEvent.patch
index 68e755f010..68e755f010 100644
--- a/patches/api/0439-Add-titleOverride-to-InventoryOpenEvent.patch
+++ b/patches/api/0440-Add-titleOverride-to-InventoryOpenEvent.patch
diff --git a/patches/api/0440-Allow-proper-checking-of-empty-item-stacks.patch b/patches/api/0441-Allow-proper-checking-of-empty-item-stacks.patch
index e4c35df87b..e4c35df87b 100644
--- a/patches/api/0440-Allow-proper-checking-of-empty-item-stacks.patch
+++ b/patches/api/0441-Allow-proper-checking-of-empty-item-stacks.patch
diff --git a/patches/api/0441-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch b/patches/api/0442-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch
index e72f86be5d..e72f86be5d 100644
--- a/patches/api/0441-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch
+++ b/patches/api/0442-Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch
diff --git a/patches/api/0442-Add-player-idle-duration-API.patch b/patches/api/0443-Add-player-idle-duration-API.patch
index fbba2ed80d..fbba2ed80d 100644
--- a/patches/api/0442-Add-player-idle-duration-API.patch
+++ b/patches/api/0443-Add-player-idle-duration-API.patch
diff --git a/patches/api/0443-Add-API-to-get-the-collision-shape-of-a-block-before.patch b/patches/api/0444-Add-API-to-get-the-collision-shape-of-a-block-before.patch
index 8c93339e29..8c93339e29 100644
--- a/patches/api/0443-Add-API-to-get-the-collision-shape-of-a-block-before.patch
+++ b/patches/api/0444-Add-API-to-get-the-collision-shape-of-a-block-before.patch
diff --git a/patches/api/0444-Add-predicate-for-blocks-when-raytracing.patch b/patches/api/0445-Add-predicate-for-blocks-when-raytracing.patch
index 9186690f18..75c666ed7b 100644
--- a/patches/api/0444-Add-predicate-for-blocks-when-raytracing.patch
+++ b/patches/api/0445-Add-predicate-for-blocks-when-raytracing.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add predicate for blocks when raytracing
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 91eb95b04094394e8dc1e3a3343efc63690c87e4..17d404d6d1a5b46b58d612fca38f17e71adee92e 100644
+index bc6630345bb42eb365ba0057a4c52b1e10c6a05a..5eb3521f5f91b0684b4beebf4f7ba2c795b41c42 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -1714,6 +1714,28 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0445-Expand-LingeringPotion-API.patch b/patches/api/0448-Expand-LingeringPotion-API.patch
index 40b5a5f547..40b5a5f547 100644
--- a/patches/api/0445-Expand-LingeringPotion-API.patch
+++ b/patches/api/0448-Expand-LingeringPotion-API.patch
diff --git a/patches/server/0004-Test-changes.patch b/patches/server/0004-Test-changes.patch
index 887c73f6aa..b7eeceef51 100644
--- a/patches/server/0004-Test-changes.patch
+++ b/patches/server/0004-Test-changes.patch
@@ -21,6 +21,45 @@ index ff4d0f970990187e9b46324b5cf051fcc546119f..844eff88c9ad95871900c2d8aa3136b3
publishing {
publications.create<MavenPublication>("maven") {
artifact(tasks.shadowJar)
+diff --git a/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java b/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..e070aa1bb69859224493d958621389ee757f8752
+--- /dev/null
++++ b/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java
+@@ -0,0 +1,33 @@
++package io.papermc.paper.registry;
++
++import java.util.Optional;
++import java.util.stream.Stream;
++import net.minecraft.core.Registry;
++import net.minecraft.resources.ResourceKey;
++import net.minecraft.resources.ResourceLocation;
++import org.bukkit.support.AbstractTestingBase;
++import org.junit.jupiter.api.BeforeAll;
++import org.junit.jupiter.params.ParameterizedTest;
++import org.junit.jupiter.params.provider.MethodSource;
++
++import static org.junit.jupiter.api.Assertions.assertTrue;
++
++class RegistryKeyTest extends AbstractTestingBase {
++
++ @BeforeAll
++ static void before() throws ClassNotFoundException {
++ Class.forName(RegistryKey.class.getName()); // load all keys so they are found for the test
++ }
++
++ static Stream<RegistryKey<?>> data() {
++ return RegistryKeyImpl.REGISTRY_KEYS.stream();
++ }
++
++ @ParameterizedTest
++ @MethodSource("data")
++ void testApiRegistryKeysExist(final RegistryKey<?> key) {
++ final Optional<Registry<Object>> registry = AbstractTestingBase.REGISTRY_CUSTOM.registry(ResourceKey.createRegistryKey(new ResourceLocation(key.key().asString())));
++ assertTrue(registry.isPresent(), "Missing vanilla registry for " + key.key().asString());
++
++ }
++}
diff --git a/src/test/java/io/papermc/paper/util/EmptyTag.java b/src/test/java/io/papermc/paper/util/EmptyTag.java
new file mode 100644
index 0000000000000000000000000000000000000000..6eb95a5e2534974c0e52e2b78b04e7c2b2f28525
diff --git a/settings.gradle.kts b/settings.gradle.kts
index e8d0e3de4c..f6aac1f56c 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -39,9 +39,19 @@ for (name in listOf("Paper-API", "Paper-Server", "Paper-MojangAPI")) {
findProject(":$projName")!!.projectDir = file(name)
}
-val testPlugin = file("test-plugin.settings.gradle.kts")
-if (testPlugin.exists()) {
- apply(from = testPlugin)
-} else {
- testPlugin.writeText("// Uncomment to enable the test plugin module\n//include(\":test-plugin\")\n")
+mapOf("test-plugin.settings.gradle.kts" to """
+ // Uncomment to enable the test plugin module
+ // include(":test-plugin")
+ """.trimIndent(),
+ "paper-api-generator.settings.gradle.kts" to """
+ // Uncomment to enable the api generator module
+ // include(":paper-api-generator")
+ """.trimIndent()
+).forEach { (fileName, text) ->
+ val settingsFile = file(fileName)
+ if (settingsFile.exists()) {
+ apply(from = settingsFile)
+ } else {
+ settingsFile.writeText(text + "\n")
+ }
}