diff --git a/patches/api/0005-Adventure.patch b/patches/api/0005-Adventure.patch
index b87d3e92ab..f593875871 100644
--- a/patches/api/0005-Adventure.patch
+++ b/patches/api/0005-Adventure.patch
@@ -1384,10 +1384,10 @@ index ac5e263d737973af077e3406a84a84baca4370db..2d91924b7f5ef16a91d40cdc1bfc3d68
 +    // Paper end
  }
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 01e11f882abb6c631f810584aa23646042688435..4f339debf113d103ffe0b5fdb03dfc82eafd1bd5 100644
+index ba69db36a2a7640fc2a63a1d9fd1b204e00d7ce7..876072a6c91bd02c9c7de53556419b8e1ac48f27 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -22,6 +22,15 @@ import org.bukkit.plugin.PluginDescriptionFile;
+@@ -23,6 +23,15 @@ import org.bukkit.plugin.PluginDescriptionFile;
   */
  @Deprecated
  public interface UnsafeValues {
@@ -3705,21 +3705,21 @@ index f89d71b77d1200314df6ca23614d5ca6fb15ceb3..af4a7ce37eb10bab06eadb6583c7894b
 +    // Paper end
  }
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index 7b904dd2c0a660df8874d4800919e16981877163..d168a836d655b369f67200d7afe101b56ff815b1 100644
+index d80b0a52968920b990a75cff85e436a16d782500..9da047582e9648d84875b6d3c136960bbb97b70e 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -22,7 +22,7 @@ import org.jetbrains.annotations.Nullable;
+@@ -23,7 +23,7 @@ import org.jetbrains.annotations.Nullable;
   * use this class to encapsulate Materials for which {@link Material#isItem()}
   * returns false.</b>
   */
--public class ItemStack implements Cloneable, ConfigurationSerializable {
-+public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowItem> { // Paper
+-public class ItemStack implements Cloneable, ConfigurationSerializable, Translatable {
++public class ItemStack implements Cloneable, ConfigurationSerializable, Translatable, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowItem> { // Paper
      private Material type = Material.AIR;
      private int amount = 0;
      private MaterialData data = null;
-@@ -595,4 +595,21 @@ public class ItemStack implements Cloneable, ConfigurationSerializable {
- 
-         return true;
+@@ -602,4 +602,21 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
+     public String getTranslationKey() {
+         return Bukkit.getUnsafe().getTranslationKey(this);
      }
 +
 +    // Paper start
diff --git a/patches/api/0008-Timings-v2.patch b/patches/api/0008-Timings-v2.patch
index 51af360b9f..5b6f5bf932 100644
--- a/patches/api/0008-Timings-v2.patch
+++ b/patches/api/0008-Timings-v2.patch
@@ -2834,10 +2834,10 @@ index 892e03189957b0072827be4fd485dd98352334e8..ac087402c90dad4b3c499fcf8507e50e
           * Sends the component to the player
           *
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 4f339debf113d103ffe0b5fdb03dfc82eafd1bd5..d45cc92ca30e79173f30aae10724beeec6d22398 100644
+index 876072a6c91bd02c9c7de53556419b8e1ac48f27..33c005a11e1ee241c1146e2cc291d523b1dd744e 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -32,6 +32,7 @@ public interface UnsafeValues {
+@@ -33,6 +33,7 @@ public interface UnsafeValues {
      net.kyori.adventure.text.Component resolveWithContext(net.kyori.adventure.text.Component component, org.bukkit.command.CommandSender context, org.bukkit.entity.Entity scoreboardSubject, boolean bypassPermissions) throws java.io.IOException;
      // Paper end
  
@@ -2845,10 +2845,10 @@ index 4f339debf113d103ffe0b5fdb03dfc82eafd1bd5..d45cc92ca30e79173f30aae10724beee
      Material toLegacy(Material material);
  
      Material fromLegacy(Material material);
-@@ -87,4 +88,12 @@ public interface UnsafeValues {
-     Multimap<Attribute, AttributeModifier> getDefaultAttributeModifiers(Material material, EquipmentSlot slot);
+@@ -96,4 +97,12 @@ public interface UnsafeValues {
+     String getTranslationKey(EntityType entityType);
  
-     CreativeCategory getCreativeCategory(Material material);
+     String getTranslationKey(ItemStack itemStack);
 +
 +    // Paper start
 +    /**
diff --git a/patches/api/0012-Version-Command-2.0.patch b/patches/api/0012-Version-Command-2.0.patch
index e1dd11c10e..802400840a 100644
--- a/patches/api/0012-Version-Command-2.0.patch
+++ b/patches/api/0012-Version-Command-2.0.patch
@@ -56,10 +56,10 @@ index 0000000000000000000000000000000000000000..a736d7bcdc5861a01b66ba36158db1c7
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index d45cc92ca30e79173f30aae10724beeec6d22398..c67d2e96e30261e480f1df96464befac03d78a69 100644
+index 33c005a11e1ee241c1146e2cc291d523b1dd744e..5183d3b1893fdcad9a475b747cb34df5653774fd 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -95,5 +95,12 @@ public interface UnsafeValues {
+@@ -104,5 +104,12 @@ public interface UnsafeValues {
       * @return name
       */
      String getTimingsServerName();
diff --git a/patches/api/0065-Add-getI18NDisplayName-API.patch b/patches/api/0065-Add-getI18NDisplayName-API.patch
index ea4187110a..529bea034e 100644
--- a/patches/api/0065-Add-getI18NDisplayName-API.patch
+++ b/patches/api/0065-Add-getI18NDisplayName-API.patch
@@ -32,10 +32,10 @@ index af4a7ce37eb10bab06eadb6583c7894b3ec55ae6..159e5a908b35b84b7fabc36581e093d9
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index d168a836d655b369f67200d7afe101b56ff815b1..edf5cd3734011de9130139e542ebc44bcc67f396 100644
+index 9da047582e9648d84875b6d3c136960bbb97b70e..87f7942082ad943a97058f58c09ea2fe9caf5bfe 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -611,5 +611,20 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -618,5 +618,20 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
      public @NotNull net.kyori.adventure.text.Component displayName() {
          return Bukkit.getServer().getItemFactory().displayName(this);
      }
diff --git a/patches/api/0066-ensureServerConversions-API.patch b/patches/api/0066-ensureServerConversions-API.patch
index 95f1933756..0f74f77359 100644
--- a/patches/api/0066-ensureServerConversions-API.patch
+++ b/patches/api/0066-ensureServerConversions-API.patch
@@ -29,10 +29,10 @@ index 159e5a908b35b84b7fabc36581e093d9aa4c4b67..66ffc658dba85942f179760dc6c50258
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index edf5cd3734011de9130139e542ebc44bcc67f396..8b76d7ca596ea261c0ca3b9fe2fbf5507c3883e3 100644
+index 87f7942082ad943a97058f58c09ea2fe9caf5bfe..9d32283ee612a50b8a2bfe5151f42c9f181ede4c 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -536,7 +536,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -537,7 +537,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
              }
          }
  
@@ -41,7 +41,7 @@ index edf5cd3734011de9130139e542ebc44bcc67f396..8b76d7ca596ea261c0ca3b9fe2fbf550
      }
  
      /**
-@@ -612,6 +612,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -619,6 +619,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
          return Bukkit.getServer().getItemFactory().displayName(this);
      }
  
diff --git a/patches/api/0075-API-to-get-a-BlockState-without-a-snapshot.patch b/patches/api/0075-API-to-get-a-BlockState-without-a-snapshot.patch
index 41c8e70b83..8f748c0ed1 100644
--- a/patches/api/0075-API-to-get-a-BlockState-without-a-snapshot.patch
+++ b/patches/api/0075-API-to-get-a-BlockState-without-a-snapshot.patch
@@ -9,10 +9,10 @@ on the real tile entity.
 This is useful for where performance is needed
 
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index b4094e042c1619cfcdd68c27f82979a7562ddf55..d29bdc125dba0128d93d57e8d9393b970e6c00a9 100644
+index f8e12868f2e629cdf4784f0157fdb2f8e7b01f99..61ce341daec63392f040b70cd12662379b2f1ebd 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -271,6 +271,16 @@ public interface Block extends Metadatable {
+@@ -272,6 +272,16 @@ public interface Block extends Metadatable, Translatable {
      @NotNull
      BlockState getState();
  
diff --git a/patches/api/0109-ItemStack-getMaxItemUseDuration.patch b/patches/api/0109-ItemStack-getMaxItemUseDuration.patch
index 2335189f45..13fc1407e6 100644
--- a/patches/api/0109-ItemStack-getMaxItemUseDuration.patch
+++ b/patches/api/0109-ItemStack-getMaxItemUseDuration.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] ItemStack#getMaxItemUseDuration
 Allows you to determine how long it takes to use a usable/consumable item
 
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index 8b76d7ca596ea261c0ca3b9fe2fbf5507c3883e3..54d7c4b78f7fb01d8c11c19f038642b155334770 100644
+index 9d32283ee612a50b8a2bfe5151f42c9f181ede4c..53d99d214652ae1636f28a179a5b66edc0f8f229 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -639,5 +639,13 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -646,5 +646,13 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
      public String getI18NDisplayName() {
          return Bukkit.getServer().getItemFactory().getI18NDisplayName(this);
      }
diff --git a/patches/api/0117-ItemStack-API-additions-for-quantity-flags-lore.patch b/patches/api/0117-ItemStack-API-additions-for-quantity-flags-lore.patch
index d8bba965f1..21bfeaac9b 100644
--- a/patches/api/0117-ItemStack-API-additions-for-quantity-flags-lore.patch
+++ b/patches/api/0117-ItemStack-API-additions-for-quantity-flags-lore.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] ItemStack API additions for quantity/flags/lore
 
 
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index 54d7c4b78f7fb01d8c11c19f038642b155334770..7559f75dcc6665fa3d19d6e53a141a214407d1c5 100644
+index 53d99d214652ae1636f28a179a5b66edc0f8f229..a70de962712c14cb895708e89ad3811041728935 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
 @@ -3,6 +3,7 @@ package org.bukkit.inventory;
@@ -16,7 +16,7 @@ index 54d7c4b78f7fb01d8c11c19f038642b155334770..7559f75dcc6665fa3d19d6e53a141a21
  import java.util.Map;
  import org.bukkit.Bukkit;
  import org.bukkit.Material;
-@@ -647,5 +648,185 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -654,5 +655,185 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
          // Requires access to NMS
          return ensureServerConversions().getMaxItemUseDuration();
      }
diff --git a/patches/api/0124-Add-an-asterisk-to-legacy-API-plugins.patch b/patches/api/0124-Add-an-asterisk-to-legacy-API-plugins.patch
index f9f9578ccb..7279975212 100644
--- a/patches/api/0124-Add-an-asterisk-to-legacy-API-plugins.patch
+++ b/patches/api/0124-Add-an-asterisk-to-legacy-API-plugins.patch
@@ -7,10 +7,10 @@ Not here to name and shame, only so server admins can be aware of which
 plugins have and haven't been updated.
 
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index c67d2e96e30261e480f1df96464befac03d78a69..81da1def96d18704303cadd72261a1b2fcbb9fc5 100644
+index 5183d3b1893fdcad9a475b747cb34df5653774fd..4af059f9b32d2a0913e6d88c6a93e101018e88a2 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -102,5 +102,11 @@ public interface UnsafeValues {
+@@ -111,5 +111,11 @@ public interface UnsafeValues {
      default com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
          return new com.destroystokyo.paper.util.VersionFetcher.DummyVersionFetcher();
      }
diff --git a/patches/api/0139-Allow-Blocks-to-be-accessed-via-a-long-key.patch b/patches/api/0139-Allow-Blocks-to-be-accessed-via-a-long-key.patch
index 1a41281590..e0eadf4d4b 100644
--- a/patches/api/0139-Allow-Blocks-to-be-accessed-via-a-long-key.patch
+++ b/patches/api/0139-Allow-Blocks-to-be-accessed-via-a-long-key.patch
@@ -50,7 +50,7 @@ index 943c3364f6b931fe11f9a6099504590b2da34657..16a604b6315daff228c827fe02b1234c
       * @return A new location where X/Y/Z are the center of the block
       */
 diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 8c71be9c39ec6aae07b088a63e71cc2ae44b0412..25e38f0f4fe36193dcc968ef7619bc8c0e705fb2 100644
+index 7d6c923ea603a3193865e6a34b41617ac7016d19..00651d5486f1de886df7a4a01aaf272ceb0fa82a 100644
 --- a/src/main/java/org/bukkit/World.java
 +++ b/src/main/java/org/bukkit/World.java
 @@ -95,6 +95,40 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@@ -95,10 +95,10 @@ index 8c71be9c39ec6aae07b088a63e71cc2ae44b0412..25e38f0f4fe36193dcc968ef7619bc8c
       * Gets the highest non-empty (impassable) coordinate at the given
       * coordinates.
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index d29bdc125dba0128d93d57e8d9393b970e6c00a9..b101f5264bdde8bd14913d5161c1047020830f8d 100644
+index 61ce341daec63392f040b70cd12662379b2f1ebd..0be73b2f45c9aab6e73bcb7a76136ec6e2428163 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -155,6 +155,82 @@ public interface Block extends Metadatable {
+@@ -156,6 +156,82 @@ public interface Block extends Metadatable, Translatable {
       */
      int getZ();
  
diff --git a/patches/api/0155-Implement-furnace-cook-speed-multiplier-API.patch b/patches/api/0155-Implement-furnace-cook-speed-multiplier-API.patch
index 709ba414da..dd6ed2012a 100644
--- a/patches/api/0155-Implement-furnace-cook-speed-multiplier-API.patch
+++ b/patches/api/0155-Implement-furnace-cook-speed-multiplier-API.patch
@@ -37,23 +37,22 @@ index ac3b24c5c99eeb1435d785efade728dd40947da5..dbdf3dbe9517b09a7965cf9d65cae1ed
      @Override
      public FurnaceInventory getInventory();
 diff --git a/src/main/java/org/bukkit/event/inventory/FurnaceStartSmeltEvent.java b/src/main/java/org/bukkit/event/inventory/FurnaceStartSmeltEvent.java
-index 533a33dbd4c4c3c07fe759206dc288efec5cd531..f13f1b4daa99fb86b60acc94d0406dcd8cb4d98b 100644
+index 1440c6115520d692faf75455df35b92aa8734491..1e55f50f04de78ae0b8832a8021ffc7327676e8e 100644
 --- a/src/main/java/org/bukkit/event/inventory/FurnaceStartSmeltEvent.java
 +++ b/src/main/java/org/bukkit/event/inventory/FurnaceStartSmeltEvent.java
-@@ -13,11 +13,18 @@ public class FurnaceStartSmeltEvent extends BlockEvent {
+@@ -15,10 +15,17 @@ public class FurnaceStartSmeltEvent extends InventoryBlockStartEvent {
      private final CookingRecipe<?> recipe;
      private int totalCookTime;
  
 +    @Deprecated // Paper - furnace cook speed multiplier
      public FurnaceStartSmeltEvent(@NotNull final Block furnace, @NotNull ItemStack source, @NotNull final CookingRecipe<?> recipe) {
-+        // Paper start - furnace cook speed multiplier
++        // Paper start
 +        this(furnace, source, recipe, recipe.getCookingTime());
 +    }
 +
-+    public FurnaceStartSmeltEvent(@NotNull final Block furnace, @NotNull ItemStack source, @NotNull CookingRecipe<?> recipe, int cookingTime) {
++    public FurnaceStartSmeltEvent(final @NotNull Block furnace, final @NotNull ItemStack source, final @NotNull CookingRecipe<?> recipe, final int cookingTime) {
 +        // Paper end
-         super(furnace);
-         this.source = source;
+         super(furnace, source);
          this.recipe = recipe;
 -        this.totalCookTime = recipe.getCookingTime();
 +        this.totalCookTime = cookingTime; // Paper - furnace cook speed multiplier
diff --git a/patches/api/0156-Material-API-additions.patch b/patches/api/0156-Material-API-additions.patch
index bbda411f80..92dc2c0e98 100644
--- a/patches/api/0156-Material-API-additions.patch
+++ b/patches/api/0156-Material-API-additions.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Material API additions
 
 
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index bcf746a611fbfa66b12b31a12710c423ba39d42c..cd09fa22e6322770bcb582ba00a384c5ca0fd8d8 100644
+index d1cb98a43e1135c53fd4ae544272ff6225f387f6..a4a85c62e87c18e38ba16e3966a41e6631ec8add 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
 @@ -112,6 +112,7 @@ import org.jetbrains.annotations.Nullable;
@@ -13,10 +13,10 @@ index bcf746a611fbfa66b12b31a12710c423ba39d42c..cd09fa22e6322770bcb582ba00a384c5
   * An enum of all material IDs accepted by the official server and client
   */
 +@SuppressWarnings({"DeprecatedIsStillUsed", "deprecation"}) // Paper
- public enum Material implements Keyed {
+ public enum Material implements Keyed, Translatable {
      //<editor-fold desc="Materials" defaultstate="collapsed">
      AIR(9648, 0),
-@@ -4273,6 +4274,22 @@ public enum Material implements Keyed {
+@@ -4273,6 +4274,22 @@ public enum Material implements Keyed, Translatable {
          }
      }
  
diff --git a/patches/api/0176-Fix-Spigot-annotation-mistakes.patch b/patches/api/0176-Fix-Spigot-annotation-mistakes.patch
index 8999c40c36..a4ef2fafcd 100644
--- a/patches/api/0176-Fix-Spigot-annotation-mistakes.patch
+++ b/patches/api/0176-Fix-Spigot-annotation-mistakes.patch
@@ -79,10 +79,10 @@ index 20978b269a7757a561d6b872cc77898b44bbd272..2b9a117804a8ca54b47e51e23359bd6e
          if (this.world == null) {
              return null;
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index cd09fa22e6322770bcb582ba00a384c5ca0fd8d8..a7d36ef22724f0ce3add61ab314e09e6465077d4 100644
+index a4a85c62e87c18e38ba16e3966a41e6631ec8add..e883bb46461eb40b018ebe8c07caff96046fd11d 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
-@@ -4303,11 +4303,11 @@ public enum Material implements Keyed {
+@@ -4303,11 +4303,11 @@ public enum Material implements Keyed, Translatable {
      }
  
      /**
@@ -96,7 +96,7 @@ index cd09fa22e6322770bcb582ba00a384c5ca0fd8d8..a7d36ef22724f0ce3add61ab314e09e6
      public boolean isLegacy() {
          return legacy;
      }
-@@ -4378,8 +4378,10 @@ public enum Material implements Keyed {
+@@ -4378,8 +4378,10 @@ public enum Material implements Keyed, Translatable {
       * Gets the MaterialData class associated with this Material
       *
       * @return MaterialData associated with this Material
@@ -144,6 +144,22 @@ index f43209cf7b752c26718c303ca8c3e1c7d9912ad3..f0094e6fb05e526736629ad3181c8d2c
  public enum NetherWartsState {
  
      /**
+diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
+index ea80520c19cd3dd6aa25665c748d96fd4a3f6e40..ff1fcdaccbca81602278a0b52670f7b895ba22b7 100644
+--- a/src/main/java/org/bukkit/Registry.java
++++ b/src/main/java/org/bukkit/Registry.java
+@@ -229,8 +229,11 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+      *
+      * @param input non-null input
+      * @return registered object or null if does not exist
++     * @deprecated this method's behavior is broken and not useful. If you want to get an object
++     * based on its vanilla name, or a key, wrap it in a {@link NamespacedKey} object and use {@link #get(NamespacedKey)}
+      */
+     @Nullable
++    @Deprecated(forRemoval = true) // Paper
+     default T match(@NotNull String input) {
+         Preconditions.checkArgument(input != null, "input must not be null");
+ 
 diff --git a/src/main/java/org/bukkit/SandstoneType.java b/src/main/java/org/bukkit/SandstoneType.java
 index 6277451c3c6c551078c237cd767b6d70c4f585ea..10f5cfb1885833a1d2c1027c03974da45ab28e2f 100644
 --- a/src/main/java/org/bukkit/SandstoneType.java
@@ -671,18 +687,18 @@ index 66ffc658dba85942f179760dc6c50258e24ab903..50fe28b48d885c782278bdb53a0bbae3
  
      /**
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index 7559f75dcc6665fa3d19d6e53a141a214407d1c5..515f623b3b6e76dbf24ec1d204f7983adb100858 100644
+index a70de962712c14cb895708e89ad3811041728935..b15645cd56c245214bb5b87b36395fbc8e86e3d3 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -7,6 +7,7 @@ import java.util.List; // Paper
- import java.util.Map;
+@@ -8,6 +8,7 @@ import java.util.Map;
  import org.bukkit.Bukkit;
  import org.bukkit.Material;
+ import org.bukkit.Translatable;
 +import org.bukkit.UndefinedNullability;
  import org.bukkit.Utility;
  import org.bukkit.configuration.serialization.ConfigurationSerializable;
  import org.bukkit.enchantments.Enchantment;
-@@ -67,6 +68,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -68,6 +69,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
       * @param damage durability / damage
       * @deprecated see {@link #setDurability(short)}
       */
@@ -690,7 +706,7 @@ index 7559f75dcc6665fa3d19d6e53a141a214407d1c5..515f623b3b6e76dbf24ec1d204f7983a
      public ItemStack(@NotNull final Material type, final int amount, final short damage) {
          this(type, amount, damage, null);
      }
-@@ -168,8 +170,10 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -169,8 +171,10 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
       * Gets the MaterialData for this stack of items
       *
       * @return MaterialData for this item
@@ -701,7 +717,7 @@ index 7559f75dcc6665fa3d19d6e53a141a214407d1c5..515f623b3b6e76dbf24ec1d204f7983a
      public MaterialData getData() {
          Material mat = Bukkit.getUnsafe().toLegacy(getType());
          if (data == null && mat != null && mat.getData() != null) {
-@@ -183,7 +187,9 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -184,7 +188,9 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
       * Sets the MaterialData for this stack of items
       *
       * @param data New MaterialData for this item
@@ -711,7 +727,7 @@ index 7559f75dcc6665fa3d19d6e53a141a214407d1c5..515f623b3b6e76dbf24ec1d204f7983a
      public void setData(@Nullable MaterialData data) {
          if (data == null) {
              this.data = data;
-@@ -545,7 +551,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -546,7 +552,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
       *
       * @return a copy of the current ItemStack's ItemData
       */
diff --git a/patches/api/0181-Add-BlockSoundGroup-interface.patch b/patches/api/0181-Add-BlockSoundGroup-interface.patch
index 1d34e11a3b..d7e1a7c6c0 100644
--- a/patches/api/0181-Add-BlockSoundGroup-interface.patch
+++ b/patches/api/0181-Add-BlockSoundGroup-interface.patch
@@ -76,10 +76,10 @@ index 0000000000000000000000000000000000000000..ec36942128cbacae171584c89480b4aa
 +    Sound getFallSound();
 +}
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index b101f5264bdde8bd14913d5161c1047020830f8d..db441e463b02ee734f85c855f5538cd41041dbae 100644
+index 0be73b2f45c9aab6e73bcb7a76136ec6e2428163..3107abe94bb94b03b2e285c75ab0b7fdc7c0bc87 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -606,4 +606,25 @@ public interface Block extends Metadatable {
+@@ -607,4 +607,25 @@ public interface Block extends Metadatable, Translatable {
       * @return <code>true</code> if the block data can be placed here
       */
      boolean canPlace(@NotNull BlockData data);
diff --git a/patches/api/0185-Improve-Block-breakNaturally-API.patch b/patches/api/0185-Improve-Block-breakNaturally-API.patch
index 8bf4a34007..01e9249c42 100644
--- a/patches/api/0185-Improve-Block-breakNaturally-API.patch
+++ b/patches/api/0185-Improve-Block-breakNaturally-API.patch
@@ -10,10 +10,10 @@ Adds bool param to trigger exp drops for blocks
 Co-authored-by: William Blake Galbreath <Blake.Galbreath@GMail.com>
 
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index db441e463b02ee734f85c855f5538cd41041dbae..af705e45204975a342e1454156ba143ed52cecdc 100644
+index 3107abe94bb94b03b2e285c75ab0b7fdc7c0bc87..06ef9e133125d80127e1dbd6ae0eda89fa08a1d7 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -480,6 +480,52 @@ public interface Block extends Metadatable {
+@@ -481,6 +481,52 @@ public interface Block extends Metadatable, Translatable {
       */
      boolean breakNaturally(@Nullable ItemStack tool);
  
diff --git a/patches/api/0192-Add-Raw-Byte-ItemStack-Serialization.patch b/patches/api/0192-Add-Raw-Byte-ItemStack-Serialization.patch
index 923dca3f3f..d2e64b3c1a 100644
--- a/patches/api/0192-Add-Raw-Byte-ItemStack-Serialization.patch
+++ b/patches/api/0192-Add-Raw-Byte-ItemStack-Serialization.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add Raw Byte ItemStack Serialization
 Serializes using NBT which is safer for server data migrations than bukkits format.
 
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 81da1def96d18704303cadd72261a1b2fcbb9fc5..5453b2ae459b2d5171ef7129c29891b721ee8e0b 100644
+index 4af059f9b32d2a0913e6d88c6a93e101018e88a2..bdc68e164a8d25a068bc51c04ba17b65a558ba78 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -108,5 +108,9 @@ public interface UnsafeValues {
+@@ -117,5 +117,9 @@ public interface UnsafeValues {
      static boolean isLegacyPlugin(org.bukkit.plugin.Plugin plugin) {
          return !Bukkit.getUnsafe().isSupportedApiVersion(plugin.getDescription().getAPIVersion());
      }
@@ -20,10 +20,10 @@ index 81da1def96d18704303cadd72261a1b2fcbb9fc5..5453b2ae459b2d5171ef7129c29891b7
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index 515f623b3b6e76dbf24ec1d204f7983adb100858..d3334c62bf39abf17ee7f3e68e106fd637ffdf00 100644
+index b15645cd56c245214bb5b87b36395fbc8e86e3d3..7c280d7beeb42dca52e36e77bbd41742b2572710 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -632,6 +632,30 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -639,6 +639,30 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
          return Bukkit.getServer().getItemFactory().ensureServerConversions(this);
      }
  
diff --git a/patches/api/0221-Add-methods-to-get-translation-keys.patch b/patches/api/0221-Add-methods-to-get-translation-keys.patch
index bfeb3be141..0f9e2fd1aa 100644
--- a/patches/api/0221-Add-methods-to-get-translation-keys.patch
+++ b/patches/api/0221-Add-methods-to-get-translation-keys.patch
@@ -144,80 +144,68 @@ index 0a66077d152a3c89fa7a277663969767798eb100..b02490737409eb80a2d2fb275c9a60b6
 +    // Paper end
  }
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index a7d36ef22724f0ce3add61ab314e09e6465077d4..4d496c7c088a75b79a25e7397b47600a8c104cf4 100644
+index e883bb46461eb40b018ebe8c07caff96046fd11d..89af89e5fb49e202e80ea7688c62f8e119f4ddfe 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
 @@ -113,7 +113,7 @@ import org.jetbrains.annotations.Nullable;
   * An enum of all material IDs accepted by the official server and client
   */
  @SuppressWarnings({"DeprecatedIsStillUsed", "deprecation"}) // Paper
--public enum Material implements Keyed {
-+public enum Material implements Keyed, net.kyori.adventure.translation.Translatable { // Paper
+-public enum Material implements Keyed, Translatable {
++public enum Material implements Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper
      //<editor-fold desc="Materials" defaultstate="collapsed">
      AIR(9648, 0),
      STONE(22948),
-@@ -4288,6 +4288,23 @@ public enum Material implements Keyed {
+@@ -4288,6 +4288,15 @@ public enum Material implements Keyed, Translatable {
          }
          return false;
      }
 +
-+    /**
-+     * Return the translation key for the Material, so the client can translate it into the active
-+     * locale when using a TranslatableComponent.
-+     * @return the translation key
-+     * @deprecated use {@link #translationKey()}
-+     */
-+    @NotNull
-+    @Deprecated
-+    public String getTranslationKey() {
-+        return this.translationKey();
-+    }
-+
 +    @Override
 +    public @NotNull String translationKey() {
-+        return Bukkit.getUnsafe().getTranslationKey(this);
++        if (this.isItem()) {
++            return Bukkit.getUnsafe().getItemTranslationKey(this);
++        } else {
++            return Bukkit.getUnsafe().getBlockTranslationKey(this);
++        }
 +    }
      // Paper end
  
      /**
-diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 5453b2ae459b2d5171ef7129c29891b721ee8e0b..b518720355d8a8dcd55cb755e4e1fa9fc3dfc52b 100644
---- a/src/main/java/org/bukkit/UnsafeValues.java
-+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -112,5 +112,34 @@ public interface UnsafeValues {
-     byte[] serializeItem(ItemStack item);
+@@ -10596,9 +10605,11 @@ public enum Material implements Keyed, Translatable {
+      * material
+      * @see #getBlockTranslationKey()
+      * @see #getItemTranslationKey()
++     * @deprecated use {@link #translationKey()}
+      */
+     @Override
+     @NotNull
++    @Deprecated(forRemoval = true) // Paper
+     public String getTranslationKey() {
+         if (this.isItem()) {
+             return Bukkit.getUnsafe().getItemTranslationKey(this);
+diff --git a/src/main/java/org/bukkit/Translatable.java b/src/main/java/org/bukkit/Translatable.java
+index e3faa2c675c85a9cbdbbb1debec0ff81c58a1bbd..fd1629c2d2028a88fb3d56b0aeb833d17235080a 100644
+--- a/src/main/java/org/bukkit/Translatable.java
++++ b/src/main/java/org/bukkit/Translatable.java
+@@ -5,14 +5,18 @@ import org.jetbrains.annotations.NotNull;
+ /**
+  * Represents an object with a text representation that can be translated by the
+  * Minecraft client.
++ * @deprecated use {@link net.kyori.adventure.translation.Translatable}
+  */
++@Deprecated(forRemoval = true) // Paper
+ public interface Translatable {
  
-     ItemStack deserializeItem(byte[] data);
-+
-+    /**
-+     * Return the translation key for the Material, so the client can translate it into the active
-+     * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}.
-+     * @return the translation key
-+     */
-+    String getTranslationKey(Material mat);
-+
-+    /**
-+     * Return the translation key for the Block, so the client can translate it into the active
-+     * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}.
-+     * @return the translation key
-+     */
-+    String getTranslationKey(org.bukkit.block.Block block);
-+
-+    /**
-+     * Return the translation key for the EntityType, so the client can translate it into the active
-+     * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}.<br>
-+     * This is <code>null</code>, when the EntityType isn't known to NMS (custom entities)
-+     * @return the translation key
-+     */
-+    String getTranslationKey(org.bukkit.entity.EntityType type);
-+
-+    /**
-+     * Return the translation key for the ItemStack, so the client can translate it into the active
-+     * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}.<br>
-+     * @return the translation key
-+     */
-+    String getTranslationKey(ItemStack itemStack);
-     // Paper end
+     /**
+      * Get the translation key, suitable for use in a translation component.
+      *
+      * @return the translation key
++     * @deprecated look for a {@code translationKey()} method instead
+      */
+     @NotNull
++    @Deprecated(forRemoval = true) // Paper
+     String getTranslationKey();
  }
 diff --git a/src/main/java/org/bukkit/attribute/Attribute.java b/src/main/java/org/bukkit/attribute/Attribute.java
 index 13eac9ad2c1672051635d1c35cc49239252e7a61..107e36ef02a9481954bd770ce9a55a0b1e84be7a 100644
@@ -269,31 +257,28 @@ index 02c5fcbc76b2db6bf4eb7580456b5658c08272b4..d56e1b50dd7da18f40278cec4bfdc941
 +    // Paper end
  }
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index af705e45204975a342e1454156ba143ed52cecdc..ce3b81c5d83c9747ea0e3410c932460d11bf5c55 100644
+index 06ef9e133125d80127e1dbd6ae0eda89fa08a1d7..35ed58bce2589bb097dd0f6bf2a6ebd76dc31fcd 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable;
+@@ -32,7 +32,7 @@ import org.jetbrains.annotations.Nullable;
   * (i.e. lighting and power) may not be able to be safely accessed during world
   * generation when used in cases like BlockPhysicsEvent!!!!
   */
--public interface Block extends Metadatable {
-+public interface Block extends Metadatable, net.kyori.adventure.translation.Translatable { // Paper - translatable
+-public interface Block extends Metadatable, Translatable {
++public interface Block extends Metadatable, Translatable, net.kyori.adventure.translation.Translatable { // Paper - translatable
  
      /**
       * Gets the metadata for this block
-@@ -672,5 +672,15 @@ public interface Block extends Metadatable {
+@@ -673,5 +673,12 @@ public interface Block extends Metadatable, Translatable {
       * @return the sound group for this block
       */
      @NotNull org.bukkit.SoundGroup getBlockSoundGroup();
 +
 +    /**
-+     * Return the translation key for the Block, so the client can translate it into the active
-+     * locale when using a TranslatableComponent.
-+     * @return the translation key
 +     * @deprecated use {@link #translationKey()}
 +     */
 +    @NotNull
-+    @Deprecated
++    @Deprecated(forRemoval = true)
 +    String getTranslationKey();
      // Paper end
  }
@@ -326,36 +311,28 @@ index 4d5f0837bd0e02a30c943d8969fb6b13452322e0..a39f9c078f42451bd122f3e3729d10ca
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index df9d315cfaf968527fc8bc26dadd88f64a408cde..50d9442ffafdfabd4904dafae7daaeadcedee75b 100644
+index 2caa5f82e206b231fd9e9f5508c3713816e5a0e4..80897ed8641a2bdc4e3557e20f3a8ae4b8c5da69 100644
 --- a/src/main/java/org/bukkit/entity/EntityType.java
 +++ b/src/main/java/org/bukkit/entity/EntityType.java
-@@ -20,7 +20,7 @@ import org.jetbrains.annotations.Contract;
+@@ -22,7 +22,7 @@ import org.jetbrains.annotations.Contract;
  import org.jetbrains.annotations.NotNull;
  import org.jetbrains.annotations.Nullable;
  
--public enum EntityType implements Keyed {
-+public enum EntityType implements Keyed, net.kyori.adventure.translation.Translatable { // Paper - translatable
+-public enum EntityType implements Keyed, Translatable {
++public enum EntityType implements Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper - translatable
  
      // These strings MUST match the strings in nms.EntityTypes and are case sensitive.
      /**
-@@ -425,4 +425,27 @@ public enum EntityType implements Keyed {
-     public boolean isAlive() {
-         return living;
+@@ -430,7 +430,19 @@ public enum EntityType implements Keyed, Translatable {
+ 
+     @Override
+     @NotNull
++    @Deprecated(forRemoval = true) // Paper
+     public String getTranslationKey() {
+         return Bukkit.getUnsafe().getTranslationKey(this);
      }
-+    // Paper start
-+    /**
-+     * Return the translation key for the EntityType, so the client can translate it into the active
-+     * locale when using a TranslatableComponent.<br>
-+     * This is <code>null</code>, when the EntityType isn't known to NMS (custom entities)
-+     * @return the translation key
-+     * @deprecated use {@link #translationKey()}
-+     */
-+    @Deprecated
-+    @Nullable
-+    public String getTranslationKey() {
-+        return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this);
-+    }
 +
++    // Paper start
 +    /**
 +     * @throws IllegalArgumentException if the entity does not have a translation key (is probably a custom entity)
 +     */
@@ -473,38 +450,32 @@ index 5bd252c0ae3b09fe141d131360c67bb9bfbf5422..78587d9fabe6371a23a7963917b054db
 +
  }
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index d3334c62bf39abf17ee7f3e68e106fd637ffdf00..d6eafaa58b19ab44dfdef1baa58fa89c5b761b65 100644
+index 7c280d7beeb42dca52e36e77bbd41742b2572710..03a15727c85a08c0c79965be249373a11f31ce6e 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -24,7 +24,7 @@ import org.jetbrains.annotations.Nullable;
+@@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable;
   * use this class to encapsulate Materials for which {@link Material#isItem()}
   * returns false.</b>
   */
--public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowItem> { // Paper
-+public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowItem>, net.kyori.adventure.translation.Translatable { // Paper
+-public class ItemStack implements Cloneable, ConfigurationSerializable, Translatable, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowItem> { // Paper
++public class ItemStack implements Cloneable, ConfigurationSerializable, Translatable, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowItem>, net.kyori.adventure.translation.Translatable { // Paper
      private Material type = Material.AIR;
      private int amount = 0;
      private MaterialData data = null;
-@@ -858,5 +858,30 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -606,6 +606,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
+ 
+     @Override
+     @NotNull
++    @Deprecated(forRemoval = true) // Paper
+     public String getTranslationKey() {
+         return Bukkit.getUnsafe().getTranslationKey(this);
+     }
+@@ -865,5 +866,16 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
          ItemMeta itemMeta = getItemMeta();
          return itemMeta != null && itemMeta.hasItemFlag(flag);
      }
 +
 +    /**
-+     * Gets the translation key for this itemstack.
-+     * This is not the same as getting the translation key
-+     * for the material of this itemstack.
-+     *
-+     * @return the translation key
-+     * @deprecated use {@link #translationKey()}
-+     */
-+    @NotNull
-+    @Deprecated
-+    public String getTranslationKey() {
-+        return this.translationKey();
-+    }
-+
-+    /**
 +     * {@inheritDoc}
 +     * <p>
 +     * This is not the same as getting the translation key
diff --git a/patches/api/0224-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/api/0224-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
index 0d12123896..7653717c83 100644
--- a/patches/api/0224-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
+++ b/patches/api/0224-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
@@ -6,13 +6,13 @@ Subject: [PATCH] Expose the Entity Counter to allow plugins to use valid and
 
 
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index b518720355d8a8dcd55cb755e4e1fa9fc3dfc52b..824833a04df15551c8dd9ddfa8d4c1c9cf6d49c0 100644
+index bdc68e164a8d25a068bc51c04ba17b65a558ba78..7a6c22b9845798580635a938c28adf01908e04a0 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -141,5 +141,12 @@ public interface UnsafeValues {
-      * @return the translation key
-      */
-     String getTranslationKey(ItemStack itemStack);
+@@ -121,5 +121,12 @@ public interface UnsafeValues {
+     byte[] serializeItem(ItemStack item);
+ 
+     ItemStack deserializeItem(byte[] data);
 +
 +    /**
 +     * Creates and returns the next EntityId available.
diff --git a/patches/api/0234-Add-Destroy-Speed-API.patch b/patches/api/0234-Add-Destroy-Speed-API.patch
index a7835cadaa..bdf9933289 100644
--- a/patches/api/0234-Add-Destroy-Speed-API.patch
+++ b/patches/api/0234-Add-Destroy-Speed-API.patch
@@ -6,12 +6,12 @@ Subject: [PATCH] Add Destroy Speed API
 Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
 
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index 2c837ea822f3b0c4ec312f0c956fe1b778cbd5e9..4a408361ac86b8c490942686c2709817338f4f59 100644
+index 35ed58bce2589bb097dd0f6bf2a6ebd76dc31fcd..ded1daaef53882a80e618f4ed97b50fd0ee4786c 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -682,5 +682,29 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran
+@@ -680,5 +680,29 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
      @NotNull
-     @Deprecated
+     @Deprecated(forRemoval = true)
      String getTranslationKey();
 +
 +    /**
diff --git a/patches/api/0245-Additional-Block-Material-API-s.patch b/patches/api/0245-Additional-Block-Material-API-s.patch
index fe8d819d32..5d7efccc1f 100644
--- a/patches/api/0245-Additional-Block-Material-API-s.patch
+++ b/patches/api/0245-Additional-Block-Material-API-s.patch
@@ -9,10 +9,10 @@ process to do this in the Bukkit API
 Adds API for buildable, replaceable, burnable too.
 
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index 4a408361ac86b8c490942686c2709817338f4f59..43a0e57a6db702b2a40e151f151bfaa63b9d95d5 100644
+index ded1daaef53882a80e618f4ed97b50fd0ee4786c..4abd16a4e99ae0380b67c86b9744d71423053b5e 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -438,6 +438,42 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran
+@@ -439,6 +439,42 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
       */
      boolean isLiquid();
  
diff --git a/patches/api/0257-Add-PaperRegistry.patch b/patches/api/0257-Add-PaperRegistry.patch
index c5486a380d..d4857c45ed 100644
--- a/patches/api/0257-Add-PaperRegistry.patch
+++ b/patches/api/0257-Add-PaperRegistry.patch
@@ -91,10 +91,10 @@ index 0000000000000000000000000000000000000000..f29e76a6b66ddfec12ddf8db6dcb2df6
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 824833a04df15551c8dd9ddfa8d4c1c9cf6d49c0..3d5185a1a3a5e5e1b1428ddbedec38f908f5870a 100644
+index 7a6c22b9845798580635a938c28adf01908e04a0..1b6fe8fadcf4860cd3411c0433bc775de3a870ad 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -148,5 +148,15 @@ public interface UnsafeValues {
+@@ -128,5 +128,15 @@ public interface UnsafeValues {
       * Use this when sending custom packets, so that there are no collisions on the client or server.
       */
      public int nextEntityId();
diff --git a/patches/api/0258-Add-StructuresLocateEvent.patch b/patches/api/0258-Add-StructuresLocateEvent.patch
index 267a1b8045..9f5a511014 100644
--- a/patches/api/0258-Add-StructuresLocateEvent.patch
+++ b/patches/api/0258-Add-StructuresLocateEvent.patch
@@ -443,10 +443,10 @@ index 0000000000000000000000000000000000000000..5a43e40b7311ed2acb51f6ba8b12d1f3
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index a77320257b691c3a380f7c59c350382c0c0fe863..ec59aa76488a1500ab3df46c98ba7b1d4179df4e 100644
+index ff1fcdaccbca81602278a0b52670f7b895ba22b7..9e39c028b3d7bea4f2998d6ed8d53d88361ccfcd 100644
 --- a/src/main/java/org/bukkit/Registry.java
 +++ b/src/main/java/org/bukkit/Registry.java
-@@ -210,6 +210,13 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -211,6 +211,13 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
              return GameEvent.getByKey(key);
          }
      };
diff --git a/patches/api/0272-Cache-the-result-of-Material-isBlock.patch b/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
index 62e0c5fb00..4ba6e74321 100644
--- a/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
+++ b/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Cache the result of Material#isBlock
 
 
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index 4d496c7c088a75b79a25e7397b47600a8c104cf4..b1214775680099c8255b45ed0285568572f12895 100644
+index 89af89e5fb49e202e80ea7688c62f8e119f4ddfe..7e447f8be7dc9768df487e1f7f4b9aafedb33e2d 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
-@@ -4232,6 +4232,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4232,6 +4232,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      public final Class<?> data;
      private final boolean legacy;
      private final NamespacedKey key;
@@ -16,7 +16,7 @@ index 4d496c7c088a75b79a25e7397b47600a8c104cf4..b1214775680099c8255b45ed02855685
  
      private Material(final int id) {
          this(id, 64);
-@@ -4438,6 +4439,11 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4430,6 +4431,11 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
       * @return true if this material is a block
       */
      public boolean isBlock() {
@@ -28,7 +28,7 @@ index 4d496c7c088a75b79a25e7397b47600a8c104cf4..b1214775680099c8255b45ed02855685
          switch (this) {
              //<editor-fold defaultstate="collapsed" desc="isBlock">
              case ACACIA_BUTTON:
-@@ -5593,6 +5599,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -5585,6 +5591,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      static {
          for (Material material : values()) {
              BY_NAME.put(material.name(), material);
diff --git a/patches/api/0276-Add-Block-isValidTool.patch b/patches/api/0276-Add-Block-isValidTool.patch
index 1ba9ed8d9a..84a641142e 100644
--- a/patches/api/0276-Add-Block-isValidTool.patch
+++ b/patches/api/0276-Add-Block-isValidTool.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add Block#isValidTool
 
 
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index 43a0e57a6db702b2a40e151f151bfaa63b9d95d5..c847bc83c0911007d226f1a8c6f1d0cefa9a1689 100644
+index 4abd16a4e99ae0380b67c86b9744d71423053b5e..96a3466181a6829e1868b5f5249349e8fd2cdd09 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -229,6 +229,15 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran
+@@ -230,6 +230,15 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
      public static int getBlockKeyZ(long packed) {
          return (int) ((packed << 10) >> 37);
      }
diff --git a/patches/api/0277-Expand-world-key-API.patch b/patches/api/0277-Expand-world-key-API.patch
index c9288c202d..ea1cc66c9b 100644
--- a/patches/api/0277-Expand-world-key-API.patch
+++ b/patches/api/0277-Expand-world-key-API.patch
@@ -78,10 +78,10 @@ index 02b898d441c42771903d5839c3cde544b1a25778..1a3b4f20c7126caf8a34040028f73508
       * Create a new virtual {@link WorldBorder}.
       * <p>
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 3d5185a1a3a5e5e1b1428ddbedec38f908f5870a..b359a7bff658c4b3ff569e78e0751dc07437bb48 100644
+index 1b6fe8fadcf4860cd3411c0433bc775de3a870ad..027bbfe33011f26914852750b6f0a7200818dc95 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -158,5 +158,10 @@ public interface UnsafeValues {
+@@ -138,5 +138,10 @@ public interface UnsafeValues {
       * @throws IllegalArgumentException if there isn't a registry for that type
       */
      <T extends Keyed> @org.jetbrains.annotations.NotNull Registry<T> registryFor(Class<T> classOfT);
diff --git a/patches/api/0278-Item-Rarity-API.patch b/patches/api/0278-Item-Rarity-API.patch
index 3e3fcac796..22b88307e4 100644
--- a/patches/api/0278-Item-Rarity-API.patch
+++ b/patches/api/0278-Item-Rarity-API.patch
@@ -39,12 +39,12 @@ index 0000000000000000000000000000000000000000..74ef8395cc040ce488c2acaa416db202
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index b1214775680099c8255b45ed0285568572f12895..6fbbc3525574abd5189c9032f7d64dc55c0dfa80 100644
+index 7e447f8be7dc9768df487e1f7f4b9aafedb33e2d..eb8aa093148eea3b2fcafe06e8f1277ebbe2f275 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
-@@ -4306,6 +4306,17 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
-     public @NotNull String translationKey() {
-         return Bukkit.getUnsafe().getTranslationKey(this);
+@@ -4298,6 +4298,17 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+             return Bukkit.getUnsafe().getBlockTranslationKey(this);
+         }
      }
 +
 +    /**
@@ -61,10 +61,10 @@ index b1214775680099c8255b45ed0285568572f12895..6fbbc3525574abd5189c9032f7d64dc5
  
      /**
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index b359a7bff658c4b3ff569e78e0751dc07437bb48..bc8e86f83423a0abdfe3516076636b02192e7501 100644
+index 027bbfe33011f26914852750b6f0a7200818dc95..2768aee1ec52037c32a7873a3018e659604175ce 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -163,5 +163,22 @@ public interface UnsafeValues {
+@@ -143,5 +143,22 @@ public interface UnsafeValues {
       * Just don't use it.
       */
      @org.jetbrains.annotations.NotNull String getMainLevelName();
@@ -88,10 +88,10 @@ index b359a7bff658c4b3ff569e78e0751dc07437bb48..bc8e86f83423a0abdfe3516076636b02
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index d6eafaa58b19ab44dfdef1baa58fa89c5b761b65..75bd1f7a5a30d21ae61836072ec057a95b7c288b 100644
+index 03a15727c85a08c0c79965be249373a11f31ce6e..c6378a880eac9f444c66f640260e8d410efd015b 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -883,5 +883,15 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -877,5 +877,15 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
      public @NotNull String translationKey() {
          return Bukkit.getUnsafe().getTranslationKey(this);
      }
diff --git a/patches/api/0279-Expose-protocol-version.patch b/patches/api/0279-Expose-protocol-version.patch
index ec1f242ac2..36702be6d1 100644
--- a/patches/api/0279-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 bc8e86f83423a0abdfe3516076636b02192e7501..8650d5b9bd322f0b67382fcd7900f922c5134a97 100644
+index 2768aee1ec52037c32a7873a3018e659604175ce..c63de60fd3c6b5c2cf3b5b01288d8309d9e6d02b 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -180,5 +180,12 @@ public interface UnsafeValues {
+@@ -160,5 +160,12 @@ public interface UnsafeValues {
       * @return the itemstack rarity
       */
      public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack);
diff --git a/patches/api/0297-ItemStack-repair-check-API.patch b/patches/api/0297-ItemStack-repair-check-API.patch
index ad6d09f01e..d9dee9799f 100644
--- a/patches/api/0297-ItemStack-repair-check-API.patch
+++ b/patches/api/0297-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 8650d5b9bd322f0b67382fcd7900f922c5134a97..6f4e02065bcb4130f5a30de01f3adbe3513c1d70 100644
+index c63de60fd3c6b5c2cf3b5b01288d8309d9e6d02b..ee20f8cd7c260540f4fa9235343841ddd6e72eba 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -181,6 +181,16 @@ public interface UnsafeValues {
+@@ -161,6 +161,16 @@ public interface UnsafeValues {
       */
      public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack);
  
@@ -26,10 +26,10 @@ index 8650d5b9bd322f0b67382fcd7900f922c5134a97..6f4e02065bcb4130f5a30de01f3adbe3
       * Returns the server's protocol version.
       *
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index 75bd1f7a5a30d21ae61836072ec057a95b7c288b..0d0d7bda2d4fafffd3e80a359019626ab44031d0 100644
+index c6378a880eac9f444c66f640260e8d410efd015b..b731ac4f6cd82d8476e4040a2204f58b0f63a0d3 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -893,5 +893,27 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -887,5 +887,27 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
      public io.papermc.paper.inventory.ItemRarity getRarity() {
          return Bukkit.getUnsafe().getItemStackRarity(this);
      }
diff --git a/patches/api/0301-ItemStack-editMeta.patch b/patches/api/0301-ItemStack-editMeta.patch
index a6b2d88a10..b3170677e6 100644
--- a/patches/api/0301-ItemStack-editMeta.patch
+++ b/patches/api/0301-ItemStack-editMeta.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack#editMeta
 
 
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index 0d0d7bda2d4fafffd3e80a359019626ab44031d0..77ef41527a05e2d7899633ef7fa813774dd15bd9 100644
+index b731ac4f6cd82d8476e4040a2204f58b0f63a0d3..84ea952cdee1eaec5572641e09fdd85930ddeb47 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -546,6 +546,50 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -547,6 +547,50 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
          return result.ensureServerConversions(); // Paper
      }
  
diff --git a/patches/api/0303-Attributes-API-for-item-defaults.patch b/patches/api/0303-Attributes-API-for-item-defaults.patch
index fb2164214c..cf9f6bf7b3 100644
--- a/patches/api/0303-Attributes-API-for-item-defaults.patch
+++ b/patches/api/0303-Attributes-API-for-item-defaults.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Attributes API for item defaults
 
 
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index 6fbbc3525574abd5189c9032f7d64dc55c0dfa80..bdc51797e3e3c8ffb1db842e29ddb86beeec48ec 100644
+index eb8aa093148eea3b2fcafe06e8f1277ebbe2f275..9c6291531d3081bf601364815fdd0a9b801eee50 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
-@@ -4317,6 +4317,21 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4309,6 +4309,21 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      public io.papermc.paper.inventory.ItemRarity getItemRarity() {
          return Bukkit.getUnsafe().getItemRarity(this);
      }
@@ -31,10 +31,10 @@ index 6fbbc3525574abd5189c9032f7d64dc55c0dfa80..bdc51797e3e3c8ffb1db842e29ddb86b
  
      /**
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 6f4e02065bcb4130f5a30de01f3adbe3513c1d70..4e3eac5f06a6ded0f152f1744fcebfeef6b48814 100644
+index ee20f8cd7c260540f4fa9235343841ddd6e72eba..dc1dc789c6f8eebc026ca990ed44fa7c6cb88f19 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -191,6 +191,18 @@ public interface UnsafeValues {
+@@ -171,6 +171,18 @@ public interface UnsafeValues {
       */
      public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial);
  
diff --git a/patches/api/0331-Get-entity-default-attributes.patch b/patches/api/0331-Get-entity-default-attributes.patch
index b4b4a952ea..502c1f8c5a 100644
--- a/patches/api/0331-Get-entity-default-attributes.patch
+++ b/patches/api/0331-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 4e3eac5f06a6ded0f152f1744fcebfeef6b48814..68b560af277d4913306fb1b9c88c2fadcd2f446a 100644
+index dc1dc789c6f8eebc026ca990ed44fa7c6cb88f19..edcf0ca00aaf9d9ad26eb7fb04075fba101169fd 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -209,5 +209,22 @@ public interface UnsafeValues {
+@@ -189,5 +189,22 @@ public interface UnsafeValues {
       * @return the server's protocol version
       */
      int getProtocolVersion();
@@ -32,10 +32,10 @@ index 4e3eac5f06a6ded0f152f1744fcebfeef6b48814..68b560af277d4913306fb1b9c88c2fad
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index 50d9442ffafdfabd4904dafae7daaeadcedee75b..5a0c96875d9c3bd32b4649a3fccd43af1ccb195b 100644
+index 80897ed8641a2bdc4e3557e20f3a8ae4b8c5da69..4915c1064a9b6bf1d485f9e6e42b9f6e4e12f236 100644
 --- a/src/main/java/org/bukkit/entity/EntityType.java
 +++ b/src/main/java/org/bukkit/entity/EntityType.java
-@@ -447,5 +447,24 @@ public enum EntityType implements Keyed, net.kyori.adventure.translation.Transla
+@@ -444,5 +444,24 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans
          Preconditions.checkArgument(this != UNKNOWN, "UNKNOWN entities do not have translation keys");
          return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this);
      }
diff --git a/patches/api/0337-Add-isCollidable-methods-to-various-places.patch b/patches/api/0337-Add-isCollidable-methods-to-various-places.patch
index 4607f0597e..dbc60870ba 100644
--- a/patches/api/0337-Add-isCollidable-methods-to-various-places.patch
+++ b/patches/api/0337-Add-isCollidable-methods-to-various-places.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add isCollidable methods to various places
 
 
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index bdc51797e3e3c8ffb1db842e29ddb86beeec48ec..56459876a7736bd3a015e0aba511313997f9ec65 100644
+index 9c6291531d3081bf601364815fdd0a9b801eee50..33371518fc8c5d97625f3d528ba8fee25d8c9c00 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
-@@ -4332,6 +4332,16 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4324,6 +4324,16 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      public Multimap<Attribute, AttributeModifier> getItemAttributes(@NotNull EquipmentSlot equipmentSlot) {
          return Bukkit.getUnsafe().getItemAttributes(this, equipmentSlot);
      }
@@ -26,10 +26,10 @@ index bdc51797e3e3c8ffb1db842e29ddb86beeec48ec..56459876a7736bd3a015e0aba5113139
  
      /**
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 68b560af277d4913306fb1b9c88c2fadcd2f446a..9fd64aa7f2487b07fe0a6873bd57a0ed483499a3 100644
+index edcf0ca00aaf9d9ad26eb7fb04075fba101169fd..4b0b1afcf3f8fa8929311dae47df91d0b7dd6fdc 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -226,5 +226,14 @@ public interface UnsafeValues {
+@@ -206,5 +206,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);
@@ -45,10 +45,10 @@ index 68b560af277d4913306fb1b9c88c2fadcd2f446a..9fd64aa7f2487b07fe0a6873bd57a0ed
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index c847bc83c0911007d226f1a8c6f1d0cefa9a1689..cff39708e66208921da15d12d94407d6b6950298 100644
+index 96a3466181a6829e1868b5f5249349e8fd2cdd09..cda6e7d8e032b3edc919995141dc260b1ea82810 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -481,6 +481,13 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran
+@@ -482,6 +482,13 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
       * @return true if block is solid
       */
      boolean isSolid();
diff --git a/patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch b/patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch
index 27fcb0fc86..9be43fece0 100644
--- a/patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/api/0340-Add-Raw-Byte-Entity-Serialization.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add Raw Byte Entity Serialization
 
 
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 9fd64aa7f2487b07fe0a6873bd57a0ed483499a3..aa252abe42c184914d6b50ad1f94ba7ada22d7df 100644
+index 4b0b1afcf3f8fa8929311dae47df91d0b7dd6fdc..dda436f61b174bf1bd94033a09468626f099ee3a 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -113,6 +113,14 @@ public interface UnsafeValues {
+@@ -122,6 +122,14 @@ public interface UnsafeValues {
  
      ItemStack deserializeItem(byte[] data);
  
@@ -21,8 +21,8 @@ index 9fd64aa7f2487b07fe0a6873bd57a0ed483499a3..aa252abe42c184914d6b50ad1f94ba7a
 +    org.bukkit.entity.Entity deserializeEntity(byte[] data, World world, boolean preserveUUID);
 +
      /**
-      * Return the translation key for the Material, so the client can translate it into the active
-      * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}.
+      * Creates and returns the next EntityId available.
+      * <p>
 diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
 index e3218b5c170e1916a991aa1fae6a4f4e26dc034d..570d446869022008d01ba382e85ec69fcb25f99d 100644
 --- a/src/main/java/org/bukkit/entity/Entity.java
diff --git a/patches/api/0361-More-PotionEffectType-API.patch b/patches/api/0361-More-PotionEffectType-API.patch
index aa6840470d..81fe72fe80 100644
--- a/patches/api/0361-More-PotionEffectType-API.patch
+++ b/patches/api/0361-More-PotionEffectType-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] More PotionEffectType API
 
 
 diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
-index ec59aa76488a1500ab3df46c98ba7b1d4179df4e..56a90dbf1a61dce615ee0f712851bf01de06b28c 100644
+index 9e39c028b3d7bea4f2998d6ed8d53d88361ccfcd..3dc747080b7bfea4b04b5a47cc7ae4698c758802 100644
 --- a/src/main/java/org/bukkit/Registry.java
 +++ b/src/main/java/org/bukkit/Registry.java
-@@ -216,6 +216,25 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
+@@ -217,6 +217,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.getRegistry(io.papermc.paper.world.structure.ConfiguredStructure.class);
diff --git a/patches/api/0372-Add-getComputedBiome-API.patch b/patches/api/0372-Add-getComputedBiome-API.patch
index b192af7101..98dc77cad2 100644
--- a/patches/api/0372-Add-getComputedBiome-API.patch
+++ b/patches/api/0372-Add-getComputedBiome-API.patch
@@ -51,10 +51,10 @@ index 43b53c21af01e0f496c8aaacff82dfdfadaf40f6..3f7e860de4e28745fcdf8d2f41f4a8c2
       * Sets the {@link Biome} at the given {@link Location}.
       *
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index cff39708e66208921da15d12d94407d6b6950298..e405c279f6135c94c775a856ab88fd3cace6bd5c 100644
+index cda6e7d8e032b3edc919995141dc260b1ea82810..13485933b8b897b5a9b35f337b43eab5c968f13a 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -370,10 +370,22 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran
+@@ -371,10 +371,22 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
       * Returns the biome that this block resides in
       *
       * @return Biome type containing this block
diff --git a/patches/api/0373-Add-enchantWithLevels-API.patch b/patches/api/0373-Add-enchantWithLevels-API.patch
index 394fcb62bf..42506ea030 100644
--- a/patches/api/0373-Add-enchantWithLevels-API.patch
+++ b/patches/api/0373-Add-enchantWithLevels-API.patch
@@ -32,10 +32,10 @@ index 2acafae468fcbb7213d6b6c30803a3924a3bbc30..40edff7c93b6bf75de81102326667135
       * Creates a hover event for the given item.
       *
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index 77ef41527a05e2d7899633ef7fa813774dd15bd9..b8a344fd900dcbd4b28085a54b85b16c742e9c6f 100644
+index 84ea952cdee1eaec5572641e09fdd85930ddeb47..6f33145f1ccc7645616f310a68676207318c2a58 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -648,6 +648,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -656,6 +656,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
      }
  
      // Paper start
diff --git a/patches/api/0391-Block-Ticking-API.patch b/patches/api/0391-Block-Ticking-API.patch
index 01e89b8a66..b6f73760b2 100644
--- a/patches/api/0391-Block-Ticking-API.patch
+++ b/patches/api/0391-Block-Ticking-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Block Ticking API
 
 
 diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
-index 0b02bfce9ee01c6beb14348129ab86c751c01e54..aba40431c5a1ae43106a678445483e0653e130d1 100644
+index 13485933b8b897b5a9b35f337b43eab5c968f13a..390a2a2611df35a9ea6f1eb996b47e2aa4597ff0 100644
 --- a/src/main/java/org/bukkit/block/Block.java
 +++ b/src/main/java/org/bukkit/block/Block.java
-@@ -588,6 +588,21 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran
+@@ -589,6 +589,21 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
       * @return true if the block was destroyed
       */
      boolean breakNaturally(@NotNull ItemStack tool, boolean triggerEffect, boolean dropExperience);
@@ -31,10 +31,10 @@ index 0b02bfce9ee01c6beb14348129ab86c751c01e54..aba40431c5a1ae43106a678445483e06
  
      /**
 diff --git a/src/main/java/org/bukkit/block/data/BlockData.java b/src/main/java/org/bukkit/block/data/BlockData.java
-index 62273e32e87b0dbc568747a67156366d4d4972bd..bd987bd0a29618dfe07de50b194fd6fa694628ec 100644
+index e7ea3f9a60968f257c631bbefcc31653e6ae3728..dcfd515af841cbb957a9a651b6350c88840c041e 100644
 --- a/src/main/java/org/bukkit/block/data/BlockData.java
 +++ b/src/main/java/org/bukkit/block/data/BlockData.java
-@@ -151,4 +151,14 @@ public interface BlockData extends Cloneable {
+@@ -199,4 +199,14 @@ public interface BlockData extends Cloneable {
       * @return true if the face is sturdy and can support a block, false otherwise
       */
      boolean isFaceSturdy(@NotNull BlockFace face, @NotNull BlockSupport support);
diff --git a/patches/api/0392-Add-NamespacedKey-biome-methods.patch b/patches/api/0392-Add-NamespacedKey-biome-methods.patch
index 89d36528f2..aa346d768f 100644
--- a/patches/api/0392-Add-NamespacedKey-biome-methods.patch
+++ b/patches/api/0392-Add-NamespacedKey-biome-methods.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add NamespacedKey biome methods
 Co-authored-by: Thonk <30448663+ExcessiveAmountsOfZombies@users.noreply.github.com>
 
 diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index aa252abe42c184914d6b50ad1f94ba7ada22d7df..854be548e5a645e7312e6e9390d5255f8b1d61e6 100644
+index dda436f61b174bf1bd94033a09468626f099ee3a..0f4a642a851eace1f3694b9bc0027c2ffdff3695 100644
 --- a/src/main/java/org/bukkit/UnsafeValues.java
 +++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -243,5 +243,32 @@ public interface UnsafeValues {
+@@ -223,5 +223,32 @@ public interface UnsafeValues {
       * @throws IllegalArgumentException if {@link Material#isBlock()} is false
       */
      boolean isCollidable(@org.jetbrains.annotations.NotNull Material material);
diff --git a/patches/api/0399-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch b/patches/api/0399-Add-getDrops-to-BlockState.patch
similarity index 66%
rename from patches/api/0399-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
rename to patches/api/0399-Add-getDrops-to-BlockState.patch
index c23b7577e0..48f3a99f04 100644
--- a/patches/api/0399-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
+++ b/patches/api/0399-Add-getDrops-to-BlockState.patch
@@ -1,8 +1,10 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: MelnCat <melncatuwu@gmail.com>
 Date: Fri, 12 Aug 2022 23:24:53 -0700
-Subject: [PATCH] Add getDrops to BlockState and isPreferredTool to BlockData
+Subject: [PATCH] Add getDrops to BlockState
 
+Originally added isPreferredTool to BlockData but
+upstream added that.
 
 diff --git a/src/main/java/org/bukkit/block/BlockState.java b/src/main/java/org/bukkit/block/BlockState.java
 index 10cbe71917bc32cca61748bcb0aa3395c554dbf8..37ca7b6b0fcee8bec12026ec3715dcc47400cc11 100644
@@ -43,24 +45,3 @@ index 10cbe71917bc32cca61748bcb0aa3395c554dbf8..37ca7b6b0fcee8bec12026ec3715dcc4
 +    java.util.@org.jetbrains.annotations.Unmodifiable Collection<org.bukkit.inventory.ItemStack> getDrops(@NotNull org.bukkit.inventory.ItemStack tool, @Nullable org.bukkit.entity.Entity entity);
      // Paper end
  }
-diff --git a/src/main/java/org/bukkit/block/data/BlockData.java b/src/main/java/org/bukkit/block/data/BlockData.java
-index bd987bd0a29618dfe07de50b194fd6fa694628ec..b166d053b3c44f06cb1f5b643e7f7e117eb21d17 100644
---- a/src/main/java/org/bukkit/block/data/BlockData.java
-+++ b/src/main/java/org/bukkit/block/data/BlockData.java
-@@ -160,5 +160,16 @@ public interface BlockData extends Cloneable {
-      * @return is ticked randomly
-      */
-     boolean isRandomlyTicked();
-+
-+    /**
-+     * Returns if the given item is a preferred choice to break this block.
-+     *
-+     * In some cases this determines if a block will drop anything or extra
-+     * loot.
-+     *
-+     * @param tool The tool or item used for breaking this block
-+     * @return true if the tool is preferred for breaking this block
-+     */
-+    boolean isPreferredTool(@NotNull org.bukkit.inventory.ItemStack tool);
-     // Paper end
- }
diff --git a/patches/api/0412-ItemStack-damage-API.patch b/patches/api/0412-ItemStack-damage-API.patch
index fc4b8c7020..18ce400014 100644
--- a/patches/api/0412-ItemStack-damage-API.patch
+++ b/patches/api/0412-ItemStack-damage-API.patch
@@ -8,7 +8,7 @@ to simulate damage done to an itemstack and all
 the logic associated with damaging them
 
 diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
-index b18a833019c81b8e46535a1b4c42ba3987a97c90..717c7419d872286e38b6919503ab0e6537c55387 100644
+index f5a4160afb75549dd56a237cf99ec733efef9b4c..285b4028eb45439c052d6a2e9001a8c0bfacd49a 100644
 --- a/src/main/java/org/bukkit/entity/LivingEntity.java
 +++ b/src/main/java/org/bukkit/entity/LivingEntity.java
 @@ -1082,5 +1082,48 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
@@ -61,10 +61,10 @@ index b18a833019c81b8e46535a1b4c42ba3987a97c90..717c7419d872286e38b6919503ab0e65
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
-index b8a344fd900dcbd4b28085a54b85b16c742e9c6f..870c0ddd101094a3bce1ebf5ec4d42c51053db84 100644
+index 6f33145f1ccc7645616f310a68676207318c2a58..449d6e1995eedbfaeffdc5d1f1c2295378006aa8 100644
 --- a/src/main/java/org/bukkit/inventory/ItemStack.java
 +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
-@@ -977,5 +977,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
+@@ -971,5 +971,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
      public boolean canRepair(@NotNull ItemStack toBeRepaired) {
          return Bukkit.getUnsafe().isValidRepairItemStack(toBeRepaired, this);
      }
diff --git a/patches/api/0418-Mark-experimental-api-as-such.patch b/patches/api/0418-Mark-experimental-api-as-such.patch
index a75596d1c2..f9ae383a2e 100644
--- a/patches/api/0418-Mark-experimental-api-as-such.patch
+++ b/patches/api/0418-Mark-experimental-api-as-such.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Mark experimental api as such
 
 
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe08b0b9906 100644
+index 33371518fc8c5d97625f3d528ba8fee25d8c9c00..7eb5413ea1d94ddacd98edb57074611dac94a41c 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
-@@ -154,9 +154,11 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -154,9 +154,11 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      ACACIA_PLANKS(31312),
      DARK_OAK_PLANKS(20869),
      MANGROVE_PLANKS(7078),
@@ -20,7 +20,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_MOSAIC(10715),
      /**
       * BlockData: {@link Sapling}
-@@ -352,6 +354,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -352,6 +354,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Orientable}
       */
@@ -28,7 +28,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_BLOCK(20770, Orientable.class),
      /**
       * BlockData: {@link Orientable}
-@@ -428,6 +431,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -428,6 +431,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Orientable}
       */
@@ -36,7 +36,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      STRIPPED_BAMBOO_BLOCK(14799, Orientable.class),
      /**
       * BlockData: {@link Orientable}
-@@ -622,10 +626,12 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -622,10 +626,12 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Slab}
       */
@@ -49,7 +49,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_MOSAIC_SLAB(22118, Slab.class),
      /**
       * BlockData: {@link Slab}
-@@ -712,6 +718,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -712,6 +718,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link ChiseledBookshelf}
       */
@@ -57,7 +57,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      CHISELED_BOOKSHELF(8099, ChiseledBookshelf.class),
      MOSSY_COBBLESTONE(21900),
      OBSIDIAN(32723),
-@@ -805,6 +812,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -805,6 +812,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Fence}
       */
@@ -65,7 +65,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_FENCE(17207, Fence.class),
      /**
       * BlockData: {@link Fence}
-@@ -981,10 +989,12 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -981,10 +989,12 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Stairs}
       */
@@ -78,7 +78,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_MOSAIC_STAIRS(20977, Stairs.class),
      /**
       * BlockData: {@link Stairs}
-@@ -1828,6 +1838,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -1828,6 +1838,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Switch}
       */
@@ -86,7 +86,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_BUTTON(21810, Switch.class),
      /**
       * BlockData: {@link Switch}
-@@ -1884,6 +1895,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -1884,6 +1895,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Powerable}
       */
@@ -94,7 +94,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_PRESSURE_PLATE(26740, Powerable.class),
      /**
       * BlockData: {@link Powerable}
-@@ -1928,6 +1940,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -1928,6 +1940,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Door}
       */
@@ -102,7 +102,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_DOOR(19971, Door.class),
      /**
       * BlockData: {@link Door}
-@@ -1972,6 +1985,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -1972,6 +1985,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link TrapDoor}
       */
@@ -110,7 +110,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_TRAPDOOR(9174, TrapDoor.class),
      /**
       * BlockData: {@link TrapDoor}
-@@ -2012,6 +2026,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -2012,6 +2026,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Gate}
       */
@@ -118,7 +118,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_FENCE_GATE(14290, Gate.class),
      /**
       * BlockData: {@link Gate}
-@@ -2060,7 +2075,9 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -2060,7 +2075,9 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      DARK_OAK_CHEST_BOAT(8733, 1),
      MANGROVE_BOAT(20792, 1),
      MANGROVE_CHEST_BOAT(18572, 1),
@@ -128,7 +128,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_CHEST_RAFT(20056, 1),
      /**
       * BlockData: {@link StructureBlock}
-@@ -2194,6 +2211,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -2194,6 +2211,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Sign}
       */
@@ -136,7 +136,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_SIGN(26139, 16, Sign.class),
      /**
       * BlockData: {@link Sign}
-@@ -2206,42 +2224,52 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -2206,42 +2224,52 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link HangingSign}
       */
@@ -189,7 +189,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      WARPED_HANGING_SIGN(8195, 16, HangingSign.class),
      BUCKET(15215, 16),
      WATER_BUCKET(8802, 1),
-@@ -2265,6 +2293,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -2265,6 +2293,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      EGG(21603, 16),
      COMPASS(24139),
      RECOVERY_COMPASS(12710),
@@ -197,7 +197,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BUNDLE(16835, 1),
      FISHING_ROD(4167, 1, 64),
      CLOCK(14980),
-@@ -2405,6 +2434,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -2405,6 +2434,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      BEE_SPAWN_EGG(22924),
      BLAZE_SPAWN_EGG(4759),
      CAT_SPAWN_EGG(29583),
@@ -205,7 +205,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      CAMEL_SPAWN_EGG(14760),
      CAVE_SPIDER_SPAWN_EGG(23341),
      CHICKEN_SPAWN_EGG(5462),
-@@ -2515,6 +2545,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -2515,6 +2545,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Rotatable}
       */
@@ -213,7 +213,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      PIGLIN_HEAD(5512, Rotatable.class),
      NETHER_STAR(12469),
      PUMPKIN_PIE(28725),
-@@ -2916,46 +2947,57 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -2916,46 +2947,57 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link WallSign}
       */
@@ -271,7 +271,7 @@ index 56459876a7736bd3a015e0aba511313997f9ec65..e5b94299793ba7cb9071a3f3a35ddbe0
      BAMBOO_WALL_HANGING_SIGN(6669, WallHangingSign.class),
      /**
       * BlockData: {@link RedstoneWallTorch}
-@@ -3063,6 +3105,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -3063,6 +3105,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
      /**
       * BlockData: {@link Directional}
       */
@@ -427,10 +427,10 @@ index 17e4e0a822d4372e0a98612294ec0bd728830164..f827d8f508441a035974974d34450879
  
      /**
 diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index 5a0c96875d9c3bd32b4649a3fccd43af1ccb195b..b507b715f9b28b98e32f6589344a5066d1009f64 100644
+index 4915c1064a9b6bf1d485f9e6e42b9f6e4e12f236..91664b99f1158cb8a2e3c72ec082bf3c39487649 100644
 --- a/src/main/java/org/bukkit/entity/EntityType.java
 +++ b/src/main/java/org/bukkit/entity/EntityType.java
-@@ -276,6 +276,7 @@ public enum EntityType implements Keyed, net.kyori.adventure.translation.Transla
+@@ -278,6 +278,7 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans
      FROG("frog", Frog.class, -1),
      TADPOLE("tadpole", Tadpole.class, -1),
      WARDEN("warden", Warden.class, -1),
diff --git a/patches/api/0430-Add-missing-isFuel-Material-entries.patch b/patches/api/0430-Add-missing-isFuel-Material-entries.patch
index fa67c695f0..e240cc62ea 100644
--- a/patches/api/0430-Add-missing-isFuel-Material-entries.patch
+++ b/patches/api/0430-Add-missing-isFuel-Material-entries.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add missing isFuel Material entries
 
 
 diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3414ec913 100644
+index 7eb5413ea1d94ddacd98edb57074611dac94a41c..6bbb47d1f9d8d45326232024e82a0ebaf764fae7 100644
 --- a/src/main/java/org/bukkit/Material.java
 +++ b/src/main/java/org/bukkit/Material.java
-@@ -7467,6 +7467,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7459,6 +7459,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case ACACIA_DOOR:
              case ACACIA_FENCE:
              case ACACIA_FENCE_GATE:
@@ -16,7 +16,7 @@ index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3
              case ACACIA_LOG:
              case ACACIA_PLANKS:
              case ACACIA_PRESSURE_PLATE:
-@@ -7478,9 +7479,27 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7470,9 +7471,27 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case ACACIA_WOOD:
              case AZALEA:
              case BAMBOO:
@@ -44,7 +44,7 @@ index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3
              case BARREL:
              case BIRCH_BOAT:
              case BIRCH_BUTTON:
-@@ -7488,6 +7507,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7480,6 +7499,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case BIRCH_DOOR:
              case BIRCH_FENCE:
              case BIRCH_FENCE_GATE:
@@ -52,7 +52,7 @@ index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3
              case BIRCH_LOG:
              case BIRCH_PLANKS:
              case BIRCH_PRESSURE_PLATE:
-@@ -7528,6 +7548,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7520,6 +7540,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case DARK_OAK_DOOR:
              case DARK_OAK_FENCE:
              case DARK_OAK_FENCE_GATE:
@@ -60,7 +60,7 @@ index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3
              case DARK_OAK_LOG:
              case DARK_OAK_PLANKS:
              case DARK_OAK_PRESSURE_PLATE:
-@@ -7556,6 +7577,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7548,6 +7569,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case JUNGLE_DOOR:
              case JUNGLE_FENCE:
              case JUNGLE_FENCE_GATE:
@@ -68,7 +68,7 @@ index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3
              case JUNGLE_LOG:
              case JUNGLE_PLANKS:
              case JUNGLE_PRESSURE_PLATE:
-@@ -7587,6 +7609,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7579,6 +7601,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case MANGROVE_DOOR:
              case MANGROVE_FENCE:
              case MANGROVE_FENCE_GATE:
@@ -76,7 +76,7 @@ index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3
              case MANGROVE_LOG:
              case MANGROVE_PLANKS:
              case MANGROVE_PRESSURE_PLATE:
-@@ -7604,6 +7627,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7596,6 +7619,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case OAK_DOOR:
              case OAK_FENCE:
              case OAK_FENCE_GATE:
@@ -84,7 +84,7 @@ index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3
              case OAK_LOG:
              case OAK_PLANKS:
              case OAK_PRESSURE_PLATE:
-@@ -7633,6 +7657,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7625,6 +7649,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case SPRUCE_DOOR:
              case SPRUCE_FENCE:
              case SPRUCE_FENCE_GATE:
@@ -92,7 +92,7 @@ index e5b94299793ba7cb9071a3f3a35ddbe08b0b9906..ee471fbd7c2138cd330b2c64da4e77b3
              case SPRUCE_LOG:
              case SPRUCE_PLANKS:
              case SPRUCE_PRESSURE_PLATE:
-@@ -7645,6 +7670,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -7637,6 +7662,7 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
              case STICK:
              case STRIPPED_ACACIA_LOG:
              case STRIPPED_ACACIA_WOOD:
diff --git a/patches/api/0431-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch b/patches/api/0431-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
new file mode 100644
index 0000000000..98799cd97d
--- /dev/null
+++ b/patches/api/0431-Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
@@ -0,0 +1,93 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <jake.m.potrebic@gmail.com>
+Date: Tue, 7 Feb 2023 08:20:27 -0800
+Subject: [PATCH] Fix HandlerList for InventoryBlockStartEvent subclasses
+
+
+diff --git a/src/main/java/org/bukkit/event/block/BrewingStartEvent.java b/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
+index 9e54ef5b60bf5583c12e1edfa76f19013a5b2a65..fe6573d8fca0aa8d8f37f8b476fc45adc786795f 100644
+--- a/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
++++ b/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
+@@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull;
+  */
+ public class BrewingStartEvent extends InventoryBlockStartEvent {
+ 
+-    private static final HandlerList handlers = new HandlerList();
++    // Paper - remove HandlerList
+     private int brewingTime;
+ 
+     public BrewingStartEvent(@NotNull final Block furnace, @NotNull ItemStack source, int brewingTime) {
+@@ -36,14 +36,5 @@ public class BrewingStartEvent extends InventoryBlockStartEvent {
+         this.brewingTime = brewTime;
+     }
+ 
+-    @NotNull
+-    @Override
+-    public HandlerList getHandlers() {
+-        return handlers;
+-    }
+-
+-    @NotNull
+-    public static HandlerList getHandlerList() {
+-        return handlers;
+-    }
++    // Paper - remove HandlerList
+ }
+diff --git a/src/main/java/org/bukkit/event/block/CampfireStartEvent.java b/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
+index 53119742beda00a38111063243665bb995ae2188..1f7a8bf65e9ac3188f759f9b3c4d6edbf255942a 100644
+--- a/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
++++ b/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
+@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
+  */
+ public class CampfireStartEvent extends InventoryBlockStartEvent {
+ 
+-    private static final HandlerList handlers = new HandlerList();
++    // Paper - remove HandlerList
+     private int cookingTime;
+     private CampfireRecipe campfireRecipe;
+ 
+@@ -49,14 +49,5 @@ public class CampfireStartEvent extends InventoryBlockStartEvent {
+         this.cookingTime = cookTime;
+     }
+ 
+-    @NotNull
+-    @Override
+-    public HandlerList getHandlers() {
+-        return handlers;
+-    }
+-
+-    @NotNull
+-    public static HandlerList getHandlerList() {
+-        return handlers;
+-    }
++    // Paper - remove HandlerList
+ }
+diff --git a/src/main/java/org/bukkit/event/inventory/FurnaceStartSmeltEvent.java b/src/main/java/org/bukkit/event/inventory/FurnaceStartSmeltEvent.java
+index 1e55f50f04de78ae0b8832a8021ffc7327676e8e..e6ebc17c438f231d67e44a5390d06a8dafba6dfd 100644
+--- a/src/main/java/org/bukkit/event/inventory/FurnaceStartSmeltEvent.java
++++ b/src/main/java/org/bukkit/event/inventory/FurnaceStartSmeltEvent.java
+@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
+  * Called when a Furnace starts smelting.
+  */
+ public class FurnaceStartSmeltEvent extends InventoryBlockStartEvent {
+-    private static final HandlerList handlers = new HandlerList();
++    // Paper - remove HandlerList
+     private final CookingRecipe<?> recipe;
+     private int totalCookTime;
+ 
+@@ -56,14 +56,5 @@ public class FurnaceStartSmeltEvent extends InventoryBlockStartEvent {
+         this.totalCookTime = cookTime;
+     }
+ 
+-    @NotNull
+-    @Override
+-    public HandlerList getHandlers() {
+-        return handlers;
+-    }
+-
+-    @NotNull
+-    public static HandlerList getHandlerList() {
+-        return handlers;
+-    }
++    // Paper - remove HandlerList
+ }
diff --git a/patches/server/0009-MC-Utils.patch b/patches/server/0009-MC-Utils.patch
index 87e3b7ac56..6949088e48 100644
--- a/patches/server/0009-MC-Utils.patch
+++ b/patches/server/0009-MC-Utils.patch
@@ -7618,13 +7618,13 @@ index 0000000000000000000000000000000000000000..909b2c98e7a9117d2f737245e4661792
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 5499bdbd0d5e81f2e7dcf784eb80217082090010..ef2640eb9e98e9ce81abc604cc1c2264e0137ef6 100644
+index 8ded1f61a6088cf57847a409421e92e2d2007158..b39ded554ee86bf840ce04eba58ac19d40226c9f 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -99,8 +99,17 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -102,8 +102,17 @@ public final class CraftMagicNumbers implements UnsafeValues {
+     private static final BiMap<net.minecraft.world.level.material.Fluid, Fluid> FLUIDTYPE_FLUID = HashBiMap.create();
      private static final Map<Material, Item> MATERIAL_ITEM = new HashMap<>();
      private static final Map<Material, Block> MATERIAL_BLOCK = new HashMap<>();
-     private static final Map<Material, net.minecraft.world.level.material.Fluid> MATERIAL_FLUID = new HashMap<>();
 +    // Paper start
 +    private static final Map<org.bukkit.entity.EntityType, net.minecraft.world.entity.EntityType<?>> ENTITY_TYPE_ENTITY_TYPES = new HashMap<>();
 +    private static final Map<net.minecraft.world.entity.EntityType<?>, org.bukkit.entity.EntityType> ENTITY_TYPES_ENTITY_TYPE = new HashMap<>();
@@ -7639,7 +7639,7 @@ index 5499bdbd0d5e81f2e7dcf784eb80217082090010..ef2640eb9e98e9ce81abc604cc1c2264
          for (Block block : BuiltInRegistries.BLOCK) {
              BLOCK_MATERIAL.put(block, Material.getMaterial(BuiltInRegistries.BLOCK.getKey(block).getPath().toUpperCase(Locale.ROOT)));
          }
-@@ -166,6 +175,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -167,6 +176,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public static ResourceLocation key(Material mat) {
          return CraftNamespacedKey.toMinecraft(mat.getKey());
      }
diff --git a/patches/server/0010-Adventure.patch b/patches/server/0010-Adventure.patch
index 2d505563dd..53b00c9e02 100644
--- a/patches/server/0010-Adventure.patch
+++ b/patches/server/0010-Adventure.patch
@@ -4563,10 +4563,10 @@ index 78ea79b66cc9e90402ef5cdc2e5e04e0c74b1c26..4fede2161792ba3e7cdf0cc5a1f53318
  
          boolean hadFormat = false;
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index ef2640eb9e98e9ce81abc604cc1c2264e0137ef6..92cf1be3a9e188307e6d4e8e710fa67af2bafa9d 100644
+index b39ded554ee86bf840ce04eba58ac19d40226c9f..750f4b3930278c291f10015c7a8a8df57d04a286 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -68,6 +68,43 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -72,6 +72,43 @@ public final class CraftMagicNumbers implements UnsafeValues {
  
      private CraftMagicNumbers() {}
  
diff --git a/patches/server/0013-Timings-v2.patch b/patches/server/0013-Timings-v2.patch
index 22dc8f536b..5d8af4d353 100644
--- a/patches/server/0013-Timings-v2.patch
+++ b/patches/server/0013-Timings-v2.patch
@@ -2021,10 +2021,10 @@ index e52ef47b783785dc214746b678e7b549aea9a274..3d90b3426873a3528af14f7f1ab0adae
          this.value = value;
      }
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 92cf1be3a9e188307e6d4e8e710fa67af2bafa9d..c25f893ef1215a22c8bfa575e4711b9c92a25f0b 100644
+index 750f4b3930278c291f10015c7a8a8df57d04a286..702ab12f93e422b1ba9d544084fa7712e776c751 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -221,6 +221,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -222,6 +222,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
      }
      // Paper end
      // ========================================================================
@@ -2037,8 +2037,8 @@ index 92cf1be3a9e188307e6d4e8e710fa67af2bafa9d..c25f893ef1215a22c8bfa575e4711b9c
  
      public static byte toLegacyData(BlockState data) {
          return CraftLegacy.toLegacyData(data);
-@@ -413,6 +419,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
-         return CreativeCategory.BUILDING_BLOCKS; // TODO: Figure out what to do with this
+@@ -437,6 +443,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
+         return nmsItemStack.getItem().getDescriptionId(nmsItemStack);
      }
  
 +    // Paper start
diff --git a/patches/server/0027-Implement-Paper-VersionChecker.patch b/patches/server/0027-Implement-Paper-VersionChecker.patch
index cf9aa20c14..b8c3cd87f4 100644
--- a/patches/server/0027-Implement-Paper-VersionChecker.patch
+++ b/patches/server/0027-Implement-Paper-VersionChecker.patch
@@ -140,10 +140,10 @@ index 0000000000000000000000000000000000000000..351159bbdb0c8045f4983f54dee34430
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index c25f893ef1215a22c8bfa575e4711b9c92a25f0b..176d5bdc5bf048940ceb46dd0a69d9fb7d39821f 100644
+index 702ab12f93e422b1ba9d544084fa7712e776c751..cbb161e3daa0250ae2e12e3cec972708fccaeadc 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -424,6 +424,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -448,6 +448,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public String getTimingsServerName() {
          return io.papermc.paper.configuration.GlobalConfiguration.get().timings.serverName;
      }
diff --git a/patches/server/0222-Add-CraftMagicNumbers.isSupportedApiVersion.patch b/patches/server/0222-Add-CraftMagicNumbers.isSupportedApiVersion.patch
index ed7c5137a2..1ee7037234 100644
--- a/patches/server/0222-Add-CraftMagicNumbers.isSupportedApiVersion.patch
+++ b/patches/server/0222-Add-CraftMagicNumbers.isSupportedApiVersion.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add CraftMagicNumbers.isSupportedApiVersion()
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 176d5bdc5bf048940ceb46dd0a69d9fb7d39821f..9c189cc0596301c16e84f7df39b983a4392583d2 100644
+index cbb161e3daa0250ae2e12e3cec972708fccaeadc..4d74e7755d3812746d9e9014046c5c22f400deec 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -429,6 +429,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -453,6 +453,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
          return new com.destroystokyo.paper.PaperVersionFetcher();
      }
diff --git a/patches/server/0247-Optimize-CraftBlockData-Creation.patch b/patches/server/0247-Optimize-CraftBlockData-Creation.patch
index 5f248143e3..10aba9b7b7 100644
--- a/patches/server/0247-Optimize-CraftBlockData-Creation.patch
+++ b/patches/server/0247-Optimize-CraftBlockData-Creation.patch
@@ -26,10 +26,10 @@ index 5bba39a066ede470cebc92724735c86ecfd4239d..c53b80cba9ea658d20e527a9bfcd6b5d
          // Paper start
          protected boolean shapeExceedsCube = true;
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-index 953fe30e445885809caa16161262089a7786057b..6182ce8c32a334d3488c03f42bf3befcc0b80503 100644
+index 919a8a5ff0129a17f7f2b04aefe104d942da6e17..198a3f04ad6864460b9e7dd42444fab423a4ad8f 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-@@ -542,7 +542,17 @@ public class CraftBlockData implements BlockData {
+@@ -545,7 +545,17 @@ public class CraftBlockData implements BlockData {
          return craft;
      }
  
diff --git a/patches/server/0315-Implement-CraftBlockSoundGroup.patch b/patches/server/0315-Implement-CraftBlockSoundGroup.patch
index 640d4c0575..65d89b1928 100644
--- a/patches/server/0315-Implement-CraftBlockSoundGroup.patch
+++ b/patches/server/0315-Implement-CraftBlockSoundGroup.patch
@@ -50,12 +50,12 @@ index 0000000000000000000000000000000000000000..c5b07ec346105d1b95c1c938ffca12a2
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 13da02b84d7e748d61fdf5db01d92a8d8cd5c799..2e3b675dca8cec906d533141e158e5db6ae87042 100644
+index 0951e0836ef16c99505c884ea80e5bd23873b7e6..ee8315595faae22c63c97748d8047038a671263e 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-@@ -646,4 +646,16 @@ public class CraftBlock implements Block {
- 
-         return iblockdata.canSurvive(world, this.position);
+@@ -647,4 +647,16 @@ public class CraftBlock implements Block {
+     public String getTranslationKey() {
+         return this.getNMS().getBlock().getDescriptionId();
      }
 +
 +    // Paper start
diff --git a/patches/server/0366-Add-Raw-Byte-ItemStack-Serialization.patch b/patches/server/0366-Add-Raw-Byte-ItemStack-Serialization.patch
index a6b7853876..57aeeeb569 100644
--- a/patches/server/0366-Add-Raw-Byte-ItemStack-Serialization.patch
+++ b/patches/server/0366-Add-Raw-Byte-ItemStack-Serialization.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add Raw Byte ItemStack Serialization
 Serializes using NBT which is safer for server data migrations than bukkits format.
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 9c189cc0596301c16e84f7df39b983a4392583d2..7a017d69bec0fb1e17c47d7edcfce4b1c6836693 100644
+index 4d74e7755d3812746d9e9014046c5c22f400deec..10c26e104827502cc40488455af3f493f4ddb4f1 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -434,6 +434,52 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -458,6 +458,52 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public boolean isSupportedApiVersion(String apiVersion) {
          return apiVersion != null && SUPPORTED_API.contains(apiVersion);
      }
diff --git a/patches/server/0473-Add-methods-to-get-translation-keys.patch b/patches/server/0473-Add-methods-to-get-translation-keys.patch
index 83fd650c84..7816dbd087 100644
--- a/patches/server/0473-Add-methods-to-get-translation-keys.patch
+++ b/patches/server/0473-Add-methods-to-get-translation-keys.patch
@@ -10,22 +10,17 @@ public org.bukkit.craftbukkit.inventory.CraftMetaFirework getNBT(Lorg/bukkit/Fir
 Co-authored-by: MeFisto94 <MeFisto94@users.noreply.github.com>
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 3123a8d52236757c3e7ca3b099cc664485cb3c72..eba015c33dcf63ff85569eb7ee7e6b3def2b05ac 100644
+index ac543a4c6bc21435de3c6721af37fd5f554e403e..1f780a326f4982d4be1855516fb1461b4d90bcc6 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-@@ -693,5 +693,15 @@ public class CraftBlock implements Block {
+@@ -694,5 +694,10 @@ public class CraftBlock implements Block {
      public org.bukkit.SoundGroup getBlockSoundGroup() {
          return org.bukkit.craftbukkit.CraftSoundGroup.getSoundGroup(this.getNMS().getSoundType());
      }
 +
 +    @Override
-+    public String getTranslationKey() {
-+        return this.translationKey();
-+    }
-+
-+    @Override
 +    public String translationKey() {
-+        return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this);
++        return this.getNMS().getBlock().getDescriptionId();
 +    }
      // Paper end
  }
@@ -45,41 +40,6 @@ index e8334e2264510f5101e80b4f130e7ae1442560d7..57decf4156f176ebcc988478c17856cb
      // Paper end
  
      public net.minecraft.world.item.enchantment.Enchantment getHandle() {
-diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 7a017d69bec0fb1e17c47d7edcfce4b1c6836693..d85526b8ddd26b2113dd8df7bf2d58ff432d86bc 100644
---- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -480,6 +480,30 @@ public final class CraftMagicNumbers implements UnsafeValues {
-         Preconditions.checkArgument(dataVersion <= getDataVersion(), "Newer version! Server downgrades are not supported!");
-         return compound;
-     }
-+
-+    @Override
-+    public String getTranslationKey(Material mat) {
-+        if (mat.isBlock()) {
-+            return getBlock(mat).getDescriptionId();
-+        }
-+        return getItem(mat).getDescriptionId();
-+    }
-+
-+    @Override
-+    public String getTranslationKey(org.bukkit.block.Block block) {
-+        return ((org.bukkit.craftbukkit.block.CraftBlock)block).getNMS().getBlock().getDescriptionId();
-+    }
-+
-+    @Override
-+    public String getTranslationKey(org.bukkit.entity.EntityType type) {
-+        return net.minecraft.world.entity.EntityType.byString(type.getName()).map(net.minecraft.world.entity.EntityType::getDescriptionId).orElse(null);
-+    }
-+
-+    @Override
-+    public String getTranslationKey(org.bukkit.inventory.ItemStack itemStack) {
-+        net.minecraft.world.item.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(itemStack);
-+        return nmsItemStack.getItem().getDescriptionId(nmsItemStack);
-+    }
-     // Paper end
- 
-     /**
 diff --git a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
 index fab3063fffa959ac7f0eb5937f2fae94d11b6591..4cc8ca5dd95e9cccd08ada057a9592a1421f434a 100644
 --- a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java
diff --git a/patches/server/0475-Cache-block-data-strings.patch b/patches/server/0475-Cache-block-data-strings.patch
index a3a8b3d59a..3191156197 100644
--- a/patches/server/0475-Cache-block-data-strings.patch
+++ b/patches/server/0475-Cache-block-data-strings.patch
@@ -17,10 +17,10 @@ index 8e101269ca2edf5f3cc9c1ccedd03afaf1392d19..8ce413404930cca3a470bb58d73b9bd0
  
          if (this.isSameThread()) {
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-index 6182ce8c32a334d3488c03f42bf3befcc0b80503..45c90505c778bfdebf0884190a422d12a0673d71 100644
+index 198a3f04ad6864460b9e7dd42444fab423a4ad8f..14b8d0754955747d5a755eaf628e861929f5f47f 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-@@ -509,9 +509,39 @@ public class CraftBlockData implements BlockData {
+@@ -512,9 +512,39 @@ public class CraftBlockData implements BlockData {
          Preconditions.checkState(CraftBlockData.MAP.put(nms, bukkit) == null, "Duplicate mapping %s->%s", nms, bukkit);
      }
  
diff --git a/patches/server/0480-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/server/0480-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
index b1c0921595..17912b6159 100644
--- a/patches/server/0480-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
+++ b/patches/server/0480-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
@@ -21,14 +21,15 @@ index 873206bb65b2412d3066a0f7e35fe0684e29661a..d170254265a789998be96ce1dcaf71c9
 +    // Paper end
  }
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index d85526b8ddd26b2113dd8df7bf2d58ff432d86bc..0fc844b717a466e7ac0438bbf04371bba6a19ee2 100644
+index 10c26e104827502cc40488455af3f493f4ddb4f1..97de89745a8bd6526a136506c6d17e5056a9d8d9 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -504,6 +504,10 @@ public final class CraftMagicNumbers implements UnsafeValues {
-         net.minecraft.world.item.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(itemStack);
-         return nmsItemStack.getItem().getDescriptionId(nmsItemStack);
+@@ -504,6 +504,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+         Preconditions.checkArgument(dataVersion <= getDataVersion(), "Newer version! Server downgrades are not supported!");
+         return compound;
      }
 +
++    @Override
 +    public int nextEntityId() {
 +        return net.minecraft.world.entity.Entity.nextEntityId();
 +    }
diff --git a/patches/server/0487-Optimise-getType-calls.patch b/patches/server/0487-Optimise-getType-calls.patch
index 67393fc6a5..1bf130189f 100644
--- a/patches/server/0487-Optimise-getType-calls.patch
+++ b/patches/server/0487-Optimise-getType-calls.patch
@@ -41,7 +41,7 @@ index 484e5d5a2793d18eb49b73898d944776a1ec48e8..05512cc19eb213b6be5c869e133376ee
  
      @Override
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index eba015c33dcf63ff85569eb7ee7e6b3def2b05ac..01827f2398cec6e18ab490e664360beed9dbca83 100644
+index 1f780a326f4982d4be1855516fb1461b4d90bcc6..998cb47c4d3d1c67467469e661f80d231d17c04a 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 @@ -226,7 +226,7 @@ public class CraftBlock implements Block {
@@ -67,10 +67,10 @@ index 0a755f38fae9dc84440f43113920c5b4c6d8218b..7b9e943b391c061782fccd2b8d705cee
  
      public void setFlag(int flag) {
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-index 45c90505c778bfdebf0884190a422d12a0673d71..3399e8cdf2230bd71444abb43829c54d7277ce36 100644
+index 14b8d0754955747d5a755eaf628e861929f5f47f..7acf213194f61d04cffabaaee6c1372bfa2e1933 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-@@ -50,7 +50,7 @@ public class CraftBlockData implements BlockData {
+@@ -53,7 +53,7 @@ public class CraftBlockData implements BlockData {
  
      @Override
      public Material getMaterial() {
diff --git a/patches/server/0491-Fix-item-locations-dropped-from-campfires.patch b/patches/server/0491-Fix-item-locations-dropped-from-campfires.patch
index ec0156c522..db503bc46a 100644
--- a/patches/server/0491-Fix-item-locations-dropped-from-campfires.patch
+++ b/patches/server/0491-Fix-item-locations-dropped-from-campfires.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Fix item locations dropped from campfires
 Fixes #4259 by not flooring the blockposition among other weirdness
 
 diff --git a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
-index 9ef6b391268a99303aa853623d43c96073a13c9e..c6ae14009463b2d64acd4d3beb86d3233bcbae66 100644
+index 683958d65e4b926231b68c68744af13ef18fba8a..b07b83f4c16e85304b5da7a245810dd2741398e7 100644
 --- a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
 +++ b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
-@@ -79,7 +79,11 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+@@ -81,7 +81,11 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
                          result = blockCookEvent.getResult();
                          itemstack1 = CraftItemStack.asNMSCopy(result);
                          // CraftBukkit end
diff --git a/patches/server/0498-Fix-client-lag-on-advancement-loading.patch b/patches/server/0498-Fix-client-lag-on-advancement-loading.patch
index 6702720a1d..fd96d05210 100644
--- a/patches/server/0498-Fix-client-lag-on-advancement-loading.patch
+++ b/patches/server/0498-Fix-client-lag-on-advancement-loading.patch
@@ -15,10 +15,10 @@ manually reload the advancement data for all players, which
 normally takes place as a part of the datapack reloading.
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 0fc844b717a466e7ac0438bbf04371bba6a19ee2..00cffc8666cc5e0694da2a3d2a2efab457781374 100644
+index 97de89745a8bd6526a136506c6d17e5056a9d8d9..4b7afdfea75e1023f68c1f9dbaf2db23010a0c30 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -344,7 +344,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -345,7 +345,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
                      Bukkit.getLogger().log(Level.SEVERE, "Error saving advancement " + key, ex);
                  }
  
diff --git a/patches/server/0505-Add-Destroy-Speed-API.patch b/patches/server/0505-Add-Destroy-Speed-API.patch
index 503c7fb25f..92681b95f5 100644
--- a/patches/server/0505-Add-Destroy-Speed-API.patch
+++ b/patches/server/0505-Add-Destroy-Speed-API.patch
@@ -6,12 +6,12 @@ Subject: [PATCH] Add Destroy Speed API
 Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 01827f2398cec6e18ab490e664360beed9dbca83..ac831b22930ad02951186b6326b0c542de4c9881 100644
+index 998cb47c4d3d1c67467469e661f80d231d17c04a..c3ab1a60f60806e2b91b633bf89389cf434443ce 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-@@ -703,5 +703,26 @@ public class CraftBlock implements Block {
+@@ -699,5 +699,26 @@ public class CraftBlock implements Block {
      public String translationKey() {
-         return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this);
+         return this.getNMS().getBlock().getDescriptionId();
      }
 +
 +    @Override
diff --git a/patches/server/0548-Add-PaperRegistry.patch b/patches/server/0548-Add-PaperRegistry.patch
index 6553c4cfb1..943aa745fd 100644
--- a/patches/server/0548-Add-PaperRegistry.patch
+++ b/patches/server/0548-Add-PaperRegistry.patch
@@ -205,10 +205,10 @@ index 04137173ca7034b9dff37a68518e8b6fb0330188..9b1bde95e8303e5d4adfe92f09240df8
              // Paper start
              if (Thread.currentThread() != this.serverThread) {
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 00cffc8666cc5e0694da2a3d2a2efab457781374..2ba9cac66413ddc0a830dbb2b2644ed9d40c9c99 100644
+index 4b7afdfea75e1023f68c1f9dbaf2db23010a0c30..c375ad0211ea5f3a1a80944a920d4e394b06f7f6 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -514,6 +514,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -515,6 +515,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public int nextEntityId() {
          return net.minecraft.world.entity.Entity.nextEntityId();
      }
@@ -221,7 +221,7 @@ index 00cffc8666cc5e0694da2a3d2a2efab457781374..2ba9cac66413ddc0a830dbb2b2644ed9
  
      /**
 diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java
-index a18b0bd17ec3dd021136ec873d93692fffa74dad..a41c386a60d004f065d837aaf10d1d6c0e2f8976 100644
+index 3d9ece71fecd5151bb3862282f6021df2d73e3dc..b71602a088de181296dcabed0ac3a2b193ed15e6 100644
 --- a/src/test/java/org/bukkit/support/AbstractTestingBase.java
 +++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java
 @@ -49,6 +49,15 @@ public abstract class AbstractTestingBase {
diff --git a/patches/server/0580-Add-recipe-to-cook-events.patch b/patches/server/0580-Add-recipe-to-cook-events.patch
index 71eccd16a2..c031ab7d5e 100644
--- a/patches/server/0580-Add-recipe-to-cook-events.patch
+++ b/patches/server/0580-Add-recipe-to-cook-events.patch
@@ -18,10 +18,10 @@ index 34e375ab81b539ece769c943768342dbb542d0bb..0aa436da54050db81bdcb9f447660a88
  
              if (furnaceSmeltEvent.isCancelled()) {
 diff --git a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
-index c6ae14009463b2d64acd4d3beb86d3233bcbae66..06df710f58ca7d55b19c0db9d393a73ca6e5aa79 100644
+index b07b83f4c16e85304b5da7a245810dd2741398e7..0f7e765263a09a3f8b021bbac8d062c72ab3bdc0 100644
 --- a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
 +++ b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
-@@ -60,7 +60,9 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+@@ -62,7 +62,9 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
  
                  if (campfire.cookingProgress[i] >= campfire.cookingTime[i]) {
                      SimpleContainer inventorysubcontainer = new SimpleContainer(new ItemStack[]{itemstack});
@@ -32,7 +32,7 @@ index c6ae14009463b2d64acd4d3beb86d3233bcbae66..06df710f58ca7d55b19c0db9d393a73c
                          return recipecampfire.assemble(inventorysubcontainer);
                      }).orElse(itemstack);
  
-@@ -69,7 +71,7 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+@@ -71,7 +73,7 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
                          CraftItemStack source = CraftItemStack.asCraftMirror(itemstack);
                          org.bukkit.inventory.ItemStack result = CraftItemStack.asBukkitCopy(itemstack1);
  
diff --git a/patches/server/0581-Add-Block-isValidTool.patch b/patches/server/0581-Add-Block-isValidTool.patch
index 7ec4cf1dcf..eb96ef70ea 100644
--- a/patches/server/0581-Add-Block-isValidTool.patch
+++ b/patches/server/0581-Add-Block-isValidTool.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add Block#isValidTool
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 30b5a78a93405f3a03624ed1331670770aaa3765..974ab329f92f488aba0999cef25e3b8e7e062209 100644
+index 23a9469ff63f1be7ab0091b2c86a614eaeba9f55..e8d96c1e5dde67436fba1bfc6585c3e4a5c1a63c 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-@@ -743,5 +743,9 @@ public class CraftBlock implements Block {
+@@ -739,5 +739,9 @@ public class CraftBlock implements Block {
          }
          return speed;
      }
diff --git a/patches/server/0583-Expand-world-key-API.patch b/patches/server/0583-Expand-world-key-API.patch
index a4b749f3c2..002ecb48ac 100644
--- a/patches/server/0583-Expand-world-key-API.patch
+++ b/patches/server/0583-Expand-world-key-API.patch
@@ -67,10 +67,10 @@ index 6c2ea3e0cf385d6893faf5430b29dbe2589786b0..2dbfd750088dbf7a15fc147d9f215c19
          // Check if a World already exists with the UID.
          if (this.getWorld(world.getUID()) != null) {
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 2ba9cac66413ddc0a830dbb2b2644ed9d40c9c99..4b8642d20341067ee149fbe9a23e64042127a2b2 100644
+index c375ad0211ea5f3a1a80944a920d4e394b06f7f6..abb860bb13774c93f2e87d81b0665225672cda5d 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -519,6 +519,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -520,6 +520,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public <T extends org.bukkit.Keyed> Registry<T> registryFor(Class<T> classOfT) {
          return io.papermc.paper.registry.PaperRegistry.getRegistry(classOfT);
      }
diff --git a/patches/server/0585-Item-Rarity-API.patch b/patches/server/0585-Item-Rarity-API.patch
index a67daea35e..968bfaf360 100644
--- a/patches/server/0585-Item-Rarity-API.patch
+++ b/patches/server/0585-Item-Rarity-API.patch
@@ -7,10 +7,10 @@ Subject: [PATCH] Item Rarity API
 public net.minecraft.world.item.Item rarity
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 4b8642d20341067ee149fbe9a23e64042127a2b2..f31723187a7189cf1c9213f74f094ad196421a80 100644
+index abb860bb13774c93f2e87d81b0665225672cda5d..d0d851dff3a42939ca4591fdf7e7afcdc728ff13 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -524,6 +524,20 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -525,6 +525,20 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public String getMainLevelName() {
          return ((net.minecraft.server.dedicated.DedicatedServer) net.minecraft.server.MinecraftServer.getServer()).getProperties().levelName;
      }
diff --git a/patches/server/0591-Expose-protocol-version.patch b/patches/server/0591-Expose-protocol-version.patch
index 59694eb52c..6c0b4f54e4 100644
--- a/patches/server/0591-Expose-protocol-version.patch
+++ b/patches/server/0591-Expose-protocol-version.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose protocol version
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index f31723187a7189cf1c9213f74f094ad196421a80..46be2c75d68abaccc78e2120a0f45d344050c76d 100644
+index d0d851dff3a42939ca4591fdf7e7afcdc728ff13..a61f42ddf4bcd00294a1aa050c9dc50d67379c44 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -538,6 +538,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -539,6 +539,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public io.papermc.paper.inventory.ItemRarity getItemStackRarity(org.bukkit.inventory.ItemStack itemStack) {
          return io.papermc.paper.inventory.ItemRarity.values()[getItem(itemStack.getType()).getRarity(CraftItemStack.asNMSCopy(itemStack)).ordinal()];
      }
diff --git a/patches/server/0620-ItemStack-repair-check-API.patch b/patches/server/0620-ItemStack-repair-check-API.patch
index 1716a87abc..de9e083c3a 100644
--- a/patches/server/0620-ItemStack-repair-check-API.patch
+++ b/patches/server/0620-ItemStack-repair-check-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack repair check API
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 46be2c75d68abaccc78e2120a0f45d344050c76d..d7ebb29138352661f4fb3fb4561d96dab812b1b7 100644
+index a61f42ddf4bcd00294a1aa050c9dc50d67379c44..7aaa292f6495a9431687617251cae726675f063a 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -539,6 +539,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -540,6 +540,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
          return io.papermc.paper.inventory.ItemRarity.values()[getItem(itemStack.getType()).getRarity(CraftItemStack.asNMSCopy(itemStack)).ordinal()];
      }
  
diff --git a/patches/server/0627-Attributes-API-for-item-defaults.patch b/patches/server/0627-Attributes-API-for-item-defaults.patch
index bb66b43c47..0cd0c44b09 100644
--- a/patches/server/0627-Attributes-API-for-item-defaults.patch
+++ b/patches/server/0627-Attributes-API-for-item-defaults.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Attributes API for item defaults
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index d7ebb29138352661f4fb3fb4561d96dab812b1b7..ec49b0719491f52057818a6fc2b4d3f16c7fc440 100644
+index 7aaa292f6495a9431687617251cae726675f063a..9a5ac0794cca60b6457e15caf797c506719877a3 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -547,6 +547,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -548,6 +548,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
          return CraftMagicNumbers.getItem(itemToBeRepaired.getType()).isValidRepairItem(CraftItemStack.asNMSCopy(itemToBeRepaired), CraftItemStack.asNMSCopy(repairMaterial));
      }
  
diff --git a/patches/server/0684-Get-entity-default-attributes.patch b/patches/server/0684-Get-entity-default-attributes.patch
index aeeb38dc20..90242f825b 100644
--- a/patches/server/0684-Get-entity-default-attributes.patch
+++ b/patches/server/0684-Get-entity-default-attributes.patch
@@ -81,10 +81,10 @@ index 0000000000000000000000000000000000000000..cf9d28ea97d93cec05c9fb768d59e283
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index ec49b0719491f52057818a6fc2b4d3f16c7fc440..30ac1162851331526f3fc00332eded67be48e1d4 100644
+index 9a5ac0794cca60b6457e15caf797c506719877a3..690d2ddff8b0cb31d35f2c3b4a26b6e92ce686da 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -564,6 +564,18 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -565,6 +565,18 @@ public final class CraftMagicNumbers implements UnsafeValues {
      public int getProtocolVersion() {
          return net.minecraft.SharedConstants.getCurrentVersion().getProtocolVersion();
      }
diff --git a/patches/server/0690-Add-isCollidable-methods-to-various-places.patch b/patches/server/0690-Add-isCollidable-methods-to-various-places.patch
index eda75c590e..3ec2e6e213 100644
--- a/patches/server/0690-Add-isCollidable-methods-to-various-places.patch
+++ b/patches/server/0690-Add-isCollidable-methods-to-various-places.patch
@@ -7,7 +7,7 @@ Subject: [PATCH] Add isCollidable methods to various places
 public net.minecraft.world.level.block.state.BlockBehaviour hasCollision
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 60aa47a78b9d5921dffd1e205c0b69f453a94851..b7496922faee8bc5d82f3f5922f6fb2fe44a8d2f 100644
+index 4cfefcd6dc1ccdc9ecc52c9965fef5a3e339f862..5343ae3cdda55d7e0b41747c7eccb52e6828f6c9 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 @@ -482,6 +482,11 @@ public class CraftBlock implements Block {
@@ -39,10 +39,10 @@ index 7b9e943b391c061782fccd2b8d705ceec8db50fe..966ac60daebb7bb211ab8096fc0c5f33
 +    // Paper end
  }
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 30ac1162851331526f3fc00332eded67be48e1d4..abffb2328a0a85a6a5c664d58d2738b833b9431d 100644
+index 690d2ddff8b0cb31d35f2c3b4a26b6e92ce686da..594828d3d395899bbb2c05e34911ad763393461a 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -576,6 +576,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -577,6 +577,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
          var supplier = net.minecraft.world.entity.ai.attributes.DefaultAttributes.getSupplier((net.minecraft.world.entity.EntityType<? extends net.minecraft.world.entity.LivingEntity>) net.minecraft.core.registries.BuiltInRegistries.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(bukkitEntityKey)));
          return new io.papermc.paper.attribute.UnmodifiableAttributeMap(supplier);
      }
diff --git a/patches/server/0693-Add-Raw-Byte-Entity-Serialization.patch b/patches/server/0693-Add-Raw-Byte-Entity-Serialization.patch
index 0cbcce0f60..26892ff6c7 100644
--- a/patches/server/0693-Add-Raw-Byte-Entity-Serialization.patch
+++ b/patches/server/0693-Add-Raw-Byte-Entity-Serialization.patch
@@ -45,10 +45,10 @@ index f1ee89047e8cd916c762b91162842e3f981856b3..726a4ae7ab928eda3ae1c1e98f342157
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index abffb2328a0a85a6a5c664d58d2738b833b9431d..90dbc63a7472b923ed4faca5ac52f9438126fa63 100644
+index 594828d3d395899bbb2c05e34911ad763393461a..34e4d36024900ae174170c0a0f18b8dda8dd52f2 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -459,6 +459,29 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -483,6 +483,29 @@ public final class CraftMagicNumbers implements UnsafeValues {
          return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.of(ca.spottedleaf.dataconverter.minecraft.MCDataConverter.convertTag(ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.ITEM_STACK, compound, dataVersion, getDataVersion())));
      }
  
diff --git a/patches/server/0763-Add-more-Campfire-API.patch b/patches/server/0763-Add-more-Campfire-API.patch
index 5761fef3d0..db98ffe8ae 100644
--- a/patches/server/0763-Add-more-Campfire-API.patch
+++ b/patches/server/0763-Add-more-Campfire-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add more Campfire API
 
 
 diff --git a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
-index 06df710f58ca7d55b19c0db9d393a73ca6e5aa79..830326496e2f961682daadc7a7859247042b4cdd 100644
+index 0f7e765263a09a3f8b021bbac8d062c72ab3bdc0..01d8f1c985223eec83beb4a84a710d1bf8d70849 100644
 --- a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
 +++ b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
-@@ -39,6 +39,7 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+@@ -41,6 +41,7 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
      public final int[] cookingProgress;
      public final int[] cookingTime;
      private final RecipeManager.CachedCheck<Container, CampfireCookingRecipe> quickCheck;
@@ -16,7 +16,7 @@ index 06df710f58ca7d55b19c0db9d393a73ca6e5aa79..830326496e2f961682daadc7a7859247
  
      public CampfireBlockEntity(BlockPos pos, BlockState state) {
          super(BlockEntityType.CAMPFIRE, pos, state);
-@@ -46,6 +47,7 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+@@ -48,6 +49,7 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
          this.cookingProgress = new int[4];
          this.cookingTime = new int[4];
          this.quickCheck = RecipeManager.createCheck(RecipeType.CAMPFIRE_COOKING);
@@ -24,7 +24,7 @@ index 06df710f58ca7d55b19c0db9d393a73ca6e5aa79..830326496e2f961682daadc7a7859247
      }
  
      public static void cookTick(Level world, BlockPos pos, BlockState state, CampfireBlockEntity campfire) {
-@@ -56,7 +58,9 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+@@ -58,7 +60,9 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
  
              if (!itemstack.isEmpty()) {
                  flag = true;
@@ -34,7 +34,7 @@ index 06df710f58ca7d55b19c0db9d393a73ca6e5aa79..830326496e2f961682daadc7a7859247
  
                  if (campfire.cookingProgress[i] >= campfire.cookingTime[i]) {
                      SimpleContainer inventorysubcontainer = new SimpleContainer(new ItemStack[]{itemstack});
-@@ -165,6 +169,16 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+@@ -167,6 +171,16 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
              System.arraycopy(aint, 0, this.cookingTime, 0, Math.min(this.cookingTime.length, aint.length));
          }
  
@@ -51,7 +51,7 @@ index 06df710f58ca7d55b19c0db9d393a73ca6e5aa79..830326496e2f961682daadc7a7859247
      }
  
      @Override
-@@ -173,6 +187,13 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+@@ -175,6 +189,13 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
          ContainerHelper.saveAllItems(nbt, this.items, true);
          nbt.putIntArray("CookingTimes", this.cookingProgress);
          nbt.putIntArray("CookingTotalTimes", this.cookingTime);
diff --git a/patches/server/0807-Custom-Potion-Mixes.patch b/patches/server/0807-Custom-Potion-Mixes.patch
index f9e77e980d..b5a930038c 100644
--- a/patches/server/0807-Custom-Potion-Mixes.patch
+++ b/patches/server/0807-Custom-Potion-Mixes.patch
@@ -151,10 +151,10 @@ index 421c2131fec0b7266c773c3f1983308f6921df6b..12d9556a11ac4ef2e7a62fcd2686d868
          addContainer(Items.POTION);
          addContainer(Items.SPLASH_POTION);
 diff --git a/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
-index 3d688e334c7287f41460bd866bfd1155e8bb55d2..55006724ccec9f3de828ec18693728e9741ff65f 100644
+index cf2b6487a640a7a613f3b3604ca7b1063b3ff102..0bab2693b91d5bab222c7db8bc6965ccde954003 100644
 --- a/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
 +++ b/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
-@@ -335,7 +335,7 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
+@@ -340,7 +340,7 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
  
      @Override
      public boolean canPlaceItem(int slot, ItemStack stack) {
diff --git a/patches/server/0808-Fix-Fluid-tags-isTagged-method.patch b/patches/server/0808-Fix-Fluid-tags-isTagged-method.patch
deleted file mode 100644
index adf5cdf802..0000000000
--- a/patches/server/0808-Fix-Fluid-tags-isTagged-method.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <jake.m.potrebic@gmail.com>
-Date: Tue, 1 Mar 2022 12:45:50 -0800
-Subject: [PATCH] Fix Fluid tags isTagged method
-
-
-diff --git a/src/main/java/org/bukkit/craftbukkit/tag/CraftFluidTag.java b/src/main/java/org/bukkit/craftbukkit/tag/CraftFluidTag.java
-index 89cb1ec575c0f58e9934d98b056621348dbbe27a..cdd474e9b0363641839a66d3e61fec46c735879a 100644
---- a/src/main/java/org/bukkit/craftbukkit/tag/CraftFluidTag.java
-+++ b/src/main/java/org/bukkit/craftbukkit/tag/CraftFluidTag.java
-@@ -16,7 +16,7 @@ public class CraftFluidTag extends CraftTag<net.minecraft.world.level.material.F
- 
-     @Override
-     public boolean isTagged(Fluid fluid) {
--        return CraftMagicNumbers.getFluid(fluid).is(tag);
-+        return registry.getHolderOrThrow(net.minecraft.resources.ResourceKey.create(net.minecraft.core.Registry.FLUID_REGISTRY, org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(fluid.getKey()))).is(tag); // Paper
-     }
- 
-     @Override
-diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 90dbc63a7472b923ed4faca5ac52f9438126fa63..73e82653e0a68560c25ae41ade4c58111cbcd276 100644
---- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -205,7 +205,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
-         return CraftMagicNumbers.MATERIAL_BLOCK.get(material);
-     }
- 
--    public static net.minecraft.world.level.material.Fluid getFluid(Fluid fluid) {
-+    public static net.minecraft.world.level.material.Fluid getFluid(Material fluid) { // Paper - wrong type
-         return CraftMagicNumbers.MATERIAL_FLUID.get(fluid);
-     }
- 
diff --git a/patches/server/0809-Force-close-world-loading-screen.patch b/patches/server/0808-Force-close-world-loading-screen.patch
similarity index 100%
rename from patches/server/0809-Force-close-world-loading-screen.patch
rename to patches/server/0808-Force-close-world-loading-screen.patch
diff --git a/patches/server/0810-Fix-falling-block-spawn-methods.patch b/patches/server/0809-Fix-falling-block-spawn-methods.patch
similarity index 100%
rename from patches/server/0810-Fix-falling-block-spawn-methods.patch
rename to patches/server/0809-Fix-falling-block-spawn-methods.patch
diff --git a/patches/server/0811-Expose-furnace-minecart-push-values.patch b/patches/server/0810-Expose-furnace-minecart-push-values.patch
similarity index 100%
rename from patches/server/0811-Expose-furnace-minecart-push-values.patch
rename to patches/server/0810-Expose-furnace-minecart-push-values.patch
diff --git a/patches/server/0812-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch b/patches/server/0811-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch
similarity index 100%
rename from patches/server/0812-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch
rename to patches/server/0811-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch
diff --git a/patches/server/0813-More-Projectile-API.patch b/patches/server/0812-More-Projectile-API.patch
similarity index 100%
rename from patches/server/0813-More-Projectile-API.patch
rename to patches/server/0812-More-Projectile-API.patch
diff --git a/patches/server/0814-Fix-swamp-hut-cat-generation-deadlock.patch b/patches/server/0813-Fix-swamp-hut-cat-generation-deadlock.patch
similarity index 100%
rename from patches/server/0814-Fix-swamp-hut-cat-generation-deadlock.patch
rename to patches/server/0813-Fix-swamp-hut-cat-generation-deadlock.patch
diff --git a/patches/server/0815-Don-t-allow-vehicle-movement-from-players-while-tele.patch b/patches/server/0814-Don-t-allow-vehicle-movement-from-players-while-tele.patch
similarity index 100%
rename from patches/server/0815-Don-t-allow-vehicle-movement-from-players-while-tele.patch
rename to patches/server/0814-Don-t-allow-vehicle-movement-from-players-while-tele.patch
diff --git a/patches/server/0816-Implement-getComputedBiome-API.patch b/patches/server/0815-Implement-getComputedBiome-API.patch
similarity index 97%
rename from patches/server/0816-Implement-getComputedBiome-API.patch
rename to patches/server/0815-Implement-getComputedBiome-API.patch
index 4c57720593..447fd784cc 100644
--- a/patches/server/0816-Implement-getComputedBiome-API.patch
+++ b/patches/server/0815-Implement-getComputedBiome-API.patch
@@ -23,7 +23,7 @@ index e365081bf532488f2b41b22deb2fb2346d4f2322..446657577aa843e6ebc5143b6c511f33
      public void setBiome(Location location, Biome biome) {
          this.setBiome(location.getBlockX(), location.getBlockY(), location.getBlockZ(), biome);
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index b7496922faee8bc5d82f3f5922f6fb2fe44a8d2f..0976a1295be35dd7c053fb4ee4050011fc3d95fe 100644
+index 5343ae3cdda55d7e0b41747c7eccb52e6828f6c9..69d1c21a5c1007ae65f86b130c421f3f9540da2d 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 @@ -343,6 +343,13 @@ public class CraftBlock implements Block {
diff --git a/patches/server/0817-Make-some-itemstacks-nonnull.patch b/patches/server/0816-Make-some-itemstacks-nonnull.patch
similarity index 100%
rename from patches/server/0817-Make-some-itemstacks-nonnull.patch
rename to patches/server/0816-Make-some-itemstacks-nonnull.patch
diff --git a/patches/server/0818-Implement-enchantWithLevels-API.patch b/patches/server/0817-Implement-enchantWithLevels-API.patch
similarity index 100%
rename from patches/server/0818-Implement-enchantWithLevels-API.patch
rename to patches/server/0817-Implement-enchantWithLevels-API.patch
diff --git a/patches/server/0819-Fix-saving-in-unloadWorld.patch b/patches/server/0818-Fix-saving-in-unloadWorld.patch
similarity index 100%
rename from patches/server/0819-Fix-saving-in-unloadWorld.patch
rename to patches/server/0818-Fix-saving-in-unloadWorld.patch
diff --git a/patches/server/0820-Buffer-OOB-setBlock-calls.patch b/patches/server/0819-Buffer-OOB-setBlock-calls.patch
similarity index 100%
rename from patches/server/0820-Buffer-OOB-setBlock-calls.patch
rename to patches/server/0819-Buffer-OOB-setBlock-calls.patch
diff --git a/patches/server/0821-Add-TameableDeathMessageEvent.patch b/patches/server/0820-Add-TameableDeathMessageEvent.patch
similarity index 100%
rename from patches/server/0821-Add-TameableDeathMessageEvent.patch
rename to patches/server/0820-Add-TameableDeathMessageEvent.patch
diff --git a/patches/server/0822-Fix-new-block-data-for-EntityChangeBlockEvent.patch b/patches/server/0821-Fix-new-block-data-for-EntityChangeBlockEvent.patch
similarity index 100%
rename from patches/server/0822-Fix-new-block-data-for-EntityChangeBlockEvent.patch
rename to patches/server/0821-Fix-new-block-data-for-EntityChangeBlockEvent.patch
diff --git a/patches/server/0823-fix-player-loottables-running-when-mob-loot-gamerule.patch b/patches/server/0822-fix-player-loottables-running-when-mob-loot-gamerule.patch
similarity index 100%
rename from patches/server/0823-fix-player-loottables-running-when-mob-loot-gamerule.patch
rename to patches/server/0822-fix-player-loottables-running-when-mob-loot-gamerule.patch
diff --git a/patches/server/0824-Ensure-entity-passenger-world-matches-ridden-entity.patch b/patches/server/0823-Ensure-entity-passenger-world-matches-ridden-entity.patch
similarity index 100%
rename from patches/server/0824-Ensure-entity-passenger-world-matches-ridden-entity.patch
rename to patches/server/0823-Ensure-entity-passenger-world-matches-ridden-entity.patch
diff --git a/patches/server/0825-Guard-against-invalid-entity-positions.patch b/patches/server/0824-Guard-against-invalid-entity-positions.patch
similarity index 100%
rename from patches/server/0825-Guard-against-invalid-entity-positions.patch
rename to patches/server/0824-Guard-against-invalid-entity-positions.patch
diff --git a/patches/server/0826-cache-resource-keys.patch b/patches/server/0825-cache-resource-keys.patch
similarity index 65%
rename from patches/server/0826-cache-resource-keys.patch
rename to patches/server/0825-cache-resource-keys.patch
index ebefeaede3..6015b1196f 100644
--- a/patches/server/0826-cache-resource-keys.patch
+++ b/patches/server/0825-cache-resource-keys.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] cache resource keys
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 0976a1295be35dd7c053fb4ee4050011fc3d95fe..87dfc2fd1e2ff9e9449f1ce00dfb63e3e88839cd 100644
+index 69d1c21a5c1007ae65f86b130c421f3f9540da2d..0d30b388d8d93a6dbbf8dfb30d26eb44c73e1e4e 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 @@ -368,12 +368,13 @@ public class CraftBlock implements Block {
@@ -38,20 +38,4 @@ index e0bf615fb1b99abbab2be55a4ee345204b36e218..7b3b12b4b2f5dbd37e23a7f5a0ad2abd
 +        return registry.getHolderOrThrow(KEY_CACHE.computeIfAbsent(entity, type -> ResourceKey.create(Registries.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(type.getKey())))).is(tag); // Paper - cache key
      }
  
-     @Override
-diff --git a/src/main/java/org/bukkit/craftbukkit/tag/CraftFluidTag.java b/src/main/java/org/bukkit/craftbukkit/tag/CraftFluidTag.java
-index cdd474e9b0363641839a66d3e61fec46c735879a..1a987b3c8f044dfd217e984dc122582095367e46 100644
---- a/src/main/java/org/bukkit/craftbukkit/tag/CraftFluidTag.java
-+++ b/src/main/java/org/bukkit/craftbukkit/tag/CraftFluidTag.java
-@@ -14,9 +14,10 @@ public class CraftFluidTag extends CraftTag<net.minecraft.world.level.material.F
-         super(registry, tag);
-     }
- 
-+    private static final java.util.Map<Fluid, net.minecraft.resources.ResourceKey<net.minecraft.world.level.material.Fluid>> KEY_CACHE = Collections.synchronizedMap(new java.util.EnumMap<>(Fluid.class)); // Paper
-     @Override
-     public boolean isTagged(Fluid fluid) {
--        return registry.getHolderOrThrow(net.minecraft.resources.ResourceKey.create(net.minecraft.core.Registry.FLUID_REGISTRY, org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(fluid.getKey()))).is(tag); // Paper
-+        return registry.getHolderOrThrow(KEY_CACHE.computeIfAbsent(fluid, f -> net.minecraft.resources.ResourceKey.create(net.minecraft.core.registries.Registries.FLUID, org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(f.getKey())))).is(tag); // Paper - cache key
-     }
- 
      @Override
diff --git a/patches/server/0827-Allow-to-change-the-podium-for-the-EnderDragon.patch b/patches/server/0826-Allow-to-change-the-podium-for-the-EnderDragon.patch
similarity index 100%
rename from patches/server/0827-Allow-to-change-the-podium-for-the-EnderDragon.patch
rename to patches/server/0826-Allow-to-change-the-podium-for-the-EnderDragon.patch
diff --git a/patches/server/0828-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch b/patches/server/0827-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
similarity index 100%
rename from patches/server/0828-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
rename to patches/server/0827-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
diff --git a/patches/server/0829-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch b/patches/server/0828-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch
similarity index 100%
rename from patches/server/0829-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch
rename to patches/server/0828-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch
diff --git a/patches/server/0830-Prevent-tile-entity-copies-loading-chunks.patch b/patches/server/0829-Prevent-tile-entity-copies-loading-chunks.patch
similarity index 100%
rename from patches/server/0830-Prevent-tile-entity-copies-loading-chunks.patch
rename to patches/server/0829-Prevent-tile-entity-copies-loading-chunks.patch
diff --git a/patches/server/0831-Use-username-instead-of-display-name-in-PlayerList-g.patch b/patches/server/0830-Use-username-instead-of-display-name-in-PlayerList-g.patch
similarity index 100%
rename from patches/server/0831-Use-username-instead-of-display-name-in-PlayerList-g.patch
rename to patches/server/0830-Use-username-instead-of-display-name-in-PlayerList-g.patch
diff --git a/patches/server/0832-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch b/patches/server/0831-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch
similarity index 100%
rename from patches/server/0832-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch
rename to patches/server/0831-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch
diff --git a/patches/server/0833-Pass-ServerLevel-for-gamerule-callbacks.patch b/patches/server/0832-Pass-ServerLevel-for-gamerule-callbacks.patch
similarity index 100%
rename from patches/server/0833-Pass-ServerLevel-for-gamerule-callbacks.patch
rename to patches/server/0832-Pass-ServerLevel-for-gamerule-callbacks.patch
diff --git a/patches/server/0834-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/server/0833-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
similarity index 100%
rename from patches/server/0834-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
rename to patches/server/0833-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
diff --git a/patches/server/0835-WorldCreator-keepSpawnLoaded.patch b/patches/server/0834-WorldCreator-keepSpawnLoaded.patch
similarity index 100%
rename from patches/server/0835-WorldCreator-keepSpawnLoaded.patch
rename to patches/server/0834-WorldCreator-keepSpawnLoaded.patch
diff --git a/patches/server/0836-Fix-NPE-for-BlockDataMeta-getBlockData.patch b/patches/server/0835-Fix-NPE-for-BlockDataMeta-getBlockData.patch
similarity index 100%
rename from patches/server/0836-Fix-NPE-for-BlockDataMeta-getBlockData.patch
rename to patches/server/0835-Fix-NPE-for-BlockDataMeta-getBlockData.patch
diff --git a/patches/server/0837-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch b/patches/server/0836-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch
similarity index 100%
rename from patches/server/0837-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch
rename to patches/server/0836-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch
diff --git a/patches/server/0838-Add-EntityDyeEvent-and-CollarColorable-interface.patch b/patches/server/0837-Add-EntityDyeEvent-and-CollarColorable-interface.patch
similarity index 100%
rename from patches/server/0838-Add-EntityDyeEvent-and-CollarColorable-interface.patch
rename to patches/server/0837-Add-EntityDyeEvent-and-CollarColorable-interface.patch
diff --git a/patches/server/0839-Fire-CauldronLevelChange-on-initial-fill.patch b/patches/server/0838-Fire-CauldronLevelChange-on-initial-fill.patch
similarity index 100%
rename from patches/server/0839-Fire-CauldronLevelChange-on-initial-fill.patch
rename to patches/server/0838-Fire-CauldronLevelChange-on-initial-fill.patch
diff --git a/patches/server/0840-fix-powder-snow-cauldrons-not-turning-to-water.patch b/patches/server/0839-fix-powder-snow-cauldrons-not-turning-to-water.patch
similarity index 100%
rename from patches/server/0840-fix-powder-snow-cauldrons-not-turning-to-water.patch
rename to patches/server/0839-fix-powder-snow-cauldrons-not-turning-to-water.patch
diff --git a/patches/server/0841-Add-PlayerStopUsingItemEvent.patch b/patches/server/0840-Add-PlayerStopUsingItemEvent.patch
similarity index 100%
rename from patches/server/0841-Add-PlayerStopUsingItemEvent.patch
rename to patches/server/0840-Add-PlayerStopUsingItemEvent.patch
diff --git a/patches/server/0842-FallingBlock-auto-expire-setting.patch b/patches/server/0841-FallingBlock-auto-expire-setting.patch
similarity index 100%
rename from patches/server/0842-FallingBlock-auto-expire-setting.patch
rename to patches/server/0841-FallingBlock-auto-expire-setting.patch
diff --git a/patches/server/0843-Don-t-tick-markers.patch b/patches/server/0842-Don-t-tick-markers.patch
similarity index 100%
rename from patches/server/0843-Don-t-tick-markers.patch
rename to patches/server/0842-Don-t-tick-markers.patch
diff --git a/patches/server/0844-Do-not-accept-invalid-client-settings.patch b/patches/server/0843-Do-not-accept-invalid-client-settings.patch
similarity index 100%
rename from patches/server/0844-Do-not-accept-invalid-client-settings.patch
rename to patches/server/0843-Do-not-accept-invalid-client-settings.patch
diff --git a/patches/server/0845-Add-support-for-Proxy-Protocol.patch b/patches/server/0844-Add-support-for-Proxy-Protocol.patch
similarity index 100%
rename from patches/server/0845-Add-support-for-Proxy-Protocol.patch
rename to patches/server/0844-Add-support-for-Proxy-Protocol.patch
diff --git a/patches/server/0846-Fix-OfflinePlayer-getBedSpawnLocation.patch b/patches/server/0845-Fix-OfflinePlayer-getBedSpawnLocation.patch
similarity index 100%
rename from patches/server/0846-Fix-OfflinePlayer-getBedSpawnLocation.patch
rename to patches/server/0845-Fix-OfflinePlayer-getBedSpawnLocation.patch
diff --git a/patches/server/0847-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch b/patches/server/0846-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch
similarity index 100%
rename from patches/server/0847-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch
rename to patches/server/0846-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch
diff --git a/patches/server/0848-Sanitize-Sent-BlockEntity-NBT.patch b/patches/server/0847-Sanitize-Sent-BlockEntity-NBT.patch
similarity index 100%
rename from patches/server/0848-Sanitize-Sent-BlockEntity-NBT.patch
rename to patches/server/0847-Sanitize-Sent-BlockEntity-NBT.patch
diff --git a/patches/server/0849-Prevent-entity-loading-causing-async-lookups.patch b/patches/server/0848-Prevent-entity-loading-causing-async-lookups.patch
similarity index 100%
rename from patches/server/0849-Prevent-entity-loading-causing-async-lookups.patch
rename to patches/server/0848-Prevent-entity-loading-causing-async-lookups.patch
diff --git a/patches/server/0850-Disable-component-selector-resolving-in-books-by-def.patch b/patches/server/0849-Disable-component-selector-resolving-in-books-by-def.patch
similarity index 100%
rename from patches/server/0850-Disable-component-selector-resolving-in-books-by-def.patch
rename to patches/server/0849-Disable-component-selector-resolving-in-books-by-def.patch
diff --git a/patches/server/0851-Throw-exception-on-world-create-while-being-ticked.patch b/patches/server/0850-Throw-exception-on-world-create-while-being-ticked.patch
similarity index 100%
rename from patches/server/0851-Throw-exception-on-world-create-while-being-ticked.patch
rename to patches/server/0850-Throw-exception-on-world-create-while-being-ticked.patch
diff --git a/patches/server/0852-Add-Alternate-Current-redstone-implementation.patch b/patches/server/0851-Add-Alternate-Current-redstone-implementation.patch
similarity index 100%
rename from patches/server/0852-Add-Alternate-Current-redstone-implementation.patch
rename to patches/server/0851-Add-Alternate-Current-redstone-implementation.patch
diff --git a/patches/server/0853-Dont-resent-entity-on-art-update.patch b/patches/server/0852-Dont-resent-entity-on-art-update.patch
similarity index 100%
rename from patches/server/0853-Dont-resent-entity-on-art-update.patch
rename to patches/server/0852-Dont-resent-entity-on-art-update.patch
diff --git a/patches/server/0854-Add-WardenAngerChangeEvent.patch b/patches/server/0853-Add-WardenAngerChangeEvent.patch
similarity index 100%
rename from patches/server/0854-Add-WardenAngerChangeEvent.patch
rename to patches/server/0853-Add-WardenAngerChangeEvent.patch
diff --git a/patches/server/0855-Add-option-for-strict-advancement-dimension-checks.patch b/patches/server/0854-Add-option-for-strict-advancement-dimension-checks.patch
similarity index 100%
rename from patches/server/0855-Add-option-for-strict-advancement-dimension-checks.patch
rename to patches/server/0854-Add-option-for-strict-advancement-dimension-checks.patch
diff --git a/patches/server/0856-Add-missing-important-BlockStateListPopulator-method.patch b/patches/server/0855-Add-missing-important-BlockStateListPopulator-method.patch
similarity index 100%
rename from patches/server/0856-Add-missing-important-BlockStateListPopulator-method.patch
rename to patches/server/0855-Add-missing-important-BlockStateListPopulator-method.patch
diff --git a/patches/server/0857-Nameable-Banner-API.patch b/patches/server/0856-Nameable-Banner-API.patch
similarity index 100%
rename from patches/server/0857-Nameable-Banner-API.patch
rename to patches/server/0856-Nameable-Banner-API.patch
diff --git a/patches/server/0858-Don-t-broadcast-messages-to-command-blocks.patch b/patches/server/0857-Don-t-broadcast-messages-to-command-blocks.patch
similarity index 100%
rename from patches/server/0858-Don-t-broadcast-messages-to-command-blocks.patch
rename to patches/server/0857-Don-t-broadcast-messages-to-command-blocks.patch
diff --git a/patches/server/0859-Prevent-empty-items-from-being-added-to-world.patch b/patches/server/0858-Prevent-empty-items-from-being-added-to-world.patch
similarity index 100%
rename from patches/server/0859-Prevent-empty-items-from-being-added-to-world.patch
rename to patches/server/0858-Prevent-empty-items-from-being-added-to-world.patch
diff --git a/patches/server/0860-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch b/patches/server/0859-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch
similarity index 100%
rename from patches/server/0860-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch
rename to patches/server/0859-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch
diff --git a/patches/server/0861-Don-t-print-component-in-resource-pack-rejection-mes.patch b/patches/server/0860-Don-t-print-component-in-resource-pack-rejection-mes.patch
similarity index 100%
rename from patches/server/0861-Don-t-print-component-in-resource-pack-rejection-mes.patch
rename to patches/server/0860-Don-t-print-component-in-resource-pack-rejection-mes.patch
diff --git a/patches/server/0862-Add-Player-getFishHook.patch b/patches/server/0861-Add-Player-getFishHook.patch
similarity index 100%
rename from patches/server/0862-Add-Player-getFishHook.patch
rename to patches/server/0861-Add-Player-getFishHook.patch
diff --git a/patches/server/0863-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch b/patches/server/0862-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch
similarity index 100%
rename from patches/server/0863-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch
rename to patches/server/0862-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch
diff --git a/patches/server/0864-Add-various-missing-EntityDropItemEvent-calls.patch b/patches/server/0863-Add-various-missing-EntityDropItemEvent-calls.patch
similarity index 100%
rename from patches/server/0864-Add-various-missing-EntityDropItemEvent-calls.patch
rename to patches/server/0863-Add-various-missing-EntityDropItemEvent-calls.patch
diff --git a/patches/server/0865-Add-some-minimal-debug-information-to-chat-packet-er.patch b/patches/server/0864-Add-some-minimal-debug-information-to-chat-packet-er.patch
similarity index 100%
rename from patches/server/0865-Add-some-minimal-debug-information-to-chat-packet-er.patch
rename to patches/server/0864-Add-some-minimal-debug-information-to-chat-packet-er.patch
diff --git a/patches/server/0866-Fix-Bee-flower-NPE.patch b/patches/server/0865-Fix-Bee-flower-NPE.patch
similarity index 100%
rename from patches/server/0866-Fix-Bee-flower-NPE.patch
rename to patches/server/0865-Fix-Bee-flower-NPE.patch
diff --git a/patches/server/0867-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch b/patches/server/0866-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
similarity index 100%
rename from patches/server/0867-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
rename to patches/server/0866-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
diff --git a/patches/server/0868-More-Teleport-API.patch b/patches/server/0867-More-Teleport-API.patch
similarity index 100%
rename from patches/server/0868-More-Teleport-API.patch
rename to patches/server/0867-More-Teleport-API.patch
diff --git a/patches/server/0869-Add-EntityPortalReadyEvent.patch b/patches/server/0868-Add-EntityPortalReadyEvent.patch
similarity index 100%
rename from patches/server/0869-Add-EntityPortalReadyEvent.patch
rename to patches/server/0868-Add-EntityPortalReadyEvent.patch
diff --git a/patches/server/0870-Don-t-use-level-random-in-entity-constructors.patch b/patches/server/0869-Don-t-use-level-random-in-entity-constructors.patch
similarity index 100%
rename from patches/server/0870-Don-t-use-level-random-in-entity-constructors.patch
rename to patches/server/0869-Don-t-use-level-random-in-entity-constructors.patch
diff --git a/patches/server/0871-Send-block-entities-after-destroy-prediction.patch b/patches/server/0870-Send-block-entities-after-destroy-prediction.patch
similarity index 100%
rename from patches/server/0871-Send-block-entities-after-destroy-prediction.patch
rename to patches/server/0870-Send-block-entities-after-destroy-prediction.patch
diff --git a/patches/server/0872-Warn-on-plugins-accessing-faraway-chunks.patch b/patches/server/0871-Warn-on-plugins-accessing-faraway-chunks.patch
similarity index 100%
rename from patches/server/0872-Warn-on-plugins-accessing-faraway-chunks.patch
rename to patches/server/0871-Warn-on-plugins-accessing-faraway-chunks.patch
diff --git a/patches/server/0873-Custom-Chat-Completion-Suggestions-API.patch b/patches/server/0872-Custom-Chat-Completion-Suggestions-API.patch
similarity index 100%
rename from patches/server/0873-Custom-Chat-Completion-Suggestions-API.patch
rename to patches/server/0872-Custom-Chat-Completion-Suggestions-API.patch
diff --git a/patches/server/0874-Add-missing-BlockFadeEvents.patch b/patches/server/0873-Add-missing-BlockFadeEvents.patch
similarity index 100%
rename from patches/server/0874-Add-missing-BlockFadeEvents.patch
rename to patches/server/0873-Add-missing-BlockFadeEvents.patch
diff --git a/patches/server/0875-Collision-API.patch b/patches/server/0874-Collision-API.patch
similarity index 100%
rename from patches/server/0875-Collision-API.patch
rename to patches/server/0874-Collision-API.patch
diff --git a/patches/server/0876-Fix-suggest-command-message-for-brigadier-syntax-exc.patch b/patches/server/0875-Fix-suggest-command-message-for-brigadier-syntax-exc.patch
similarity index 100%
rename from patches/server/0876-Fix-suggest-command-message-for-brigadier-syntax-exc.patch
rename to patches/server/0875-Fix-suggest-command-message-for-brigadier-syntax-exc.patch
diff --git a/patches/server/0877-Remove-invalid-signature-login-stacktrace.patch b/patches/server/0876-Remove-invalid-signature-login-stacktrace.patch
similarity index 100%
rename from patches/server/0877-Remove-invalid-signature-login-stacktrace.patch
rename to patches/server/0876-Remove-invalid-signature-login-stacktrace.patch
diff --git a/patches/server/0878-Add-async-catcher-to-PlayerConnection-internalTelepo.patch b/patches/server/0877-Add-async-catcher-to-PlayerConnection-internalTelepo.patch
similarity index 100%
rename from patches/server/0878-Add-async-catcher-to-PlayerConnection-internalTelepo.patch
rename to patches/server/0877-Add-async-catcher-to-PlayerConnection-internalTelepo.patch
diff --git a/patches/server/0879-Block-Ticking-API.patch b/patches/server/0878-Block-Ticking-API.patch
similarity index 85%
rename from patches/server/0879-Block-Ticking-API.patch
rename to patches/server/0878-Block-Ticking-API.patch
index 5827f7c67d..e742ff3265 100644
--- a/patches/server/0879-Block-Ticking-API.patch
+++ b/patches/server/0878-Block-Ticking-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Block Ticking API
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 87dfc2fd1e2ff9e9449f1ce00dfb63e3e88839cd..350cbf64c17938021002d5fd67176c44b398231e 100644
+index 0d30b388d8d93a6dbbf8dfb30d26eb44c73e1e4e..962c950ca9c7e047a3aec215d4faa73676049d36 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-@@ -760,5 +760,21 @@ public class CraftBlock implements Block {
+@@ -756,5 +756,21 @@ public class CraftBlock implements Block {
      public boolean isValidTool(ItemStack itemStack) {
          return getDrops(itemStack).size() != 0;
      }
@@ -31,10 +31,10 @@ index 87dfc2fd1e2ff9e9449f1ce00dfb63e3e88839cd..350cbf64c17938021002d5fd67176c44
      // Paper end
  }
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-index 3399e8cdf2230bd71444abb43829c54d7277ce36..6f7ee97e381e80d6e8cf6b9c3f40b5e25f6bf64b 100644
+index 7acf213194f61d04cffabaaee6c1372bfa2e1933..0a04366b3f472bc4ce20ed814dc326b278119c74 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-@@ -617,4 +617,10 @@ public class CraftBlockData implements BlockData {
+@@ -652,4 +652,10 @@ public class CraftBlockData implements BlockData {
  
          return this.state.isFaceSturdy(EmptyBlockGetter.INSTANCE, BlockPos.ZERO, CraftBlock.blockFaceToNotch(face), CraftBlockSupport.toNMS(support));
      }
diff --git a/patches/server/0880-Add-Velocity-IP-Forwarding-Support.patch b/patches/server/0879-Add-Velocity-IP-Forwarding-Support.patch
similarity index 100%
rename from patches/server/0880-Add-Velocity-IP-Forwarding-Support.patch
rename to patches/server/0879-Add-Velocity-IP-Forwarding-Support.patch
diff --git a/patches/server/0881-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch b/patches/server/0880-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch
similarity index 100%
rename from patches/server/0881-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch
rename to patches/server/0880-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch
diff --git a/patches/server/0882-Add-NamespacedKey-biome-methods.patch b/patches/server/0881-Add-NamespacedKey-biome-methods.patch
similarity index 92%
rename from patches/server/0882-Add-NamespacedKey-biome-methods.patch
rename to patches/server/0881-Add-NamespacedKey-biome-methods.patch
index ae8b1ea77d..82abc8c239 100644
--- a/patches/server/0882-Add-NamespacedKey-biome-methods.patch
+++ b/patches/server/0881-Add-NamespacedKey-biome-methods.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Add NamespacedKey biome methods
 Co-authored-by: Thonk <30448663+ExcessiveAmountsOfZombies@users.noreply.github.com>
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 73e82653e0a68560c25ae41ade4c58111cbcd276..daeaa30cdd64f5cb775304e82f2390684c02a9d3 100644
+index 34e4d36024900ae174170c0a0f18b8dda8dd52f2..c51a7f7489a37093e4096b28bfc1031ba6a2b8c2 100644
 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -605,6 +605,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -606,6 +606,19 @@ public final class CraftMagicNumbers implements UnsafeValues {
          Preconditions.checkArgument(material.isBlock(), material + " is not a block");
          return getBlock(material).hasCollision;
      }
diff --git a/patches/server/0883-Fix-plugin-loggers-on-server-shutdown.patch b/patches/server/0882-Fix-plugin-loggers-on-server-shutdown.patch
similarity index 100%
rename from patches/server/0883-Fix-plugin-loggers-on-server-shutdown.patch
rename to patches/server/0882-Fix-plugin-loggers-on-server-shutdown.patch
diff --git a/patches/server/0884-Workaround-for-client-lag-spikes-MC-162253.patch b/patches/server/0883-Workaround-for-client-lag-spikes-MC-162253.patch
similarity index 100%
rename from patches/server/0884-Workaround-for-client-lag-spikes-MC-162253.patch
rename to patches/server/0883-Workaround-for-client-lag-spikes-MC-162253.patch
diff --git a/patches/server/0885-Stop-large-look-changes-from-crashing-the-server.patch b/patches/server/0884-Stop-large-look-changes-from-crashing-the-server.patch
similarity index 100%
rename from patches/server/0885-Stop-large-look-changes-from-crashing-the-server.patch
rename to patches/server/0884-Stop-large-look-changes-from-crashing-the-server.patch
diff --git a/patches/server/0886-Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/server/0885-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
similarity index 100%
rename from patches/server/0886-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
rename to patches/server/0885-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
diff --git a/patches/server/0887-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch b/patches/server/0886-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch
similarity index 100%
rename from patches/server/0887-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch
rename to patches/server/0886-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch
diff --git a/patches/server/0888-Fire-EntityChangeBlockEvent-in-more-places.patch b/patches/server/0887-Fire-EntityChangeBlockEvent-in-more-places.patch
similarity index 100%
rename from patches/server/0888-Fire-EntityChangeBlockEvent-in-more-places.patch
rename to patches/server/0887-Fire-EntityChangeBlockEvent-in-more-places.patch
diff --git a/patches/server/0889-Missing-eating-regain-reason.patch b/patches/server/0888-Missing-eating-regain-reason.patch
similarity index 100%
rename from patches/server/0889-Missing-eating-regain-reason.patch
rename to patches/server/0888-Missing-eating-regain-reason.patch
diff --git a/patches/server/0890-Missing-effect-cause.patch b/patches/server/0889-Missing-effect-cause.patch
similarity index 100%
rename from patches/server/0890-Missing-effect-cause.patch
rename to patches/server/0889-Missing-effect-cause.patch
diff --git a/patches/server/0891-Added-byte-array-serialization-deserialization-for-P.patch b/patches/server/0890-Added-byte-array-serialization-deserialization-for-P.patch
similarity index 100%
rename from patches/server/0891-Added-byte-array-serialization-deserialization-for-P.patch
rename to patches/server/0890-Added-byte-array-serialization-deserialization-for-P.patch
diff --git a/patches/server/0892-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch b/patches/server/0891-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
similarity index 100%
rename from patches/server/0892-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
rename to patches/server/0891-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
diff --git a/patches/server/0893-Call-BlockPhysicsEvent-more-often.patch b/patches/server/0892-Call-BlockPhysicsEvent-more-often.patch
similarity index 100%
rename from patches/server/0893-Call-BlockPhysicsEvent-more-often.patch
rename to patches/server/0892-Call-BlockPhysicsEvent-more-often.patch
diff --git a/patches/server/0894-Configurable-chat-thread-limit.patch b/patches/server/0893-Configurable-chat-thread-limit.patch
similarity index 100%
rename from patches/server/0894-Configurable-chat-thread-limit.patch
rename to patches/server/0893-Configurable-chat-thread-limit.patch
diff --git a/patches/server/0895-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch b/patches/server/0894-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
similarity index 100%
rename from patches/server/0895-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
rename to patches/server/0894-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
diff --git a/patches/server/0896-Set-position-before-player-sending-on-dimension-chan.patch b/patches/server/0895-Set-position-before-player-sending-on-dimension-chan.patch
similarity index 100%
rename from patches/server/0896-Set-position-before-player-sending-on-dimension-chan.patch
rename to patches/server/0895-Set-position-before-player-sending-on-dimension-chan.patch
diff --git a/patches/server/0897-fix-Jigsaw-block-kicking-user.patch b/patches/server/0896-fix-Jigsaw-block-kicking-user.patch
similarity index 100%
rename from patches/server/0897-fix-Jigsaw-block-kicking-user.patch
rename to patches/server/0896-fix-Jigsaw-block-kicking-user.patch
diff --git a/patches/server/0898-use-BlockFormEvent-for-mud-converting-into-clay.patch b/patches/server/0897-use-BlockFormEvent-for-mud-converting-into-clay.patch
similarity index 100%
rename from patches/server/0898-use-BlockFormEvent-for-mud-converting-into-clay.patch
rename to patches/server/0897-use-BlockFormEvent-for-mud-converting-into-clay.patch
diff --git a/patches/server/0899-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch b/patches/server/0898-Add-getDrops-to-BlockState.patch
similarity index 66%
rename from patches/server/0899-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
rename to patches/server/0898-Add-getDrops-to-BlockState.patch
index d11dd661b3..a83779ec9a 100644
--- a/patches/server/0899-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
+++ b/patches/server/0898-Add-getDrops-to-BlockState.patch
@@ -1,8 +1,10 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: MelnCat <melncatuwu@gmail.com>
 Date: Fri, 12 Aug 2022 23:24:37 -0700
-Subject: [PATCH] Add getDrops to BlockState and isPreferredTool to BlockData
+Subject: [PATCH] Add getDrops to BlockState
 
+Originally added isPreferredTool to BlockData but
+upstream added that.
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
 index 966ac60daebb7bb211ab8096fc0c5f33db67320a..a8ab1d3ee81664193be39d2735d6495136e0e310 100644
@@ -42,20 +44,3 @@ index 966ac60daebb7bb211ab8096fc0c5f33db67320a..a8ab1d3ee81664193be39d2735d64951
 +    }
      // Paper end
  }
-diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-index 6f7ee97e381e80d6e8cf6b9c3f40b5e25f6bf64b..1fefe185800dd48dd328697127405e0844543e5e 100644
---- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-@@ -623,4 +623,12 @@ public class CraftBlockData implements BlockData {
-         return this.state.isRandomlyTicking();
-     }
-     // Paper end
-+
-+    // Paper start - Preferred tool API
-+    @Override
-+    public boolean isPreferredTool(org.bukkit.inventory.ItemStack item) {
-+        net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item);
-+        return !state.requiresCorrectToolForDrops() || nms.isCorrectToolForDrops(state);
-+    }
-+    // Paper end
- }
diff --git a/patches/server/0900-Fix-a-bunch-of-vanilla-bugs.patch b/patches/server/0899-Fix-a-bunch-of-vanilla-bugs.patch
similarity index 100%
rename from patches/server/0900-Fix-a-bunch-of-vanilla-bugs.patch
rename to patches/server/0899-Fix-a-bunch-of-vanilla-bugs.patch
diff --git a/patches/server/0901-Remove-unnecessary-onTrackingStart-during-navigation.patch b/patches/server/0900-Remove-unnecessary-onTrackingStart-during-navigation.patch
similarity index 100%
rename from patches/server/0901-Remove-unnecessary-onTrackingStart-during-navigation.patch
rename to patches/server/0900-Remove-unnecessary-onTrackingStart-during-navigation.patch
diff --git a/patches/server/0902-Fix-custom-piglin-loved-items.patch b/patches/server/0901-Fix-custom-piglin-loved-items.patch
similarity index 100%
rename from patches/server/0902-Fix-custom-piglin-loved-items.patch
rename to patches/server/0901-Fix-custom-piglin-loved-items.patch
diff --git a/patches/server/0903-EntityPickupItemEvent-fixes.patch b/patches/server/0902-EntityPickupItemEvent-fixes.patch
similarity index 100%
rename from patches/server/0903-EntityPickupItemEvent-fixes.patch
rename to patches/server/0902-EntityPickupItemEvent-fixes.patch
diff --git a/patches/server/0904-Correctly-handle-interactions-with-items-on-cooldown.patch b/patches/server/0903-Correctly-handle-interactions-with-items-on-cooldown.patch
similarity index 100%
rename from patches/server/0904-Correctly-handle-interactions-with-items-on-cooldown.patch
rename to patches/server/0903-Correctly-handle-interactions-with-items-on-cooldown.patch
diff --git a/patches/server/0905-Add-PlayerInventorySlotChangeEvent.patch b/patches/server/0904-Add-PlayerInventorySlotChangeEvent.patch
similarity index 100%
rename from patches/server/0905-Add-PlayerInventorySlotChangeEvent.patch
rename to patches/server/0904-Add-PlayerInventorySlotChangeEvent.patch
diff --git a/patches/server/0906-Elder-Guardian-appearance-API.patch b/patches/server/0905-Elder-Guardian-appearance-API.patch
similarity index 100%
rename from patches/server/0906-Elder-Guardian-appearance-API.patch
rename to patches/server/0905-Elder-Guardian-appearance-API.patch
diff --git a/patches/server/0907-Allow-changing-bed-s-occupied-property.patch b/patches/server/0906-Allow-changing-bed-s-occupied-property.patch
similarity index 100%
rename from patches/server/0907-Allow-changing-bed-s-occupied-property.patch
rename to patches/server/0906-Allow-changing-bed-s-occupied-property.patch
diff --git a/patches/server/0908-Add-entity-knockback-API.patch b/patches/server/0907-Add-entity-knockback-API.patch
similarity index 100%
rename from patches/server/0908-Add-entity-knockback-API.patch
rename to patches/server/0907-Add-entity-knockback-API.patch
diff --git a/patches/server/0909-Detect-headless-JREs.patch b/patches/server/0908-Detect-headless-JREs.patch
similarity index 100%
rename from patches/server/0909-Detect-headless-JREs.patch
rename to patches/server/0908-Detect-headless-JREs.patch
diff --git a/patches/server/0910-fixed-entity-vehicle-collision-event-not-called.patch b/patches/server/0909-fixed-entity-vehicle-collision-event-not-called.patch
similarity index 100%
rename from patches/server/0910-fixed-entity-vehicle-collision-event-not-called.patch
rename to patches/server/0909-fixed-entity-vehicle-collision-event-not-called.patch
diff --git a/patches/server/0911-optimized-dirt-and-snow-spreading.patch b/patches/server/0910-optimized-dirt-and-snow-spreading.patch
similarity index 100%
rename from patches/server/0911-optimized-dirt-and-snow-spreading.patch
rename to patches/server/0910-optimized-dirt-and-snow-spreading.patch
diff --git a/patches/server/0912-Added-EntityToggleSitEvent.patch b/patches/server/0911-Added-EntityToggleSitEvent.patch
similarity index 100%
rename from patches/server/0912-Added-EntityToggleSitEvent.patch
rename to patches/server/0911-Added-EntityToggleSitEvent.patch
diff --git a/patches/server/0913-Add-fire-tick-delay-option.patch b/patches/server/0912-Add-fire-tick-delay-option.patch
similarity index 100%
rename from patches/server/0913-Add-fire-tick-delay-option.patch
rename to patches/server/0912-Add-fire-tick-delay-option.patch
diff --git a/patches/server/0914-Add-Moving-Piston-API.patch b/patches/server/0913-Add-Moving-Piston-API.patch
similarity index 100%
rename from patches/server/0914-Add-Moving-Piston-API.patch
rename to patches/server/0913-Add-Moving-Piston-API.patch
diff --git a/patches/server/0915-Ignore-impossible-spawn-tick.patch b/patches/server/0914-Ignore-impossible-spawn-tick.patch
similarity index 100%
rename from patches/server/0915-Ignore-impossible-spawn-tick.patch
rename to patches/server/0914-Ignore-impossible-spawn-tick.patch
diff --git a/patches/server/0916-Track-projectile-source-for-fireworks-from-dispenser.patch b/patches/server/0915-Track-projectile-source-for-fireworks-from-dispenser.patch
similarity index 100%
rename from patches/server/0916-Track-projectile-source-for-fireworks-from-dispenser.patch
rename to patches/server/0915-Track-projectile-source-for-fireworks-from-dispenser.patch
diff --git a/patches/server/0917-Fix-EntityArgument-suggestion-permissions-to-align-w.patch b/patches/server/0916-Fix-EntityArgument-suggestion-permissions-to-align-w.patch
similarity index 100%
rename from patches/server/0917-Fix-EntityArgument-suggestion-permissions-to-align-w.patch
rename to patches/server/0916-Fix-EntityArgument-suggestion-permissions-to-align-w.patch
diff --git a/patches/server/0918-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch b/patches/server/0917-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch
similarity index 100%
rename from patches/server/0918-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch
rename to patches/server/0917-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch
diff --git a/patches/server/0919-Prevent-compass-from-loading-chunks.patch b/patches/server/0918-Prevent-compass-from-loading-chunks.patch
similarity index 100%
rename from patches/server/0919-Prevent-compass-from-loading-chunks.patch
rename to patches/server/0918-Prevent-compass-from-loading-chunks.patch
diff --git a/patches/server/0920-Add-PrePlayerAttackEntityEvent.patch b/patches/server/0919-Add-PrePlayerAttackEntityEvent.patch
similarity index 100%
rename from patches/server/0920-Add-PrePlayerAttackEntityEvent.patch
rename to patches/server/0919-Add-PrePlayerAttackEntityEvent.patch
diff --git a/patches/server/0921-ensure-reset-EnderDragon-boss-event-name.patch b/patches/server/0920-ensure-reset-EnderDragon-boss-event-name.patch
similarity index 100%
rename from patches/server/0921-ensure-reset-EnderDragon-boss-event-name.patch
rename to patches/server/0920-ensure-reset-EnderDragon-boss-event-name.patch
diff --git a/patches/server/0922-fix-MC-252817-green-map-markers-do-not-disappear.patch b/patches/server/0921-fix-MC-252817-green-map-markers-do-not-disappear.patch
similarity index 100%
rename from patches/server/0922-fix-MC-252817-green-map-markers-do-not-disappear.patch
rename to patches/server/0921-fix-MC-252817-green-map-markers-do-not-disappear.patch
diff --git a/patches/server/0923-Add-Player-Warden-Warning-API.patch b/patches/server/0922-Add-Player-Warden-Warning-API.patch
similarity index 100%
rename from patches/server/0923-Add-Player-Warden-Warning-API.patch
rename to patches/server/0922-Add-Player-Warden-Warning-API.patch
diff --git a/patches/server/0924-More-vanilla-friendly-methods-to-update-trades.patch b/patches/server/0923-More-vanilla-friendly-methods-to-update-trades.patch
similarity index 100%
rename from patches/server/0924-More-vanilla-friendly-methods-to-update-trades.patch
rename to patches/server/0923-More-vanilla-friendly-methods-to-update-trades.patch
diff --git a/patches/server/0925-Add-paper-dumplisteners-command.patch b/patches/server/0924-Add-paper-dumplisteners-command.patch
similarity index 100%
rename from patches/server/0925-Add-paper-dumplisteners-command.patch
rename to patches/server/0924-Add-paper-dumplisteners-command.patch
diff --git a/patches/server/0926-check-global-player-list-where-appropriate.patch b/patches/server/0925-check-global-player-list-where-appropriate.patch
similarity index 100%
rename from patches/server/0926-check-global-player-list-where-appropriate.patch
rename to patches/server/0925-check-global-player-list-where-appropriate.patch
diff --git a/patches/server/0927-Fix-async-entity-add-due-to-fungus-trees.patch b/patches/server/0926-Fix-async-entity-add-due-to-fungus-trees.patch
similarity index 100%
rename from patches/server/0927-Fix-async-entity-add-due-to-fungus-trees.patch
rename to patches/server/0926-Fix-async-entity-add-due-to-fungus-trees.patch
diff --git a/patches/server/0928-ItemStack-damage-API.patch b/patches/server/0927-ItemStack-damage-API.patch
similarity index 100%
rename from patches/server/0928-ItemStack-damage-API.patch
rename to patches/server/0927-ItemStack-damage-API.patch
diff --git a/patches/server/0929-Friction-API.patch b/patches/server/0928-Friction-API.patch
similarity index 100%
rename from patches/server/0929-Friction-API.patch
rename to patches/server/0928-Friction-API.patch
diff --git a/patches/server/0930-Ability-to-control-player-s-insomnia-and-phantoms.patch b/patches/server/0929-Ability-to-control-player-s-insomnia-and-phantoms.patch
similarity index 100%
rename from patches/server/0930-Ability-to-control-player-s-insomnia-and-phantoms.patch
rename to patches/server/0929-Ability-to-control-player-s-insomnia-and-phantoms.patch
diff --git a/patches/server/0931-Fix-player-kick-on-shutdown.patch b/patches/server/0930-Fix-player-kick-on-shutdown.patch
similarity index 100%
rename from patches/server/0931-Fix-player-kick-on-shutdown.patch
rename to patches/server/0930-Fix-player-kick-on-shutdown.patch
diff --git a/patches/server/0932-Sync-offhand-slot-in-menus.patch b/patches/server/0931-Sync-offhand-slot-in-menus.patch
similarity index 100%
rename from patches/server/0932-Sync-offhand-slot-in-menus.patch
rename to patches/server/0931-Sync-offhand-slot-in-menus.patch
diff --git a/patches/server/0933-Player-Entity-Tracking-Events.patch b/patches/server/0932-Player-Entity-Tracking-Events.patch
similarity index 100%
rename from patches/server/0933-Player-Entity-Tracking-Events.patch
rename to patches/server/0932-Player-Entity-Tracking-Events.patch
diff --git a/patches/server/0934-Limit-pet-look-distance.patch b/patches/server/0933-Limit-pet-look-distance.patch
similarity index 100%
rename from patches/server/0934-Limit-pet-look-distance.patch
rename to patches/server/0933-Limit-pet-look-distance.patch
diff --git a/patches/server/0935-Properly-resend-entities.patch b/patches/server/0934-Properly-resend-entities.patch
similarity index 100%
rename from patches/server/0935-Properly-resend-entities.patch
rename to patches/server/0934-Properly-resend-entities.patch
diff --git a/patches/server/0936-Fixes-and-additions-to-the-SpawnReason-API.patch b/patches/server/0935-Fixes-and-additions-to-the-SpawnReason-API.patch
similarity index 100%
rename from patches/server/0936-Fixes-and-additions-to-the-SpawnReason-API.patch
rename to patches/server/0935-Fixes-and-additions-to-the-SpawnReason-API.patch
diff --git a/patches/server/0937-fix-Instruments.patch b/patches/server/0936-fix-Instruments.patch
similarity index 100%
rename from patches/server/0937-fix-Instruments.patch
rename to patches/server/0936-fix-Instruments.patch
diff --git a/patches/server/0938-Fix-chunk-snapshot-biome-getter.patch b/patches/server/0937-Fix-chunk-snapshot-biome-getter.patch
similarity index 100%
rename from patches/server/0938-Fix-chunk-snapshot-biome-getter.patch
rename to patches/server/0937-Fix-chunk-snapshot-biome-getter.patch
diff --git a/patches/server/0939-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch b/patches/server/0938-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch
similarity index 100%
rename from patches/server/0939-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch
rename to patches/server/0938-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch
diff --git a/patches/server/0940-Fix-MapLike-Codec-missing-key-selector.patch b/patches/server/0939-Fix-MapLike-Codec-missing-key-selector.patch
similarity index 100%
rename from patches/server/0940-Fix-MapLike-Codec-missing-key-selector.patch
rename to patches/server/0939-Fix-MapLike-Codec-missing-key-selector.patch
diff --git a/patches/server/0941-Fix-inconsistencies-in-dispense-events-regarding-sta.patch b/patches/server/0940-Fix-inconsistencies-in-dispense-events-regarding-sta.patch
similarity index 100%
rename from patches/server/0941-Fix-inconsistencies-in-dispense-events-regarding-sta.patch
rename to patches/server/0940-Fix-inconsistencies-in-dispense-events-regarding-sta.patch
diff --git a/patches/server/0942-Improve-logging-and-errors.patch b/patches/server/0941-Improve-logging-and-errors.patch
similarity index 100%
rename from patches/server/0942-Improve-logging-and-errors.patch
rename to patches/server/0941-Improve-logging-and-errors.patch
diff --git a/patches/server/0943-Fix-explosion-yield-with-new-gamerules.patch b/patches/server/0942-Fix-explosion-yield-with-new-gamerules.patch
similarity index 100%
rename from patches/server/0943-Fix-explosion-yield-with-new-gamerules.patch
rename to patches/server/0942-Fix-explosion-yield-with-new-gamerules.patch
diff --git a/patches/server/0944-Add-BlockLockCheckEvent.patch b/patches/server/0943-Add-BlockLockCheckEvent.patch
similarity index 100%
rename from patches/server/0944-Add-BlockLockCheckEvent.patch
rename to patches/server/0943-Add-BlockLockCheckEvent.patch
diff --git a/patches/server/0945-Add-Sneaking-API-for-Entities.patch b/patches/server/0944-Add-Sneaking-API-for-Entities.patch
similarity index 100%
rename from patches/server/0945-Add-Sneaking-API-for-Entities.patch
rename to patches/server/0944-Add-Sneaking-API-for-Entities.patch
diff --git a/patches/server/0946-Improve-PortalEvents.patch b/patches/server/0945-Improve-PortalEvents.patch
similarity index 100%
rename from patches/server/0946-Improve-PortalEvents.patch
rename to patches/server/0945-Improve-PortalEvents.patch
diff --git a/patches/server/0947-Add-exploded-block-state-to-BlockExplodeEvent.patch b/patches/server/0946-Add-exploded-block-state-to-BlockExplodeEvent.patch
similarity index 100%
rename from patches/server/0947-Add-exploded-block-state-to-BlockExplodeEvent.patch
rename to patches/server/0946-Add-exploded-block-state-to-BlockExplodeEvent.patch
diff --git a/patches/server/0948-Add-config-option-for-spider-worldborder-climbing.patch b/patches/server/0947-Add-config-option-for-spider-worldborder-climbing.patch
similarity index 100%
rename from patches/server/0948-Add-config-option-for-spider-worldborder-climbing.patch
rename to patches/server/0947-Add-config-option-for-spider-worldborder-climbing.patch
diff --git a/patches/server/0949-Add-missing-SpigotConfig-logCommands-check.patch b/patches/server/0948-Add-missing-SpigotConfig-logCommands-check.patch
similarity index 100%
rename from patches/server/0949-Add-missing-SpigotConfig-logCommands-check.patch
rename to patches/server/0948-Add-missing-SpigotConfig-logCommands-check.patch
diff --git a/patches/server/0950-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch b/patches/server/0949-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch
similarity index 100%
rename from patches/server/0950-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch
rename to patches/server/0949-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch
diff --git a/patches/server/0951-Flying-Fall-Damage.patch b/patches/server/0950-Flying-Fall-Damage.patch
similarity index 100%
rename from patches/server/0951-Flying-Fall-Damage.patch
rename to patches/server/0950-Flying-Fall-Damage.patch
diff --git a/patches/server/0952-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch b/patches/server/0951-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
similarity index 100%
rename from patches/server/0952-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
rename to patches/server/0951-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch
diff --git a/patches/server/0953-config-for-disabling-entity-tag-tags.patch b/patches/server/0952-config-for-disabling-entity-tag-tags.patch
similarity index 100%
rename from patches/server/0953-config-for-disabling-entity-tag-tags.patch
rename to patches/server/0952-config-for-disabling-entity-tag-tags.patch
diff --git a/patches/server/0954-Use-single-player-info-update-packet-on-join.patch b/patches/server/0953-Use-single-player-info-update-packet-on-join.patch
similarity index 100%
rename from patches/server/0954-Use-single-player-info-update-packet-on-join.patch
rename to patches/server/0953-Use-single-player-info-update-packet-on-join.patch
diff --git a/patches/server/0955-Correctly-shrink-items-during-EntityResurrectEvent.patch b/patches/server/0954-Correctly-shrink-items-during-EntityResurrectEvent.patch
similarity index 100%
rename from patches/server/0955-Correctly-shrink-items-during-EntityResurrectEvent.patch
rename to patches/server/0954-Correctly-shrink-items-during-EntityResurrectEvent.patch
diff --git a/patches/server/0956-Add-Player-sendEquipmentChange-Map-API.patch b/patches/server/0955-Add-Player-sendEquipmentChange-Map-API.patch
similarity index 100%
rename from patches/server/0956-Add-Player-sendEquipmentChange-Map-API.patch
rename to patches/server/0955-Add-Player-sendEquipmentChange-Map-API.patch
diff --git a/patches/server/0957-Win-Screen-API.patch b/patches/server/0956-Win-Screen-API.patch
similarity index 100%
rename from patches/server/0957-Win-Screen-API.patch
rename to patches/server/0956-Win-Screen-API.patch
diff --git a/patches/server/0958-Remove-CraftItemStack-setAmount-null-assignment.patch b/patches/server/0957-Remove-CraftItemStack-setAmount-null-assignment.patch
similarity index 100%
rename from patches/server/0958-Remove-CraftItemStack-setAmount-null-assignment.patch
rename to patches/server/0957-Remove-CraftItemStack-setAmount-null-assignment.patch
diff --git a/patches/server/0959-Fix-force-opening-enchantment-tables.patch b/patches/server/0958-Fix-force-opening-enchantment-tables.patch
similarity index 100%
rename from patches/server/0959-Fix-force-opening-enchantment-tables.patch
rename to patches/server/0958-Fix-force-opening-enchantment-tables.patch
diff --git a/patches/server/0960-Add-Entity-Body-Yaw-API.patch b/patches/server/0959-Add-Entity-Body-Yaw-API.patch
similarity index 100%
rename from patches/server/0960-Add-Entity-Body-Yaw-API.patch
rename to patches/server/0959-Add-Entity-Body-Yaw-API.patch
diff --git a/patches/server/0961-Add-missing-isFuel-Material-entries.patch b/patches/server/0960-Add-missing-isFuel-Material-entries.patch
similarity index 94%
rename from patches/server/0961-Add-missing-isFuel-Material-entries.patch
rename to patches/server/0960-Add-missing-isFuel-Material-entries.patch
index c7898bdfbf..8e0f359547 100644
--- a/patches/server/0961-Add-missing-isFuel-Material-entries.patch
+++ b/patches/server/0960-Add-missing-isFuel-Material-entries.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add missing isFuel Material entries
 
 
 diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java
-index a41c386a60d004f065d837aaf10d1d6c0e2f8976..c74ea594248450c76ccec097aa090bd05f94661e 100644
+index b71602a088de181296dcabed0ac3a2b193ed15e6..f06402ae62c91d5a33dca2e4c9f807e3dc2d311f 100644
 --- a/src/test/java/org/bukkit/support/AbstractTestingBase.java
 +++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java
 @@ -44,7 +44,12 @@ public abstract class AbstractTestingBase {
diff --git a/work/Bukkit b/work/Bukkit
index 22f8c20898..37262de84b 160000
--- a/work/Bukkit
+++ b/work/Bukkit
@@ -1 +1 @@
-Subproject commit 22f8c20898698bdd5fe348404a49d0cad36fef0b
+Subproject commit 37262de84b9613e61809f31691e6f9db48dce0a8
diff --git a/work/CraftBukkit b/work/CraftBukkit
index 39462a8985..a50301aa51 160000
--- a/work/CraftBukkit
+++ b/work/CraftBukkit
@@ -1 +1 @@
-Subproject commit 39462a898595280d1a1c6197c2ad66082434ba80
+Subproject commit a50301aa51aab7aa25869d921fa0c6a65eeda547