diff --git a/patches/api/Actually-mark-mc-experimental-API-as-such.patch b/patches/api/Actually-mark-mc-experimental-API-as-such.patch
new file mode 100644
index 0000000000..0cf486ad26
--- /dev/null
+++ b/patches/api/Actually-mark-mc-experimental-API-as-such.patch
@@ -0,0 +1,314 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <jake.m.potrebic@gmail.com>
+Date: Thu, 8 Dec 2022 17:31:21 -0800
+Subject: [PATCH] Actually mark mc experimental API as such
+
+upstream has inconsistent and incomplete
+minecraft experimental annotations
+
+diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/Material.java
++++ b/src/main/java/org/bukkit/Material.java
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link Orientable}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     STRIPPED_BAMBOO_BLOCK(14799, Orientable.class),
+     /**
+      * BlockData: {@link Orientable}
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link Fence}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_FENCE(17207, Fence.class),
+     /**
+      * BlockData: {@link Fence}
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link Switch}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_BUTTON(21810, Switch.class),
+     /**
+      * BlockData: {@link Switch}
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link Powerable}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_PRESSURE_PLATE(26740, Powerable.class),
+     /**
+      * BlockData: {@link Powerable}
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link Door}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_DOOR(19971, Door.class),
+     /**
+      * BlockData: {@link Door}
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link TrapDoor}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_TRAPDOOR(9174, TrapDoor.class),
+     /**
+      * BlockData: {@link TrapDoor}
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link Gate}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_FENCE_GATE(14290, Gate.class),
+     /**
+      * BlockData: {@link Gate}
+@@ -0,0 +0,0 @@ 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),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_RAFT(25901, 1),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_CHEST_RAFT(20056, 1),
+     /**
+      * BlockData: {@link StructureBlock}
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link Sign}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_SIGN(26139, 16, Sign.class),
+     /**
+      * BlockData: {@link Sign}
+@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
+     /**
+      * BlockData: {@link WallSign}
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BAMBOO_WALL_SIGN(18857, 16, WallSign.class),
+     /**
+      * BlockData: {@link WallHangingSign}
+diff --git a/src/main/java/org/bukkit/Sound.java b/src/main/java/org/bukkit/Sound.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/Sound.java
++++ b/src/main/java/org/bukkit/Sound.java
+@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
+     BLOCK_BAMBOO_SAPLING_HIT("block.bamboo_sapling.hit"),
+     BLOCK_BAMBOO_SAPLING_PLACE("block.bamboo_sapling.place"),
+     BLOCK_BAMBOO_STEP("block.bamboo.step"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_BREAK("block.bamboo_wood.break"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_BUTTON_CLICK_OFF("block.bamboo_wood_button.click_off"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_BUTTON_CLICK_ON("block.bamboo_wood_button.click_on"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_DOOR_CLOSE("block.bamboo_wood_door.close"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_DOOR_OPEN("block.bamboo_wood_door.open"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_FALL("block.bamboo_wood.fall"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_FENCE_GATE_CLOSE("block.bamboo_wood_fence_gate.close"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_FENCE_GATE_OPEN("block.bamboo_wood_fence_gate.open"),
+     @MinecraftExperimental
+     @ApiStatus.Experimental
+@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
+     @MinecraftExperimental
+     @ApiStatus.Experimental
+     BLOCK_BAMBOO_WOOD_HANGING_SIGN_STEP("block.bamboo_wood_hanging_sign.step"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_HIT("block.bamboo_wood.hit"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_PLACE("block.bamboo_wood.place"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_PRESSURE_PLATE_CLICK_OFF("block.bamboo_wood_pressure_plate.click_off"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_PRESSURE_PLATE_CLICK_ON("block.bamboo_wood_pressure_plate.click_on"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_STEP("block.bamboo_wood.step"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_TRAPDOOR_CLOSE("block.bamboo_wood_trapdoor.close"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_BAMBOO_WOOD_TRAPDOOR_OPEN("block.bamboo_wood_trapdoor.open"),
+     BLOCK_BARREL_CLOSE("block.barrel.close"),
+     BLOCK_BARREL_OPEN("block.barrel.open"),
+@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
+     BLOCK_HANGING_ROOTS_HIT("block.hanging_roots.hit"),
+     BLOCK_HANGING_ROOTS_PLACE("block.hanging_roots.place"),
+     BLOCK_HANGING_ROOTS_STEP("block.hanging_roots.step"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_HANGING_SIGN_BREAK("block.hanging_sign.break"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_HANGING_SIGN_FALL("block.hanging_sign.fall"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_HANGING_SIGN_HIT("block.hanging_sign.hit"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_HANGING_SIGN_PLACE("block.hanging_sign.place"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_HANGING_SIGN_STEP("block.hanging_sign.step"),
+     BLOCK_HONEY_BLOCK_BREAK("block.honey_block.break"),
+     BLOCK_HONEY_BLOCK_FALL("block.honey_block.fall"),
+@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
+     BLOCK_NOTE_BLOCK_GUITAR("block.note_block.guitar"),
+     BLOCK_NOTE_BLOCK_HARP("block.note_block.harp"),
+     BLOCK_NOTE_BLOCK_HAT("block.note_block.hat"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_NOTE_BLOCK_IMITATE_CREEPER("block.note_block.imitate.creeper"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_NOTE_BLOCK_IMITATE_ENDER_DRAGON("block.note_block.imitate.ender_dragon"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_NOTE_BLOCK_IMITATE_PIGLIN("block.note_block.imitate.piglin"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_NOTE_BLOCK_IMITATE_SKELETON("block.note_block.imitate.skeleton"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_NOTE_BLOCK_IMITATE_WITHER_SKELETON("block.note_block.imitate.wither_skeleton"),
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     BLOCK_NOTE_BLOCK_IMITATE_ZOMBIE("block.note_block.imitate.zombie"),
+     BLOCK_NOTE_BLOCK_IRON_XYLOPHONE("block.note_block.iron_xylophone"),
+     BLOCK_NOTE_BLOCK_PLING("block.note_block.pling"),
+@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
+     ENTITY_BOAT_PADDLE_LAND("entity.boat.paddle_land"),
+     ENTITY_BOAT_PADDLE_WATER("entity.boat.paddle_water"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_AMBIENT("entity.camel.ambient"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_DASH("entity.camel.dash"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_DASH_READY("entity.camel.dash_ready"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_DEATH("entity.camel.death"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_EAT("entity.camel.eat"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_HURT("entity.camel.hurt"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_SADDLE("entity.camel.saddle"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_SIT("entity.camel.sit"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_STAND("entity.camel.stand"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_STEP("entity.camel.step"),
+     @MinecraftExperimental
++    @ApiStatus.Experimental // Paper
+     ENTITY_CAMEL_STEP_SAND("entity.camel.step_sand"),
+     ENTITY_CAT_AMBIENT("entity.cat.ambient"),
+     ENTITY_CAT_BEG_FOR_FOOD("entity.cat.beg_for_food"),
+diff --git a/src/main/java/org/bukkit/Tag.java b/src/main/java/org/bukkit/Tag.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/Tag.java
++++ b/src/main/java/org/bukkit/Tag.java
+@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
+     /**
+      * Vanilla block tag representing all bamboo blocks.
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     Tag<Material> BAMBOO_BLOCKS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("bamboo_blocks"), Material.class);
+     /**
+      * Vanilla block tag representing all banner blocks.
+@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
+     /**
+      * Vanilla item tag representing all books that may be placed on bookshelves.
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     Tag<Material> ITEMS_BOOKSHELF_BOOKS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("bookshelf_books"), Material.class);
+     /**
+      * Vanilla item tag representing all items that may be placed in beacons.
+@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
+     /**
+      * Vanilla item tag representing all hanging signs.
+      */
++    @MinecraftExperimental // Paper
++    @ApiStatus.Experimental // Paper
+     Tag<Material> ITEMS_HANGING_SIGNS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("hanging_signs"), Material.class);
+     /**
+      * Vanilla item tag representing all items which will ignite creepers when
+diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/event/inventory/InventoryType.java
++++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java
+@@ -0,0 +0,0 @@ public enum InventoryType {
+     /**
+      * Pseudo chiseled bookshelf inventory, with 6 slots of undefined type.
+      */
++    @MinecraftExperimental // Paper
++    @org.jetbrains.annotations.ApiStatus.Experimental // Paper
+     CHISELED_BOOKSHELF(6, "Chiseled Bookshelf", false),
+     /**
+      * Pseudo jukebox inventory with 1 slot of undefined type.
+@@ -0,0 +0,0 @@ public enum InventoryType {
+      * @apiNote draft, experimental 1.20 API
+      */
+     @MinecraftExperimental
++    @org.jetbrains.annotations.ApiStatus.Experimental // Paper
+     SMITHING_NEW(4, "Upgrade Gear"),
+     ;
+ 
+diff --git a/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java b/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java
++++ b/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java
+@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
+ /**
+  * Represents a smithing transform recipe.
+  */
++@org.bukkit.MinecraftExperimental // Paper
++@org.jetbrains.annotations.ApiStatus.Experimental // Paper
+ public class SmithingTransformRecipe extends SmithingRecipe {
+ 
+     private final RecipeChoice template;
diff --git a/patches/api/Adventure.patch b/patches/api/Adventure.patch
index 9562e21cdc..23eadd4235 100644
--- a/patches/api/Adventure.patch
+++ b/patches/api/Adventure.patch
@@ -64,6 +64,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +        "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/",
 +        // Paper end
      )
