aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2022-03-04 00:09:43 -0800
committerGitHub <[email protected]>2022-03-04 09:09:43 +0100
commit15b6b3db2cf24c98afbfb0849e694875d18fc021 (patch)
tree03e884d0c7fe2ce292825b5b51ec4c9a6ce2e8cc /patches/api
parent753bf2c1034c5f35cc0839001d12363a44f936fc (diff)
downloadPaper-15b6b3db2cf24c98afbfb0849e694875d18fc021.tar.gz
Paper-15b6b3db2cf24c98afbfb0849e694875d18fc021.zip
Add StructuresLocateEvent as replacement for StructureLocateEvent (#7524)
Diffstat (limited to 'patches/api')
-rw-r--r--patches/api/0256-Add-PaperRegistry.patch112
-rw-r--r--patches/api/0256-Add-StructureLocateEvent.patch167
-rw-r--r--patches/api/0257-Add-StructuresLocateEvent.patch461
-rw-r--r--patches/api/0258-Return-chat-component-with-empty-text-instead-of-thr.patch (renamed from patches/api/0257-Return-chat-component-with-empty-text-instead-of-thr.patch)0
-rw-r--r--patches/api/0259-Add-BlockPreDispenseEvent.patch (renamed from patches/api/0258-Add-BlockPreDispenseEvent.patch)0
-rw-r--r--patches/api/0260-Added-Vanilla-Entity-Tags.patch (renamed from patches/api/0259-Added-Vanilla-Entity-Tags.patch)0
-rw-r--r--patches/api/0261-added-Wither-API.patch (renamed from patches/api/0260-added-Wither-API.patch)0
-rw-r--r--patches/api/0262-Added-PlayerChangeBeaconEffectEvent.patch (renamed from patches/api/0261-Added-PlayerChangeBeaconEffectEvent.patch)0
-rw-r--r--patches/api/0263-Added-PlayerStonecutterRecipeSelectEvent.patch (renamed from patches/api/0262-Added-PlayerStonecutterRecipeSelectEvent.patch)0
-rw-r--r--patches/api/0264-Add-dropLeash-variable-to-EntityUnleashEvent.patch (renamed from patches/api/0263-Add-dropLeash-variable-to-EntityUnleashEvent.patch)0
-rw-r--r--patches/api/0265-add-DragonEggFormEvent.patch (renamed from patches/api/0264-add-DragonEggFormEvent.patch)0
-rw-r--r--patches/api/0266-EntityMoveEvent.patch (renamed from patches/api/0265-EntityMoveEvent.patch)0
-rw-r--r--patches/api/0267-Allow-adding-items-to-BlockDropItemEvent.patch (renamed from patches/api/0266-Allow-adding-items-to-BlockDropItemEvent.patch)0
-rw-r--r--patches/api/0268-Add-getMainThreadExecutor-to-BukkitScheduler.patch (renamed from patches/api/0267-Add-getMainThreadExecutor-to-BukkitScheduler.patch)0
-rw-r--r--patches/api/0269-living-entity-allow-attribute-registration.patch (renamed from patches/api/0268-living-entity-allow-attribute-registration.patch)0
-rw-r--r--patches/api/0270-Add-missing-effects.patch (renamed from patches/api/0269-Add-missing-effects.patch)0
-rw-r--r--patches/api/0271-Expose-Tracked-Players.patch (renamed from patches/api/0270-Expose-Tracked-Players.patch)0
-rw-r--r--patches/api/0272-Cache-the-result-of-Material-isBlock.patch (renamed from patches/api/0271-Cache-the-result-of-Material-isBlock.patch)0
-rw-r--r--patches/api/0273-Add-worldborder-events.patch (renamed from patches/api/0272-Add-worldborder-events.patch)0
-rw-r--r--patches/api/0274-added-PlayerNameEntityEvent.patch (renamed from patches/api/0273-added-PlayerNameEntityEvent.patch)0
-rw-r--r--patches/api/0275-Add-recipe-to-cook-events.patch (renamed from patches/api/0274-Add-recipe-to-cook-events.patch)0
-rw-r--r--patches/api/0276-Add-Block-isValidTool.patch (renamed from patches/api/0275-Add-Block-isValidTool.patch)0
-rw-r--r--patches/api/0277-Implement-Keyed-on-World.patch (renamed from patches/api/0276-Implement-Keyed-on-World.patch)2
-rw-r--r--patches/api/0278-Item-Rarity-API.patch (renamed from patches/api/0277-Item-Rarity-API.patch)8
-rw-r--r--patches/api/0279-Expose-protocol-version.patch (renamed from patches/api/0278-Expose-protocol-version.patch)4
-rw-r--r--patches/api/0280-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch (renamed from patches/api/0279-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch)0
-rw-r--r--patches/api/0281-add-isDeeplySleeping-to-HumanEntity.patch (renamed from patches/api/0280-add-isDeeplySleeping-to-HumanEntity.patch)0
-rw-r--r--patches/api/0282-add-consumeFuel-to-FurnaceBurnEvent.patch (renamed from patches/api/0281-add-consumeFuel-to-FurnaceBurnEvent.patch)0
-rw-r--r--patches/api/0283-add-get-set-drop-chance-to-EntityEquipment.patch (renamed from patches/api/0282-add-get-set-drop-chance-to-EntityEquipment.patch)0
-rw-r--r--patches/api/0284-Added-PlayerDeepSleepEvent.patch (renamed from patches/api/0283-Added-PlayerDeepSleepEvent.patch)0
-rw-r--r--patches/api/0285-More-World-API.patch (renamed from patches/api/0284-More-World-API.patch)2
-rw-r--r--patches/api/0286-Added-PlayerBedFailEnterEvent.patch (renamed from patches/api/0285-Added-PlayerBedFailEnterEvent.patch)0
-rw-r--r--patches/api/0287-Introduce-beacon-activation-deactivation-events.patch (renamed from patches/api/0286-Introduce-beacon-activation-deactivation-events.patch)0
-rw-r--r--patches/api/0288-PlayerMoveEvent-Improvements.patch (renamed from patches/api/0287-PlayerMoveEvent-Improvements.patch)0
-rw-r--r--patches/api/0289-add-RespawnFlags-to-PlayerRespawnEvent.patch (renamed from patches/api/0288-add-RespawnFlags-to-PlayerRespawnEvent.patch)0
-rw-r--r--patches/api/0290-Add-more-WanderingTrader-API.patch (renamed from patches/api/0289-Add-more-WanderingTrader-API.patch)0
-rw-r--r--patches/api/0291-Add-EntityBlockStorage-clearEntities.patch (renamed from patches/api/0290-Add-EntityBlockStorage-clearEntities.patch)0
-rw-r--r--patches/api/0292-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch (renamed from patches/api/0291-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch)0
-rw-r--r--patches/api/0293-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/api/0292-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/api/0294-Inventory-close.patch (renamed from patches/api/0293-Inventory-close.patch)0
-rw-r--r--patches/api/0295-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch (renamed from patches/api/0294-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch)0
-rw-r--r--patches/api/0296-Add-basic-Datapack-API.patch (renamed from patches/api/0295-Add-basic-Datapack-API.patch)0
-rw-r--r--patches/api/0297-additions-to-PlayerGameModeChangeEvent.patch (renamed from patches/api/0296-additions-to-PlayerGameModeChangeEvent.patch)0
-rw-r--r--patches/api/0298-ItemStack-repair-check-API.patch (renamed from patches/api/0297-ItemStack-repair-check-API.patch)4
-rw-r--r--patches/api/0299-More-Enchantment-API.patch (renamed from patches/api/0298-More-Enchantment-API.patch)0
-rw-r--r--patches/api/0300-List-all-missing-hard-depends-not-just-first.patch (renamed from patches/api/0299-List-all-missing-hard-depends-not-just-first.patch)0
-rw-r--r--patches/api/0301-Add-Mob-lookAt-API.patch (renamed from patches/api/0300-Add-Mob-lookAt-API.patch)0
-rw-r--r--patches/api/0302-ItemStack-editMeta.patch (renamed from patches/api/0301-ItemStack-editMeta.patch)0
-rw-r--r--patches/api/0303-Add-EntityInsideBlockEvent.patch (renamed from patches/api/0302-Add-EntityInsideBlockEvent.patch)0
-rw-r--r--patches/api/0304-Attributes-API-for-item-defaults.patch (renamed from patches/api/0303-Attributes-API-for-item-defaults.patch)4
-rw-r--r--patches/api/0305-Add-cause-to-Weather-ThunderChangeEvents.patch (renamed from patches/api/0304-Add-cause-to-Weather-ThunderChangeEvents.patch)0
-rw-r--r--patches/api/0306-More-Lidded-Block-API.patch (renamed from patches/api/0305-More-Lidded-Block-API.patch)0
-rw-r--r--patches/api/0307-Add-PlayerKickEvent-causes.patch (renamed from patches/api/0306-Add-PlayerKickEvent-causes.patch)2
-rw-r--r--patches/api/0308-Add-PufferFishStateChangeEvent.patch (renamed from patches/api/0307-Add-PufferFishStateChangeEvent.patch)0
-rw-r--r--patches/api/0309-Add-BellRevealRaiderEvent.patch (renamed from patches/api/0308-Add-BellRevealRaiderEvent.patch)0
-rw-r--r--patches/api/0310-Add-ElderGuardianAppearanceEvent.patch (renamed from patches/api/0309-Add-ElderGuardianAppearanceEvent.patch)0
-rw-r--r--patches/api/0311-Add-more-line-of-sight-methods.patch (renamed from patches/api/0310-Add-more-line-of-sight-methods.patch)2
-rw-r--r--patches/api/0312-Add-more-LimitedRegion-API.patch (renamed from patches/api/0311-Add-more-LimitedRegion-API.patch)0
-rw-r--r--patches/api/0313-Missing-Entity-Behavior-API.patch (renamed from patches/api/0312-Missing-Entity-Behavior-API.patch)0
-rw-r--r--patches/api/0314-Add-Git-information-to-version-command-on-startup.patch (renamed from patches/api/0313-Add-Git-information-to-version-command-on-startup.patch)2
-rw-r--r--patches/api/0315-Adds-PlayerArmSwingEvent.patch (renamed from patches/api/0314-Adds-PlayerArmSwingEvent.patch)0
-rw-r--r--patches/api/0316-Add-PlayerSignCommandPreprocessEvent.patch (renamed from patches/api/0315-Add-PlayerSignCommandPreprocessEvent.patch)0
-rw-r--r--patches/api/0317-fix-empty-array-elements-in-command-arguments.patch (renamed from patches/api/0316-fix-empty-array-elements-in-command-arguments.patch)0
-rw-r--r--patches/api/0318-Stinger-API.patch (renamed from patches/api/0317-Stinger-API.patch)0
-rw-r--r--patches/api/0319-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch (renamed from patches/api/0318-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch)0
-rw-r--r--patches/api/0320-Add-PlayerSetSpawnEvent.patch (renamed from patches/api/0319-Add-PlayerSetSpawnEvent.patch)0
-rw-r--r--patches/api/0321-Added-EntityDamageItemEvent.patch (renamed from patches/api/0320-Added-EntityDamageItemEvent.patch)0
-rw-r--r--patches/api/0322-Make-EntityUnleashEvent-cancellable.patch (renamed from patches/api/0321-Make-EntityUnleashEvent-cancellable.patch)0
-rw-r--r--patches/api/0323-Change-EnderEye-target-without-changing-other-things.patch (renamed from patches/api/0322-Change-EnderEye-target-without-changing-other-things.patch)0
-rw-r--r--patches/api/0324-Add-BlockBreakBlockEvent.patch (renamed from patches/api/0323-Add-BlockBreakBlockEvent.patch)0
-rw-r--r--patches/api/0325-Add-helpers-for-left-right-click-to-Action.patch (renamed from patches/api/0324-Add-helpers-for-left-right-click-to-Action.patch)0
-rw-r--r--patches/api/0326-Option-to-prevent-NBT-copy-in-smithing-recipes.patch (renamed from patches/api/0325-Option-to-prevent-NBT-copy-in-smithing-recipes.patch)0
-rw-r--r--patches/api/0327-More-CommandBlock-API.patch (renamed from patches/api/0326-More-CommandBlock-API.patch)0
-rw-r--r--patches/api/0328-Fix-plugin-provides-load-order.patch (renamed from patches/api/0327-Fix-plugin-provides-load-order.patch)0
-rw-r--r--patches/api/0329-Add-missing-team-sidebar-display-slots.patch (renamed from patches/api/0328-Add-missing-team-sidebar-display-slots.patch)0
-rw-r--r--patches/api/0330-add-back-EntityPortalExitEvent.patch (renamed from patches/api/0329-add-back-EntityPortalExitEvent.patch)0
-rw-r--r--patches/api/0331-Add-methods-to-find-targets-for-lightning-strikes.patch (renamed from patches/api/0330-Add-methods-to-find-targets-for-lightning-strikes.patch)2
-rw-r--r--patches/api/0332-Get-entity-default-attributes.patch (renamed from patches/api/0331-Get-entity-default-attributes.patch)4
-rw-r--r--patches/api/0333-Left-handed-API.patch (renamed from patches/api/0332-Left-handed-API.patch)0
-rw-r--r--patches/api/0334-Add-advancement-display-API.patch (renamed from patches/api/0333-Add-advancement-display-API.patch)0
-rw-r--r--patches/api/0335-Add-ItemFactory-getMonsterEgg-API.patch (renamed from patches/api/0334-Add-ItemFactory-getMonsterEgg-API.patch)0
-rw-r--r--patches/api/0336-Add-critical-damage-API.patch (renamed from patches/api/0335-Add-critical-damage-API.patch)0
-rw-r--r--patches/api/0337-Fix-issues-with-mob-conversion.patch (renamed from patches/api/0336-Fix-issues-with-mob-conversion.patch)0
-rw-r--r--patches/api/0338-Add-isCollidable-methods-to-various-places.patch (renamed from patches/api/0337-Add-isCollidable-methods-to-various-places.patch)4
-rw-r--r--patches/api/0339-Goat-ram-API.patch (renamed from patches/api/0338-Goat-ram-API.patch)0
-rw-r--r--patches/api/0340-Add-API-for-resetting-a-single-score.patch (renamed from patches/api/0339-Add-API-for-resetting-a-single-score.patch)0
-rw-r--r--patches/api/0341-Add-Raw-Byte-Entity-Serialization.patch (renamed from patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch)0
-rw-r--r--patches/api/0342-Add-PlayerItemFrameChangeEvent.patch (renamed from patches/api/0341-Add-PlayerItemFrameChangeEvent.patch)0
-rw-r--r--patches/api/0343-Add-player-health-update-API.patch (renamed from patches/api/0342-Add-player-health-update-API.patch)0
-rw-r--r--patches/api/0344-Allow-delegation-to-vanilla-chunk-gen.patch (renamed from patches/api/0343-Allow-delegation-to-vanilla-chunk-gen.patch)0
-rw-r--r--patches/api/0345-Add-more-Campfire-API.patch (renamed from patches/api/0344-Add-more-Campfire-API.patch)0
-rw-r--r--patches/api/0346-Move-VehicleCollisionEvent-HandlerList-up.patch (renamed from patches/api/0345-Move-VehicleCollisionEvent-HandlerList-up.patch)0
-rw-r--r--patches/api/0347-Improve-scoreboard-entries.patch (renamed from patches/api/0346-Improve-scoreboard-entries.patch)0
-rw-r--r--patches/api/0348-Entity-powdered-snow-API.patch (renamed from patches/api/0347-Entity-powdered-snow-API.patch)0
-rw-r--r--patches/api/0349-Add-API-for-item-entity-health.patch (renamed from patches/api/0348-Add-API-for-item-entity-health.patch)0
-rw-r--r--patches/api/0350-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch (renamed from patches/api/0349-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch)0
-rw-r--r--patches/api/0351-Bucketable-API.patch (renamed from patches/api/0350-Bucketable-API.patch)0
-rw-r--r--patches/api/0352-System-prop-for-default-config-comment-parsing.patch (renamed from patches/api/0351-System-prop-for-default-config-comment-parsing.patch)0
-rw-r--r--patches/api/0353-Expose-vanilla-BiomeProvider-from-WorldInfo.patch (renamed from patches/api/0352-Expose-vanilla-BiomeProvider-from-WorldInfo.patch)0
-rw-r--r--patches/api/0354-Remove-upstream-snakeyaml-fix.patch (renamed from patches/api/0353-Remove-upstream-snakeyaml-fix.patch)0
-rw-r--r--patches/api/0355-Add-new-overload-to-PersistentDataContainer-has.patch (renamed from patches/api/0354-Add-new-overload-to-PersistentDataContainer-has.patch)0
-rw-r--r--patches/api/0356-Multiple-Entries-with-Scoreboards.patch (renamed from patches/api/0355-Multiple-Entries-with-Scoreboards.patch)0
-rw-r--r--patches/api/0357-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/api/0356-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/api/0358-Warn-on-strange-EventHandler-return-types.patch (renamed from patches/api/0357-Warn-on-strange-EventHandler-return-types.patch)0
-rw-r--r--patches/api/0359-Multi-Block-Change-API.patch (renamed from patches/api/0358-Multi-Block-Change-API.patch)2
-rw-r--r--patches/api/0360-Fix-NotePlayEvent.patch (renamed from patches/api/0359-Fix-NotePlayEvent.patch)0
-rw-r--r--patches/api/0361-Freeze-Tick-Lock-API.patch (renamed from patches/api/0360-Freeze-Tick-Lock-API.patch)0
-rw-r--r--patches/api/0362-Dolphin-API.patch (renamed from patches/api/0361-Dolphin-API.patch)0
-rw-r--r--patches/api/0363-More-PotionEffectType-API.patch (renamed from patches/api/0362-More-PotionEffectType-API.patch)14
-rw-r--r--patches/api/0364-Expand-the-Registry-API.patch (renamed from patches/api/0363-Expand-the-Registry-API.patch)4
-rw-r--r--patches/api/0365-API-for-creating-command-sender-which-forwards-feedb.patch (renamed from patches/api/0364-API-for-creating-command-sender-which-forwards-feedb.patch)0
-rw-r--r--patches/api/0366-Implement-regenerateChunk.patch (renamed from patches/api/0365-Implement-regenerateChunk.patch)2
-rw-r--r--patches/api/0367-Don-t-load-plugins-prefixed-with-a-dot.patch (renamed from patches/api/0366-Don-t-load-plugins-prefixed-with-a-dot.patch)0
-rw-r--r--patches/api/0368-Add-GameEvent-tags.patch (renamed from patches/api/0367-Add-GameEvent-tags.patch)0
-rw-r--r--patches/api/0369-Furnace-RecipesUsed-API.patch (renamed from patches/api/0368-Furnace-RecipesUsed-API.patch)0
-rw-r--r--patches/api/0370-Configurable-sculk-sensor-listener-range.patch (renamed from patches/api/0369-Configurable-sculk-sensor-listener-range.patch)0
-rw-r--r--patches/api/0371-Add-missing-block-data-mins-and-maxes.patch (renamed from patches/api/0370-Add-missing-block-data-mins-and-maxes.patch)0
-rw-r--r--patches/api/0372-Custom-Potion-Mixes.patch (renamed from patches/api/0371-Custom-Potion-Mixes.patch)0
118 files changed, 603 insertions, 199 deletions
diff --git a/patches/api/0256-Add-PaperRegistry.patch b/patches/api/0256-Add-PaperRegistry.patch
new file mode 100644
index 0000000000..4cda0a858c
--- /dev/null
+++ b/patches/api/0256-Add-PaperRegistry.patch
@@ -0,0 +1,112 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Wed, 2 Mar 2022 13:36:21 -0800
+Subject: [PATCH] Add PaperRegistry
+
+
+diff --git a/src/main/java/io/papermc/paper/registry/Reference.java b/src/main/java/io/papermc/paper/registry/Reference.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..d880810cbf05bc45051fe29515054211572e33b4
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/Reference.java
+@@ -0,0 +1,43 @@
++package io.papermc.paper.registry;
++
++import org.bukkit.Keyed;
++import org.bukkit.NamespacedKey;
++import org.bukkit.Registry;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++/**
++ * Represents a reference to a server-backed registry value that may
++ * change.
++ *
++ * @param <T> type of the value
++ */
++public interface Reference<T extends Keyed> extends Keyed {
++
++ /**
++ * Gets the value from the registry with the key.
++ *
++ * @return the value
++ * @throws java.util.NoSuchElementException if there is no value with this key
++ */
++ @NotNull T value();
++
++ /**
++ * Gets the value from the registry with the key.
++ *
++ * @return the value or null if it doesn't exist
++ */
++ @Nullable T valueOrNull();
++
++ /**
++ * Creates a reference to a registered value.
++ *
++ * @param registry the registry the value is located in
++ * @param key the key to the value
++ * @param <T> the type of the value
++ * @return a reference
++ */
++ static <T extends Keyed> @NotNull Reference<T> create(@NotNull Registry<T> registry, @NotNull NamespacedKey key) {
++ return new ReferenceImpl<>(registry, key);
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/registry/ReferenceImpl.java b/src/main/java/io/papermc/paper/registry/ReferenceImpl.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..f29e76a6b66ddfec12ddf8db6dcb2df6083b5982
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/registry/ReferenceImpl.java
+@@ -0,0 +1,31 @@
++package io.papermc.paper.registry;
++
++import org.bukkit.Keyed;
++import org.bukkit.NamespacedKey;
++import org.bukkit.Registry;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++import java.util.NoSuchElementException;
++
++record ReferenceImpl<T extends Keyed>(@NotNull Registry<T> registry, @NotNull NamespacedKey key) implements Reference<T> {
++
++ @Override
++ public @NotNull T value() {
++ final T value = this.registry.get(this.key);
++ if (value == null) {
++ throw new NoSuchElementException("No such value with key " + this.key);
++ }
++ return value;
++ }
++
++ @Override
++ public @Nullable T valueOrNull() {
++ return this.registry.get(this.key);
++ }
++
++ @Override
++ public @NotNull NamespacedKey getKey() {
++ return this.key;
++ }
++}
+diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
+index b24439b379be1a90dde4e6f4dbe5ca3fdd8face4..0697214210a6e87f690b9454d9651d06ca57a524 100644
+--- a/src/main/java/org/bukkit/UnsafeValues.java
++++ b/src/main/java/org/bukkit/UnsafeValues.java
+@@ -147,5 +147,15 @@ public interface UnsafeValues {
+ * Use this when sending custom packets, so that there are no collisions on the client or server.
+ */
+ public int nextEntityId();
++
++ /**
++ * Gets the server-backed registry for a type.
++ *
++ * @param classOfT type
++ * @param <T> type
++ * @return the server-backed registry
++ * @throws IllegalArgumentException if there isn't a registry for that type
++ */
++ <T extends Keyed> @org.jetbrains.annotations.NotNull Registry<T> registryFor(Class<T> classOfT);
+ // Paper end
+ }
diff --git a/patches/api/0256-Add-StructureLocateEvent.patch b/patches/api/0256-Add-StructureLocateEvent.patch
deleted file mode 100644
index 88c14d8ea6..0000000000
--- a/patches/api/0256-Add-StructureLocateEvent.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: dfsek <[email protected]>
-Date: Tue, 15 Sep 2020 21:59:16 -0700
-Subject: [PATCH] Add StructureLocateEvent
-
-
-diff --git a/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java b/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java
-new file mode 100644
-index 0000000000000000000000000000000000000000..45b6694fc5741831e2df638b1f760a3ca28a4907
---- /dev/null
-+++ b/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java
-@@ -0,0 +1,155 @@
-+package io.papermc.paper.event.world;
-+
-+import org.bukkit.Location;
-+import org.bukkit.StructureType;
-+import org.bukkit.World;
-+import org.bukkit.event.Cancellable;
-+import org.bukkit.event.HandlerList;
-+import org.bukkit.event.world.WorldEvent;
-+import org.jetbrains.annotations.NotNull;
-+import org.jetbrains.annotations.Nullable;
-+
-+/**
-+ * Called <b>before</b> a structure/feature is located.
-+ * This happens when:
-+ * <ul>
-+ * <li>The /locate command is used.<br></li>
-+ * <li>An Eye of Ender is used.</li>
-+ * <li>An Explorer/Treasure Map is activated.</li>
-+ * <li>{@link World#locateNearestStructure(Location, StructureType, int, boolean)} is invoked.</li>
-+ * </ul>
-+ */
-+public class StructureLocateEvent extends WorldEvent implements Cancellable {
-+ private static final HandlerList handlers = new HandlerList();
-+ private final Location origin;
-+ private Location result = null;
-+ private StructureType type;
-+ private int radius;
-+ private boolean findUnexplored;
-+ private boolean cancelled = false;
-+
-+ public StructureLocateEvent(@NotNull World world, @NotNull Location origin, @NotNull StructureType structureType, int radius, boolean findUnexplored) {
-+ super(world);
-+ this.origin = origin;
-+ this.type = structureType;
-+ this.radius = radius;
-+ this.findUnexplored = findUnexplored;
-+ }
-+
-+ @NotNull
-+ public static HandlerList getHandlerList() {
-+ return handlers;
-+ }
-+
-+ @NotNull
-+ @Override
-+ public HandlerList getHandlers() {
-+ return handlers;
-+ }
-+
-+ /**
-+ * Gets the location set as the structure location, if it was defined.
-+ * <p>
-+ * Returns {@code null} if it has not been set by {@link StructureLocateEvent#setResult(Location)}.
-+ * Since this event fires <i>before</i> the search is done, the actual location is unknown at this point.
-+ *
-+ * @return The result location, if it has been set. null if it has not.
-+ * @see World#locateNearestStructure(Location, StructureType, int, boolean)
-+ */
-+ @Nullable
-+ public Location getResult() {
-+ return result;
-+ }
-+
-+ /**
-+ * Sets the result {@link Location}. This causes the search to be skipped, and the location passed here to be used as the result.
-+ *
-+ * @param result the {@link Location} of the structure.
-+ */
-+ public void setResult(@Nullable Location result) {
-+ this.result = result;
-+ }
-+
-+ /**
-+ * Gets the {@link StructureType} that is to be located.
-+ *
-+ * @return the structure type.
-+ */
-+ @NotNull
-+ public StructureType getType() {
-+ return type;
-+ }
-+
-+ /**
-+ * Sets the {@link StructureType} that is to be located.
-+ *
-+ * @param type the structure type.
-+ */
-+ public void setType(@NotNull StructureType type) {
-+ this.type = type;
-+ }
-+
-+ /**
-+ * Gets the {@link Location} from which the search is to be conducted.
-+ *
-+ * @return {@link Location} where search begins
-+ */
-+ @NotNull
-+ public Location getOrigin() {
-+ return origin;
-+ }
-+
-+ /**
-+ * Gets the search radius in which to attempt locating the structure.
-+ * <p>
-+ * This radius may not always be obeyed during the structure search!
-+ *
-+ * @return the search radius.
-+ */
-+ public int getRadius() {
-+ return radius;
-+ }
-+
-+ /**
-+ * Sets the search radius in which to attempt locating the structure.
-+ * <p>
-+ * This radius may not always be obeyed during the structure search!
-+ *
-+ * @param radius the search radius.
-+ */
-+ public void setRadius(int radius) {
-+ this.radius = radius;
-+ }
-+
-+ /**
-+ * Gets whether to search exclusively for unexplored structures.
-+ * <p>
-+ * As with the search radius, this value is not always obeyed.
-+ *
-+ * @return Whether to search for only unexplored structures.
-+ */
-+ public boolean shouldFindUnexplored() {
-+ return findUnexplored;
-+ }
-+
-+ /**
-+ * Sets whether to search exclusively for unexplored structures.
-+ * <p>
-+ * As with the search radius, this value is not always obeyed.
-+ *
-+ * @param findUnexplored Whether to search for only unexplored structures.
-+ */
-+ public void setFindUnexplored(boolean findUnexplored) {
-+ this.findUnexplored = findUnexplored;
-+ }
-+
-+ @Override
-+ public boolean isCancelled() {
-+ return cancelled;
-+ }
-+
-+ @Override
-+ public void setCancelled(boolean cancel) {
-+ this.cancelled = cancel;
-+ }
-+}
diff --git a/patches/api/0257-Add-StructuresLocateEvent.patch b/patches/api/0257-Add-StructuresLocateEvent.patch
new file mode 100644
index 0000000000..30880b64ec
--- /dev/null
+++ b/patches/api/0257-Add-StructuresLocateEvent.patch
@@ -0,0 +1,461 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: dfsek <[email protected]>
+Date: Tue, 15 Sep 2020 21:59:16 -0700
+Subject: [PATCH] Add StructuresLocateEvent
+
+Co-authored-by: Jake Potrebic <[email protected]>
+
+diff --git a/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java b/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..0c83a02059d65672ff191c42932d850950e9ea00
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/StructureLocateEvent.java
+@@ -0,0 +1,157 @@
++package io.papermc.paper.event.world;
++
++import org.bukkit.Location;
++import org.bukkit.StructureType;
++import org.bukkit.World;
++import org.bukkit.event.Cancellable;
++import org.bukkit.event.HandlerList;
++import org.bukkit.event.world.WorldEvent;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++/**
++ * Called <b>before</b> a structure/feature is located.
++ * This happens when:
++ * <ul>
++ * <li>The /locate command is used.<br></li>
++ * <li>An Eye of Ender is used.</li>
++ * <li>An Explorer/Treasure Map is activated.</li>
++ * <li>{@link World#locateNearestStructure(Location, StructureType, int, boolean)} is invoked.</li>
++ * </ul>
++ * @deprecated no longer used, see {@link StructuresLocateEvent}
++ */
++@Deprecated(forRemoval = true)
++public class StructureLocateEvent extends WorldEvent implements Cancellable {
++ private static final HandlerList handlers = new HandlerList();
++ private final Location origin;
++ private Location result = null;
++ private StructureType type;
++ private int radius;
++ private boolean findUnexplored;
++ private boolean cancelled = false;
++
++ public StructureLocateEvent(@NotNull World world, @NotNull Location origin, @NotNull StructureType structureType, int radius, boolean findUnexplored) {
++ super(world);
++ this.origin = origin;
++ this.type = structureType;
++ this.radius = radius;
++ this.findUnexplored = findUnexplored;
++ }
++
++ @NotNull
++ public static HandlerList getHandlerList() {
++ return handlers;
++ }
++
++ @NotNull
++ @Override
++ public HandlerList getHandlers() {
++ return handlers;
++ }
++
++ /**
++ * Gets the location set as the structure location, if it was defined.
++ * <p>
++ * Returns {@code null} if it has not been set by {@link StructureLocateEvent#setResult(Location)}.
++ * Since this event fires <i>before</i> the search is done, the actual location is unknown at this point.
++ *
++ * @return The result location, if it has been set. null if it has not.
++ * @see World#locateNearestStructure(Location, StructureType, int, boolean)
++ */
++ @Nullable
++ public Location getResult() {
++ return result;
++ }
++
++ /**
++ * Sets the result {@link Location}. This causes the search to be skipped, and the location passed here to be used as the result.
++ *
++ * @param result the {@link Location} of the structure.
++ */
++ public void setResult(@Nullable Location result) {
++ this.result = result;
++ }
++
++ /**
++ * Gets the {@link StructureType} that is to be located.
++ *
++ * @return the structure type.
++ */
++ @NotNull
++ public StructureType getType() {
++ return type;
++ }
++
++ /**
++ * Sets the {@link StructureType} that is to be located.
++ *
++ * @param type the structure type.
++ */
++ public void setType(@NotNull StructureType type) {
++ this.type = type;
++ }
++
++ /**
++ * Gets the {@link Location} from which the search is to be conducted.
++ *
++ * @return {@link Location} where search begins
++ */
++ @NotNull
++ public Location getOrigin() {
++ return origin;
++ }
++
++ /**
++ * Gets the search radius in which to attempt locating the structure.
++ * <p>
++ * This radius may not always be obeyed during the structure search!
++ *
++ * @return the search radius.
++ */
++ public int getRadius() {
++ return radius;
++ }
++
++ /**
++ * Sets the search radius in which to attempt locating the structure.
++ * <p>
++ * This radius may not always be obeyed during the structure search!
++ *
++ * @param radius the search radius.
++ */
++ public void setRadius(int radius) {
++ this.radius = radius;
++ }
++
++ /**
++ * Gets whether to search exclusively for unexplored structures.
++ * <p>
++ * As with the search radius, this value is not always obeyed.
++ *
++ * @return Whether to search for only unexplored structures.
++ */
++ public boolean shouldFindUnexplored() {
++ return findUnexplored;
++ }
++
++ /**
++ * Sets whether to search exclusively for unexplored structures.
++ * <p>
++ * As with the search radius, this value is not always obeyed.
++ *
++ * @param findUnexplored Whether to search for only unexplored structures.
++ */
++ public void setFindUnexplored(boolean findUnexplored) {
++ this.findUnexplored = findUnexplored;
++ }
++
++ @Override
++ public boolean isCancelled() {
++ return cancelled;
++ }
++
++ @Override
++ public void setCancelled(boolean cancel) {
++ this.cancelled = cancel;
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/event/world/StructuresLocateEvent.java b/src/main/java/io/papermc/paper/event/world/StructuresLocateEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..566f9df8f615142e14330965f3491f4e83846783
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/StructuresLocateEvent.java
+@@ -0,0 +1,164 @@
++package io.papermc.paper.event.world;
++
++import io.papermc.paper.world.structure.ConfiguredStructure;
++import org.bukkit.Location;
++import org.bukkit.World;
++import org.bukkit.event.Cancellable;
++import org.bukkit.event.HandlerList;
++import org.bukkit.event.world.WorldEvent;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++import java.util.ArrayList;
++import java.util.List;
++
++/**
++ * Called <b>before</b> a set of configured structures is located.
++ * This happens when:
++ * <ul>
++ * <li>The /locate command is used.<br></li>
++ * <li>An Eye of Ender is used.</li>
++ * <li>An Explorer/Treasure Map is activated.</li>
++ * <li>A dolphin swims to a treasure location.</li>
++ * <li>A trade is done with a villager for a map.</li>
++ * <li>{@link World#locateNearestStructure(Location, org.bukkit.StructureType, int, boolean)} is invoked.</li>
++ * </ul>
++ */
++public class StructuresLocateEvent extends WorldEvent implements Cancellable {
++
++ private static final HandlerList HANDLER_LIST = new HandlerList();
++
++ private final Location origin;
++ private Result result;
++ private List<ConfiguredStructure> configuredStructures;
++ private int radius;
++ private boolean findUnexplored;
++ private boolean cancelled;
++
++ public StructuresLocateEvent(@NotNull World world, @NotNull Location origin, @NotNull List<ConfiguredStructure> configuredStructures, int radius, boolean findUnexplored) {
++ super(world);
++ this.origin = origin;
++ this.configuredStructures = configuredStructures;
++ this.radius = radius;
++ this.findUnexplored = findUnexplored;
++ }
++
++ /**
++ * Gets the {@link Location} from which the search is to be conducted.
++ *
++ * @return {@link Location} where search begins
++ */
++ public @NotNull Location getOrigin() {
++ return this.origin;
++ }
++
++ /**
++ * Gets the {@link Location} and {@link ConfiguredStructure} set as the result, if it was defined.
++ * <p>
++ * Returns {@code null} if it has not been set by {@link StructuresLocateEvent#setResult(Result)}.
++ * Since this event fires <i>before</i> the search is done, the actual result is unknown at this point.
++ *
++ * @return The result location and structure, if it has been set. null if it has not.
++ * @see World#locateNearestStructure(Location, org.bukkit.StructureType, int, boolean)
++ */
++ public @Nullable Result getResult() {
++ return this.result;
++ }
++
++ /**
++ * Sets the result {@link Location} and {@link ConfiguredStructure}. This causes the search to be
++ * skipped, and the result object passed here to be used as the result.
++ *
++ * @param result the {@link Location} and {@link ConfiguredStructure} of the search.
++ */
++ public void setResult(@Nullable Result result) {
++ this.result = result;
++ }
++
++ /**
++ * Gets a mutable list of ConfiguredStructures that are valid targets for the search.
++ *
++ * @return a mutable list of ConfiguredStructures
++ */
++ public @NotNull List<ConfiguredStructure> getConfiguredStructures() {
++ return this.configuredStructures;
++ }
++
++ /**
++ * Sets the list of ConfiguredStructures that are valid targets for the search.
++ *
++ * @param configuredStructures a list of ConfiguredStructure targets
++ */
++ public void setConfiguredStructures(@NotNull List<ConfiguredStructure> configuredStructures) {
++ this.configuredStructures = new ArrayList<>(configuredStructures);
++ }
++
++ /**
++ * Gets the search radius in which to attempt locating the structure.
++ * <p>
++ * This radius may not always be obeyed during the structure search!
++ *
++ * @return the search radius.
++ */
++ public int getRadius() {
++ return this.radius;
++ }
++
++ /**
++ * Sets the search radius in which to attempt locating the structure.
++ * <p>
++ * This radius may not always be obeyed during the structure search!
++ *
++ * @param radius the search radius.
++ */
++ public void setRadius(int radius) {
++ this.radius = radius;
++ }
++
++ /**
++ * Gets whether to search exclusively for unexplored structures.
++ * <p>
++ * As with the search radius, this value is not always obeyed.
++ *
++ * @return Whether to search for only unexplored structures.
++ */
++ public boolean shouldFindUnexplored() {
++ return this.findUnexplored;
++ }
++
++ /**
++ * Sets whether to search exclusively for unexplored structures.
++ * <p>
++ * As with the search radius, this value is not always obeyed.
++ *
++ * @param findUnexplored Whether to search for only unexplored structures.
++ */
++ public void setFindUnexplored(boolean findUnexplored) {
++ this.findUnexplored = findUnexplored;
++ }
++
++ @Override
++ public boolean isCancelled() {
++ return this.cancelled;
++ }
++
++ @Override
++ public void setCancelled(boolean cancel) {
++ this.cancelled = cancel;
++ }
++
++ @Override
++ public @NotNull HandlerList getHandlers() {
++ return HANDLER_LIST;
++ }
++
++ public static @NotNull HandlerList getHandlerList() {
++ return HANDLER_LIST;
++ }
++
++ /**
++ * Result for {@link StructuresLocateEvent}.
++ */
++ public record Result(@NotNull Location position, @NotNull ConfiguredStructure configuredStructure) {
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/world/structure/ConfiguredStructure.java b/src/main/java/io/papermc/paper/world/structure/ConfiguredStructure.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..280febf7482418734558c50c22688248ac2b14f3
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/world/structure/ConfiguredStructure.java
+@@ -0,0 +1,97 @@
++package io.papermc.paper.world.structure;
++
++import io.papermc.paper.registry.Reference;
++import org.bukkit.Keyed;
++import org.bukkit.NamespacedKey;
++import org.bukkit.Registry;
++import org.bukkit.StructureType;
++import org.jetbrains.annotations.NotNull;
++
++import java.util.Objects;
++
++/**
++ * Represents a configured structure each with a
++ * {@link StructureType}. Multiple ConfiguredStructures can have
++ * the same {@link StructureType}.
++ */
++public final class ConfiguredStructure implements Keyed {
++
++ public static final Reference<ConfiguredStructure> PILLAGER_OUTPOST = create("pillager_outpost");
++ public static final Reference<ConfiguredStructure> MINESHAFT = create("mineshaft");
++ public static final Reference<ConfiguredStructure> MINESHAFT_MESA = create("mineshaft_mesa");
++ public static final Reference<ConfiguredStructure> WOODLAND_MANSION = create("mansion");
++ public static final Reference<ConfiguredStructure> JUNGLE_TEMPLE = create("jungle_pyramid");
++ public static final Reference<ConfiguredStructure> DESERT_PYRAMID = create("desert_pyramid");
++ public static final Reference<ConfiguredStructure> IGLOO = create("igloo");
++ public static final Reference<ConfiguredStructure> SHIPWRECK = create("shipwreck");
++ public static final Reference<ConfiguredStructure> SHIPWRECK_BEACHED = create("shipwreck_beached");
++ public static final Reference<ConfiguredStructure> SWAMP_HUT = create("swamp_hut");
++ public static final Reference<ConfiguredStructure> STRONGHOLD = create("stronghold");
++ public static final Reference<ConfiguredStructure> OCEAN_MONUMENT = create("monument");
++ public static final Reference<ConfiguredStructure> OCEAN_RUIN_COLD = create("ocean_ruin_cold");
++ public static final Reference<ConfiguredStructure> OCEAN_RUIN_WARM = create("ocean_ruin_warm");
++ public static final Reference<ConfiguredStructure> FORTRESS = create("fortress");
++ public static final Reference<ConfiguredStructure> NETHER_FOSSIL = create("nether_fossil");
++ public static final Reference<ConfiguredStructure> END_CITY = create("end_city");
++ public static final Reference<ConfiguredStructure> BURIED_TREASURE = create("buried_treasure");
++ public static final Reference<ConfiguredStructure> BASTION_REMNANT = create("bastion_remnant");
++ public static final Reference<ConfiguredStructure> VILLAGE_PLAINS = create("village_plains");
++ public static final Reference<ConfiguredStructure> VILLAGE_DESERT = create("village_desert");
++ public static final Reference<ConfiguredStructure> VILLAGE_SAVANNA = create("village_savanna");
++ public static final Reference<ConfiguredStructure> VILLAGE_SNOWY = create("village_snowy");
++ public static final Reference<ConfiguredStructure> VILLAGE_TAIGA = create("village_taiga");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_STANDARD = create("ruined_portal");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_DESERT = create("ruined_portal_desert");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_JUNGLE = create("ruined_portal_jungle");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_SWAMP = create("ruined_portal_swamp");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_MOUNTAIN = create("ruined_portal_mountain");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_OCEAN = create("ruined_portal_ocean");
++ public static final Reference<ConfiguredStructure> RUINED_PORTAL_NETHER = create("ruined_portal_nether");
++
++ private final NamespacedKey key;
++ private final StructureType structureType;
++
++ ConfiguredStructure(@NotNull NamespacedKey key, @NotNull StructureType structureType) {
++ this.key = key;
++ this.structureType = structureType;
++ }
++
++ @Override
++ public @NotNull NamespacedKey getKey() {
++ return this.key;
++ }
++
++ /**
++ * Gets the structure type for this configure structure.
++ *
++ * @return the structure type
++ */
++ public @NotNull StructureType getStructureType() {
++ return this.structureType;
++ }
++
++ @Override
++ public boolean equals(Object o) {
++ if (this == o) return true;
++ if (o == null || getClass() != o.getClass()) return false;
++ ConfiguredStructure structure = (ConfiguredStructure) o;
++ return this.key.equals(structure.key) && this.structureType.equals(structure.structureType);
++ }
++
++ @Override
++ public int hashCode() {
++ return Objects.hash(this.key, this.structureType);
++ }
++
++ @Override
++ public String toString() {
++ return "ConfiguredStructure{" +
++ "key=" + this.key +
++ ", structureType=" + this.structureType +
++ '}';
++ }
++
++ private static @NotNull Reference<ConfiguredStructure> create(@NotNull String name) {
++ return Reference.create(Registry.CONFIGURED_STRUCTURE, NamespacedKey.minecraft(name));
++ }
++}
+diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
+index a696fcaffa03af9e6c92e2ef3e12b38eb59e5db4..bfe0d98e6032c7633d6bb97382426f94fb437430 100644
+--- a/src/main/java/org/bukkit/Registry.java
++++ b/src/main/java/org/bukkit/Registry.java
+@@ -189,6 +189,13 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+ return GameEvent.getByKey(key);
+ }
+ };
++ // Paper start
++ /**
++ * Configured structures.
++ * @see io.papermc.paper.world.structure.ConfiguredStructure
++ */
++ Registry<io.papermc.paper.world.structure.ConfiguredStructure> CONFIGURED_STRUCTURE = Bukkit.getUnsafe().registryFor(io.papermc.paper.world.structure.ConfiguredStructure.class);
++ // Paper end
+
+ /**
+ * Get the object by its key.
diff --git a/patches/api/0257-Return-chat-component-with-empty-text-instead-of-thr.patch b/patches/api/0258-Return-chat-component-with-empty-text-instead-of-thr.patch
index e7986f5bb1..e7986f5bb1 100644
--- a/patches/api/0257-Return-chat-component-with-empty-text-instead-of-thr.patch
+++ b/patches/api/0258-Return-chat-component-with-empty-text-instead-of-thr.patch
diff --git a/patches/api/0258-Add-BlockPreDispenseEvent.patch b/patches/api/0259-Add-BlockPreDispenseEvent.patch
index fb0b89a4ee..fb0b89a4ee 100644
--- a/patches/api/0258-Add-BlockPreDispenseEvent.patch
+++ b/patches/api/0259-Add-BlockPreDispenseEvent.patch
diff --git a/patches/api/0259-Added-Vanilla-Entity-Tags.patch b/patches/api/0260-Added-Vanilla-Entity-Tags.patch
index 9358072a1f..9358072a1f 100644
--- a/patches/api/0259-Added-Vanilla-Entity-Tags.patch
+++ b/patches/api/0260-Added-Vanilla-Entity-Tags.patch
diff --git a/patches/api/0260-added-Wither-API.patch b/patches/api/0261-added-Wither-API.patch
index dbfc15a42c..dbfc15a42c 100644
--- a/patches/api/0260-added-Wither-API.patch
+++ b/patches/api/0261-added-Wither-API.patch
diff --git a/patches/api/0261-Added-PlayerChangeBeaconEffectEvent.patch b/patches/api/0262-Added-PlayerChangeBeaconEffectEvent.patch
index 4331e880bb..4331e880bb 100644
--- a/patches/api/0261-Added-PlayerChangeBeaconEffectEvent.patch
+++ b/patches/api/0262-Added-PlayerChangeBeaconEffectEvent.patch
diff --git a/patches/api/0262-Added-PlayerStonecutterRecipeSelectEvent.patch b/patches/api/0263-Added-PlayerStonecutterRecipeSelectEvent.patch
index ce446c46fe..ce446c46fe 100644
--- a/patches/api/0262-Added-PlayerStonecutterRecipeSelectEvent.patch
+++ b/patches/api/0263-Added-PlayerStonecutterRecipeSelectEvent.patch
diff --git a/patches/api/0263-Add-dropLeash-variable-to-EntityUnleashEvent.patch b/patches/api/0264-Add-dropLeash-variable-to-EntityUnleashEvent.patch
index 75aa758140..75aa758140 100644
--- a/patches/api/0263-Add-dropLeash-variable-to-EntityUnleashEvent.patch
+++ b/patches/api/0264-Add-dropLeash-variable-to-EntityUnleashEvent.patch
diff --git a/patches/api/0264-add-DragonEggFormEvent.patch b/patches/api/0265-add-DragonEggFormEvent.patch
index c465295e88..c465295e88 100644
--- a/patches/api/0264-add-DragonEggFormEvent.patch
+++ b/patches/api/0265-add-DragonEggFormEvent.patch
diff --git a/patches/api/0265-EntityMoveEvent.patch b/patches/api/0266-EntityMoveEvent.patch
index 2855c3bdef..2855c3bdef 100644
--- a/patches/api/0265-EntityMoveEvent.patch
+++ b/patches/api/0266-EntityMoveEvent.patch
diff --git a/patches/api/0266-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/api/0267-Allow-adding-items-to-BlockDropItemEvent.patch
index 984da00f52..984da00f52 100644
--- a/patches/api/0266-Allow-adding-items-to-BlockDropItemEvent.patch
+++ b/patches/api/0267-Allow-adding-items-to-BlockDropItemEvent.patch
diff --git a/patches/api/0267-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/api/0268-Add-getMainThreadExecutor-to-BukkitScheduler.patch
index bbb81fdcf6..bbb81fdcf6 100644
--- a/patches/api/0267-Add-getMainThreadExecutor-to-BukkitScheduler.patch
+++ b/patches/api/0268-Add-getMainThreadExecutor-to-BukkitScheduler.patch
diff --git a/patches/api/0268-living-entity-allow-attribute-registration.patch b/patches/api/0269-living-entity-allow-attribute-registration.patch
index e7ded6dabb..e7ded6dabb 100644
--- a/patches/api/0268-living-entity-allow-attribute-registration.patch
+++ b/patches/api/0269-living-entity-allow-attribute-registration.patch
diff --git a/patches/api/0269-Add-missing-effects.patch b/patches/api/0270-Add-missing-effects.patch
index 8f72589e1e..8f72589e1e 100644
--- a/patches/api/0269-Add-missing-effects.patch
+++ b/patches/api/0270-Add-missing-effects.patch
diff --git a/patches/api/0270-Expose-Tracked-Players.patch b/patches/api/0271-Expose-Tracked-Players.patch
index a66875419d..a66875419d 100644
--- a/patches/api/0270-Expose-Tracked-Players.patch
+++ b/patches/api/0271-Expose-Tracked-Players.patch
diff --git a/patches/api/0271-Cache-the-result-of-Material-isBlock.patch b/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
index 02ac041b83..02ac041b83 100644
--- a/patches/api/0271-Cache-the-result-of-Material-isBlock.patch
+++ b/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
diff --git a/patches/api/0272-Add-worldborder-events.patch b/patches/api/0273-Add-worldborder-events.patch
index 09c3770e16..09c3770e16 100644
--- a/patches/api/0272-Add-worldborder-events.patch
+++ b/patches/api/0273-Add-worldborder-events.patch
diff --git a/patches/api/0273-added-PlayerNameEntityEvent.patch b/patches/api/0274-added-PlayerNameEntityEvent.patch
index a38082f8e8..a38082f8e8 100644
--- a/patches/api/0273-added-PlayerNameEntityEvent.patch
+++ b/patches/api/0274-added-PlayerNameEntityEvent.patch
diff --git a/patches/api/0274-Add-recipe-to-cook-events.patch b/patches/api/0275-Add-recipe-to-cook-events.patch
index b0b34773c0..b0b34773c0 100644
--- a/patches/api/0274-Add-recipe-to-cook-events.patch
+++ b/patches/api/0275-Add-recipe-to-cook-events.patch
diff --git a/patches/api/0275-Add-Block-isValidTool.patch b/patches/api/0276-Add-Block-isValidTool.patch
index 50dd2f43cb..50dd2f43cb 100644
--- a/patches/api/0275-Add-Block-isValidTool.patch
+++ b/patches/api/0276-Add-Block-isValidTool.patch
diff --git a/patches/api/0276-Implement-Keyed-on-World.patch b/patches/api/0277-Implement-Keyed-on-World.patch
index 933373e6d2..86b1e2d5ef 100644
--- a/patches/api/0276-Implement-Keyed-on-World.patch
+++ b/patches/api/0277-Implement-Keyed-on-World.patch
@@ -50,7 +50,7 @@ index b1cfea011efa985f644328486196edf5c73e72cd..67c6443c5639beafade19bc39932f30b
* Gets the map from the given item ID.
*
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 85c1f5b33e933b23946cad3c5ad37cc350ee5d3c..a17b0f540f1b0a85d16ca3e07da2fc495349a699 100644
+index 37f0acb893f886ac0605838eb03b4a935b96f85b..47b9b8b476cbc7a4ef329dbd7629195851c8f4ea 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -43,7 +43,7 @@ import org.jetbrains.annotations.Nullable;
diff --git a/patches/api/0277-Item-Rarity-API.patch b/patches/api/0278-Item-Rarity-API.patch
index 93fb11dcd6..102250b8b9 100644
--- a/patches/api/0277-Item-Rarity-API.patch
+++ b/patches/api/0278-Item-Rarity-API.patch
@@ -61,13 +61,13 @@ index 9f0048888a2fe40316154613a722d1c709fd3856..709ae1eaabd81ee712d7d6f353c4983f
/**
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index b24439b379be1a90dde4e6f4dbe5ca3fdd8face4..4b01c6f82d172b55268fe670c1106b5038ff6eee 100644
+index 0697214210a6e87f690b9454d9651d06ca57a524..8cbd493f695229a7dad46916087aeb3159328bfe 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -147,5 +147,22 @@ public interface UnsafeValues {
- * Use this when sending custom packets, so that there are no collisions on the client or server.
+@@ -157,5 +157,22 @@ public interface UnsafeValues {
+ * @throws IllegalArgumentException if there isn't a registry for that type
*/
- public int nextEntityId();
+ <T extends Keyed> @org.jetbrains.annotations.NotNull Registry<T> registryFor(Class<T> classOfT);
+
+ /**
+ * Gets the item rarity of a material. The material <b>MUST</b> be an item.
diff --git a/patches/api/0278-Expose-protocol-version.patch b/patches/api/0279-Expose-protocol-version.patch
index 20f05a032a..d50d6d888a 100644
--- a/patches/api/0278-Expose-protocol-version.patch
+++ b/patches/api/0279-Expose-protocol-version.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose protocol version
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 4b01c6f82d172b55268fe670c1106b5038ff6eee..2708718e0391960f9e784f38e5753d95e71de2fc 100644
+index 8cbd493f695229a7dad46916087aeb3159328bfe..45a5e148ae5582a805e350b526cfb3ad87f6f945 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -164,5 +164,12 @@ public interface UnsafeValues {
+@@ -174,5 +174,12 @@ public interface UnsafeValues {
* @return the itemstack rarity
*/
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack);
diff --git a/patches/api/0279-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch b/patches/api/0280-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
index 70c19ffd10..70c19ffd10 100644
--- a/patches/api/0279-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
+++ b/patches/api/0280-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch
diff --git a/patches/api/0280-add-isDeeplySleeping-to-HumanEntity.patch b/patches/api/0281-add-isDeeplySleeping-to-HumanEntity.patch
index cf7ca8b27c..cf7ca8b27c 100644
--- a/patches/api/0280-add-isDeeplySleeping-to-HumanEntity.patch
+++ b/patches/api/0281-add-isDeeplySleeping-to-HumanEntity.patch
diff --git a/patches/api/0281-add-consumeFuel-to-FurnaceBurnEvent.patch b/patches/api/0282-add-consumeFuel-to-FurnaceBurnEvent.patch
index 6c8b681cd9..6c8b681cd9 100644
--- a/patches/api/0281-add-consumeFuel-to-FurnaceBurnEvent.patch
+++ b/patches/api/0282-add-consumeFuel-to-FurnaceBurnEvent.patch
diff --git a/patches/api/0282-add-get-set-drop-chance-to-EntityEquipment.patch b/patches/api/0283-add-get-set-drop-chance-to-EntityEquipment.patch
index 83995d7a94..83995d7a94 100644
--- a/patches/api/0282-add-get-set-drop-chance-to-EntityEquipment.patch
+++ b/patches/api/0283-add-get-set-drop-chance-to-EntityEquipment.patch
diff --git a/patches/api/0283-Added-PlayerDeepSleepEvent.patch b/patches/api/0284-Added-PlayerDeepSleepEvent.patch
index d8dccca755..d8dccca755 100644
--- a/patches/api/0283-Added-PlayerDeepSleepEvent.patch
+++ b/patches/api/0284-Added-PlayerDeepSleepEvent.patch
diff --git a/patches/api/0284-More-World-API.patch b/patches/api/0285-More-World-API.patch
index 8442c331f3..d963c90cf3 100644
--- a/patches/api/0284-More-World-API.patch
+++ b/patches/api/0285-More-World-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] More World API
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index a17b0f540f1b0a85d16ca3e07da2fc495349a699..b29b313dfe6342460d5f1ff085a0a61b4604d5ea 100644
+index 47b9b8b476cbc7a4ef329dbd7629195851c8f4ea..def9f0f9803e71cbe57abcffeb9114a5ab462e54 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -3645,6 +3645,114 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0285-Added-PlayerBedFailEnterEvent.patch b/patches/api/0286-Added-PlayerBedFailEnterEvent.patch
index a622f2b98f..a622f2b98f 100644
--- a/patches/api/0285-Added-PlayerBedFailEnterEvent.patch
+++ b/patches/api/0286-Added-PlayerBedFailEnterEvent.patch
diff --git a/patches/api/0286-Introduce-beacon-activation-deactivation-events.patch b/patches/api/0287-Introduce-beacon-activation-deactivation-events.patch
index c2f0577191..c2f0577191 100644
--- a/patches/api/0286-Introduce-beacon-activation-deactivation-events.patch
+++ b/patches/api/0287-Introduce-beacon-activation-deactivation-events.patch
diff --git a/patches/api/0287-PlayerMoveEvent-Improvements.patch b/patches/api/0288-PlayerMoveEvent-Improvements.patch
index 33cf16e54b..33cf16e54b 100644
--- a/patches/api/0287-PlayerMoveEvent-Improvements.patch
+++ b/patches/api/0288-PlayerMoveEvent-Improvements.patch
diff --git a/patches/api/0288-add-RespawnFlags-to-PlayerRespawnEvent.patch b/patches/api/0289-add-RespawnFlags-to-PlayerRespawnEvent.patch
index 63b477d865..63b477d865 100644
--- a/patches/api/0288-add-RespawnFlags-to-PlayerRespawnEvent.patch
+++ b/patches/api/0289-add-RespawnFlags-to-PlayerRespawnEvent.patch
diff --git a/patches/api/0289-Add-more-WanderingTrader-API.patch b/patches/api/0290-Add-more-WanderingTrader-API.patch
index 99045d4949..99045d4949 100644
--- a/patches/api/0289-Add-more-WanderingTrader-API.patch
+++ b/patches/api/0290-Add-more-WanderingTrader-API.patch
diff --git a/patches/api/0290-Add-EntityBlockStorage-clearEntities.patch b/patches/api/0291-Add-EntityBlockStorage-clearEntities.patch
index 7032ba6155..7032ba6155 100644
--- a/patches/api/0290-Add-EntityBlockStorage-clearEntities.patch
+++ b/patches/api/0291-Add-EntityBlockStorage-clearEntities.patch
diff --git a/patches/api/0291-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch b/patches/api/0292-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
index 16af3a7728..16af3a7728 100644
--- a/patches/api/0291-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
+++ b/patches/api/0292-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
diff --git a/patches/api/0292-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch b/patches/api/0293-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
index 655cc86658..655cc86658 100644
--- a/patches/api/0292-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/api/0293-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/api/0293-Inventory-close.patch b/patches/api/0294-Inventory-close.patch
index 9b5cbb7dfe..9b5cbb7dfe 100644
--- a/patches/api/0293-Inventory-close.patch
+++ b/patches/api/0294-Inventory-close.patch
diff --git a/patches/api/0294-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/api/0295-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
index 16cdba8016..16cdba8016 100644
--- a/patches/api/0294-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
+++ b/patches/api/0295-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
diff --git a/patches/api/0295-Add-basic-Datapack-API.patch b/patches/api/0296-Add-basic-Datapack-API.patch
index 0069bae1d4..0069bae1d4 100644
--- a/patches/api/0295-Add-basic-Datapack-API.patch
+++ b/patches/api/0296-Add-basic-Datapack-API.patch
diff --git a/patches/api/0296-additions-to-PlayerGameModeChangeEvent.patch b/patches/api/0297-additions-to-PlayerGameModeChangeEvent.patch
index b2e65ae490..b2e65ae490 100644
--- a/patches/api/0296-additions-to-PlayerGameModeChangeEvent.patch
+++ b/patches/api/0297-additions-to-PlayerGameModeChangeEvent.patch
diff --git a/patches/api/0297-ItemStack-repair-check-API.patch b/patches/api/0298-ItemStack-repair-check-API.patch
index 12d5ceff86..ce9919df14 100644
--- a/patches/api/0297-ItemStack-repair-check-API.patch
+++ b/patches/api/0298-ItemStack-repair-check-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack repair check API
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 2708718e0391960f9e784f38e5753d95e71de2fc..93d139cd498d0c9f616c077ce1c25e3f8e9f55b5 100644
+index 45a5e148ae5582a805e350b526cfb3ad87f6f945..d712a2c7a8ec02d3abbbcb8e616e002e5cdf1afe 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -165,6 +165,16 @@ public interface UnsafeValues {
+@@ -175,6 +175,16 @@ public interface UnsafeValues {
*/
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack);
diff --git a/patches/api/0298-More-Enchantment-API.patch b/patches/api/0299-More-Enchantment-API.patch
index 504aeb1f51..504aeb1f51 100644
--- a/patches/api/0298-More-Enchantment-API.patch
+++ b/patches/api/0299-More-Enchantment-API.patch
diff --git a/patches/api/0299-List-all-missing-hard-depends-not-just-first.patch b/patches/api/0300-List-all-missing-hard-depends-not-just-first.patch
index 995528e860..995528e860 100644
--- a/patches/api/0299-List-all-missing-hard-depends-not-just-first.patch
+++ b/patches/api/0300-List-all-missing-hard-depends-not-just-first.patch
diff --git a/patches/api/0300-Add-Mob-lookAt-API.patch b/patches/api/0301-Add-Mob-lookAt-API.patch
index 26177f2369..26177f2369 100644
--- a/patches/api/0300-Add-Mob-lookAt-API.patch
+++ b/patches/api/0301-Add-Mob-lookAt-API.patch
diff --git a/patches/api/0301-ItemStack-editMeta.patch b/patches/api/0302-ItemStack-editMeta.patch
index 91702f8c01..91702f8c01 100644
--- a/patches/api/0301-ItemStack-editMeta.patch
+++ b/patches/api/0302-ItemStack-editMeta.patch
diff --git a/patches/api/0302-Add-EntityInsideBlockEvent.patch b/patches/api/0303-Add-EntityInsideBlockEvent.patch
index 26c188e7a0..26c188e7a0 100644
--- a/patches/api/0302-Add-EntityInsideBlockEvent.patch
+++ b/patches/api/0303-Add-EntityInsideBlockEvent.patch
diff --git a/patches/api/0303-Attributes-API-for-item-defaults.patch b/patches/api/0304-Attributes-API-for-item-defaults.patch
index 708e878f3d..58f5631c96 100644
--- a/patches/api/0303-Attributes-API-for-item-defaults.patch
+++ b/patches/api/0304-Attributes-API-for-item-defaults.patch
@@ -31,10 +31,10 @@ index 709ae1eaabd81ee712d7d6f353c4983f20f6dc4f..fb8758970a76ee263fc85aaccbafb0bf
/**
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 93d139cd498d0c9f616c077ce1c25e3f8e9f55b5..eeac5e445dba5e1eace52e908d5146c079269c17 100644
+index d712a2c7a8ec02d3abbbcb8e616e002e5cdf1afe..2141396d252cb78630181785d5ae0c17f8f7df10 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -175,6 +175,18 @@ public interface UnsafeValues {
+@@ -185,6 +185,18 @@ public interface UnsafeValues {
*/
public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial);
diff --git a/patches/api/0304-Add-cause-to-Weather-ThunderChangeEvents.patch b/patches/api/0305-Add-cause-to-Weather-ThunderChangeEvents.patch
index 8e5d45d87b..8e5d45d87b 100644
--- a/patches/api/0304-Add-cause-to-Weather-ThunderChangeEvents.patch
+++ b/patches/api/0305-Add-cause-to-Weather-ThunderChangeEvents.patch
diff --git a/patches/api/0305-More-Lidded-Block-API.patch b/patches/api/0306-More-Lidded-Block-API.patch
index ca6b5ed744..ca6b5ed744 100644
--- a/patches/api/0305-More-Lidded-Block-API.patch
+++ b/patches/api/0306-More-Lidded-Block-API.patch
diff --git a/patches/api/0306-Add-PlayerKickEvent-causes.patch b/patches/api/0307-Add-PlayerKickEvent-causes.patch
index 49d6107553..8977bbbb31 100644
--- a/patches/api/0306-Add-PlayerKickEvent-causes.patch
+++ b/patches/api/0307-Add-PlayerKickEvent-causes.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerKickEvent causes
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 71de9f4c7f07c4c0b1155df14794de3ba8e28d69..c7d02e196d57f41c35d37e9a16d8e079a5c176ae 100644
+index d881ae7fb0c17242998c0a495ccd81802611410a..35be51b2b57acfc5dc165b22e16f499fac906e34 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -236,6 +236,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
diff --git a/patches/api/0307-Add-PufferFishStateChangeEvent.patch b/patches/api/0308-Add-PufferFishStateChangeEvent.patch
index c3014534d3..c3014534d3 100644
--- a/patches/api/0307-Add-PufferFishStateChangeEvent.patch
+++ b/patches/api/0308-Add-PufferFishStateChangeEvent.patch
diff --git a/patches/api/0308-Add-BellRevealRaiderEvent.patch b/patches/api/0309-Add-BellRevealRaiderEvent.patch
index 8b0ee3e5b4..8b0ee3e5b4 100644
--- a/patches/api/0308-Add-BellRevealRaiderEvent.patch
+++ b/patches/api/0309-Add-BellRevealRaiderEvent.patch
diff --git a/patches/api/0309-Add-ElderGuardianAppearanceEvent.patch b/patches/api/0310-Add-ElderGuardianAppearanceEvent.patch
index 8d925d10ac..8d925d10ac 100644
--- a/patches/api/0309-Add-ElderGuardianAppearanceEvent.patch
+++ b/patches/api/0310-Add-ElderGuardianAppearanceEvent.patch
diff --git a/patches/api/0310-Add-more-line-of-sight-methods.patch b/patches/api/0311-Add-more-line-of-sight-methods.patch
index 9142f690a9..28e2128eee 100644
--- a/patches/api/0310-Add-more-line-of-sight-methods.patch
+++ b/patches/api/0311-Add-more-line-of-sight-methods.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add more line of sight methods
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index b29b313dfe6342460d5f1ff085a0a61b4604d5ea..abce27d50ef62f14948220272a2452874ae69836 100644
+index def9f0f9803e71cbe57abcffeb9114a5ab462e54..d149dd1d3d2703a428006e0c3ab5f9251e560882 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -76,6 +76,14 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0311-Add-more-LimitedRegion-API.patch b/patches/api/0312-Add-more-LimitedRegion-API.patch
index 292f95c890..292f95c890 100644
--- a/patches/api/0311-Add-more-LimitedRegion-API.patch
+++ b/patches/api/0312-Add-more-LimitedRegion-API.patch
diff --git a/patches/api/0312-Missing-Entity-Behavior-API.patch b/patches/api/0313-Missing-Entity-Behavior-API.patch
index 39b23e64b9..39b23e64b9 100644
--- a/patches/api/0312-Missing-Entity-Behavior-API.patch
+++ b/patches/api/0313-Missing-Entity-Behavior-API.patch
diff --git a/patches/api/0313-Add-Git-information-to-version-command-on-startup.patch b/patches/api/0314-Add-Git-information-to-version-command-on-startup.patch
index 56a17b9b8d..ef7aa8edda 100644
--- a/patches/api/0313-Add-Git-information-to-version-command-on-startup.patch
+++ b/patches/api/0314-Add-Git-information-to-version-command-on-startup.patch
@@ -48,7 +48,7 @@ index 0000000000000000000000000000000000000000..909617079db61b675cc7b60b44ef96b3
+ }
+}
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index 0ecff0322c3ff4e6e3c6fcaf72d0ab786ba423fa..c88eb8946d5ce145fc1cd27795826daeb7f27bff 100644
+index 7732d26277ca8b845898cb01c7623a2f175f0aaa..2af2a948dc9c0d4ad28fccb1c9a2b28d5db99203 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -53,6 +53,7 @@ import org.bukkit.util.CachedServerIcon;
diff --git a/patches/api/0314-Adds-PlayerArmSwingEvent.patch b/patches/api/0315-Adds-PlayerArmSwingEvent.patch
index 75e45a71f8..75e45a71f8 100644
--- a/patches/api/0314-Adds-PlayerArmSwingEvent.patch
+++ b/patches/api/0315-Adds-PlayerArmSwingEvent.patch
diff --git a/patches/api/0315-Add-PlayerSignCommandPreprocessEvent.patch b/patches/api/0316-Add-PlayerSignCommandPreprocessEvent.patch
index fd095653a3..fd095653a3 100644
--- a/patches/api/0315-Add-PlayerSignCommandPreprocessEvent.patch
+++ b/patches/api/0316-Add-PlayerSignCommandPreprocessEvent.patch
diff --git a/patches/api/0316-fix-empty-array-elements-in-command-arguments.patch b/patches/api/0317-fix-empty-array-elements-in-command-arguments.patch
index 0a2b106d87..0a2b106d87 100644
--- a/patches/api/0316-fix-empty-array-elements-in-command-arguments.patch
+++ b/patches/api/0317-fix-empty-array-elements-in-command-arguments.patch
diff --git a/patches/api/0317-Stinger-API.patch b/patches/api/0318-Stinger-API.patch
index 12373dc546..12373dc546 100644
--- a/patches/api/0317-Stinger-API.patch
+++ b/patches/api/0318-Stinger-API.patch
diff --git a/patches/api/0318-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch b/patches/api/0319-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
index 66137f29d0..66137f29d0 100644
--- a/patches/api/0318-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
+++ b/patches/api/0319-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
diff --git a/patches/api/0319-Add-PlayerSetSpawnEvent.patch b/patches/api/0320-Add-PlayerSetSpawnEvent.patch
index 9144c45497..9144c45497 100644
--- a/patches/api/0319-Add-PlayerSetSpawnEvent.patch
+++ b/patches/api/0320-Add-PlayerSetSpawnEvent.patch
diff --git a/patches/api/0320-Added-EntityDamageItemEvent.patch b/patches/api/0321-Added-EntityDamageItemEvent.patch
index 8bbe79f9f3..8bbe79f9f3 100644
--- a/patches/api/0320-Added-EntityDamageItemEvent.patch
+++ b/patches/api/0321-Added-EntityDamageItemEvent.patch
diff --git a/patches/api/0321-Make-EntityUnleashEvent-cancellable.patch b/patches/api/0322-Make-EntityUnleashEvent-cancellable.patch
index e99584c277..e99584c277 100644
--- a/patches/api/0321-Make-EntityUnleashEvent-cancellable.patch
+++ b/patches/api/0322-Make-EntityUnleashEvent-cancellable.patch
diff --git a/patches/api/0322-Change-EnderEye-target-without-changing-other-things.patch b/patches/api/0323-Change-EnderEye-target-without-changing-other-things.patch
index d8e53593ae..d8e53593ae 100644
--- a/patches/api/0322-Change-EnderEye-target-without-changing-other-things.patch
+++ b/patches/api/0323-Change-EnderEye-target-without-changing-other-things.patch
diff --git a/patches/api/0323-Add-BlockBreakBlockEvent.patch b/patches/api/0324-Add-BlockBreakBlockEvent.patch
index dfd13b1355..dfd13b1355 100644
--- a/patches/api/0323-Add-BlockBreakBlockEvent.patch
+++ b/patches/api/0324-Add-BlockBreakBlockEvent.patch
diff --git a/patches/api/0324-Add-helpers-for-left-right-click-to-Action.patch b/patches/api/0325-Add-helpers-for-left-right-click-to-Action.patch
index 9dac2fe612..9dac2fe612 100644
--- a/patches/api/0324-Add-helpers-for-left-right-click-to-Action.patch
+++ b/patches/api/0325-Add-helpers-for-left-right-click-to-Action.patch
diff --git a/patches/api/0325-Option-to-prevent-NBT-copy-in-smithing-recipes.patch b/patches/api/0326-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
index 0a0b5515e3..0a0b5515e3 100644
--- a/patches/api/0325-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
+++ b/patches/api/0326-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
diff --git a/patches/api/0326-More-CommandBlock-API.patch b/patches/api/0327-More-CommandBlock-API.patch
index 242270eb12..242270eb12 100644
--- a/patches/api/0326-More-CommandBlock-API.patch
+++ b/patches/api/0327-More-CommandBlock-API.patch
diff --git a/patches/api/0327-Fix-plugin-provides-load-order.patch b/patches/api/0328-Fix-plugin-provides-load-order.patch
index 83c8568dff..83c8568dff 100644
--- a/patches/api/0327-Fix-plugin-provides-load-order.patch
+++ b/patches/api/0328-Fix-plugin-provides-load-order.patch
diff --git a/patches/api/0328-Add-missing-team-sidebar-display-slots.patch b/patches/api/0329-Add-missing-team-sidebar-display-slots.patch
index 1d400fa49e..1d400fa49e 100644
--- a/patches/api/0328-Add-missing-team-sidebar-display-slots.patch
+++ b/patches/api/0329-Add-missing-team-sidebar-display-slots.patch
diff --git a/patches/api/0329-add-back-EntityPortalExitEvent.patch b/patches/api/0330-add-back-EntityPortalExitEvent.patch
index 5a153e2345..5a153e2345 100644
--- a/patches/api/0329-add-back-EntityPortalExitEvent.patch
+++ b/patches/api/0330-add-back-EntityPortalExitEvent.patch
diff --git a/patches/api/0330-Add-methods-to-find-targets-for-lightning-strikes.patch b/patches/api/0331-Add-methods-to-find-targets-for-lightning-strikes.patch
index 188fbbfd76..bba1626898 100644
--- a/patches/api/0330-Add-methods-to-find-targets-for-lightning-strikes.patch
+++ b/patches/api/0331-Add-methods-to-find-targets-for-lightning-strikes.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add methods to find targets for lightning strikes
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index abce27d50ef62f14948220272a2452874ae69836..268d77210e47d5247ac9b82c344fac323b16a0c4 100644
+index d149dd1d3d2703a428006e0c3ab5f9251e560882..22191f733bbda0710ffae425fda1861e3c2ec87f 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -759,6 +759,37 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0331-Get-entity-default-attributes.patch b/patches/api/0332-Get-entity-default-attributes.patch
index 345875fc4f..12f3ed8dcb 100644
--- a/patches/api/0331-Get-entity-default-attributes.patch
+++ b/patches/api/0332-Get-entity-default-attributes.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Get entity default attributes
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index eeac5e445dba5e1eace52e908d5146c079269c17..2e1ec0aa44836ab5be944cf2dbd4601dfb43aed6 100644
+index 2141396d252cb78630181785d5ae0c17f8f7df10..b78d18fc09cee98f0eac907409188c35b3c137fc 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -193,5 +193,22 @@ public interface UnsafeValues {
+@@ -203,5 +203,22 @@ public interface UnsafeValues {
* @return the server's protocol version
*/
int getProtocolVersion();
diff --git a/patches/api/0332-Left-handed-API.patch b/patches/api/0333-Left-handed-API.patch
index c6c9f1b39f..c6c9f1b39f 100644
--- a/patches/api/0332-Left-handed-API.patch
+++ b/patches/api/0333-Left-handed-API.patch
diff --git a/patches/api/0333-Add-advancement-display-API.patch b/patches/api/0334-Add-advancement-display-API.patch
index fc21e58ed8..fc21e58ed8 100644
--- a/patches/api/0333-Add-advancement-display-API.patch
+++ b/patches/api/0334-Add-advancement-display-API.patch
diff --git a/patches/api/0334-Add-ItemFactory-getMonsterEgg-API.patch b/patches/api/0335-Add-ItemFactory-getMonsterEgg-API.patch
index fcdc759ea7..fcdc759ea7 100644
--- a/patches/api/0334-Add-ItemFactory-getMonsterEgg-API.patch
+++ b/patches/api/0335-Add-ItemFactory-getMonsterEgg-API.patch
diff --git a/patches/api/0335-Add-critical-damage-API.patch b/patches/api/0336-Add-critical-damage-API.patch
index 3a9d1f8070..3a9d1f8070 100644
--- a/patches/api/0335-Add-critical-damage-API.patch
+++ b/patches/api/0336-Add-critical-damage-API.patch
diff --git a/patches/api/0336-Fix-issues-with-mob-conversion.patch b/patches/api/0337-Fix-issues-with-mob-conversion.patch
index 8ee1c49162..8ee1c49162 100644
--- a/patches/api/0336-Fix-issues-with-mob-conversion.patch
+++ b/patches/api/0337-Fix-issues-with-mob-conversion.patch
diff --git a/patches/api/0337-Add-isCollidable-methods-to-various-places.patch b/patches/api/0338-Add-isCollidable-methods-to-various-places.patch
index 3a0f511fff..ac6c443e6a 100644
--- a/patches/api/0337-Add-isCollidable-methods-to-various-places.patch
+++ b/patches/api/0338-Add-isCollidable-methods-to-various-places.patch
@@ -26,10 +26,10 @@ index fb8758970a76ee263fc85aaccbafb0bf1745afb8..ef7054fec75d91082be27fdd2a06469f
/**
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 2e1ec0aa44836ab5be944cf2dbd4601dfb43aed6..329612597a2cdf556f5ca970f5409e1c77a5d911 100644
+index b78d18fc09cee98f0eac907409188c35b3c137fc..54b0fe21d3b6379e6550a3b1dc81c2a44e7699da 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -210,5 +210,14 @@ public interface UnsafeValues {
+@@ -220,5 +220,14 @@ public interface UnsafeValues {
* @throws IllegalArgumentException if the entity does not exist of have default attributes (use {@link #hasDefaultEntityAttributes(NamespacedKey)} first)
*/
@org.jetbrains.annotations.NotNull org.bukkit.attribute.Attributable getDefaultEntityAttributes(@org.jetbrains.annotations.NotNull NamespacedKey entityKey);
diff --git a/patches/api/0338-Goat-ram-API.patch b/patches/api/0339-Goat-ram-API.patch
index 69694887ac..69694887ac 100644
--- a/patches/api/0338-Goat-ram-API.patch
+++ b/patches/api/0339-Goat-ram-API.patch
diff --git a/patches/api/0339-Add-API-for-resetting-a-single-score.patch b/patches/api/0340-Add-API-for-resetting-a-single-score.patch
index 997ebf42f6..997ebf42f6 100644
--- a/patches/api/0339-Add-API-for-resetting-a-single-score.patch
+++ b/patches/api/0340-Add-API-for-resetting-a-single-score.patch
diff --git a/patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch b/patches/api/0341-Add-Raw-Byte-Entity-Serialization.patch
index c610203889..c610203889 100644
--- a/patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/api/0341-Add-Raw-Byte-Entity-Serialization.patch
diff --git a/patches/api/0341-Add-PlayerItemFrameChangeEvent.patch b/patches/api/0342-Add-PlayerItemFrameChangeEvent.patch
index a62e452bb4..a62e452bb4 100644
--- a/patches/api/0341-Add-PlayerItemFrameChangeEvent.patch
+++ b/patches/api/0342-Add-PlayerItemFrameChangeEvent.patch
diff --git a/patches/api/0342-Add-player-health-update-API.patch b/patches/api/0343-Add-player-health-update-API.patch
index 44fc6fdbf0..44fc6fdbf0 100644
--- a/patches/api/0342-Add-player-health-update-API.patch
+++ b/patches/api/0343-Add-player-health-update-API.patch
diff --git a/patches/api/0343-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/api/0344-Allow-delegation-to-vanilla-chunk-gen.patch
index 554fdecaf1..554fdecaf1 100644
--- a/patches/api/0343-Allow-delegation-to-vanilla-chunk-gen.patch
+++ b/patches/api/0344-Allow-delegation-to-vanilla-chunk-gen.patch
diff --git a/patches/api/0344-Add-more-Campfire-API.patch b/patches/api/0345-Add-more-Campfire-API.patch
index 80cdc0bb39..80cdc0bb39 100644
--- a/patches/api/0344-Add-more-Campfire-API.patch
+++ b/patches/api/0345-Add-more-Campfire-API.patch
diff --git a/patches/api/0345-Move-VehicleCollisionEvent-HandlerList-up.patch b/patches/api/0346-Move-VehicleCollisionEvent-HandlerList-up.patch
index 8fa566d54a..8fa566d54a 100644
--- a/patches/api/0345-Move-VehicleCollisionEvent-HandlerList-up.patch
+++ b/patches/api/0346-Move-VehicleCollisionEvent-HandlerList-up.patch
diff --git a/patches/api/0346-Improve-scoreboard-entries.patch b/patches/api/0347-Improve-scoreboard-entries.patch
index c608060558..c608060558 100644
--- a/patches/api/0346-Improve-scoreboard-entries.patch
+++ b/patches/api/0347-Improve-scoreboard-entries.patch
diff --git a/patches/api/0347-Entity-powdered-snow-API.patch b/patches/api/0348-Entity-powdered-snow-API.patch
index 88414bd4ef..88414bd4ef 100644
--- a/patches/api/0347-Entity-powdered-snow-API.patch
+++ b/patches/api/0348-Entity-powdered-snow-API.patch
diff --git a/patches/api/0348-Add-API-for-item-entity-health.patch b/patches/api/0349-Add-API-for-item-entity-health.patch
index 913f679ec0..913f679ec0 100644
--- a/patches/api/0348-Add-API-for-item-entity-health.patch
+++ b/patches/api/0349-Add-API-for-item-entity-health.patch
diff --git a/patches/api/0349-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/api/0350-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
index f094cdc255..f094cdc255 100644
--- a/patches/api/0349-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
+++ b/patches/api/0350-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
diff --git a/patches/api/0350-Bucketable-API.patch b/patches/api/0351-Bucketable-API.patch
index 26dbdc9f5d..26dbdc9f5d 100644
--- a/patches/api/0350-Bucketable-API.patch
+++ b/patches/api/0351-Bucketable-API.patch
diff --git a/patches/api/0351-System-prop-for-default-config-comment-parsing.patch b/patches/api/0352-System-prop-for-default-config-comment-parsing.patch
index c28a3f9b5f..c28a3f9b5f 100644
--- a/patches/api/0351-System-prop-for-default-config-comment-parsing.patch
+++ b/patches/api/0352-System-prop-for-default-config-comment-parsing.patch
diff --git a/patches/api/0352-Expose-vanilla-BiomeProvider-from-WorldInfo.patch b/patches/api/0353-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
index 9b189fc918..9b189fc918 100644
--- a/patches/api/0352-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
+++ b/patches/api/0353-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
diff --git a/patches/api/0353-Remove-upstream-snakeyaml-fix.patch b/patches/api/0354-Remove-upstream-snakeyaml-fix.patch
index b5ecceb7b4..b5ecceb7b4 100644
--- a/patches/api/0353-Remove-upstream-snakeyaml-fix.patch
+++ b/patches/api/0354-Remove-upstream-snakeyaml-fix.patch
diff --git a/patches/api/0354-Add-new-overload-to-PersistentDataContainer-has.patch b/patches/api/0355-Add-new-overload-to-PersistentDataContainer-has.patch
index 73c49a2fc8..73c49a2fc8 100644
--- a/patches/api/0354-Add-new-overload-to-PersistentDataContainer-has.patch
+++ b/patches/api/0355-Add-new-overload-to-PersistentDataContainer-has.patch
diff --git a/patches/api/0355-Multiple-Entries-with-Scoreboards.patch b/patches/api/0356-Multiple-Entries-with-Scoreboards.patch
index e1d867d054..e1d867d054 100644
--- a/patches/api/0355-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/api/0356-Multiple-Entries-with-Scoreboards.patch
diff --git a/patches/api/0356-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch b/patches/api/0357-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
index c56c240b80..c56c240b80 100644
--- a/patches/api/0356-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/api/0357-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/api/0357-Warn-on-strange-EventHandler-return-types.patch b/patches/api/0358-Warn-on-strange-EventHandler-return-types.patch
index 29026c1725..29026c1725 100644
--- a/patches/api/0357-Warn-on-strange-EventHandler-return-types.patch
+++ b/patches/api/0358-Warn-on-strange-EventHandler-return-types.patch
diff --git a/patches/api/0358-Multi-Block-Change-API.patch b/patches/api/0359-Multi-Block-Change-API.patch
index c0bde68f1b..9589081363 100644
--- a/patches/api/0358-Multi-Block-Change-API.patch
+++ b/patches/api/0359-Multi-Block-Change-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Multi Block Change API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 5a1b733934bfe4388dad59125caa9c2d45df5dd1..131daee2b29f7016463a00ce7927dff7b0a1b1b4 100644
+index 3a96d1fe95952a1b0be0ef7b3cdf431e5bb8b54f..f954801f6a5d465b8545e75d7ff5af0352d6ec0d 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -579,6 +579,27 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
diff --git a/patches/api/0359-Fix-NotePlayEvent.patch b/patches/api/0360-Fix-NotePlayEvent.patch
index a474627df0..a474627df0 100644
--- a/patches/api/0359-Fix-NotePlayEvent.patch
+++ b/patches/api/0360-Fix-NotePlayEvent.patch
diff --git a/patches/api/0360-Freeze-Tick-Lock-API.patch b/patches/api/0361-Freeze-Tick-Lock-API.patch
index 9f42a812f8..9f42a812f8 100644
--- a/patches/api/0360-Freeze-Tick-Lock-API.patch
+++ b/patches/api/0361-Freeze-Tick-Lock-API.patch
diff --git a/patches/api/0361-Dolphin-API.patch b/patches/api/0362-Dolphin-API.patch
index 73beed437b..73beed437b 100644
--- a/patches/api/0361-Dolphin-API.patch
+++ b/patches/api/0362-Dolphin-API.patch
diff --git a/patches/api/0362-More-PotionEffectType-API.patch b/patches/api/0363-More-PotionEffectType-API.patch
index 4e999e136c..6340f5fd9d 100644
--- a/patches/api/0362-More-PotionEffectType-API.patch
+++ b/patches/api/0363-More-PotionEffectType-API.patch
@@ -5,14 +5,13 @@ Subject: [PATCH] More PotionEffectType API
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index a696fcaffa03af9e6c92e2ef3e12b38eb59e5db4..6242336de18fdd708cc3d7b745cbbace13140bc0 100644
+index bfe0d98e6032c7633d6bb97382426f94fb437430..798aab0d644ca383ff4391685d854af65925fb0c 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
-@@ -189,6 +189,27 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
- return GameEvent.getByKey(key);
- }
- };
-+ // Paper start
+@@ -195,6 +195,25 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+ * @see io.papermc.paper.world.structure.ConfiguredStructure
+ */
+ Registry<io.papermc.paper.world.structure.ConfiguredStructure> CONFIGURED_STRUCTURE = Bukkit.getUnsafe().registryFor(io.papermc.paper.world.structure.ConfiguredStructure.class);
+ /**
+ * Potion effect types.
+ *
@@ -32,10 +31,9 @@ index a696fcaffa03af9e6c92e2ef3e12b38eb59e5db4..6242336de18fdd708cc3d7b745cbbace
+ return Arrays.stream(org.bukkit.potion.PotionEffectType.values()).iterator();
+ }
+ };
-+ // Paper end
+ // Paper end
/**
- * Get the object by its key.
diff --git a/src/main/java/org/bukkit/potion/PotionEffectType.java b/src/main/java/org/bukkit/potion/PotionEffectType.java
index 22c28a503732671bc84c51372262e909d035c1fa..06e0f13d658b63b1fa984abb515eb0de704f9215 100644
--- a/src/main/java/org/bukkit/potion/PotionEffectType.java
diff --git a/patches/api/0363-Expand-the-Registry-API.patch b/patches/api/0364-Expand-the-Registry-API.patch
index 43d9ced4d9..87956152ec 100644
--- a/patches/api/0363-Expand-the-Registry-API.patch
+++ b/patches/api/0364-Expand-the-Registry-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expand the Registry API
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index 6242336de18fdd708cc3d7b745cbbace13140bc0..661d424c609a01ad9bee837b4069d9e4e98d20c0 100644
+index 798aab0d644ca383ff4391685d854af65925fb0c..41363490b1e72d53ab3f1f26fe464858bb7b8f72 100644
--- a/src/main/java/org/bukkit/Registry.java
+++ b/src/main/java/org/bukkit/Registry.java
-@@ -209,6 +209,25 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -214,6 +214,25 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
return Arrays.stream(org.bukkit.potion.PotionEffectType.values()).iterator();
}
};
diff --git a/patches/api/0364-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/api/0365-API-for-creating-command-sender-which-forwards-feedb.patch
index 36ab64333c..36ab64333c 100644
--- a/patches/api/0364-API-for-creating-command-sender-which-forwards-feedb.patch
+++ b/patches/api/0365-API-for-creating-command-sender-which-forwards-feedb.patch
diff --git a/patches/api/0365-Implement-regenerateChunk.patch b/patches/api/0366-Implement-regenerateChunk.patch
index cd1a358e50..fe3631f741 100644
--- a/patches/api/0365-Implement-regenerateChunk.patch
+++ b/patches/api/0366-Implement-regenerateChunk.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Implement regenerateChunk
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 268d77210e47d5247ac9b82c344fac323b16a0c4..d63570d60481e864a15d5594ac54c372151093d4 100644
+index 22191f733bbda0710ffae425fda1861e3c2ec87f..8a688583e65cd22e0417f9fd24e51803486d095e 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -507,8 +507,8 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
diff --git a/patches/api/0366-Don-t-load-plugins-prefixed-with-a-dot.patch b/patches/api/0367-Don-t-load-plugins-prefixed-with-a-dot.patch
index 1aaa39f50b..1aaa39f50b 100644
--- a/patches/api/0366-Don-t-load-plugins-prefixed-with-a-dot.patch
+++ b/patches/api/0367-Don-t-load-plugins-prefixed-with-a-dot.patch
diff --git a/patches/api/0367-Add-GameEvent-tags.patch b/patches/api/0368-Add-GameEvent-tags.patch
index 668a199030..668a199030 100644
--- a/patches/api/0367-Add-GameEvent-tags.patch
+++ b/patches/api/0368-Add-GameEvent-tags.patch
diff --git a/patches/api/0368-Furnace-RecipesUsed-API.patch b/patches/api/0369-Furnace-RecipesUsed-API.patch
index 7fed82db21..7fed82db21 100644
--- a/patches/api/0368-Furnace-RecipesUsed-API.patch
+++ b/patches/api/0369-Furnace-RecipesUsed-API.patch
diff --git a/patches/api/0369-Configurable-sculk-sensor-listener-range.patch b/patches/api/0370-Configurable-sculk-sensor-listener-range.patch
index b1ad0cdb5b..b1ad0cdb5b 100644
--- a/patches/api/0369-Configurable-sculk-sensor-listener-range.patch
+++ b/patches/api/0370-Configurable-sculk-sensor-listener-range.patch
diff --git a/patches/api/0370-Add-missing-block-data-mins-and-maxes.patch b/patches/api/0371-Add-missing-block-data-mins-and-maxes.patch
index 1ce2b605c4..1ce2b605c4 100644
--- a/patches/api/0370-Add-missing-block-data-mins-and-maxes.patch
+++ b/patches/api/0371-Add-missing-block-data-mins-and-maxes.patch
diff --git a/patches/api/0371-Custom-Potion-Mixes.patch b/patches/api/0372-Custom-Potion-Mixes.patch
index 9ec547303b..9ec547303b 100644
--- a/patches/api/0371-Custom-Potion-Mixes.patch
+++ b/patches/api/0372-Custom-Potion-Mixes.patch