#995: Add required feature to MinecraftExperimental for easy lookups

By: 2008Choco <hawkeboyz2@hotmail.com>
This commit is contained in:
Bukkit/Spigot 2024-04-24 18:19:37 +10:00
parent c5183dc422
commit 9f064c2cc7
27 changed files with 282 additions and 240 deletions

View file

@ -13,7 +13,6 @@ public interface FeatureFlag extends Keyed {
public static final FeatureFlag VANILLA = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("vanilla")); public static final FeatureFlag VANILLA = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("vanilla"));
@MinecraftExperimental
public static final FeatureFlag BUNDLE = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("bundle")); public static final FeatureFlag BUNDLE = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("bundle"));
/** /**
@ -22,12 +21,9 @@ public interface FeatureFlag extends Keyed {
* @deprecated not available since 1.20 * @deprecated not available since 1.20
*/ */
@Deprecated @Deprecated
@MinecraftExperimental
public static final FeatureFlag UPDATE_1_20 = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("update_1_20")); public static final FeatureFlag UPDATE_1_20 = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("update_1_20"));
@MinecraftExperimental
public static final FeatureFlag TRADE_REBALANCE = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("trade_rebalance")); public static final FeatureFlag TRADE_REBALANCE = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("trade_rebalance"));
@MinecraftExperimental
public static final FeatureFlag UPDATE_121 = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("update_1_21")); public static final FeatureFlag UPDATE_121 = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("update_1_21"));
} }

View file