+     options.tags("apiNote:a:API Note:")
  
 +    inputs.files(apiAndDocs).ignoreEmptyDirectories().withPropertyName(apiAndDocs.name + "-configuration")
 +    doFirst {
diff --git a/patches/api/Build-system-changes.patch b/patches/api/Build-system-changes.patch
index c4b2dd9dc6..fa4e7c0466 100644
--- a/patches/api/Build-system-changes.patch
+++ b/patches/api/Build-system-changes.patch
@@ -45,7 +45,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +        "https://javadoc.io/doc/org.jetbrains/annotations/23.0.0/", // Paper - we don't want Java 5 annotations
          "https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/",
      )
- 
+     options.tags("apiNote:a:API Note:")
 @@ -0,0 +0,0 @@ tasks.withType<Javadoc> {
          }
      }
diff --git a/patches/api/Convert-project-to-Gradle.patch b/patches/api/Convert-project-to-Gradle.patch
index 7096d7421f..aeebbac825 100644
--- a/patches/api/Convert-project-to-Gradle.patch
+++ b/patches/api/Convert-project-to-Gradle.patch
@@ -101,6 +101,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +        "https://javadoc.io/doc/org.jetbrains/annotations-java5/23.0.0/",
 +        "https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/",
 +    )
++    options.tags("apiNote:a:API Note:")
 +
 +    // workaround for https://github.com/gradle/gradle/issues/4046
 +    inputs.dir("src/main/javadoc").withPropertyName("javadoc-sourceset")
@@ -319,6 +320,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 -                        <link>https://javadoc.io/doc/org.jetbrains/annotations-java5/23.0.0/</link>
 -                        <link>https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/</link>
 -                    </links>
+-                    <tags>
+-                        <tag>
+-                            <name>apiNote</name>
+-                            <placement>a</placement>
+-                            <head>API Note:</head>
+-                        </tag>
+-                    </tags>
 -                </configuration>
 -            </plugin>
 -        </plugins>
diff --git a/patches/api/Fix-Spigot-annotation-mistakes.patch b/patches/api/Fix-Spigot-annotation-mistakes.patch
index 8e72436f37..9bd0d2bcdb 100644
--- a/patches/api/Fix-Spigot-annotation-mistakes.patch
+++ b/patches/api/Fix-Spigot-annotation-mistakes.patch
@@ -203,14 +203,14 @@ diff --git a/src/main/java/org/bukkit/UndefinedNullability.java b/src/main/java/
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/UndefinedNullability.java
 +++ b/src/main/java/org/bukkit/UndefinedNullability.java
-@@ -0,0 +0,0 @@ import java.lang.annotation.RetentionPolicy;
+@@ -0,0 +0,0 @@ import org.jetbrains.annotations.ApiStatus;
   * suggests a bad API design.
   */
  @Retention(RetentionPolicy.CLASS)
 +@java.lang.annotation.Documented // Paper
