+ * Note: Elements marked with this annotation require the use of a datapack or otherwise
+ * non-standard feature to be enabled on the server.
+ *
+ * @see Features Toggles - Minecraft Article
+ */
+@Documented
+@Retention(RetentionPolicy.CLASS)
+@Target({
+ ElementType.TYPE, ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.PACKAGE
+})
+@ApiStatus.Internal
+public @interface MinecraftExperimental {
+}
diff --git a/paper-api/src/main/java/org/bukkit/Particle.java b/paper-api/src/main/java/org/bukkit/Particle.java
index 0ca7955003..7336edb91e 100644
--- a/paper-api/src/main/java/org/bukkit/Particle.java
+++ b/paper-api/src/main/java/org/bukkit/Particle.java
@@ -4,6 +4,7 @@ import com.google.common.base.Preconditions;
import org.bukkit.block.data.BlockData;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
public enum Particle {
@@ -123,8 +124,14 @@ public enum Particle {
SCULK_CHARGE(Float.class),
SCULK_CHARGE_POP,
SHRIEK(Integer.class),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
DRIPPING_CHERRY_LEAVES,
+ @MinecraftExperimental
+ @ApiStatus.Experimental
FALLING_CHERRY_LEAVES,
+ @MinecraftExperimental
+ @ApiStatus.Experimental
LANDING_CHERRY_LEAVES,
/**
* Uses {@link BlockData} as DataType
diff --git a/paper-api/src/main/java/org/bukkit/Sound.java b/paper-api/src/main/java/org/bukkit/Sound.java
index 5676389bb8..4dda509173 100644
--- a/paper-api/src/main/java/org/bukkit/Sound.java
+++ b/paper-api/src/main/java/org/bukkit/Sound.java
@@ -1,5 +1,6 @@
package org.bukkit;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
@@ -84,10 +85,20 @@ public enum Sound implements Keyed {
BLOCK_BAMBOO_WOOD_FALL("block.bamboo_wood.fall"),
BLOCK_BAMBOO_WOOD_FENCE_GATE_CLOSE("block.bamboo_wood_fence_gate.close"),
BLOCK_BAMBOO_WOOD_FENCE_GATE_OPEN("block.bamboo_wood_fence_gate.open"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_BAMBOO_WOOD_HANGING_SIGN_BREAK("block.bamboo_wood_hanging_sign.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_BAMBOO_WOOD_HANGING_SIGN_FALL("block.bamboo_wood_hanging_sign.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_BAMBOO_WOOD_HANGING_SIGN_HIT("block.bamboo_wood_hanging_sign.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_BAMBOO_WOOD_HANGING_SIGN_PLACE("block.bamboo_wood_hanging_sign.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_BAMBOO_WOOD_HANGING_SIGN_STEP("block.bamboo_wood_hanging_sign.step"),
BLOCK_BAMBOO_WOOD_HIT("block.bamboo_wood.hit"),
BLOCK_BAMBOO_WOOD_PLACE("block.bamboo_wood.place"),
@@ -158,47 +169,125 @@ public enum Sound implements Keyed {
BLOCK_CHAIN_HIT("block.chain.hit"),
BLOCK_CHAIN_PLACE("block.chain.place"),
BLOCK_CHAIN_STEP("block.chain.step"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_LEAVES_BREAK("block.cherry_leaves.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_LEAVES_FALL("block.cherry_leaves.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_LEAVES_HIT("block.cherry_leaves.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_LEAVES_PLACE("block.cherry_leaves.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_LEAVES_STEP("block.cherry_leaves.step"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_SAPLING_BREAK("block.cherry_sapling.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_SAPLING_FALL("block.cherry_sapling.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_SAPLING_HIT("block.cherry_sapling.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_SAPLING_PLACE("block.cherry_sapling.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_SAPLING_STEP("block.cherry_sapling.step"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_BREAK("block.cherry_wood.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_BUTTON_CLICK_OFF("block.cherry_wood_button.click_off"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_BUTTON_CLICK_ON("block.cherry_wood_button.click_on"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_DOOR_CLOSE("block.cherry_wood_door.close"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_DOOR_OPEN("block.cherry_wood_door.open"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_FALL("block.cherry_wood.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_FENCE_GATE_CLOSE("block.cherry_wood_fence_gate.close"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_FENCE_GATE_OPEN("block.cherry_wood_fence_gate.open"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_HANGING_SIGN_BREAK("block.cherry_wood_hanging_sign.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_HANGING_SIGN_FALL("block.cherry_wood_hanging_sign.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_HANGING_SIGN_HIT("block.cherry_wood_hanging_sign.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_HANGING_SIGN_PLACE("block.cherry_wood_hanging_sign.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_HANGING_SIGN_STEP("block.cherry_wood_hanging_sign.step"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_HIT("block.cherry_wood.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_PLACE("block.cherry_wood.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_PRESSURE_PLATE_CLICK_OFF("block.cherry_wood_pressure_plate.click_off"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_PRESSURE_PLATE_CLICK_ON("block.cherry_wood_pressure_plate.click_on"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_STEP("block.cherry_wood.step"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHERRY_WOOD_TRAPDOOR_CLOSE("block.cherry_wood_trapdoor.close"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
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"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_BREAK("block.chiseled_bookshelf.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_FALL("block.chiseled_bookshelf.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_HIT("block.chiseled_bookshelf.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_INSERT("block.chiseled_bookshelf.insert"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_INSERT_ENCHANTED("block.chiseled_bookshelf.insert.enchanted"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_PICKUP("block.chiseled_bookshelf.pickup"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_PICKUP_ENCHANTED("block.chiseled_bookshelf.pickup.enchanted"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_PLACE("block.chiseled_bookshelf.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_CHISELED_BOOKSHELF_STEP("block.chiseled_bookshelf.step"),
BLOCK_CHORUS_FLOWER_DEATH("block.chorus_flower.death"),
BLOCK_CHORUS_FLOWER_GROW("block.chorus_flower.grow"),
@@ -223,11 +312,23 @@ public enum Sound implements Keyed {
BLOCK_CORAL_BLOCK_PLACE("block.coral_block.place"),
BLOCK_CORAL_BLOCK_STEP("block.coral_block.step"),
BLOCK_CROP_BREAK("block.crop.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_DECORATED_POT_BREAK("block.decorated_pot.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_DECORATED_POT_FALL("block.decorated_pot.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_DECORATED_POT_HIT("block.decorated_pot.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_DECORATED_POT_PLACE("block.decorated_pot.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_DECORATED_POT_SHATTER("block.decorated_pot.shatter"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_DECORATED_POT_STEP("block.decorated_pot.step"),
BLOCK_DEEPSLATE_BREAK("block.deepslate.break"),
BLOCK_DEEPSLATE_BRICKS_BREAK("block.deepslate_bricks.break"),
@@ -470,10 +571,20 @@ public enum Sound implements Keyed {
BLOCK_PACKED_MUD_HIT("block.packed_mud.hit"),
BLOCK_PACKED_MUD_PLACE("block.packed_mud.place"),
BLOCK_PACKED_MUD_STEP("block.packed_mud.step"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_PINK_PETALS_BREAK("block.pink_petals.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_PINK_PETALS_FALL("block.pink_petals.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_PINK_PETALS_HIT("block.pink_petals.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_PINK_PETALS_PLACE("block.pink_petals.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_PINK_PETALS_STEP("block.pink_petals.step"),
BLOCK_PISTON_CONTRACT("block.piston.contract"),
BLOCK_PISTON_EXTEND("block.piston.extend"),
@@ -612,10 +723,20 @@ public enum Sound implements Keyed {
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"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_SUSPICIOUS_SAND_BREAK("block.suspicious_sand.break"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_SUSPICIOUS_SAND_FALL("block.suspicious_sand.fall"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_SUSPICIOUS_SAND_HIT("block.suspicious_sand.hit"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BLOCK_SUSPICIOUS_SAND_PLACE("block.suspicious_sand.place"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
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"),
@@ -708,16 +829,27 @@ public enum Sound implements Keyed {
ENTITY_BLAZE_SHOOT("entity.blaze.shoot"),
ENTITY_BOAT_PADDLE_LAND("entity.boat.paddle_land"),
ENTITY_BOAT_PADDLE_WATER("entity.boat.paddle_water"),
+ @MinecraftExperimental
ENTITY_CAMEL_AMBIENT("entity.camel.ambient"),
+ @MinecraftExperimental
ENTITY_CAMEL_DASH("entity.camel.dash"),
+ @MinecraftExperimental
ENTITY_CAMEL_DASH_READY("entity.camel.dash_ready"),
+ @MinecraftExperimental
ENTITY_CAMEL_DEATH("entity.camel.death"),
+ @MinecraftExperimental
ENTITY_CAMEL_EAT("entity.camel.eat"),
+ @MinecraftExperimental
ENTITY_CAMEL_HURT("entity.camel.hurt"),
+ @MinecraftExperimental
ENTITY_CAMEL_SADDLE("entity.camel.saddle"),
+ @MinecraftExperimental
ENTITY_CAMEL_SIT("entity.camel.sit"),
+ @MinecraftExperimental
ENTITY_CAMEL_STAND("entity.camel.stand"),
+ @MinecraftExperimental
ENTITY_CAMEL_STEP("entity.camel.step"),
+ @MinecraftExperimental
ENTITY_CAMEL_STEP_SAND("entity.camel.step_sand"),
ENTITY_CAT_AMBIENT("entity.cat.ambient"),
ENTITY_CAT_BEG_FOR_FOOD("entity.cat.beg_for_food"),
@@ -1159,17 +1291,41 @@ public enum Sound implements Keyed {
ENTITY_SLIME_JUMP_SMALL("entity.slime.jump_small"),
ENTITY_SLIME_SQUISH("entity.slime.squish"),
ENTITY_SLIME_SQUISH_SMALL("entity.slime.squish_small"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_DEATH("entity.sniffer.death"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_DIGGING("entity.sniffer.digging"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_DIGGING_STOP("entity.sniffer.digging_stop"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_DROP_SEED("entity.sniffer.drop_seed"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_EAT("entity.sniffer.eat"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_HAPPY("entity.sniffer.happy"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_HURT("entity.sniffer.hurt"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_IDLE("entity.sniffer.idle"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_SCENTING("entity.sniffer.scenting"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_SEARCHING("entity.sniffer.searching"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_SNIFFING("entity.sniffer.sniffing"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ENTITY_SNIFFER_STEP("entity.sniffer.step"),
ENTITY_SNOWBALL_THROW("entity.snowball.throw"),
ENTITY_SNOW_GOLEM_AMBIENT("entity.snow_golem.ambient"),
@@ -1353,7 +1509,11 @@ public enum Sound implements Keyed {
ITEM_BOTTLE_EMPTY("item.bottle.empty"),
ITEM_BOTTLE_FILL("item.bottle.fill"),
ITEM_BOTTLE_FILL_DRAGONBREATH("item.bottle.fill_dragonbreath"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ITEM_BRUSH_BRUSHING("item.brush.brushing"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
ITEM_BRUSH_BRUSH_SAND_COMPLETED("item.brush.brush_sand_completed"),
ITEM_BUCKET_EMPTY("item.bucket.empty"),
ITEM_BUCKET_EMPTY_AXOLOTL("item.bucket.empty_axolotl"),
@@ -1440,6 +1600,8 @@ public enum Sound implements Keyed {
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"),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
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/paper-api/src/main/java/org/bukkit/Tag.java b/paper-api/src/main/java/org/bukkit/Tag.java
index 3ba1efc150..2d25228016 100644
--- a/paper-api/src/main/java/org/bukkit/Tag.java
+++ b/paper-api/src/main/java/org/bukkit/Tag.java
@@ -2,6 +2,7 @@ package org.bukkit;
import java.util.Set;
import org.bukkit.entity.EntityType;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
@@ -118,6 +119,8 @@ public interface Tag
* Block may have 0, 1... {@link #getMaximumOccupiedSlots()}-1 occupied slots.
*/
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface ChiseledBookshelf extends Directional {
/**
diff --git a/paper-api/src/main/java/org/bukkit/block/data/type/DecoratedPot.java b/paper-api/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
index eb0ffa9774..dad5c3f28b 100644
--- a/paper-api/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
+++ b/paper-api/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
@@ -1,7 +1,11 @@
package org.bukkit.block.data.type;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.block.data.Directional;
import org.bukkit.block.data.Waterlogged;
+import org.jetbrains.annotations.ApiStatus;
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface DecoratedPot extends Directional, Waterlogged {
}
diff --git a/paper-api/src/main/java/org/bukkit/block/data/type/HangingSign.java b/paper-api/src/main/java/org/bukkit/block/data/type/HangingSign.java
index c5a0c14763..a65123a7e0 100644
--- a/paper-api/src/main/java/org/bukkit/block/data/type/HangingSign.java
+++ b/paper-api/src/main/java/org/bukkit/block/data/type/HangingSign.java
@@ -1,8 +1,12 @@
package org.bukkit.block.data.type;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.block.data.Attachable;
import org.bukkit.block.data.Rotatable;
import org.bukkit.block.data.Waterlogged;
+import org.jetbrains.annotations.ApiStatus;
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface HangingSign extends Attachable, Rotatable, Waterlogged {
}
diff --git a/paper-api/src/main/java/org/bukkit/block/data/type/PinkPetals.java b/paper-api/src/main/java/org/bukkit/block/data/type/PinkPetals.java
index a84b36f758..0d421d152e 100644
--- a/paper-api/src/main/java/org/bukkit/block/data/type/PinkPetals.java
+++ b/paper-api/src/main/java/org/bukkit/block/data/type/PinkPetals.java
@@ -1,10 +1,14 @@
package org.bukkit.block.data.type;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.block.data.Directional;
+import org.jetbrains.annotations.ApiStatus;
/**
* 'flower_amount' represents the number of petals.
*/
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface PinkPetals extends Directional {
/**
diff --git a/paper-api/src/main/java/org/bukkit/block/data/type/SuspiciousSand.java b/paper-api/src/main/java/org/bukkit/block/data/type/SuspiciousSand.java
index bb10fda944..9a3bf5cc1d 100644
--- a/paper-api/src/main/java/org/bukkit/block/data/type/SuspiciousSand.java
+++ b/paper-api/src/main/java/org/bukkit/block/data/type/SuspiciousSand.java
@@ -1,10 +1,14 @@
package org.bukkit.block.data.type;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.block.data.BlockData;
+import org.jetbrains.annotations.ApiStatus;
/**
* 'dusted' represents how far uncovered by brush the block is.
*/
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface SuspiciousSand extends BlockData {
/**
diff --git a/paper-api/src/main/java/org/bukkit/block/data/type/WallHangingSign.java b/paper-api/src/main/java/org/bukkit/block/data/type/WallHangingSign.java
index 283b21024d..13bf22353d 100644
--- a/paper-api/src/main/java/org/bukkit/block/data/type/WallHangingSign.java
+++ b/paper-api/src/main/java/org/bukkit/block/data/type/WallHangingSign.java
@@ -1,7 +1,11 @@
package org.bukkit.block.data.type;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.block.data.Directional;
import org.bukkit.block.data.Waterlogged;
+import org.jetbrains.annotations.ApiStatus;
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface WallHangingSign extends Directional, Waterlogged {
}
diff --git a/paper-api/src/main/java/org/bukkit/entity/Boat.java b/paper-api/src/main/java/org/bukkit/entity/Boat.java
index 88852215d0..08e54aac52 100644
--- a/paper-api/src/main/java/org/bukkit/entity/Boat.java
+++ b/paper-api/src/main/java/org/bukkit/entity/Boat.java
@@ -1,7 +1,9 @@
package org.bukkit.entity;
import org.bukkit.Material;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.TreeSpecies;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
@@ -141,9 +143,13 @@ public interface Boat extends Vehicle {
BIRCH(Material.BIRCH_PLANKS),
JUNGLE(Material.JUNGLE_PLANKS),
ACACIA(Material.ACACIA_PLANKS),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
CHERRY(Material.CHERRY_PLANKS),
DARK_OAK(Material.DARK_OAK_PLANKS),
MANGROVE(Material.MANGROVE_PLANKS),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
BAMBOO(Material.BAMBOO_PLANKS),
;
diff --git a/paper-api/src/main/java/org/bukkit/entity/Camel.java b/paper-api/src/main/java/org/bukkit/entity/Camel.java
index 17e4e0a822..dfa2d666a8 100644
--- a/paper-api/src/main/java/org/bukkit/entity/Camel.java
+++ b/paper-api/src/main/java/org/bukkit/entity/Camel.java
@@ -1,8 +1,16 @@
package org.bukkit.entity;
+import org.bukkit.MinecraftExperimental;
+import org.jetbrains.annotations.ApiStatus;
+
/**
* Represents a Camel.
+ *
+ * @apiNote This entity is part of an experimental feature of Minecraft and
+ * hence subject to change.
*/
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface Camel extends AbstractHorse, Sittable {
/**
diff --git a/paper-api/src/main/java/org/bukkit/entity/Entity.java b/paper-api/src/main/java/org/bukkit/entity/Entity.java
index 2570b335ca..b75436ceef 100644
--- a/paper-api/src/main/java/org/bukkit/entity/Entity.java
+++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java
@@ -19,6 +19,7 @@ import org.bukkit.metadata.Metadatable;
import org.bukkit.persistence.PersistentDataHolder;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -528,9 +529,9 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
* will need to be called before the entity is visible to a given player.
*
* @param visible default visibility status
- * @deprecated draft API
+ * @apiNote draft API
*/
- @Deprecated
+ @ApiStatus.Experimental
public void setVisibleByDefault(boolean visible);
/**
@@ -541,9 +542,9 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
* will need to be called before the entity is visible to a given player.
*
* @return default visibility status
- * @deprecated draft API
+ * @apiNote draft API
*/
- @Deprecated
+ @ApiStatus.Experimental
public boolean isVisibleByDefault();
/**
diff --git a/paper-api/src/main/java/org/bukkit/entity/EntityType.java b/paper-api/src/main/java/org/bukkit/entity/EntityType.java
index 8b913a9458..bed9c519a5 100644
--- a/paper-api/src/main/java/org/bukkit/entity/EntityType.java
+++ b/paper-api/src/main/java/org/bukkit/entity/EntityType.java
@@ -6,6 +6,7 @@ import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Keyed;
import org.bukkit.Location;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
import org.bukkit.Translatable;
import org.bukkit.World;
@@ -18,6 +19,7 @@ import org.bukkit.entity.minecart.SpawnerMinecart;
import org.bukkit.entity.minecart.StorageMinecart;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffectType;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -278,10 +280,14 @@ public enum EntityType implements Keyed, Translatable {
FROG("frog", Frog.class, -1),
TADPOLE("tadpole", Tadpole.class, -1),
WARDEN("warden", Warden.class, -1),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
CAMEL("camel", Camel.class, -1),
BLOCK_DISPLAY("block_display", BlockDisplay.class, -1),
INTERACTION("interaction", Interaction.class, -1),
ITEM_DISPLAY("item_display", ItemDisplay.class, -1),
+ @MinecraftExperimental
+ @ApiStatus.Experimental
SNIFFER("sniffer", Sniffer.class, -1),
TEXT_DISPLAY("text_display", TextDisplay.class, -1),
/**
diff --git a/paper-api/src/main/java/org/bukkit/entity/Player.java b/paper-api/src/main/java/org/bukkit/entity/Player.java
index 5cf60bae46..04ef546884 100644
--- a/paper-api/src/main/java/org/bukkit/entity/Player.java
+++ b/paper-api/src/main/java/org/bukkit/entity/Player.java
@@ -33,6 +33,7 @@ import org.bukkit.map.MapView;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.messaging.PluginMessageRecipient;
import org.bukkit.scoreboard.Scoreboard;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -959,9 +960,9 @@ 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
+ * @apiNote draft API
*/
- @Deprecated
+ @ApiStatus.Experimental
public void hideEntity(@NotNull Plugin plugin, @NotNull Entity entity);
/**
@@ -971,9 +972,9 @@ 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
+ * @apiNote draft API
*/
- @Deprecated
+ @ApiStatus.Experimental
public void showEntity(@NotNull Plugin plugin, @NotNull Entity entity);
/**
@@ -982,9 +983,9 @@ 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
+ * @apiNote draft API
*/
- @Deprecated
+ @ApiStatus.Experimental
public boolean canSee(@NotNull Entity entity);
/**
diff --git a/paper-api/src/main/java/org/bukkit/entity/Sniffer.java b/paper-api/src/main/java/org/bukkit/entity/Sniffer.java
index 6509d1ca35..e9a8c2c922 100644
--- a/paper-api/src/main/java/org/bukkit/entity/Sniffer.java
+++ b/paper-api/src/main/java/org/bukkit/entity/Sniffer.java
@@ -2,6 +2,7 @@ package org.bukkit.entity;
import java.util.Collection;
import org.bukkit.Location;
+import org.bukkit.MinecraftExperimental;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -9,15 +10,16 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a Sniffer.
*
- * Note: This entity is part of an experimental feature of Minecraft and
- * hence subject to change.
+ * @apiNote This entity is part of an experimental feature of Minecraft and
+ * hence subject to change.
*/
+@MinecraftExperimental
@ApiStatus.Experimental
public interface Sniffer extends Animals {
/**
* Gets the locations explored by the sniffer.
- *
+ *
* Note: the returned locations use sniffer's current world.
*
* @return a collection of locations
@@ -27,11 +29,10 @@ public interface Sniffer extends Animals {
/**
* Remove a location of the explored locations.
- *
+ *
* Note: the location must be in the sniffer's current world for this
* method to have any effect.
*
- *
* @param location the location to remove
* @see #getExploredLocations()
*/
@@ -39,11 +40,10 @@ public interface Sniffer extends Animals {
/**
* Add a location to the explored locations.
- *
+ *
* Note: the location must be in the sniffer's current world for this
* method to have any effect.
*
- *
* @param location the location to add
* @see #getExploredLocations()
*/
diff --git a/paper-api/src/main/java/org/bukkit/entity/memory/MemoryKey.java b/paper-api/src/main/java/org/bukkit/entity/memory/MemoryKey.java
index 8f601e85df..f1c184ed74 100644
--- a/paper-api/src/main/java/org/bukkit/entity/memory/MemoryKey.java
+++ b/paper-api/src/main/java/org/bukkit/entity/memory/MemoryKey.java
@@ -7,7 +7,9 @@ import java.util.Set;
import java.util.UUID;
import org.bukkit.Keyed;
import org.bukkit.Location;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -69,6 +71,8 @@ public final class MemoryKey
* This event is only called when the entity's visibility status is actually
* changed.
- *
+ *
* 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
+ * @apiNote draft API
*/
-@Deprecated
-@Warning(false)
+@ApiStatus.Experimental
public class PlayerHideEntityEvent extends PlayerEvent {
private static final HandlerList handlers = new HandlerList();
diff --git a/paper-api/src/main/java/org/bukkit/event/player/PlayerShowEntityEvent.java b/paper-api/src/main/java/org/bukkit/event/player/PlayerShowEntityEvent.java
index 5408a8c123..6eb77dc1bb 100644
--- a/paper-api/src/main/java/org/bukkit/event/player/PlayerShowEntityEvent.java
+++ b/paper-api/src/main/java/org/bukkit/event/player/PlayerShowEntityEvent.java
@@ -1,25 +1,24 @@
package org.bukkit.event.player;
-import org.bukkit.Warning;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* Called when a hidden entity is shown to a player.
- *
+ *
* This event is only called when the entity's visibility status is actually
* changed.
- *
+ *
* This event is called regardless of whether the entity was within tracking
* range.
*
* @see Player#showEntity(org.bukkit.plugin.Plugin, org.bukkit.entity.Entity)
- * @deprecated draft API
+ * @apiNote draft API
*/
-@Deprecated
-@Warning(false)
+@ApiStatus.Experimental
public class PlayerShowEntityEvent extends PlayerEvent {
private static final HandlerList handlers = new HandlerList();
diff --git a/paper-api/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java b/paper-api/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
index b99f26079c..e7e3e85f30 100644
--- a/paper-api/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
+++ b/paper-api/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
@@ -1,11 +1,15 @@
package org.bukkit.inventory;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.block.ChiseledBookshelf;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
/**
* Interface to the inventory of a chiseled bookshelf.
*/
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface ChiseledBookshelfInventory extends Inventory {
@Nullable
diff --git a/paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java b/paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java
index 42fcc31147..0a1c39a2a0 100644
--- a/paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java
+++ b/paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java
@@ -1,5 +1,8 @@
package org.bukkit.inventory;
+import org.bukkit.MinecraftExperimental;
+import org.jetbrains.annotations.ApiStatus;
+
/**
* A ItemFlag can hide some Attributes from ItemStacks
*/
@@ -37,5 +40,7 @@ public enum ItemFlag {
/**
* Setting to show/hide armor trim from leather armor.
*/
+ @MinecraftExperimental
+ @ApiStatus.Experimental
HIDE_ARMOR_TRIM;
}
diff --git a/paper-api/src/main/java/org/bukkit/inventory/SmithingInventory.java b/paper-api/src/main/java/org/bukkit/inventory/SmithingInventory.java
index 96d526b7b1..8f7749d10b 100644
--- a/paper-api/src/main/java/org/bukkit/inventory/SmithingInventory.java
+++ b/paper-api/src/main/java/org/bukkit/inventory/SmithingInventory.java
@@ -1,10 +1,15 @@
package org.bukkit.inventory;
+import org.bukkit.MinecraftExperimental;
import org.jetbrains.annotations.Nullable;
/**
* Interface to the inventory of a Smithing table.
+ *
+ * @apiNote Check {@link #getType()} to better handle either the current or experimental
+ * variant of this inventory
*/
+@MinecraftExperimental
public interface SmithingInventory extends Inventory {
/**
diff --git a/paper-api/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java b/paper-api/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
index 32cbdc3426..8eff1b9163 100644
--- a/paper-api/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
+++ b/paper-api/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
@@ -1,12 +1,19 @@
package org.bukkit.inventory;
import org.bukkit.Material;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* Represents a smithing trim recipe.
+ *
+ * @apiNote This recipe is part of an experimental feature of Minecraft and
+ * hence subject to change.
*/
+@MinecraftExperimental
+@ApiStatus.Experimental
public class SmithingTrimRecipe extends SmithingRecipe implements ComplexRecipe {
private final RecipeChoice template;
diff --git a/paper-api/src/main/java/org/bukkit/inventory/meta/BundleMeta.java b/paper-api/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
index bc992fdf6d..f7f8d0d0bf 100644
--- a/paper-api/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
+++ b/paper-api/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
@@ -1,10 +1,14 @@
package org.bukkit.inventory.meta;
import java.util.List;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+@MinecraftExperimental
+@ApiStatus.Experimental
public interface BundleMeta extends ItemMeta {
/**
diff --git a/paper-api/src/main/java/org/bukkit/inventory/meta/SkullMeta.java b/paper-api/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
index 5a18a66a0b..461cdecc3e 100644
--- a/paper-api/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
+++ b/paper-api/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
@@ -1,8 +1,10 @@
package org.bukkit.inventory.meta;
+import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
import org.bukkit.OfflinePlayer;
import org.bukkit.profile.PlayerProfile;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -88,6 +90,8 @@ public interface SkullMeta extends ItemMeta {
*
* @param noteBlockSound the key of the sound to be played, or null
*/
+ @MinecraftExperimental
+ @ApiStatus.Experimental
void setNoteBlockSound(@Nullable NamespacedKey noteBlockSound);
/**
@@ -98,6 +102,8 @@ public interface SkullMeta extends ItemMeta {
*
* @return the key of the sound, or null
*/
+ @MinecraftExperimental
+ @ApiStatus.Experimental
@Nullable
NamespacedKey getNoteBlockSound();