@ -7,6 +7,7 @@ import java.lang.reflect.Constructor;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.attribute.Attribute; import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier; import org.bukkit.attribute.AttributeModifier;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -143,55 +144,55 @@ public enum Material implements Keyed, Translatable {
/** /**
* BlockData: {@link Slab} * BlockData: {@link Slab}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_SLAB(19305, Slab.class), TUFF_SLAB(19305, Slab.class),
/** /**
* BlockData: {@link Stairs} * BlockData: {@link Stairs}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_STAIRS(11268, Stairs.class), TUFF_STAIRS(11268, Stairs.class),
/** /**
* BlockData: {@link Wall} * BlockData: {@link Wall}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_WALL(24395, Wall.class), TUFF_WALL(24395, Wall.class),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
CHISELED_TUFF(15831), CHISELED_TUFF(15831),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
POLISHED_TUFF(17801), POLISHED_TUFF(17801),
/** /**
* BlockData: {@link Slab} * BlockData: {@link Slab}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
POLISHED_TUFF_SLAB(31096, Slab.class), POLISHED_TUFF_SLAB(31096, Slab.class),
/** /**
* BlockData: {@link Stairs} * BlockData: {@link Stairs}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
POLISHED_TUFF_STAIRS(7964, Stairs.class), POLISHED_TUFF_STAIRS(7964, Stairs.class),
/** /**
* BlockData: {@link Wall} * BlockData: {@link Wall}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
POLISHED_TUFF_WALL(28886, Wall.class), POLISHED_TUFF_WALL(28886, Wall.class),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_BRICKS(26276), TUFF_BRICKS(26276),
/** /**
* BlockData: {@link Slab} * BlockData: {@link Slab}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_BRICK_SLAB(11843, Slab.class), TUFF_BRICK_SLAB(11843, Slab.class),
/** /**
* BlockData: {@link Stairs} * BlockData: {@link Stairs}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_BRICK_STAIRS(30753, Stairs.class), TUFF_BRICK_STAIRS(30753, Stairs.class),
/** /**
* BlockData: {@link Wall} * BlockData: {@link Wall}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_BRICK_WALL(11761, Wall.class), TUFF_BRICK_WALL(11761, Wall.class),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
CHISELED_TUFF_BRICKS(8601), CHISELED_TUFF_BRICKS(8601),
DRIPSTONE_BLOCK(26227), DRIPSTONE_BLOCK(26227),
/** /**
@ -297,7 +298,7 @@ public enum Material implements Keyed, Translatable {
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
HEAVY_CORE(15788, Waterlogged.class), HEAVY_CORE(15788, Waterlogged.class),
AMETHYST_BLOCK(18919), AMETHYST_BLOCK(18919),
BUDDING_AMETHYST(13963), BUDDING_AMETHYST(13963),
@ -309,13 +310,13 @@ public enum Material implements Keyed, Translatable {
EXPOSED_COPPER(28488), EXPOSED_COPPER(28488),
WEATHERED_COPPER(19699), WEATHERED_COPPER(19699),
OXIDIZED_COPPER(19490), OXIDIZED_COPPER(19490),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
CHISELED_COPPER(12143), CHISELED_COPPER(12143),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_CHISELED_COPPER(4570), EXPOSED_CHISELED_COPPER(4570),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_CHISELED_COPPER(30876), WEATHERED_CHISELED_COPPER(30876),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_CHISELED_COPPER(27719), OXIDIZED_CHISELED_COPPER(27719),
CUT_COPPER(32519), CUT_COPPER(32519),
EXPOSED_CUT_COPPER(18000), EXPOSED_CUT_COPPER(18000),
@ -357,13 +358,13 @@ public enum Material implements Keyed, Translatable {
WAXED_EXPOSED_COPPER(27989), WAXED_EXPOSED_COPPER(27989),
WAXED_WEATHERED_COPPER(5960), WAXED_WEATHERED_COPPER(5960),
WAXED_OXIDIZED_COPPER(25626), WAXED_OXIDIZED_COPPER(25626),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_CHISELED_COPPER(7500), WAXED_CHISELED_COPPER(7500),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_CHISELED_COPPER(30658), WAXED_EXPOSED_CHISELED_COPPER(30658),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_CHISELED_COPPER(5970), WAXED_WEATHERED_CHISELED_COPPER(5970),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_CHISELED_COPPER(7735), WAXED_OXIDIZED_CHISELED_COPPER(7735),
WAXED_CUT_COPPER(11030), WAXED_CUT_COPPER(11030),
WAXED_EXPOSED_CUT_COPPER(30043), WAXED_EXPOSED_CUT_COPPER(30043),
@ -2104,42 +2105,42 @@ public enum Material implements Keyed, Translatable {
/** /**
* BlockData: {@link Door} * BlockData: {@link Door}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
COPPER_DOOR(26809, Door.class), COPPER_DOOR(26809, Door.class),
/** /**
* BlockData: {@link Door} * BlockData: {@link Door}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_COPPER_DOOR(13236, Door.class), EXPOSED_COPPER_DOOR(13236, Door.class),
/** /**
* BlockData: {@link Door} * BlockData: {@link Door}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_COPPER_DOOR(10208, Door.class), WEATHERED_COPPER_DOOR(10208, Door.class),
/** /**
* BlockData: {@link Door} * BlockData: {@link Door}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_COPPER_DOOR(5348, Door.class), OXIDIZED_COPPER_DOOR(5348, Door.class),
/** /**
* BlockData: {@link Door} * BlockData: {@link Door}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_COPPER_DOOR(9954, Door.class), WAXED_COPPER_DOOR(9954, Door.class),
/** /**
* BlockData: {@link Door} * BlockData: {@link Door}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_COPPER_DOOR(20748, Door.class), WAXED_EXPOSED_COPPER_DOOR(20748, Door.class),
/** /**
* BlockData: {@link Door} * BlockData: {@link Door}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_COPPER_DOOR(25073, Door.class), WAXED_WEATHERED_COPPER_DOOR(25073, Door.class),
/** /**
* BlockData: {@link Door} * BlockData: {@link Door}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_COPPER_DOOR(23888, Door.class), WAXED_OXIDIZED_COPPER_DOOR(23888, Door.class),
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
@ -2192,42 +2193,42 @@ public enum Material implements Keyed, Translatable {
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
COPPER_TRAPDOOR(12110, TrapDoor.class), COPPER_TRAPDOOR(12110, TrapDoor.class),
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_COPPER_TRAPDOOR(19219, TrapDoor.class), EXPOSED_COPPER_TRAPDOOR(19219, TrapDoor.class),
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_COPPER_TRAPDOOR(28254, TrapDoor.class), WEATHERED_COPPER_TRAPDOOR(28254, TrapDoor.class),
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_COPPER_TRAPDOOR(26518, TrapDoor.class), OXIDIZED_COPPER_TRAPDOOR(26518, TrapDoor.class),
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_COPPER_TRAPDOOR(12626, TrapDoor.class), WAXED_COPPER_TRAPDOOR(12626, TrapDoor.class),
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_COPPER_TRAPDOOR(11010, TrapDoor.class), WAXED_EXPOSED_COPPER_TRAPDOOR(11010, TrapDoor.class),
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_COPPER_TRAPDOOR(30709, TrapDoor.class), WAXED_WEATHERED_COPPER_TRAPDOOR(30709, TrapDoor.class),
/** /**
* BlockData: {@link TrapDoor} * BlockData: {@link TrapDoor}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_COPPER_TRAPDOOR(21450, TrapDoor.class), WAXED_OXIDIZED_COPPER_TRAPDOOR(21450, TrapDoor.class),
/** /**
* BlockData: {@link Gate} * BlockData: {@link Gate}
@ -2634,7 +2635,7 @@ public enum Material implements Keyed, Translatable {
/** /**
* BlockData: {@link Crafter} * BlockData: {@link Crafter}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
CRAFTER(25243, Crafter.class), CRAFTER(25243, Crafter.class),
FILLED_MAP(23504), FILLED_MAP(23504),
SHEARS(27971, 1, 238), SHEARS(27971, 1, 238),
@ -2674,9 +2675,9 @@ public enum Material implements Keyed, Translatable {
BAT_SPAWN_EGG(14607), BAT_SPAWN_EGG(14607),
BEE_SPAWN_EGG(22924), BEE_SPAWN_EGG(22924),
BLAZE_SPAWN_EGG(4759), BLAZE_SPAWN_EGG(4759),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BOGGED_SPAWN_EGG(12042), BOGGED_SPAWN_EGG(12042),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BREEZE_SPAWN_EGG(7580), BREEZE_SPAWN_EGG(7580),
CAT_SPAWN_EGG(29583), CAT_SPAWN_EGG(29583),
CAMEL_SPAWN_EGG(14760), CAMEL_SPAWN_EGG(14760),
@ -2752,11 +2753,11 @@ public enum Material implements Keyed, Translatable {
ZOMBIFIED_PIGLIN_SPAWN_EGG(6626), ZOMBIFIED_PIGLIN_SPAWN_EGG(6626),
EXPERIENCE_BOTTLE(12858), EXPERIENCE_BOTTLE(12858),
FIRE_CHARGE(4842), FIRE_CHARGE(4842),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WIND_CHARGE(23928), WIND_CHARGE(23928),
WRITABLE_BOOK(13393, 1), WRITABLE_BOOK(13393, 1),
WRITTEN_BOOK(24164, 16), WRITTEN_BOOK(24164, 16),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
MACE(4771, 1, 250), MACE(4771, 1, 250),
ITEM_FRAME(27318), ITEM_FRAME(27318),
GLOW_ITEM_FRAME(26473), GLOW_ITEM_FRAME(26473),
@ -3154,9 +3155,9 @@ public enum Material implements Keyed, Translatable {
SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE(7070), SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE(7070),
RAISER_ARMOR_TRIM_SMITHING_TEMPLATE(29116), RAISER_ARMOR_TRIM_SMITHING_TEMPLATE(29116),
HOST_ARMOR_TRIM_SMITHING_TEMPLATE(12165), HOST_ARMOR_TRIM_SMITHING_TEMPLATE(12165),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
FLOW_ARMOR_TRIM_SMITHING_TEMPLATE(29175), FLOW_ARMOR_TRIM_SMITHING_TEMPLATE(29175),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BOLT_ARMOR_TRIM_SMITHING_TEMPLATE(9698), BOLT_ARMOR_TRIM_SMITHING_TEMPLATE(9698),
ANGLER_POTTERY_SHERD(9952), ANGLER_POTTERY_SHERD(9952),
ARCHER_POTTERY_SHERD(21629), ARCHER_POTTERY_SHERD(21629),
@ -3166,10 +3167,10 @@ public enum Material implements Keyed, Translatable {
BURN_POTTERY_SHERD(21259), BURN_POTTERY_SHERD(21259),
DANGER_POTTERY_SHERD(30506), DANGER_POTTERY_SHERD(30506),
EXPLORER_POTTERY_SHERD(5124), EXPLORER_POTTERY_SHERD(5124),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
FLOW_POTTERY_SHERD(4896), FLOW_POTTERY_SHERD(4896),
FRIEND_POTTERY_SHERD(18221), FRIEND_POTTERY_SHERD(18221),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
GUSTER_POTTERY_SHERD(28193), GUSTER_POTTERY_SHERD(28193),
HEART_POTTERY_SHERD(17607), HEART_POTTERY_SHERD(17607),
HEARTBREAK_POTTERY_SHERD(21108), HEARTBREAK_POTTERY_SHERD(21108),
@ -3178,7 +3179,7 @@ public enum Material implements Keyed, Translatable {
MOURNER_POTTERY_SHERD(23993), MOURNER_POTTERY_SHERD(23993),
PLENTY_POTTERY_SHERD(28236), PLENTY_POTTERY_SHERD(28236),
PRIZE_POTTERY_SHERD(4341), PRIZE_POTTERY_SHERD(4341),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
SCRAPE_POTTERY_SHERD(30034), SCRAPE_POTTERY_SHERD(30034),
SHEAF_POTTERY_SHERD(23652), SHEAF_POTTERY_SHERD(23652),
SHELTER_POTTERY_SHERD(28390), SHELTER_POTTERY_SHERD(28390),
@ -3187,100 +3188,100 @@ public enum Material implements Keyed, Translatable {
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
COPPER_GRATE(16221, Waterlogged.class), COPPER_GRATE(16221, Waterlogged.class),
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_COPPER_GRATE(7783, Waterlogged.class), EXPOSED_COPPER_GRATE(7783, Waterlogged.class),
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_COPPER_GRATE(24954, Waterlogged.class), WEATHERED_COPPER_GRATE(24954, Waterlogged.class),
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_COPPER_GRATE(14122, Waterlogged.class), OXIDIZED_COPPER_GRATE(14122, Waterlogged.class),
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_COPPER_GRATE(11230, Waterlogged.class), WAXED_COPPER_GRATE(11230, Waterlogged.class),
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_COPPER_GRATE(20520, Waterlogged.class), WAXED_EXPOSED_COPPER_GRATE(20520, Waterlogged.class),
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_COPPER_GRATE(16533, Waterlogged.class), WAXED_WEATHERED_COPPER_GRATE(16533, Waterlogged.class),
/** /**
* BlockData: {@link Waterlogged} * BlockData: {@link Waterlogged}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_COPPER_GRATE(32010, Waterlogged.class), WAXED_OXIDIZED_COPPER_GRATE(32010, Waterlogged.class),
/** /**
* BlockData: {@link CopperBulb} * BlockData: {@link CopperBulb}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
COPPER_BULB(21370, CopperBulb.class), COPPER_BULB(21370, CopperBulb.class),
/** /**
* BlockData: {@link CopperBulb} * BlockData: {@link CopperBulb}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_COPPER_BULB(11944, CopperBulb.class), EXPOSED_COPPER_BULB(11944, CopperBulb.class),
/** /**
* BlockData: {@link CopperBulb} * BlockData: {@link CopperBulb}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_COPPER_BULB(10800, CopperBulb.class), WEATHERED_COPPER_BULB(10800, CopperBulb.class),
/** /**
* BlockData: {@link CopperBulb} * BlockData: {@link CopperBulb}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_COPPER_BULB(22421, CopperBulb.class), OXIDIZED_COPPER_BULB(22421, CopperBulb.class),
/** /**
* BlockData: {@link CopperBulb} * BlockData: {@link CopperBulb}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_COPPER_BULB(23756, CopperBulb.class), WAXED_COPPER_BULB(23756, CopperBulb.class),
/** /**
* BlockData: {@link CopperBulb} * BlockData: {@link CopperBulb}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_COPPER_BULB(5530, CopperBulb.class), WAXED_EXPOSED_COPPER_BULB(5530, CopperBulb.class),
/** /**
* BlockData: {@link CopperBulb} * BlockData: {@link CopperBulb}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_COPPER_BULB(13239, CopperBulb.class), WAXED_WEATHERED_COPPER_BULB(13239, CopperBulb.class),
/** /**
* BlockData: {@link CopperBulb} * BlockData: {@link CopperBulb}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_COPPER_BULB(26892, CopperBulb.class), WAXED_OXIDIZED_COPPER_BULB(26892, CopperBulb.class),
/** /**
* BlockData: {@link TrialSpawner} * BlockData: {@link TrialSpawner}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_SPAWNER(19902, TrialSpawner.class), TRIAL_SPAWNER(19902, TrialSpawner.class),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_KEY(12725), TRIAL_KEY(12725),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OMINOUS_TRIAL_KEY(4986), OMINOUS_TRIAL_KEY(4986),
/** /**
* BlockData: {@link Vault} * BlockData: {@link Vault}
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
VAULT(6288, Vault.class), VAULT(6288, Vault.class),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OMINOUS_BOTTLE(26321), OMINOUS_BOTTLE(26321),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BREEZE_ROD(14281), BREEZE_ROD(14281),
/** /**
* BlockData: {@link Levelled} * BlockData: {@link Levelled}

View file

@ -24,4 +24,29 @@ import org.jetbrains.annotations.ApiStatus;
}) })
@ApiStatus.Internal @ApiStatus.Internal
public @interface MinecraftExperimental { public @interface MinecraftExperimental {
/**
* Get the feature that must be enabled for the annotated object to be valid.
* <p>
* While this value is not used anywhere in Bukkit, it is a convenience value to assist
* in locating relevant annotated elements for removal once no longer deemed an experimental
* feature by Minecraft. See {@link Requires} for information about use in plugins.
*
* @return the required feature flag
*/
Requires value();
/**
* An enum identifying a feature flag required by a {@link MinecraftExperimental} feature.
* <p>
* Constants defined by this enum <strong>ARE NOT API!</strong> Constants may be added or
* removed without warning and will not necessarily align perfectly with those defined in
* FeatureFlag. At no point should plugins depend on this enum. Refer to {@link FeatureFlag}
* instead.
*/
@ApiStatus.Internal
public enum Requires {
UPDATE_1_21
}
} }