+ @ApiStatus.Internal
  @Deprecated
  public @interface UndefinedNullability {
- 
 diff --git a/src/main/java/org/bukkit/Vibration.java b/src/main/java/org/bukkit/Vibration.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/Vibration.java
@@ -369,43 +369,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +    @Deprecated // Paper
      public MaterialData getDisplayBlock();
  
-     /**
-diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/entity/Player.java
-+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
-      *
-      * @param plugin Plugin that wants to hide the entity
-      * @param entity Entity to hide
--     * @deprecated draft API
-      */
--    @Deprecated
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper
-     public void hideEntity(@NotNull Plugin plugin, @NotNull Entity entity);
- 
-     /**
-@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
-      *
-      * @param plugin Plugin that wants to show the entity
-      * @param entity Entity to show
--     * @deprecated draft API
-      */
--    @Deprecated
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper
-     public void showEntity(@NotNull Plugin plugin, @NotNull Entity entity);
- 
-     /**
-@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
-      * @param entity Entity to check
-      * @return True if the provided entity is not being hidden from this
-      *     player
--     * @deprecated draft API
-      */
--    @Deprecated
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper
-     public boolean canSee(@NotNull Entity entity);
- 
      /**
 diff --git a/src/main/java/org/bukkit/entity/Projectile.java b/src/main/java/org/bukkit/entity/Projectile.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
@@ -495,21 +458,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      @Override
      public void setCancelled(boolean cancel) {
          this.cancel = cancel;
-diff --git a/src/main/java/org/bukkit/event/player/PlayerHideEntityEvent.java b/src/main/java/org/bukkit/event/player/PlayerHideEntityEvent.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/event/player/PlayerHideEntityEvent.java
-+++ b/src/main/java/org/bukkit/event/player/PlayerHideEntityEvent.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
-  * This event is called regardless of if the entity was within tracking range.
-  *
-  * @see Player#hideEntity(org.bukkit.plugin.Plugin, org.bukkit.entity.Entity)
-- * @deprecated draft API
-  */
--@Deprecated
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper
- @Warning(false)
- public class PlayerHideEntityEvent extends PlayerEvent {
- 
 diff --git a/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java b/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java
@@ -523,21 +471,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      public Location getTo() {
          return to;
      }
-diff --git a/src/main/java/org/bukkit/event/player/PlayerShowEntityEvent.java b/src/main/java/org/bukkit/event/player/PlayerShowEntityEvent.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/event/player/PlayerShowEntityEvent.java
-+++ b/src/main/java/org/bukkit/event/player/PlayerShowEntityEvent.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
-  * range.
-  *
-  * @see Player#showEntity(org.bukkit.plugin.Plugin, org.bukkit.entity.Entity)
-- * @deprecated draft API
-  */
--@Deprecated
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper
- @Warning(false)
- public class PlayerShowEntityEvent extends PlayerEvent {
- 
 diff --git a/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java b/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java
diff --git a/patches/api/Fix-upstream-javadocs.patch b/patches/api/Fix-upstream-javadocs.patch
index 6441f92427..10e40c9125 100644
--- a/patches/api/Fix-upstream-javadocs.patch
+++ b/patches/api/Fix-upstream-javadocs.patch
@@ -972,8 +972,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 -     * Setting to show/hide armor trim from leather armor.
 +     * Setting to show/hide armor trim from armor.
       */
-     HIDE_ARMOR_TRIM;
- }
+     @MinecraftExperimental
+     @ApiStatus.Experimental
 diff --git a/src/main/java/org/bukkit/inventory/PlayerInventory.java b/src/main/java/org/bukkit/inventory/PlayerInventory.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/inventory/PlayerInventory.java
diff --git a/patches/api/Mark-experimental-api-as-such.patch b/patches/api/Mark-experimental-api-as-such.patch
deleted file mode 100644
index 6ff31ed61f..0000000000
--- a/patches/api/Mark-experimental-api-as-such.patch
+++ /dev/null
@@ -1,1292 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <jake.m.potrebic@gmail.com>
-Date: Thu, 8 Dec 2022 17:31:21 -0800
-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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/Material.java
-+++ b/src/main/java/org/bukkit/Material.java
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     BIRCH_PLANKS(29322),
-     JUNGLE_PLANKS(26445),
-     ACACIA_PLANKS(31312),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_PLANKS(8354),
-     DARK_OAK_PLANKS(20869),
-     MANGROVE_PLANKS(7078),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_PLANKS(8520),
-     CRIMSON_PLANKS(18812),
-     WARPED_PLANKS(16045),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_MOSAIC(10715),
-     /**
-      * BlockData: {@link Sapling}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Sapling}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_SAPLING(25204, Sapling.class),
-     /**
-      * BlockData: {@link Sapling}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link SuspiciousSand}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SUSPICIOUS_SAND(18410, SuspiciousSand.class),
-     RED_SAND(16279),
-     GRAVEL(7804),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Orientable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_LOG(20847, Orientable.class),
-     /**
-      * BlockData: {@link Orientable}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Orientable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_BLOCK(20770, Orientable.class),
-     /**
-      * BlockData: {@link Orientable}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Orientable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     STRIPPED_CHERRY_LOG(18061, Orientable.class),
-     /**
-      * BlockData: {@link Orientable}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Orientable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     STRIPPED_CHERRY_WOOD(19647, Orientable.class),
-     /**
-      * BlockData: {@link Orientable}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Orientable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     STRIPPED_BAMBOO_BLOCK(14799, Orientable.class),
-     /**
-      * BlockData: {@link Orientable}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Orientable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_WOOD(9826, Orientable.class),
-     /**
-      * BlockData: {@link Orientable}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Leaves}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_LEAVES(20856, Leaves.class),
-     /**
-      * BlockData: {@link Leaves}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     CORNFLOWER(15405),
-     LILY_OF_THE_VALLEY(7185),
-     WITHER_ROSE(8619),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     TORCHFLOWER(4501),
-     SPORE_BLOSSOM(20627),
-     BROWN_MUSHROOM(9665),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link PinkPetals}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     PINK_PETALS(10420, PinkPetals.class),
-     MOSS_BLOCK(9175),
-     /**
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Slab}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_SLAB(16673, Slab.class),
-     /**
-      * BlockData: {@link Slab}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Slab}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_SLAB(17798, Slab.class),
-     /**
-      * BlockData: {@link Slab}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_MOSAIC_SLAB(22118, Slab.class),
-     /**
-      * BlockData: {@link Slab}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link ChiseledBookshelf}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHISELED_BOOKSHELF(8099, ChiseledBookshelf.class),
-     /**
-      * BlockData: {@link DecoratedPot}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     DECORATED_POT(8720, 1, DecoratedPot.class),
-     MOSSY_COBBLESTONE(21900),
-     OBSIDIAN(32723),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Fence}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_FENCE(32047, Fence.class),
-     /**
-      * BlockData: {@link Fence}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Fence}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_FENCE(17207, Fence.class),
-     /**
-      * BlockData: {@link Fence}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Stairs}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_STAIRS(18380, Stairs.class),
-     /**
-      * BlockData: {@link Stairs}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Stairs}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_STAIRS(25674, Stairs.class),
-     /**
-      * BlockData: {@link Stairs}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_MOSAIC_STAIRS(20977, Stairs.class),
-     /**
-      * BlockData: {@link Stairs}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Switch}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_BUTTON(9058, Switch.class),
-     /**
-      * BlockData: {@link Switch}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Switch}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_BUTTON(21810, Switch.class),
-     /**
-      * BlockData: {@link Switch}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Powerable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_PRESSURE_PLATE(8651, Powerable.class),
-     /**
-      * BlockData: {@link Powerable}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Powerable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_PRESSURE_PLATE(26740, Powerable.class),
-     /**
-      * BlockData: {@link Powerable}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Door}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_DOOR(12684, Door.class),
-     /**
-      * BlockData: {@link Door}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Door}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_DOOR(19971, Door.class),
-     /**
-      * BlockData: {@link Door}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link TrapDoor}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_TRAPDOOR(6293, TrapDoor.class),
-     /**
-      * BlockData: {@link TrapDoor}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link TrapDoor}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_TRAPDOOR(9174, TrapDoor.class),
-     /**
-      * BlockData: {@link TrapDoor}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Gate}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_FENCE_GATE(28222, Gate.class),
-     /**
-      * BlockData: {@link Gate}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Gate}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_FENCE_GATE(14290, Gate.class),
-     /**
-      * BlockData: {@link Gate}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     JUNGLE_CHEST_BOAT(20133, 1),
-     ACACIA_BOAT(27326, 1),
-     ACACIA_CHEST_BOAT(28455, 1),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_BOAT(13628, 1),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_CHEST_BOAT(7165, 1),
-     DARK_OAK_BOAT(28618, 1),
-     DARK_OAK_CHEST_BOAT(8733, 1),
-     MANGROVE_BOAT(20792, 1),
-     MANGROVE_CHEST_BOAT(18572, 1),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_RAFT(25901, 1),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_CHEST_RAFT(20056, 1),
-     /**
-      * BlockData: {@link StructureBlock}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Sign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_SIGN(16520, 16, Sign.class),
-     /**
-      * BlockData: {@link Sign}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Sign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_SIGN(26139, 16, Sign.class),
-     /**
-      * BlockData: {@link Sign}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     OAK_HANGING_SIGN(20116, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SPRUCE_HANGING_SIGN(24371, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BIRCH_HANGING_SIGN(17938, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     JUNGLE_HANGING_SIGN(27671, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ACACIA_HANGING_SIGN(30257, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_HANGING_SIGN(5088, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     DARK_OAK_HANGING_SIGN(23360, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     MANGROVE_HANGING_SIGN(25106, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_HANGING_SIGN(4726, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CRIMSON_HANGING_SIGN(20696, 16, HangingSign.class),
-     /**
-      * BlockData: {@link HangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     WARPED_HANGING_SIGN(8195, 16, HangingSign.class),
-     BUCKET(15215, 16),
-     WATER_BUCKET(8802, 1),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     EGG(21603, 16),
-     COMPASS(24139),
-     RECOVERY_COMPASS(12710),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BUNDLE(16835, 1),
-     FISHING_ROD(4167, 1, 64),
-     CLOCK(14980),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     BEE_SPAWN_EGG(22924),
-     BLAZE_SPAWN_EGG(4759),
-     CAT_SPAWN_EGG(29583),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CAMEL_SPAWN_EGG(14760),
-     CAVE_SPIDER_SPAWN_EGG(23341),
-     CHICKEN_SPAWN_EGG(5462),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     SKELETON_SPAWN_EGG(15261),
-     SKELETON_HORSE_SPAWN_EGG(21356),
-     SLIME_SPAWN_EGG(17196),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SNIFFER_SPAWN_EGG(27473),
-     SNOW_GOLEM_SPAWN_EGG(24732),
-     SPIDER_SPAWN_EGG(14984),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Rotatable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     PIGLIN_HEAD(5512, Rotatable.class),
-     NETHER_STAR(12469),
-     PUMPKIN_PIE(28725),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     END_CRYSTAL(19090),
-     CHORUS_FRUIT(7652),
-     POPPED_CHORUS_FRUIT(27844),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     TORCHFLOWER_SEEDS(18153),
-     BEETROOT(23305),
-     BEETROOT_SEEDS(21282),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     NAUTILUS_SHELL(19989),
-     HEART_OF_THE_SEA(11807),
-     CROSSBOW(4340, 1, 465),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SUSPICIOUS_STEW(8173, 1),
-     /**
-      * BlockData: {@link Directional}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     PEARLESCENT_FROGLIGHT(21441, Orientable.class),
-     FROGSPAWN(8350),
-     ECHO_SHARD(12529),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BRUSH(30569, 1, 64),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     NETHERITE_UPGRADE_SMITHING_TEMPLATE(7615),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE(16124),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     DUNE_ARMOR_TRIM_SMITHING_TEMPLATE(30925),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     COAST_ARMOR_TRIM_SMITHING_TEMPLATE(25501),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     WILD_ARMOR_TRIM_SMITHING_TEMPLATE(5870),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     WARD_ARMOR_TRIM_SMITHING_TEMPLATE(24534),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     EYE_ARMOR_TRIM_SMITHING_TEMPLATE(14663),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     VEX_ARMOR_TRIM_SMITHING_TEMPLATE(25818),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     TIDE_ARMOR_TRIM_SMITHING_TEMPLATE(20420),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE(14386),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     RIB_ARMOR_TRIM_SMITHING_TEMPLATE(6010),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE(29143),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     POTTERY_SHARD_ARCHER(26154),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     POTTERY_SHARD_PRIZE(31677),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     POTTERY_SHARD_ARMS_UP(29222),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     POTTERY_SHARD_SKULL(14619),
-     /**
-      * BlockData: {@link Levelled}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link WallSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_WALL_SIGN(20188, 16, WallSign.class),
-     /**
-      * BlockData: {@link WallSign}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link WallSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_WALL_SIGN(18857, 16, WallSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     OAK_WALL_HANGING_SIGN(15637, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SPRUCE_WALL_HANGING_SIGN(18833, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BIRCH_WALL_HANGING_SIGN(15937, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ACACIA_WALL_HANGING_SIGN(22477, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_WALL_HANGING_SIGN(10953, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     JUNGLE_WALL_HANGING_SIGN(16691, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     DARK_OAK_WALL_HANGING_SIGN(14296, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     MANGROVE_WALL_HANGING_SIGN(16974, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CRIMSON_WALL_HANGING_SIGN(28982, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     WARPED_WALL_HANGING_SIGN(20605, WallHangingSign.class),
-     /**
-      * BlockData: {@link WallHangingSign}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BAMBOO_WALL_HANGING_SIGN(6669, WallHangingSign.class),
-     /**
-      * BlockData: {@link RedstoneWallTorch}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-      * BlockData: {@link Tripwire}
-      */
-     TRIPWIRE(8810, Tripwire.class),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     POTTED_TORCHFLOWER(21278),
-     POTTED_OAK_SAPLING(11905),
-     POTTED_SPRUCE_SAPLING(29498),
-     POTTED_BIRCH_SAPLING(32484),
-     POTTED_JUNGLE_SAPLING(7525),
-     POTTED_ACACIA_SAPLING(14096),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     POTTED_CHERRY_SAPLING(30785),
-     POTTED_DARK_OAK_SAPLING(6486),
-     POTTED_MANGROVE_PROPAGULE(22003),
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Directional}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     PIGLIN_WALL_HEAD(4446, Directional.class),
-     /**
-      * BlockData: {@link Directional}
-@@ -0,0 +0,0 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
-     /**
-      * BlockData: {@link Ageable}
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     TORCHFLOWER_CROP(28460, Ageable.class),
-     /**
-      * BlockData: {@link Ageable}
-diff --git a/src/main/java/org/bukkit/Particle.java b/src/main/java/org/bukkit/Particle.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/Particle.java
-+++ b/src/main/java/org/bukkit/Particle.java
-@@ -0,0 +0,0 @@ public enum Particle {
-     SCULK_CHARGE(Float.class),
-     SCULK_CHARGE_POP,
-     SHRIEK(Integer.class),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     DRIPPING_CHERRY_LEAVES,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     FALLING_CHERRY_LEAVES,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     LANDING_CHERRY_LEAVES,
-     /**
-      * Uses {@link BlockData} as DataType
-diff --git a/src/main/java/org/bukkit/Sound.java b/src/main/java/org/bukkit/Sound.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/Sound.java
-+++ b/src/main/java/org/bukkit/Sound.java
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     BLOCK_BAMBOO_SAPLING_HIT("block.bamboo_sapling.hit"),
-     BLOCK_BAMBOO_SAPLING_PLACE("block.bamboo_sapling.place"),
-     BLOCK_BAMBOO_STEP("block.bamboo.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_BREAK("block.bamboo_wood.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_BUTTON_CLICK_OFF("block.bamboo_wood_button.click_off"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_BUTTON_CLICK_ON("block.bamboo_wood_button.click_on"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_DOOR_CLOSE("block.bamboo_wood_door.close"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_DOOR_OPEN("block.bamboo_wood_door.open"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_FALL("block.bamboo_wood.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_FENCE_GATE_CLOSE("block.bamboo_wood_fence_gate.close"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_FENCE_GATE_OPEN("block.bamboo_wood_fence_gate.open"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_HANGING_SIGN_BREAK("block.bamboo_wood_hanging_sign.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_HANGING_SIGN_FALL("block.bamboo_wood_hanging_sign.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_HANGING_SIGN_HIT("block.bamboo_wood_hanging_sign.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_HANGING_SIGN_PLACE("block.bamboo_wood_hanging_sign.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_HANGING_SIGN_STEP("block.bamboo_wood_hanging_sign.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_HIT("block.bamboo_wood.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_PLACE("block.bamboo_wood.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_PRESSURE_PLATE_CLICK_OFF("block.bamboo_wood_pressure_plate.click_off"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_PRESSURE_PLATE_CLICK_ON("block.bamboo_wood_pressure_plate.click_on"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_STEP("block.bamboo_wood.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_TRAPDOOR_CLOSE("block.bamboo_wood_trapdoor.close"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_BAMBOO_WOOD_TRAPDOOR_OPEN("block.bamboo_wood_trapdoor.open"),
-     BLOCK_BARREL_CLOSE("block.barrel.close"),
-     BLOCK_BARREL_OPEN("block.barrel.open"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     BLOCK_CHAIN_HIT("block.chain.hit"),
-     BLOCK_CHAIN_PLACE("block.chain.place"),
-     BLOCK_CHAIN_STEP("block.chain.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_LEAVES_BREAK("block.cherry_leaves.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_LEAVES_FALL("block.cherry_leaves.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_LEAVES_HIT("block.cherry_leaves.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_LEAVES_PLACE("block.cherry_leaves.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_LEAVES_STEP("block.cherry_leaves.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_SAPLING_BREAK("block.cherry_sapling.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_SAPLING_FALL("block.cherry_sapling.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_SAPLING_HIT("block.cherry_sapling.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_SAPLING_PLACE("block.cherry_sapling.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_SAPLING_STEP("block.cherry_sapling.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_BREAK("block.cherry_wood.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_BUTTON_CLICK_OFF("block.cherry_wood_button.click_off"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_BUTTON_CLICK_ON("block.cherry_wood_button.click_on"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_DOOR_CLOSE("block.cherry_wood_door.close"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_DOOR_OPEN("block.cherry_wood_door.open"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_FALL("block.cherry_wood.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_FENCE_GATE_CLOSE("block.cherry_wood_fence_gate.close"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_FENCE_GATE_OPEN("block.cherry_wood_fence_gate.open"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_HANGING_SIGN_BREAK("block.cherry_wood_hanging_sign.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_HANGING_SIGN_FALL("block.cherry_wood_hanging_sign.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_HANGING_SIGN_HIT("block.cherry_wood_hanging_sign.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_HANGING_SIGN_PLACE("block.cherry_wood_hanging_sign.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_HANGING_SIGN_STEP("block.cherry_wood_hanging_sign.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_HIT("block.cherry_wood.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_PLACE("block.cherry_wood.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_PRESSURE_PLATE_CLICK_OFF("block.cherry_wood_pressure_plate.click_off"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_PRESSURE_PLATE_CLICK_ON("block.cherry_wood_pressure_plate.click_on"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_STEP("block.cherry_wood.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_TRAPDOOR_CLOSE("block.cherry_wood_trapdoor.close"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHERRY_WOOD_TRAPDOOR_OPEN("block.cherry_wood_trapdoor.open"),
-     BLOCK_CHEST_CLOSE("block.chest.close"),
-     BLOCK_CHEST_LOCKED("block.chest.locked"),
-     BLOCK_CHEST_OPEN("block.chest.open"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_BREAK("block.chiseled_bookshelf.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_FALL("block.chiseled_bookshelf.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_HIT("block.chiseled_bookshelf.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_INSERT("block.chiseled_bookshelf.insert"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_INSERT_ENCHANTED("block.chiseled_bookshelf.insert.enchanted"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_PICKUP("block.chiseled_bookshelf.pickup"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_PICKUP_ENCHANTED("block.chiseled_bookshelf.pickup.enchanted"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_PLACE("block.chiseled_bookshelf.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_CHISELED_BOOKSHELF_STEP("block.chiseled_bookshelf.step"),
-     BLOCK_CHORUS_FLOWER_DEATH("block.chorus_flower.death"),
-     BLOCK_CHORUS_FLOWER_GROW("block.chorus_flower.grow"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     BLOCK_CORAL_BLOCK_PLACE("block.coral_block.place"),
-     BLOCK_CORAL_BLOCK_STEP("block.coral_block.step"),
-     BLOCK_CROP_BREAK("block.crop.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_DECORATED_POT_BREAK("block.decorated_pot.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_DECORATED_POT_FALL("block.decorated_pot.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_DECORATED_POT_HIT("block.decorated_pot.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_DECORATED_POT_PLACE("block.decorated_pot.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_DECORATED_POT_SHATTER("block.decorated_pot.shatter"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_DECORATED_POT_STEP("block.decorated_pot.step"),
-     BLOCK_DEEPSLATE_BREAK("block.deepslate.break"),
-     BLOCK_DEEPSLATE_BRICKS_BREAK("block.deepslate_bricks.break"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     BLOCK_HANGING_ROOTS_HIT("block.hanging_roots.hit"),
-     BLOCK_HANGING_ROOTS_PLACE("block.hanging_roots.place"),
-     BLOCK_HANGING_ROOTS_STEP("block.hanging_roots.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_HANGING_SIGN_BREAK("block.hanging_sign.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_HANGING_SIGN_FALL("block.hanging_sign.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_HANGING_SIGN_HIT("block.hanging_sign.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_HANGING_SIGN_PLACE("block.hanging_sign.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_HANGING_SIGN_STEP("block.hanging_sign.step"),
-     BLOCK_HONEY_BLOCK_BREAK("block.honey_block.break"),
-     BLOCK_HONEY_BLOCK_FALL("block.honey_block.fall"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     BLOCK_NOTE_BLOCK_GUITAR("block.note_block.guitar"),
-     BLOCK_NOTE_BLOCK_HARP("block.note_block.harp"),
-     BLOCK_NOTE_BLOCK_HAT("block.note_block.hat"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_NOTE_BLOCK_IMITATE_CREEPER("block.note_block.imitate.creeper"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_NOTE_BLOCK_IMITATE_ENDER_DRAGON("block.note_block.imitate.ender_dragon"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_NOTE_BLOCK_IMITATE_PIGLIN("block.note_block.imitate.piglin"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_NOTE_BLOCK_IMITATE_SKELETON("block.note_block.imitate.skeleton"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_NOTE_BLOCK_IMITATE_WITHER_SKELETON("block.note_block.imitate.wither_skeleton"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_NOTE_BLOCK_IMITATE_ZOMBIE("block.note_block.imitate.zombie"),
-     BLOCK_NOTE_BLOCK_IRON_XYLOPHONE("block.note_block.iron_xylophone"),
-     BLOCK_NOTE_BLOCK_PLING("block.note_block.pling"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     BLOCK_PACKED_MUD_HIT("block.packed_mud.hit"),
-     BLOCK_PACKED_MUD_PLACE("block.packed_mud.place"),
-     BLOCK_PACKED_MUD_STEP("block.packed_mud.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_PINK_PETALS_BREAK("block.pink_petals.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_PINK_PETALS_FALL("block.pink_petals.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_PINK_PETALS_HIT("block.pink_petals.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_PINK_PETALS_PLACE("block.pink_petals.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_PINK_PETALS_STEP("block.pink_petals.step"),
-     BLOCK_PISTON_CONTRACT("block.piston.contract"),
-     BLOCK_PISTON_EXTEND("block.piston.extend"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     BLOCK_STONE_PRESSURE_PLATE_CLICK_OFF("block.stone_pressure_plate.click_off"),
-     BLOCK_STONE_PRESSURE_PLATE_CLICK_ON("block.stone_pressure_plate.click_on"),
-     BLOCK_STONE_STEP("block.stone.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_SUSPICIOUS_SAND_BREAK("block.suspicious_sand.break"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_SUSPICIOUS_SAND_FALL("block.suspicious_sand.fall"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_SUSPICIOUS_SAND_HIT("block.suspicious_sand.hit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_SUSPICIOUS_SAND_PLACE("block.suspicious_sand.place"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     BLOCK_SUSPICIOUS_SAND_STEP("block.suspicious_sand.step"),
-     BLOCK_SWEET_BERRY_BUSH_BREAK("block.sweet_berry_bush.break"),
-     BLOCK_SWEET_BERRY_BUSH_PICK_BERRIES("block.sweet_berry_bush.pick_berries"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     ENTITY_BLAZE_SHOOT("entity.blaze.shoot"),
-     ENTITY_BOAT_PADDLE_LAND("entity.boat.paddle_land"),
-     ENTITY_BOAT_PADDLE_WATER("entity.boat.paddle_water"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_AMBIENT("entity.camel.ambient"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_DASH("entity.camel.dash"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_DASH_READY("entity.camel.dash_ready"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_DEATH("entity.camel.death"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_EAT("entity.camel.eat"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_HURT("entity.camel.hurt"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_SADDLE("entity.camel.saddle"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_SIT("entity.camel.sit"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_STAND("entity.camel.stand"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_STEP("entity.camel.step"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_CAMEL_STEP_SAND("entity.camel.step_sand"),
-     ENTITY_CAT_AMBIENT("entity.cat.ambient"),
-     ENTITY_CAT_BEG_FOR_FOOD("entity.cat.beg_for_food"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     ENTITY_SLIME_JUMP_SMALL("entity.slime.jump_small"),
-     ENTITY_SLIME_SQUISH("entity.slime.squish"),
-     ENTITY_SLIME_SQUISH_SMALL("entity.slime.squish_small"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_DEATH("entity.sniffer.death"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_DIGGING("entity.sniffer.digging"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_DIGGING_STOP("entity.sniffer.digging_stop"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_DROP_SEED("entity.sniffer.drop_seed"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_EAT("entity.sniffer.eat"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_HAPPY("entity.sniffer.happy"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_HURT("entity.sniffer.hurt"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_IDLE("entity.sniffer.idle"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_SCENTING("entity.sniffer.scenting"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_SEARCHING("entity.sniffer.searching"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_SNIFFING("entity.sniffer.sniffing"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ENTITY_SNIFFER_STEP("entity.sniffer.step"),
-     ENTITY_SNOWBALL_THROW("entity.snowball.throw"),
-     ENTITY_SNOW_GOLEM_AMBIENT("entity.snow_golem.ambient"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     ITEM_BOTTLE_EMPTY("item.bottle.empty"),
-     ITEM_BOTTLE_FILL("item.bottle.fill"),
-     ITEM_BOTTLE_FILL_DRAGONBREATH("item.bottle.fill_dragonbreath"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ITEM_BRUSH_BRUSHING("item.brush.brushing"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     ITEM_BRUSH_BRUSH_SAND_COMPLETED("item.brush.brush_sand_completed"),
-     ITEM_BUCKET_EMPTY("item.bucket.empty"),
-     ITEM_BUCKET_EMPTY_AXOLOTL("item.bucket.empty_axolotl"),
-@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
-     MUSIC_NETHER_NETHER_WASTES("music.nether.nether_wastes"),
-     MUSIC_NETHER_SOUL_SAND_VALLEY("music.nether.soul_sand_valley"),
-     MUSIC_NETHER_WARPED_FOREST("music.nether.warped_forest"),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     MUSIC_OVERWORLD_CHERRY_GROVE("music.overworld.cherry_grove"),
-     MUSIC_OVERWORLD_DEEP_DARK("music.overworld.deep_dark"),
-     MUSIC_OVERWORLD_DRIPSTONE_CAVES("music.overworld.dripstone_caves"),
-diff --git a/src/main/java/org/bukkit/Tag.java b/src/main/java/org/bukkit/Tag.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/Tag.java
-+++ b/src/main/java/org/bukkit/Tag.java
-@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
-     /**
-      * Vanilla block tag representing all cherry log and bark variants.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> CHERRY_LOGS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("cherry_logs"), Material.class);
-     /**
-      * Vanilla block tag representing all jungle log and bark variants.
-@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
-     /**
-      * Vanilla block tag representing all bamboo blocks.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> BAMBOO_BLOCKS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("bamboo_blocks"), Material.class);
-     /**
-      * Vanilla block tag representing all banner blocks.
-@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
-     /**
-      * Vanilla block tag representing all ceiling signs.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> CEILING_HANGING_SIGNS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("ceiling_hanging_signs"), Material.class);
-     /**
-      * Vanilla block tag representing all wall hanging signs.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> WALL_HANGING_SIGNS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wall_hanging_signs"), Material.class);
-     /**
-      * Vanilla block tag representing all hanging signs.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ALL_HANGING_SIGNS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("all_hanging_signs"), Material.class);
-     /**
-      * Vanilla block tag representing all signs, regardless of type.
-@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
-     /**
-      * Vanilla block tag representing blocks which can be dug by sniffers.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> SNIFFER_DIGGABLE_BLOCK = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("sniffer_diggable_block"), Material.class);
-     /**
-      * Key for the built in item registry.
-@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
-     /**
-      * Vanilla item tag representing all books that may be placed on bookshelves.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_BOOKSHELF_BOOKS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("bookshelf_books"), Material.class);
-     /**
-      * Vanilla item tag representing all items that may be placed in beacons.
-@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
-     /**
-      * Vanilla item tag representing all hanging signs.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_HANGING_SIGNS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("hanging_signs"), Material.class);
-     /**
-      * Vanilla item tag representing all items which will ignite creepers when
-@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
-     /**
-      * Vanilla item tag representing all items which modify note block sounds when placed on top.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_NOTE_BLOCK_TOP_INSTRUMENTS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("noteblock_top_instruments"), Material.class);
-     /**
-      * Vanilla item tag representing all trimmable armor items.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_TRIMMABLE_ARMOR = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("trimmable_armor"), Material.class);
-     /**
-      * Vanilla item tag representing all materials which can be used for trimming armor.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_TRIM_MATERIALS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("trim_materials"), Material.class);
-     /**
-      * Vanilla item tag representing all trimming templates.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_TRIM_TEMPLATES = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("trim_templates"), Material.class);
-     /**
-      * Vanilla item tag representing all food for sniffers.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_SNIFFER_FOOD = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("sniffer_food"), Material.class);
-     /**
-      * Vanilla item tag representing all decorated pot shards.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_DECORATED_POT_SHARDS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("decorated_pot_shards"), Material.class);
-     /**
-      * Vanilla item tag representing all swords.
-@@ -0,0 +0,0 @@ public interface Tag<T extends Keyed> extends Keyed {
-     /**
-      * Vanilla item tag representing all item which break decorated pots.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     Tag<Material> ITEMS_BREAKS_DECORATED_POTS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("breaks_decorated_pots"), Material.class);
-     /**
-      * Vanilla item tag representing all items that confer freeze immunity on
-diff --git a/src/main/java/org/bukkit/TreeType.java b/src/main/java/org/bukkit/TreeType.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/TreeType.java
-+++ b/src/main/java/org/bukkit/TreeType.java
-@@ -0,0 +0,0 @@ public enum TreeType {
-     /**
-      * Cherry tree
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY,
- }
-diff --git a/src/main/java/org/bukkit/block/Biome.java b/src/main/java/org/bukkit/block/Biome.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/Biome.java
-+++ b/src/main/java/org/bukkit/block/Biome.java
-@@ -0,0 +0,0 @@ public enum Biome implements Keyed, net.kyori.adventure.translation.Translatable
-     FROZEN_PEAKS,
-     JAGGED_PEAKS,
-     STONY_PEAKS,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHERRY_GROVE,
-     /**
-      * Represents a custom Biome
-diff --git a/src/main/java/org/bukkit/block/ChiseledBookshelf.java b/src/main/java/org/bukkit/block/ChiseledBookshelf.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/ChiseledBookshelf.java
-+++ b/src/main/java/org/bukkit/block/ChiseledBookshelf.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
- /**
-  * Represents a captured state of a chiseled bookshelf.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface ChiseledBookshelf extends TileState, BlockInventoryHolder {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/block/DecoratedPot.java b/src/main/java/org/bukkit/block/DecoratedPot.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/DecoratedPot.java
-+++ b/src/main/java/org/bukkit/block/DecoratedPot.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable;
- /**
-  * Represents a captured state of a decorated pot.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface DecoratedPot extends TileState {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/block/HangingSign.java b/src/main/java/org/bukkit/block/HangingSign.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/HangingSign.java
-+++ b/src/main/java/org/bukkit/block/HangingSign.java
-@@ -0,0 +0,0 @@ package org.bukkit.block;
- /**
-  * Represents a captured state of a hanging sign.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface HangingSign extends Sign {
- }
-diff --git a/src/main/java/org/bukkit/block/Skull.java b/src/main/java/org/bukkit/block/Skull.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/Skull.java
-+++ b/src/main/java/org/bukkit/block/Skull.java
-@@ -0,0 +0,0 @@ public interface Skull extends TileState {
-      *
-      * @return the key of the sound, or null
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     @Nullable
-     public NamespacedKey getNoteBlockSound();
- 
-@@ -0,0 +0,0 @@ public interface Skull extends TileState {
-      *
-      * @param noteBlockSound the key of the sound to be played, or null
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     public void setNoteBlockSound(@Nullable NamespacedKey noteBlockSound);
- 
-     /**
-diff --git a/src/main/java/org/bukkit/block/SuspiciousSand.java b/src/main/java/org/bukkit/block/SuspiciousSand.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/SuspiciousSand.java
-+++ b/src/main/java/org/bukkit/block/SuspiciousSand.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable;
- /**
-  * Represents a captured state of suspicious sand.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface SuspiciousSand extends Lootable, TileState {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/block/data/type/ChiseledBookshelf.java b/src/main/java/org/bukkit/block/data/type/ChiseledBookshelf.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/data/type/ChiseledBookshelf.java
-+++ b/src/main/java/org/bukkit/block/data/type/ChiseledBookshelf.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
-  * <br>
-  * Block may have 0, 1... {@link #getMaximumOccupiedSlots()}-1 occupied slots.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface ChiseledBookshelf extends Directional {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/block/data/type/DecoratedPot.java b/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
-+++ b/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
-@@ -0,0 +0,0 @@ package org.bukkit.block.data.type;
- import org.bukkit.block.data.Directional;
- import org.bukkit.block.data.Waterlogged;
- 
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface DecoratedPot extends Directional, Waterlogged {
- }
-diff --git a/src/main/java/org/bukkit/block/data/type/HangingSign.java b/src/main/java/org/bukkit/block/data/type/HangingSign.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/data/type/HangingSign.java
-+++ b/src/main/java/org/bukkit/block/data/type/HangingSign.java
-@@ -0,0 +0,0 @@ import org.bukkit.block.data.Attachable;
- import org.bukkit.block.data.Rotatable;
- import org.bukkit.block.data.Waterlogged;
- 
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface HangingSign extends Attachable, Rotatable, Waterlogged {
- }
-diff --git a/src/main/java/org/bukkit/block/data/type/PinkPetals.java b/src/main/java/org/bukkit/block/data/type/PinkPetals.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/data/type/PinkPetals.java
-+++ b/src/main/java/org/bukkit/block/data/type/PinkPetals.java
-@@ -0,0 +0,0 @@ import org.bukkit.block.data.Directional;
- /**
-  * 'flower_amount' represents the number of petals.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface PinkPetals extends Directional {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/block/data/type/SuspiciousSand.java b/src/main/java/org/bukkit/block/data/type/SuspiciousSand.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/data/type/SuspiciousSand.java
-+++ b/src/main/java/org/bukkit/block/data/type/SuspiciousSand.java
-@@ -0,0 +0,0 @@ import org.bukkit.block.data.BlockData;
- /**
-  * 'dusted' represents how far uncovered by brush the block is.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface SuspiciousSand extends BlockData {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/block/data/type/WallHangingSign.java b/src/main/java/org/bukkit/block/data/type/WallHangingSign.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/block/data/type/WallHangingSign.java
-+++ b/src/main/java/org/bukkit/block/data/type/WallHangingSign.java
-@@ -0,0 +0,0 @@ package org.bukkit.block.data.type;
- import org.bukkit.block.data.Directional;
- import org.bukkit.block.data.Waterlogged;
- 
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface WallHangingSign extends Directional, Waterlogged {
- }
-diff --git a/src/main/java/org/bukkit/entity/Boat.java b/src/main/java/org/bukkit/entity/Boat.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/entity/Boat.java
-+++ b/src/main/java/org/bukkit/entity/Boat.java
-@@ -0,0 +0,0 @@ public interface Boat extends Vehicle {
-         BIRCH(Material.BIRCH_PLANKS),
-         JUNGLE(Material.JUNGLE_PLANKS),
-         ACACIA(Material.ACACIA_PLANKS),
-+        @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-         CHERRY(Material.CHERRY_PLANKS),
-         DARK_OAK(Material.DARK_OAK_PLANKS),
-         MANGROVE(Material.MANGROVE_PLANKS),
-+        @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-         BAMBOO(Material.BAMBOO_PLANKS),
-         ;
- 
-diff --git a/src/main/java/org/bukkit/entity/Camel.java b/src/main/java/org/bukkit/entity/Camel.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/entity/Camel.java
-+++ b/src/main/java/org/bukkit/entity/Camel.java
-@@ -0,0 +0,0 @@ package org.bukkit.entity;
- /**
-  * Represents a Camel.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface Camel extends AbstractHorse, Sittable {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/entity/EntityType.java
-+++ b/src/main/java/org/bukkit/entity/EntityType.java
-@@ -0,0 +0,0 @@ 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),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CAMEL("camel", Camel.class, -1),
-     BLOCK_DISPLAY("block_display", BlockDisplay.class, -1),
-     INTERACTION("interaction", Interaction.class, -1),
-     ITEM_DISPLAY("item_display", ItemDisplay.class, -1),
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SNIFFER("sniffer", Sniffer.class, -1),
-     TEXT_DISPLAY("text_display", TextDisplay.class, -1),
-     /**
-diff --git a/src/main/java/org/bukkit/entity/Sniffer.java b/src/main/java/org/bukkit/entity/Sniffer.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/entity/Sniffer.java
-+++ b/src/main/java/org/bukkit/entity/Sniffer.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable;
-  * <b>Note: This entity is part of an experimental feature of Minecraft and
-  * hence subject to change.</b>
-  */
--@ApiStatus.Experimental
-+@ApiStatus.Experimental // Paper - 1.20
- public interface Sniffer extends Animals {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/entity/memory/MemoryKey.java b/src/main/java/org/bukkit/entity/memory/MemoryKey.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/entity/memory/MemoryKey.java
-+++ b/src/main/java/org/bukkit/entity/memory/MemoryKey.java
-@@ -0,0 +0,0 @@ public final class MemoryKey<T> implements Keyed {
-     public static final MemoryKey<Location> LIKED_NOTEBLOCK_POSITION = new MemoryKey<>(NamespacedKey.minecraft("liked_noteblock"), Location.class);
-     public static final MemoryKey<Integer> LIKED_NOTEBLOCK_COOLDOWN_TICKS = new MemoryKey<>(NamespacedKey.minecraft("liked_noteblock_cooldown_ticks"), Integer.class);
-     public static final MemoryKey<Integer> ITEM_PICKUP_COOLDOWN_TICKS = new MemoryKey<>(NamespacedKey.minecraft("item_pickup_cooldown_ticks"), Integer.class);
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     public static final MemoryKey<Location> SNIFFER_EXPLORED_POSITIONS = new MemoryKey<>(NamespacedKey.minecraft("sniffer_explored_positions"), Location.class);
- 
-     /**
-diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/event/inventory/InventoryType.java
-+++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java
-@@ -0,0 +0,0 @@ public enum InventoryType {
-     /**
-      * Pseudo chiseled bookshelf inventory, with 6 slots of undefined type.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     CHISELED_BOOKSHELF(6, "Chiseled Bookshelf", false),
-     /**
-      * Pseudo jukebox inventory with 1 slot of undefined type.
-@@ -0,0 +0,0 @@ public enum InventoryType {
-      *
-      * @deprecated draft, experimental 1.20 API
-      */
--    @Deprecated
-+    @Deprecated @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     SMITHING_NEW(4, "Upgrade Gear"),
-     ;
- 
-diff --git a/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java b/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
-+++ b/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable;
- /**
-  * Interface to the inventory of a chiseled bookshelf.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface ChiseledBookshelfInventory extends Inventory {
- 
-     @Nullable
-diff --git a/src/main/java/org/bukkit/inventory/ItemFlag.java b/src/main/java/org/bukkit/inventory/ItemFlag.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/inventory/ItemFlag.java
-+++ b/src/main/java/org/bukkit/inventory/ItemFlag.java
-@@ -0,0 +0,0 @@ public enum ItemFlag {
-     /**
-      * Setting to show/hide armor trim from armor.
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     HIDE_ARMOR_TRIM;
- }
-diff --git a/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java b/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java
-+++ b/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
- /**
-  * Represents a smithing transform recipe.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public class SmithingTransformRecipe extends SmithingRecipe {
- 
-     private final RecipeChoice template;
-diff --git a/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java b/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
-+++ b/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
-@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
- /**
-  * Represents a smithing trim recipe.
-  */
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public class SmithingTrimRecipe extends SmithingRecipe implements ComplexRecipe {
- 
-     private final RecipeChoice template;
-diff --git a/src/main/java/org/bukkit/inventory/meta/BundleMeta.java b/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
-+++ b/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
-@@ -0,0 +0,0 @@ import org.bukkit.inventory.ItemStack;
- import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
- 
-+@org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
- public interface BundleMeta extends ItemMeta {
- 
-     /**
-diff --git a/src/main/java/org/bukkit/inventory/meta/SkullMeta.java b/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
-+++ b/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
-@@ -0,0 +0,0 @@ public interface SkullMeta extends ItemMeta {
-      *
-      * @param noteBlockSound the key of the sound to be played, or null
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     void setNoteBlockSound(@Nullable NamespacedKey noteBlockSound);
- 
-     /**
-@@ -0,0 +0,0 @@ public interface SkullMeta extends ItemMeta {
-      *
-      * @return the key of the sound, or null
-      */
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
-     @Nullable
-     NamespacedKey getNoteBlockSound();
- 
diff --git a/patches/api/Replace-ItemFlag.HIDE_POTION_EFFECTS.patch b/patches/api/Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
index ba023309e6..bb1e3e813d 100644
--- a/patches/api/Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
+++ b/patches/api/Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
@@ -19,8 +19,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      /**
       * Setting to show/hide dyes from colored leather armor.
 @@ -0,0 +0,0 @@ public enum ItemFlag {
-      */
-     @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
+     @MinecraftExperimental
+     @ApiStatus.Experimental
      HIDE_ARMOR_TRIM;
 +    // Paper start
 +    /**
diff --git a/patches/api/fix-Instruments.patch b/patches/api/fix-Instruments.patch
index bc8dc4492f..2799bb3202 100644
--- a/patches/api/fix-Instruments.patch
+++ b/patches/api/fix-Instruments.patch
@@ -29,47 +29,52 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
       */
      STICKS(0x3),
 @@ -0,0 +0,0 @@ public enum Instrument {
-     /**
-      * Zombie is normally played when a Zombie Head is on top of the note block.
       */
+     @MinecraftExperimental
+     @ApiStatus.Experimental
 -    ZOMBIE,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
 +    ZOMBIE(0x10), // Paper
      /**
       * Skeleton is normally played when a Skeleton Head is on top of the note block.
       */
+     @MinecraftExperimental
+     @ApiStatus.Experimental
 -    SKELETON,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
 +    SKELETON(0x11), // Paper
      /**
       * Creeper is normally played when a Creeper Head is on top of the note block.
       */
+     @MinecraftExperimental
+     @ApiStatus.Experimental
 -    CREEPER,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
 +    CREEPER(0x12), // Paper
      /**
       * Dragon is normally played when a Dragon Head is on top of the note block.
       */
+     @MinecraftExperimental
+     @ApiStatus.Experimental
 -    DRAGON,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
 +    DRAGON(0x13), // Paper
      /**
       * Wither Skeleton is normally played when a Wither Skeleton Head is on top of the note block.
       */
+     @MinecraftExperimental
+     @ApiStatus.Experimental
 -    WITHER_SKELETON,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
 +    WITHER_SKELETON(0x14), // Paper
      /**
       * Piglin is normally played when a Piglin Head is on top of the note block.
       */
+     @MinecraftExperimental
+     @ApiStatus.Experimental
 -    PIGLIN,
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
 +    PIGLIN(0x15), // Paper
      /**
       * Custom Sound is normally played when a Player Head with the required data is on top of the note block.
       */
+     @MinecraftExperimental
+     @ApiStatus.Experimental
 -    CUSTOM_HEAD;
-+    @org.jetbrains.annotations.ApiStatus.Experimental // Paper - 1.20
 +    CUSTOM_HEAD(0x16); // Paper
  
      private final byte type;
diff --git a/patches/server/Add-StructuresLocateEvent.patch b/patches/server/Add-StructuresLocateEvent.patch
index bd3e10f101..ef574d9311 100644
--- a/patches/server/Add-StructuresLocateEvent.patch
+++ b/patches/server/Add-StructuresLocateEvent.patch
@@ -80,7 +80,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
 @@ -0,0 +0,0 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
-             return new CraftRegistry<>(BuiltInRegistries.STRUCTURE_TYPE, CraftStructureType::new);
+             return new CraftRegistry<>(registryHolder.registryOrThrow(Registries.TRIM_PATTERN), CraftTrimPattern::new);
          }
          // TODO registry modification API
 +        // Paper start - remove this after a while along with all ConfiguredStructure stuff
diff --git a/patches/server/Properly-cancel-bed-block-placement.patch b/patches/server/Properly-cancel-bed-block-placement.patch
deleted file mode 100644
index 206515b7e6..0000000000
--- a/patches/server/Properly-cancel-bed-block-placement.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <jake.m.potrebic@gmail.com>
-Date: Sun, 26 Mar 2023 13:17:41 -0700
-Subject: [PATCH] Properly cancel bed block placement
-
-
-diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/net/minecraft/world/level/block/BedBlock.java
-+++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java
-@@ -0,0 +0,0 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
- 
-             world.setBlock(blockposition1, (BlockState) state.setValue(BedBlock.PART, BedPart.HEAD), 3);
-             world.blockUpdated(pos, Blocks.AIR);
--            state.updateNeighbourShapes(world, pos, 3);
-+            // state.updateNeighbourShapes(world, pos, 3); // Paper - shapes will be updated on successful block place
-         }
- 
-     }
diff --git a/patches/server/TODO-Registry-Modification-API.patch b/patches/server/TODO-Registry-Modification-API.patch
index a284b1b8c5..f1f9e76fbf 100644
--- a/patches/server/TODO-Registry-Modification-API.patch
+++ b/patches/server/TODO-Registry-Modification-API.patch
@@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
 @@ -0,0 +0,0 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> {
-         if (bukkitClass == StructureType.class) {
-             return new CraftRegistry<>(BuiltInRegistries.STRUCTURE_TYPE, CraftStructureType::new);
+         if (bukkitClass == TrimPattern.class) {
+             return new CraftRegistry<>(registryHolder.registryOrThrow(Registries.TRIM_PATTERN), CraftTrimPattern::new);
          }
 +        // TODO registry modification API
  
diff --git a/work/Bukkit b/work/Bukkit
index 5efeb7bdbf..eb4b416d2b 160000
--- a/work/Bukkit
+++ b/work/Bukkit
@@ -1 +1 @@
-Subproject commit 5efeb7bdbfa459cd0a59aa6a8941ff962662617f
+Subproject commit eb4b416d2b270c01dba22a583204e62c4440dd3d
diff --git a/work/CraftBukkit b/work/CraftBukkit
index be8682aa82..19de3550d8 160000
--- a/work/CraftBukkit
+++ b/work/CraftBukkit
@@ -1 +1 @@
-Subproject commit be8682aa824764ebf811107c5eb928ffad6c1af5
+Subproject commit 19de3550d85d736cdf1ae0838fe7891576985e49
diff --git a/work/Spigot b/work/Spigot
index b31949f2f3..d2fdfe3915 160000
--- a/work/Spigot
+++ b/work/Spigot
@@ -1 +1 @@
-Subproject commit b31949f2f33ef94ed07dbe37fb00939cf049a989
+Subproject commit d2fdfe39154577ac5ee1dac1672eab79a9577dc2