View file

@ -1,6 +1,7 @@
package org.bukkit; package org.bukkit;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -128,34 +129,34 @@ public enum Particle implements Keyed {
EGG_CRACK("egg_crack"), EGG_CRACK("egg_crack"),
DUST_PLUME("dust_plume"), DUST_PLUME("dust_plume"),
WHITE_SMOKE("white_smoke"), WHITE_SMOKE("white_smoke"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
GUST("gust"), GUST("gust"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
SMALL_GUST("small_gust"), SMALL_GUST("small_gust"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
GUST_EMITTER_LARGE("gust_emitter_large"), GUST_EMITTER_LARGE("gust_emitter_large"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
GUST_EMITTER_SMALL("gust_emitter_small"), GUST_EMITTER_SMALL("gust_emitter_small"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_SPAWNER_DETECTION("trial_spawner_detection"), TRIAL_SPAWNER_DETECTION("trial_spawner_detection"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_SPAWNER_DETECTION_OMINOUS("trial_spawner_detection_ominous"), TRIAL_SPAWNER_DETECTION_OMINOUS("trial_spawner_detection_ominous"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
VAULT_CONNECTION("vault_connection"), VAULT_CONNECTION("vault_connection"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
INFESTED("infested"), INFESTED("infested"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_COBWEB("item_cobweb"), ITEM_COBWEB("item_cobweb"),
/** /**
* Uses {@link BlockData} as DataType * Uses {@link BlockData} as DataType
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
DUST_PILLAR("dust_pillar", BlockData.class), DUST_PILLAR("dust_pillar", BlockData.class),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OMINOUS_SPAWNING("ominous_spawning"), OMINOUS_SPAWNING("ominous_spawning"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
RAID_OMEN("raid_omen"), RAID_OMEN("raid_omen"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_OMEN("trial_omen"), TRIAL_OMEN("trial_omen"),
/** /**
* Uses {@link BlockData} as DataType * Uses {@link BlockData} as DataType

View file

@ -1,5 +1,6 @@
package org.bukkit; package org.bukkit;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
@ -219,41 +220,41 @@ public enum Sound implements Keyed {
BLOCK_CONDUIT_ATTACK_TARGET("block.conduit.attack.target"), BLOCK_CONDUIT_ATTACK_TARGET("block.conduit.attack.target"),
BLOCK_CONDUIT_DEACTIVATE("block.conduit.deactivate"), BLOCK_CONDUIT_DEACTIVATE("block.conduit.deactivate"),
BLOCK_COPPER_BREAK("block.copper.break"), BLOCK_COPPER_BREAK("block.copper.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_BREAK("block.copper_bulb.break"), BLOCK_COPPER_BULB_BREAK("block.copper_bulb.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_FALL("block.copper_bulb.fall"), BLOCK_COPPER_BULB_FALL("block.copper_bulb.fall"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_HIT("block.copper_bulb.hit"), BLOCK_COPPER_BULB_HIT("block.copper_bulb.hit"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_PLACE("block.copper_bulb.place"), BLOCK_COPPER_BULB_PLACE("block.copper_bulb.place"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_STEP("block.copper_bulb.step"), BLOCK_COPPER_BULB_STEP("block.copper_bulb.step"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_TURN_OFF("block.copper_bulb.turn_off"), BLOCK_COPPER_BULB_TURN_OFF("block.copper_bulb.turn_off"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_TURN_ON("block.copper_bulb.turn_on"), BLOCK_COPPER_BULB_TURN_ON("block.copper_bulb.turn_on"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_DOOR_CLOSE("block.copper_door.close"), BLOCK_COPPER_DOOR_CLOSE("block.copper_door.close"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_DOOR_OPEN("block.copper_door.open"), BLOCK_COPPER_DOOR_OPEN("block.copper_door.open"),
BLOCK_COPPER_FALL("block.copper.fall"), BLOCK_COPPER_FALL("block.copper.fall"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_BREAK("block.copper_grate.break"), BLOCK_COPPER_GRATE_BREAK("block.copper_grate.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_FALL("block.copper_grate.fall"), BLOCK_COPPER_GRATE_FALL("block.copper_grate.fall"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_HIT("block.copper_grate.hit"), BLOCK_COPPER_GRATE_HIT("block.copper_grate.hit"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_PLACE("block.copper_grate.place"), BLOCK_COPPER_GRATE_PLACE("block.copper_grate.place"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_STEP("block.copper_grate.step"), BLOCK_COPPER_GRATE_STEP("block.copper_grate.step"),
BLOCK_COPPER_HIT("block.copper.hit"), BLOCK_COPPER_HIT("block.copper.hit"),
BLOCK_COPPER_PLACE("block.copper.place"), BLOCK_COPPER_PLACE("block.copper.place"),
BLOCK_COPPER_STEP("block.copper.step"), BLOCK_COPPER_STEP("block.copper.step"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_TRAPDOOR_CLOSE("block.copper_trapdoor.close"), BLOCK_COPPER_TRAPDOOR_CLOSE("block.copper_trapdoor.close"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_TRAPDOOR_OPEN("block.copper_trapdoor.open"), BLOCK_COPPER_TRAPDOOR_OPEN("block.copper_trapdoor.open"),
BLOCK_CORAL_BLOCK_BREAK("block.coral_block.break"), BLOCK_CORAL_BLOCK_BREAK("block.coral_block.break"),
BLOCK_CORAL_BLOCK_FALL("block.coral_block.fall"), BLOCK_CORAL_BLOCK_FALL("block.coral_block.fall"),
@ -359,15 +360,15 @@ public enum Sound implements Keyed {
BLOCK_HANGING_SIGN_PLACE("block.hanging_sign.place"), BLOCK_HANGING_SIGN_PLACE("block.hanging_sign.place"),
BLOCK_HANGING_SIGN_STEP("block.hanging_sign.step"), BLOCK_HANGING_SIGN_STEP("block.hanging_sign.step"),
BLOCK_HANGING_SIGN_WAXED_INTERACT_FAIL("block.hanging_sign.waxed_interact_fail"), BLOCK_HANGING_SIGN_WAXED_INTERACT_FAIL("block.hanging_sign.waxed_interact_fail"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_BREAK("block.heavy_core.break"), BLOCK_HEAVY_CORE_BREAK("block.heavy_core.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_FALL("block.heavy_core.fall"), BLOCK_HEAVY_CORE_FALL("block.heavy_core.fall"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_HIT("block.heavy_core.hit"), BLOCK_HEAVY_CORE_HIT("block.heavy_core.hit"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_PLACE("block.heavy_core.place"), BLOCK_HEAVY_CORE_PLACE("block.heavy_core.place"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_STEP("block.heavy_core.step"), BLOCK_HEAVY_CORE_STEP("block.heavy_core.step"),
BLOCK_HONEY_BLOCK_BREAK("block.honey_block.break"), BLOCK_HONEY_BLOCK_BREAK("block.honey_block.break"),
BLOCK_HONEY_BLOCK_FALL("block.honey_block.fall"), BLOCK_HONEY_BLOCK_FALL("block.honey_block.fall"),
@ -545,15 +546,15 @@ public enum Sound implements Keyed {
BLOCK_POLISHED_DEEPSLATE_HIT("block.polished_deepslate.hit"), BLOCK_POLISHED_DEEPSLATE_HIT("block.polished_deepslate.hit"),
BLOCK_POLISHED_DEEPSLATE_PLACE("block.polished_deepslate.place"), BLOCK_POLISHED_DEEPSLATE_PLACE("block.polished_deepslate.place"),
BLOCK_POLISHED_DEEPSLATE_STEP("block.polished_deepslate.step"), BLOCK_POLISHED_DEEPSLATE_STEP("block.polished_deepslate.step"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_BREAK("block.polished_tuff.break"), BLOCK_POLISHED_TUFF_BREAK("block.polished_tuff.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_FALL("block.polished_tuff.fall"), BLOCK_POLISHED_TUFF_FALL("block.polished_tuff.fall"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_HIT("block.polished_tuff.hit"), BLOCK_POLISHED_TUFF_HIT("block.polished_tuff.hit"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_PLACE("block.polished_tuff.place"), BLOCK_POLISHED_TUFF_PLACE("block.polished_tuff.place"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_STEP("block.polished_tuff.step"), BLOCK_POLISHED_TUFF_STEP("block.polished_tuff.step"),
BLOCK_PORTAL_AMBIENT("block.portal.ambient"), BLOCK_PORTAL_AMBIENT("block.portal.ambient"),
BLOCK_PORTAL_TRAVEL("block.portal.travel"), BLOCK_PORTAL_TRAVEL("block.portal.travel"),
@ -698,82 +699,82 @@ public enum Sound implements Keyed {
BLOCK_SWEET_BERRY_BUSH_BREAK("block.sweet_berry_bush.break"), BLOCK_SWEET_BERRY_BUSH_BREAK("block.sweet_berry_bush.break"),
BLOCK_SWEET_BERRY_BUSH_PICK_BERRIES("block.sweet_berry_bush.pick_berries"), BLOCK_SWEET_BERRY_BUSH_PICK_BERRIES("block.sweet_berry_bush.pick_berries"),
BLOCK_SWEET_BERRY_BUSH_PLACE("block.sweet_berry_bush.place"), BLOCK_SWEET_BERRY_BUSH_PLACE("block.sweet_berry_bush.place"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_ABOUT_TO_SPAWN_ITEM("block.trial_spawner.about_to_spawn_item"), BLOCK_TRIAL_SPAWNER_ABOUT_TO_SPAWN_ITEM("block.trial_spawner.about_to_spawn_item"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_AMBIENT("block.trial_spawner.ambient"), BLOCK_TRIAL_SPAWNER_AMBIENT("block.trial_spawner.ambient"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_AMBIENT_CHARGED("block.trial_spawner.ambient_charged"), BLOCK_TRIAL_SPAWNER_AMBIENT_CHARGED("block.trial_spawner.ambient_charged"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_BREAK("block.trial_spawner.break"), BLOCK_TRIAL_SPAWNER_BREAK("block.trial_spawner.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_CHARGE_ACTIVATE("block.trial_spawner.charge_activate"), BLOCK_TRIAL_SPAWNER_CHARGE_ACTIVATE("block.trial_spawner.charge_activate"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_CLOSE_SHUTTER("block.trial_spawner.close_shutter"), BLOCK_TRIAL_SPAWNER_CLOSE_SHUTTER("block.trial_spawner.close_shutter"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_DETECT_PLAYER("block.trial_spawner.detect_player"), BLOCK_TRIAL_SPAWNER_DETECT_PLAYER("block.trial_spawner.detect_player"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_EJECT_ITEM("block.trial_spawner.eject_item"), BLOCK_TRIAL_SPAWNER_EJECT_ITEM("block.trial_spawner.eject_item"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_FALL("block.trial_spawner.fall"), BLOCK_TRIAL_SPAWNER_FALL("block.trial_spawner.fall"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_HIT("block.trial_spawner.hit"), BLOCK_TRIAL_SPAWNER_HIT("block.trial_spawner.hit"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_OPEN_SHUTTER("block.trial_spawner.open_shutter"), BLOCK_TRIAL_SPAWNER_OPEN_SHUTTER("block.trial_spawner.open_shutter"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_PLACE("block.trial_spawner.place"), BLOCK_TRIAL_SPAWNER_PLACE("block.trial_spawner.place"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_SPAWN_ITEM("block.trial_spawner.spawn_item"), BLOCK_TRIAL_SPAWNER_SPAWN_ITEM("block.trial_spawner.spawn_item"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_SPAWN_ITEM_BEGIN("block.trial_spawner.spawn_item_begin"), BLOCK_TRIAL_SPAWNER_SPAWN_ITEM_BEGIN("block.trial_spawner.spawn_item_begin"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_SPAWN_MOB("block.trial_spawner.spawn_mob"), BLOCK_TRIAL_SPAWNER_SPAWN_MOB("block.trial_spawner.spawn_mob"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_STEP("block.trial_spawner.step"), BLOCK_TRIAL_SPAWNER_STEP("block.trial_spawner.step"),
BLOCK_TRIPWIRE_ATTACH("block.tripwire.attach"), BLOCK_TRIPWIRE_ATTACH("block.tripwire.attach"),
BLOCK_TRIPWIRE_CLICK_OFF("block.tripwire.click_off"), BLOCK_TRIPWIRE_CLICK_OFF("block.tripwire.click_off"),
BLOCK_TRIPWIRE_CLICK_ON("block.tripwire.click_on"), BLOCK_TRIPWIRE_CLICK_ON("block.tripwire.click_on"),
BLOCK_TRIPWIRE_DETACH("block.tripwire.detach"), BLOCK_TRIPWIRE_DETACH("block.tripwire.detach"),
BLOCK_TUFF_BREAK("block.tuff.break"), BLOCK_TUFF_BREAK("block.tuff.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_BREAK("block.tuff_bricks.break"), BLOCK_TUFF_BRICKS_BREAK("block.tuff_bricks.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_FALL("block.tuff_bricks.fall"), BLOCK_TUFF_BRICKS_FALL("block.tuff_bricks.fall"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_HIT("block.tuff_bricks.hit"), BLOCK_TUFF_BRICKS_HIT("block.tuff_bricks.hit"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_PLACE("block.tuff_bricks.place"), BLOCK_TUFF_BRICKS_PLACE("block.tuff_bricks.place"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_STEP("block.tuff_bricks.step"), BLOCK_TUFF_BRICKS_STEP("block.tuff_bricks.step"),
BLOCK_TUFF_FALL("block.tuff.fall"), BLOCK_TUFF_FALL("block.tuff.fall"),
BLOCK_TUFF_HIT("block.tuff.hit"), BLOCK_TUFF_HIT("block.tuff.hit"),
BLOCK_TUFF_PLACE("block.tuff.place"), BLOCK_TUFF_PLACE("block.tuff.place"),
BLOCK_TUFF_STEP("block.tuff.step"), BLOCK_TUFF_STEP("block.tuff.step"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_ACTIVATE("block.vault.activate"), BLOCK_VAULT_ACTIVATE("block.vault.activate"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_AMBIENT("block.vault.ambient"), BLOCK_VAULT_AMBIENT("block.vault.ambient"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_BREAK("block.vault.break"), BLOCK_VAULT_BREAK("block.vault.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_CLOSE_SHUTTER("block.vault.close_shutter"), BLOCK_VAULT_CLOSE_SHUTTER("block.vault.close_shutter"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_DEACTIVATE("block.vault.deactivate"), BLOCK_VAULT_DEACTIVATE("block.vault.deactivate"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_EJECT_ITEM("block.vault.eject_item"), BLOCK_VAULT_EJECT_ITEM("block.vault.eject_item"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_FALL("block.vault.fall"), BLOCK_VAULT_FALL("block.vault.fall"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_HIT("block.vault.hit"), BLOCK_VAULT_HIT("block.vault.hit"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_INSERT_ITEM("block.vault.insert_item"), BLOCK_VAULT_INSERT_ITEM("block.vault.insert_item"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_INSERT_ITEM_FAIL("block.vault.insert_item_fail"), BLOCK_VAULT_INSERT_ITEM_FAIL("block.vault.insert_item_fail"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_OPEN_SHUTTER("block.vault.open_shutter"), BLOCK_VAULT_OPEN_SHUTTER("block.vault.open_shutter"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_PLACE("block.vault.place"), BLOCK_VAULT_PLACE("block.vault.place"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_STEP("block.vault.step"), BLOCK_VAULT_STEP("block.vault.step"),
BLOCK_VINE_BREAK("block.vine.break"), BLOCK_VINE_BREAK("block.vine.break"),
BLOCK_VINE_FALL("block.vine.fall"), BLOCK_VINE_FALL("block.vine.fall"),
@ -873,41 +874,41 @@ public enum Sound implements Keyed {
ENTITY_BLAZE_SHOOT("entity.blaze.shoot"), ENTITY_BLAZE_SHOOT("entity.blaze.shoot"),
ENTITY_BOAT_PADDLE_LAND("entity.boat.paddle_land"), ENTITY_BOAT_PADDLE_LAND("entity.boat.paddle_land"),
ENTITY_BOAT_PADDLE_WATER("entity.boat.paddle_water"), ENTITY_BOAT_PADDLE_WATER("entity.boat.paddle_water"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_AMBIENT("entity.bogged.ambient"), ENTITY_BOGGED_AMBIENT("entity.bogged.ambient"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_DEATH("entity.bogged.death"), ENTITY_BOGGED_DEATH("entity.bogged.death"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_HURT("entity.bogged.hurt"), ENTITY_BOGGED_HURT("entity.bogged.hurt"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_SHEAR("entity.bogged.shear"), ENTITY_BOGGED_SHEAR("entity.bogged.shear"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_STEP("entity.bogged.step"), ENTITY_BOGGED_STEP("entity.bogged.step"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_CHARGE("entity.breeze.charge"), ENTITY_BREEZE_CHARGE("entity.breeze.charge"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_DEATH("entity.breeze.death"), ENTITY_BREEZE_DEATH("entity.breeze.death"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_DEFLECT("entity.breeze.deflect"), ENTITY_BREEZE_DEFLECT("entity.breeze.deflect"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_HURT("entity.breeze.hurt"), ENTITY_BREEZE_HURT("entity.breeze.hurt"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_IDLE_AIR("entity.breeze.idle_air"), ENTITY_BREEZE_IDLE_AIR("entity.breeze.idle_air"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_IDLE_GROUND("entity.breeze.idle_ground"), ENTITY_BREEZE_IDLE_GROUND("entity.breeze.idle_ground"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_INHALE("entity.breeze.inhale"), ENTITY_BREEZE_INHALE("entity.breeze.inhale"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_JUMP("entity.breeze.jump"), ENTITY_BREEZE_JUMP("entity.breeze.jump"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_LAND("entity.breeze.land"), ENTITY_BREEZE_LAND("entity.breeze.land"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_SHOOT("entity.breeze.shoot"), ENTITY_BREEZE_SHOOT("entity.breeze.shoot"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_SLIDE("entity.breeze.slide"), ENTITY_BREEZE_SLIDE("entity.breeze.slide"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_WHIRL("entity.breeze.whirl"), ENTITY_BREEZE_WHIRL("entity.breeze.whirl"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_WIND_BURST("entity.breeze.wind_burst"), ENTITY_BREEZE_WIND_BURST("entity.breeze.wind_burst"),
ENTITY_CAMEL_AMBIENT("entity.camel.ambient"), ENTITY_CAMEL_AMBIENT("entity.camel.ambient"),
ENTITY_CAMEL_DASH("entity.camel.dash"), ENTITY_CAMEL_DASH("entity.camel.dash"),
@ -1054,6 +1055,8 @@ public enum Sound implements Keyed {
ENTITY_GENERIC_SMALL_FALL("entity.generic.small_fall"), ENTITY_GENERIC_SMALL_FALL("entity.generic.small_fall"),
ENTITY_GENERIC_SPLASH("entity.generic.splash"), ENTITY_GENERIC_SPLASH("entity.generic.splash"),
ENTITY_GENERIC_SWIM("entity.generic.swim"), ENTITY_GENERIC_SWIM("entity.generic.swim"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_GENERIC_WIND_BURST("entity.generic.wind_burst"),
ENTITY_GHAST_AMBIENT("entity.ghast.ambient"), ENTITY_GHAST_AMBIENT("entity.ghast.ambient"),
ENTITY_GHAST_DEATH("entity.ghast.death"), ENTITY_GHAST_DEATH("entity.ghast.death"),
ENTITY_GHAST_HURT("entity.ghast.hurt"), ENTITY_GHAST_HURT("entity.ghast.hurt"),
@ -1206,9 +1209,9 @@ public enum Sound implements Keyed {
ENTITY_PARROT_FLY("entity.parrot.fly"), ENTITY_PARROT_FLY("entity.parrot.fly"),
ENTITY_PARROT_HURT("entity.parrot.hurt"), ENTITY_PARROT_HURT("entity.parrot.hurt"),
ENTITY_PARROT_IMITATE_BLAZE("entity.parrot.imitate.blaze"), ENTITY_PARROT_IMITATE_BLAZE("entity.parrot.imitate.blaze"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_PARROT_IMITATE_BOGGED("entity.parrot.imitate.bogged"), ENTITY_PARROT_IMITATE_BOGGED("entity.parrot.imitate.bogged"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_PARROT_IMITATE_BREEZE("entity.parrot.imitate.breeze"), ENTITY_PARROT_IMITATE_BREEZE("entity.parrot.imitate.breeze"),
ENTITY_PARROT_IMITATE_CREEPER("entity.parrot.imitate.creeper"), ENTITY_PARROT_IMITATE_CREEPER("entity.parrot.imitate.creeper"),
ENTITY_PARROT_IMITATE_DROWNED("entity.parrot.imitate.drowned"), ENTITY_PARROT_IMITATE_DROWNED("entity.parrot.imitate.drowned"),
@ -1487,9 +1490,9 @@ public enum Sound implements Keyed {
ENTITY_WARDEN_SONIC_CHARGE("entity.warden.sonic_charge"), ENTITY_WARDEN_SONIC_CHARGE("entity.warden.sonic_charge"),
ENTITY_WARDEN_STEP("entity.warden.step"), ENTITY_WARDEN_STEP("entity.warden.step"),
ENTITY_WARDEN_TENDRIL_CLICKS("entity.warden.tendril_clicks"), ENTITY_WARDEN_TENDRIL_CLICKS("entity.warden.tendril_clicks"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_WIND_CHARGE_THROW("entity.wind_charge.throw"), ENTITY_WIND_CHARGE_THROW("entity.wind_charge.throw"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_WIND_CHARGE_WIND_BURST("entity.wind_charge.wind_burst"), ENTITY_WIND_CHARGE_WIND_BURST("entity.wind_charge.wind_burst"),
ENTITY_WITCH_AMBIENT("entity.witch.ambient"), ENTITY_WITCH_AMBIENT("entity.witch.ambient"),
ENTITY_WITCH_CELEBRATE("entity.witch.celebrate"), ENTITY_WITCH_CELEBRATE("entity.witch.celebrate"),
@ -1545,11 +1548,11 @@ public enum Sound implements Keyed {
ENTITY_ZOMBIFIED_PIGLIN_ANGRY("entity.zombified_piglin.angry"), ENTITY_ZOMBIFIED_PIGLIN_ANGRY("entity.zombified_piglin.angry"),
ENTITY_ZOMBIFIED_PIGLIN_DEATH("entity.zombified_piglin.death"), ENTITY_ZOMBIFIED_PIGLIN_DEATH("entity.zombified_piglin.death"),
ENTITY_ZOMBIFIED_PIGLIN_HURT("entity.zombified_piglin.hurt"), ENTITY_ZOMBIFIED_PIGLIN_HURT("entity.zombified_piglin.hurt"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EVENT_MOB_EFFECT_BAD_OMEN("event.mob_effect.bad_omen"), EVENT_MOB_EFFECT_BAD_OMEN("event.mob_effect.bad_omen"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EVENT_MOB_EFFECT_RAID_OMEN("event.mob_effect.raid_omen"), EVENT_MOB_EFFECT_RAID_OMEN("event.mob_effect.raid_omen"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EVENT_MOB_EFFECT_TRIAL_OMEN("event.mob_effect.trial_omen"), EVENT_MOB_EFFECT_TRIAL_OMEN("event.mob_effect.trial_omen"),
EVENT_RAID_HORN("event.raid.horn"), EVENT_RAID_HORN("event.raid.horn"),
INTENTIONALLY_EMPTY("intentionally_empty"), INTENTIONALLY_EMPTY("intentionally_empty"),
@ -1590,11 +1593,8 @@ public enum Sound implements Keyed {
ITEM_BUCKET_FILL_LAVA("item.bucket.fill_lava"), ITEM_BUCKET_FILL_LAVA("item.bucket.fill_lava"),
ITEM_BUCKET_FILL_POWDER_SNOW("item.bucket.fill_powder_snow"), ITEM_BUCKET_FILL_POWDER_SNOW("item.bucket.fill_powder_snow"),
ITEM_BUCKET_FILL_TADPOLE("item.bucket.fill_tadpole"), ITEM_BUCKET_FILL_TADPOLE("item.bucket.fill_tadpole"),
@MinecraftExperimental
ITEM_BUNDLE_DROP_CONTENTS("item.bundle.drop_contents"), ITEM_BUNDLE_DROP_CONTENTS("item.bundle.drop_contents"),
@MinecraftExperimental
ITEM_BUNDLE_INSERT("item.bundle.insert"), ITEM_BUNDLE_INSERT("item.bundle.insert"),
@MinecraftExperimental
ITEM_BUNDLE_REMOVE_ONE("item.bundle.remove_one"), ITEM_BUNDLE_REMOVE_ONE("item.bundle.remove_one"),
ITEM_CHORUS_FRUIT_TELEPORT("item.chorus_fruit.teleport"), ITEM_CHORUS_FRUIT_TELEPORT("item.chorus_fruit.teleport"),
ITEM_CROP_PLANT("item.crop.plant"), ITEM_CROP_PLANT("item.crop.plant"),
@ -1625,14 +1625,14 @@ public enum Sound implements Keyed {
ITEM_HONEY_BOTTLE_DRINK("item.honey_bottle.drink"), ITEM_HONEY_BOTTLE_DRINK("item.honey_bottle.drink"),
ITEM_INK_SAC_USE("item.ink_sac.use"), ITEM_INK_SAC_USE("item.ink_sac.use"),
ITEM_LODESTONE_COMPASS_LOCK("item.lodestone_compass.lock"), ITEM_LODESTONE_COMPASS_LOCK("item.lodestone_compass.lock"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_MACE_SMASH_AIR("item.mace.smash_air"), ITEM_MACE_SMASH_AIR("item.mace.smash_air"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_MACE_SMASH_GROUND("item.mace.smash_ground"), ITEM_MACE_SMASH_GROUND("item.mace.smash_ground"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_MACE_SMASH_GROUND_HEAVY("item.mace.smash_ground_heavy"), ITEM_MACE_SMASH_GROUND_HEAVY("item.mace.smash_ground_heavy"),
ITEM_NETHER_WART_PLANT("item.nether_wart.plant"), ITEM_NETHER_WART_PLANT("item.nether_wart.plant"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_OMINOUS_BOTTLE_DISPOSE("item.ominous_bottle.dispose"), ITEM_OMINOUS_BOTTLE_DISPOSE("item.ominous_bottle.dispose"),
ITEM_SHIELD_BLOCK("item.shield.block"), ITEM_SHIELD_BLOCK("item.shield.block"),
ITEM_SHIELD_BREAK("item.shield.break"), ITEM_SHIELD_BREAK("item.shield.break"),
@ -1648,13 +1648,13 @@ public enum Sound implements Keyed {
ITEM_TRIDENT_RIPTIDE_3("item.trident.riptide_3"), ITEM_TRIDENT_RIPTIDE_3("item.trident.riptide_3"),
ITEM_TRIDENT_THROW("item.trident.throw"), ITEM_TRIDENT_THROW("item.trident.throw"),
ITEM_TRIDENT_THUNDER("item.trident.thunder"), ITEM_TRIDENT_THUNDER("item.trident.thunder"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_WOLF_ARMOR_BREAK("item.wolf_armor.break"), ITEM_WOLF_ARMOR_BREAK("item.wolf_armor.break"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_WOLF_ARMOR_CRACK("item.wolf_armor.crack"), ITEM_WOLF_ARMOR_CRACK("item.wolf_armor.crack"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_WOLF_ARMOR_DAMAGE("item.wolf_armor.damage"), ITEM_WOLF_ARMOR_DAMAGE("item.wolf_armor.damage"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_WOLF_ARMOR_REPAIR("item.wolf_armor.repair"), ITEM_WOLF_ARMOR_REPAIR("item.wolf_armor.repair"),
MUSIC_CREATIVE("music.creative"), MUSIC_CREATIVE("music.creative"),
MUSIC_CREDITS("music.credits"), MUSIC_CREDITS("music.credits"),

View file

@ -1,6 +1,7 @@
package org.bukkit.block; package org.bukkit.block;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.loot.Lootable; import org.bukkit.loot.Lootable;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
@ -8,7 +9,7 @@ import org.jetbrains.annotations.ApiStatus;
* Represents a captured state of a crafter. * Represents a captured state of a crafter.
*/ */
@ApiStatus.Experimental @ApiStatus.Experimental
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
public interface Crafter extends Container, Lootable { public interface Crafter extends Container, Lootable {
/** /**

View file

@ -1,12 +1,13 @@
package org.bukkit.block; package org.bukkit.block;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
/** /**
* Represents a captured state of a trial spawner. * Represents a captured state of a trial spawner.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface TrialSpawner extends TileState { public interface TrialSpawner extends TileState {
} }

View file

@ -1,12 +1,13 @@
package org.bukkit.block; package org.bukkit.block;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
/** /**
* Represents a captured state of a trial spawner. * Represents a captured state of a trial spawner.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface Vault extends TileState { public interface Vault extends TileState {
} }

View file

@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.bukkit.Keyed; import org.bukkit.Keyed;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.Registry; import org.bukkit.Registry;
import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Contract;
@ -52,9 +53,9 @@ public enum PatternType implements Keyed {
MOJANG("moj", "mojang"), MOJANG("moj", "mojang"),
GLOBE("glb", "globe"), GLOBE("glb", "globe"),
PIGLIN("pig", "piglin"), PIGLIN("pig", "piglin"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
FLOW("flw", "flow"), FLOW("flw", "flow"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
GUSTER("gus", "guster"); GUSTER("gus", "guster");
private final String identifier; private final String identifier;

View file

@ -1,11 +1,12 @@
package org.bukkit.block.data.type; package org.bukkit.block.data.type;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.block.data.Lightable; import org.bukkit.block.data.Lightable;
import org.bukkit.block.data.Powerable; import org.bukkit.block.data.Powerable;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface CopperBulb extends Lightable, Powerable { public interface CopperBulb extends Lightable, Powerable {
} }

View file

@ -1,6 +1,7 @@
package org.bukkit.block.data.type; package org.bukkit.block.data.type;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Powerable; import org.bukkit.block.data.Powerable;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
@ -15,7 +16,7 @@ import org.jetbrains.annotations.NotNull;
* 'crafting' is whether crafter's mouth is open and top is glowing. * 'crafting' is whether crafter's mouth is open and top is glowing.
*/ */
@ApiStatus.Experimental @ApiStatus.Experimental
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
public interface Crafter extends BlockData { public interface Crafter extends BlockData {
/** /**

View file

@ -1,6 +1,7 @@
package org.bukkit.block.data.type; package org.bukkit.block.data.type;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -10,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
* <br> * <br>
* 'ominous' indicates if the block has ominous effects. * 'ominous' indicates if the block has ominous effects.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface TrialSpawner extends BlockData { public interface TrialSpawner extends BlockData {

View file

@ -1,6 +1,7 @@
package org.bukkit.block.data.type; package org.bukkit.block.data.type;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.block.data.Directional; import org.bukkit.block.data.Directional;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -10,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
* <br> * <br>
* 'ominous' indicates if the block has ominous effects. * 'ominous' indicates if the block has ominous effects.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface Vault extends Directional { public interface Vault extends Directional {

View file

@ -7,6 +7,7 @@ import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.Registry; import org.bukkit.Registry;
import org.bukkit.Translatable; import org.bukkit.Translatable;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -196,19 +197,19 @@ public abstract class Enchantment implements Keyed, Translatable {
/** /**
* Increases fall damage of maces * Increases fall damage of maces
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
public static final Enchantment DENSITY = getEnchantment("density"); public static final Enchantment DENSITY = getEnchantment("density");
/** /**
* Reduces armor effectiveness against maces * Reduces armor effectiveness against maces
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
public static final Enchantment BREACH = getEnchantment("breach"); public static final Enchantment BREACH = getEnchantment("breach");
/** /**
* Emits wind burst upon hitting enemy * Emits wind burst upon hitting enemy
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
public static final Enchantment WIND_BURST = getEnchantment("wind_burst"); public static final Enchantment WIND_BURST = getEnchantment("wind_burst");
/** /**

View file

@ -1,12 +1,13 @@
package org.bukkit.entity; package org.bukkit.entity;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
/** /**
* Represents a Wind Charge. * Represents a Wind Charge.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface AbstractWindCharge extends Fireball { public interface AbstractWindCharge extends Fireball {

View file

@ -1,12 +1,13 @@
package org.bukkit.entity; package org.bukkit.entity;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
/** /**
* Represents a Bogged Skeleton. * Represents a Bogged Skeleton.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface Bogged extends AbstractSkeleton { public interface Bogged extends AbstractSkeleton {
} }

View file

@ -1,12 +1,13 @@
package org.bukkit.entity; package org.bukkit.entity;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
/** /**
* Represents a Breeze. Whoosh! * Represents a Breeze. Whoosh!
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface Breeze extends Monster { public interface Breeze extends Monster {
} }

View file

@ -1,12 +1,13 @@
package org.bukkit.entity; package org.bukkit.entity;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
/** /**
* Represents a Wind Charge. * Represents a Wind Charge.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface BreezeWindCharge extends AbstractWindCharge { public interface BreezeWindCharge extends AbstractWindCharge {

View file

@ -10,6 +10,7 @@ import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.Translatable; import org.bukkit.Translatable;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.entity.minecart.CommandMinecart; import org.bukkit.entity.minecart.CommandMinecart;
import org.bukkit.entity.minecart.ExplosiveMinecart; import org.bukkit.entity.minecart.ExplosiveMinecart;
import org.bukkit.entity.minecart.HopperMinecart; import org.bukkit.entity.minecart.HopperMinecart;
@ -286,20 +287,20 @@ public enum EntityType implements Keyed, Translatable {
ITEM_DISPLAY("item_display", ItemDisplay.class, -1), ITEM_DISPLAY("item_display", ItemDisplay.class, -1),
SNIFFER("sniffer", Sniffer.class, -1), SNIFFER("sniffer", Sniffer.class, -1),
TEXT_DISPLAY("text_display", TextDisplay.class, -1), TEXT_DISPLAY("text_display", TextDisplay.class, -1),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
BREEZE("breeze", Breeze.class, -1), BREEZE("breeze", Breeze.class, -1),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
WIND_CHARGE("wind_charge", WindCharge.class, -1), WIND_CHARGE("wind_charge", WindCharge.class, -1),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
BREEZE_WIND_CHARGE("breeze_wind_charge", BreezeWindCharge.class, -1), BREEZE_WIND_CHARGE("breeze_wind_charge", BreezeWindCharge.class, -1),
ARMADILLO("armadillo", Armadillo.class, -1), ARMADILLO("armadillo", Armadillo.class, -1),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
BOGGED("bogged", Bogged.class, -1), BOGGED("bogged", Bogged.class, -1),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
OMINOUS_ITEM_SPAWNER("ominous_item_spawner", OminousItemSpawner.class, -1), OMINOUS_ITEM_SPAWNER("ominous_item_spawner", OminousItemSpawner.class, -1),
/** /**

View file

@ -1,6 +1,7 @@
package org.bukkit.entity; package org.bukkit.entity;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -8,7 +9,7 @@ import org.jetbrains.annotations.Nullable;
/** /**
* Represents an ominous item spawner. * Represents an ominous item spawner.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface OminousItemSpawner extends Entity { public interface OminousItemSpawner extends Entity {

View file

@ -1,12 +1,13 @@
package org.bukkit.entity; package org.bukkit.entity;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
/** /**
* Represents a Wind Charge. * Represents a Wind Charge.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
public interface WindCharge extends AbstractWindCharge { public interface WindCharge extends AbstractWindCharge {

View file

@ -1,6 +1,7 @@
package org.bukkit.event.inventory; package org.bukkit.event.inventory;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.InventoryHolder;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -147,7 +148,7 @@ public enum InventoryType {
/** /**
* A crafter inventory, with 9 CRAFTING slots. * A crafter inventory, with 9 CRAFTING slots.
*/ */
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental @ApiStatus.Experimental
CRAFTER(9, "Crafter"), CRAFTER(9, "Crafter"),
/** /**

View file

@ -4,6 +4,7 @@ import org.bukkit.Keyed;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.Registry; import org.bukkit.Registry;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
@ -48,7 +49,7 @@ public abstract class Structure implements Keyed {
public static final Structure RUINED_PORTAL_NETHER = getStructure("ruined_portal_nether"); public static final Structure RUINED_PORTAL_NETHER = getStructure("ruined_portal_nether");
public static final Structure ANCIENT_CITY = getStructure("ancient_city"); public static final Structure ANCIENT_CITY = getStructure("ancient_city");
public static final Structure TRAIL_RUINS = getStructure("trail_ruins"); public static final Structure TRAIL_RUINS = getStructure("trail_ruins");
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
public static final Structure TRIAL_CHAMBERS = getStructure("trial_chambers"); public static final Structure TRIAL_CHAMBERS = getStructure("trial_chambers");
private static Structure getStructure(String name) { private static Structure getStructure(String name) {

View file

@ -1,11 +1,12 @@
package org.bukkit.inventory; package org.bukkit.inventory;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
/** /**
* Interface to the inventory of a Crafter. * Interface to the inventory of a Crafter.
*/ */
@ApiStatus.Experimental @ApiStatus.Experimental
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
public interface CrafterInventory extends Inventory { } public interface CrafterInventory extends Inventory { }

View file

@ -1,13 +1,11 @@
package org.bukkit.inventory.meta; package org.bukkit.inventory.meta;
import java.util.List; import java.util.List;
import org.bukkit.MinecraftExperimental;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@MinecraftExperimental
@ApiStatus.Experimental @ApiStatus.Experimental
public interface BundleMeta extends ItemMeta { public interface BundleMeta extends ItemMeta {

View file

@ -4,6 +4,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Keyed; import org.bukkit.Keyed;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
@ -34,45 +35,45 @@ public enum LootTables implements Keyed {
ANCIENT_CITY("chests/ancient_city"), ANCIENT_CITY("chests/ancient_city"),
ANCIENT_CITY_ICE_BOX("chests/ancient_city_ice_box"), ANCIENT_CITY_ICE_BOX("chests/ancient_city_ice_box"),
RUINED_PORTAL("chests/ruined_portal"), RUINED_PORTAL("chests/ruined_portal"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_REWARD("chests/trial_chambers/reward"), TRIAL_CHAMBERS_REWARD("chests/trial_chambers/reward"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_REWARD_COMMON("chests/trial_chambers/reward_common"), TRIAL_CHAMBERS_REWARD_COMMON("chests/trial_chambers/reward_common"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_REWARD_RARE("chests/trial_chambers/reward_rare"), TRIAL_CHAMBERS_REWARD_RARE("chests/trial_chambers/reward_rare"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_REWARD_UNIQUE("chests/trial_chambers/reward_unique"), TRIAL_CHAMBERS_REWARD_UNIQUE("chests/trial_chambers/reward_unique"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_REWARD_OMINOUS("chests/trial_chambers/reward_ominous"), TRIAL_CHAMBERS_REWARD_OMINOUS("chests/trial_chambers/reward_ominous"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_REWARD_OMINOUS_COMMON("chests/trial_chambers/reward_ominous_common"), TRIAL_CHAMBERS_REWARD_OMINOUS_COMMON("chests/trial_chambers/reward_ominous_common"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_REWARD_OMINOUS_RARE("chests/trial_chambers/reward_ominous_rare"), TRIAL_CHAMBERS_REWARD_OMINOUS_RARE("chests/trial_chambers/reward_ominous_rare"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_REWARD_OMINOUS_UNIQUE("chests/trial_chambers/reward_ominous_unique"), TRIAL_CHAMBERS_REWARD_OMINOUS_UNIQUE("chests/trial_chambers/reward_ominous_unique"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_SUPPLY("chests/trial_chambers/supply"), TRIAL_CHAMBERS_SUPPLY("chests/trial_chambers/supply"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_CORRIDOR("chests/trial_chambers/corridor"), TRIAL_CHAMBERS_CORRIDOR("chests/trial_chambers/corridor"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_INTERSECTION("chests/trial_chambers/intersection"), TRIAL_CHAMBERS_INTERSECTION("chests/trial_chambers/intersection"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_INTERSECTION_BARREL("chests/trial_chambers/intersection_barrel"), TRIAL_CHAMBERS_INTERSECTION_BARREL("chests/trial_chambers/intersection_barrel"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_ENTRANCE("chests/trial_chambers/entrance"), TRIAL_CHAMBERS_ENTRANCE("chests/trial_chambers/entrance"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_CORRIDOR_DISPENSER("dispensers/trial_chambers/corridor"), TRIAL_CHAMBERS_CORRIDOR_DISPENSER("dispensers/trial_chambers/corridor"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_CHAMBER_DISPENSER("dispensers/trial_chambers/chamber"), TRIAL_CHAMBERS_CHAMBER_DISPENSER("dispensers/trial_chambers/chamber"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_WATER_DISPENSER("dispensers/trial_chambers/water"), TRIAL_CHAMBERS_WATER_DISPENSER("dispensers/trial_chambers/water"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBERS_CORRIDOR_POT("pots/trial_chambers/corridor"), TRIAL_CHAMBERS_CORRIDOR_POT("pots/trial_chambers/corridor"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EQUIPMENT_TRIAL_CHAMBER("equipment/trial_chamber"), EQUIPMENT_TRIAL_CHAMBER("equipment/trial_chamber"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EQUIPMENT_TRIAL_CHAMBER_RANGED("equipment/trial_chamber_ranged"), EQUIPMENT_TRIAL_CHAMBER_RANGED("equipment/trial_chamber_ranged"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
EQUIPMENT_TRIAL_CHAMBER_MELEE("equipment/trial_chamber_melee"), EQUIPMENT_TRIAL_CHAMBER_MELEE("equipment/trial_chamber_melee"),
SHIPWRECK_MAP("chests/shipwreck_map"), SHIPWRECK_MAP("chests/shipwreck_map"),
SHIPWRECK_SUPPLY("chests/shipwreck_supply"), SHIPWRECK_SUPPLY("chests/shipwreck_supply"),
@ -200,15 +201,15 @@ public enum LootTables implements Keyed {
PANDA_SNEEZE("gameplay/panda_sneeze"), PANDA_SNEEZE("gameplay/panda_sneeze"),
PIGLIN_BARTERING("gameplay/piglin_bartering"), PIGLIN_BARTERING("gameplay/piglin_bartering"),
// Spawners // Spawners
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBER_KEY("spawners/trial_chamber/key"), TRIAL_CHAMBER_KEY("spawners/trial_chamber/key"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBER_CONSUMABLES("spawners/trial_chamber/consumables"), TRIAL_CHAMBER_CONSUMABLES("spawners/trial_chamber/consumables"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OMINOUS_TRIAL_CHAMBER_KEY("spawners/ominous/trial_chamber/key"), OMINOUS_TRIAL_CHAMBER_KEY("spawners/ominous/trial_chamber/key"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OMINOUS_TRIAL_CHAMBER_CONSUMABLES("spawners/ominous/trial_chamber/consumables"), OMINOUS_TRIAL_CHAMBER_CONSUMABLES("spawners/ominous/trial_chamber/consumables"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_CHAMBER_ITEMS_TO_DROP_WHEN_OMINOUS("spawners/trial_chamber/items_to_drop_when_ominous"), TRIAL_CHAMBER_ITEMS_TO_DROP_WHEN_OMINOUS("spawners/trial_chamber/items_to_drop_when_ominous"),
// Shearing // Shearing
SHEARING_BOGGED("shearing/bogged"), SHEARING_BOGGED("shearing/bogged"),

View file

@ -7,6 +7,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Keyed; import org.bukkit.Keyed;
import org.bukkit.MinecraftExperimental; import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -58,13 +59,13 @@ public enum PotionType implements Keyed {
STRONG_TURTLE_MASTER("strong_turtle_master"), STRONG_TURTLE_MASTER("strong_turtle_master"),
SLOW_FALLING("slow_falling"), SLOW_FALLING("slow_falling"),
LONG_SLOW_FALLING("long_slow_falling"), LONG_SLOW_FALLING("long_slow_falling"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WIND_CHARGED("wind_charged"), WIND_CHARGED("wind_charged"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
WEAVING("weaving"), WEAVING("weaving"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
OOZING("oozing"), OOZING("oozing"),
@MinecraftExperimental @MinecraftExperimental(Requires.UPDATE_1_21)
INFESTED("infested"), INFESTED("infested"),
; ;