Update to Minecraft 1.21

By: md_5 <git@md-5.net>
This commit is contained in:
Bukkit/Spigot 2024-06-14 01:05:00 +10:00
parent 9c6bdb14e4
commit 5c69fd52f0
62 changed files with 550 additions and 610 deletions

View File

@ -5,7 +5,7 @@
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.20.6-R0.1-SNAPSHOT</version>
<version>1.21-R0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Bukkit</name>

View File

@ -40,7 +40,27 @@ public enum Art implements Keyed {
EARTH(26, 2, 2),
WIND(27, 2, 2),
WATER(28, 2, 2),
FIRE(29, 2, 2);
FIRE(29, 2, 2),
BAROQUE(30, 2, 2),
HUMBLE(31, 2, 2),
MEDITATIVE(32, 1, 1),
PRAIRIE_RIDE(33, 1, 2),
UNPACKED(34, 4, 4),
BACKYARD(35, 3, 4),
BOUQUET(36, 3, 3),
CAVEBIRD(37, 3, 3),
CHANGING(38, 4, 2),
COTAN(39, 3, 3),
ENDBOSS(40, 3, 3),
FERN(41, 3, 3),
FINDING(42, 4, 2),
LOWMIST(43, 4, 2),
ORB(44, 4, 4),
OWLEMONS(45, 3, 3),
PASSAGE(46, 4, 2),
POND(47, 3, 4),
SUNFLOWERS(48, 3, 3),
TIDES(49, 3, 3);
private final int id, width, height;
private final NamespacedKey key;

View File

@ -57,6 +57,7 @@ import org.bukkit.scoreboard.Criteria;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.structure.StructureManager;
import org.bukkit.util.CachedServerIcon;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -1694,6 +1695,17 @@ public final class Bukkit {
server.setMotd(motd);
}
/**
* Gets the server links which will be sent to clients
*
* @return the server's links
*/
@NotNull
@ApiStatus.Experimental
public static ServerLinks getServerLinks() {
return server.getServerLinks();
}
/**
* Gets the default message that is displayed when the server is stopped.
*

View File

@ -25,5 +25,11 @@ public interface FeatureFlag extends Keyed {
public static final FeatureFlag TRADE_REBALANCE = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("trade_rebalance"));
/**
* <strong>AVAILABLE BETWEEN VERSIONS:</strong> 1.20.5 - 1.20.6
*
* @deprecated not available since 1.21
*/
@Deprecated
public static final FeatureFlag UPDATE_121 = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("update_1_21"));
}

View File

@ -0,0 +1,37 @@
package org.bukkit;
import java.util.Objects;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* Represents a song which may play in a Jukebox.
*/
@ApiStatus.Experimental
public interface JukeboxSong extends Keyed, Translatable {
public static final JukeboxSong THIRTEEN = get("13");
public static final JukeboxSong CAT = get("cat");
public static final JukeboxSong BLOCKS = get("blocks");
public static final JukeboxSong CHIRP = get("chirp");
public static final JukeboxSong FAR = get("far");
public static final JukeboxSong MALL = get("mall");
public static final JukeboxSong MELLOHI = get("mellohi");
public static final JukeboxSong STAL = get("stal");
public static final JukeboxSong STRAD = get("strad");
public static final JukeboxSong WARD = get("ward");
public static final JukeboxSong ELEVEN = get("11");
public static final JukeboxSong WAIT = get("wait");
public static final JukeboxSong PIGSTEP = get("pigstep");
public static final JukeboxSong OTHERSIDE = get("otherside");
public static final JukeboxSong FIVE = get("5");
public static final JukeboxSong RELIC = get("relic");
public static final JukeboxSong PRECIPICE = get("precipice");
public static final JukeboxSong CREATOR = get("creator");
public static final JukeboxSong CREATOR_MUSIC_BOX = get("creator_music_box");
@NotNull
private static JukeboxSong get(@NotNull String s) {
return Objects.requireNonNull(Registry.JUKEBOX_SONG.get(NamespacedKey.minecraft(s)), "Missing song " + s);
}
}

View File

@ -7,7 +7,6 @@ import java.lang.reflect.Constructor;
import java.util.Locale;
import java.util.Map;
import java.util.function.Consumer;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.block.Block;
@ -149,55 +148,42 @@ public enum Material implements Keyed, Translatable {
/**
* BlockData: {@link Slab}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_SLAB(19305, Slab.class),
/**
* BlockData: {@link Stairs}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_STAIRS(11268, Stairs.class),
/**
* BlockData: {@link Wall}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_WALL(24395, Wall.class),
@MinecraftExperimental(Requires.UPDATE_1_21)
CHISELED_TUFF(15831),
@MinecraftExperimental(Requires.UPDATE_1_21)
POLISHED_TUFF(17801),
/**
* BlockData: {@link Slab}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
POLISHED_TUFF_SLAB(31096, Slab.class),
/**
* BlockData: {@link Stairs}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
POLISHED_TUFF_STAIRS(7964, Stairs.class),
/**
* BlockData: {@link Wall}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
POLISHED_TUFF_WALL(28886, Wall.class),
@MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_BRICKS(26276),
/**
* BlockData: {@link Slab}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_BRICK_SLAB(11843, Slab.class),
/**
* BlockData: {@link Stairs}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_BRICK_STAIRS(30753, Stairs.class),
/**
* BlockData: {@link Wall}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
TUFF_BRICK_WALL(11761, Wall.class),
@MinecraftExperimental(Requires.UPDATE_1_21)
CHISELED_TUFF_BRICKS(8601),
DRIPSTONE_BLOCK(26227),
/**
@ -303,7 +289,6 @@ public enum Material implements Keyed, Translatable {
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
HEAVY_CORE(15788, Waterlogged.class),
AMETHYST_BLOCK(18919),
BUDDING_AMETHYST(13963),
@ -315,13 +300,9 @@ public enum Material implements Keyed, Translatable {
EXPOSED_COPPER(28488),
WEATHERED_COPPER(19699),
OXIDIZED_COPPER(19490),
@MinecraftExperimental(Requires.UPDATE_1_21)
CHISELED_COPPER(12143),
@MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_CHISELED_COPPER(4570),
@MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_CHISELED_COPPER(30876),
@MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_CHISELED_COPPER(27719),
CUT_COPPER(32519),
EXPOSED_CUT_COPPER(18000),
@ -363,13 +344,9 @@ public enum Material implements Keyed, Translatable {
WAXED_EXPOSED_COPPER(27989),
WAXED_WEATHERED_COPPER(5960),
WAXED_OXIDIZED_COPPER(25626),
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_CHISELED_COPPER(7500),
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_CHISELED_COPPER(30658),
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_CHISELED_COPPER(5970),
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_CHISELED_COPPER(7735),
WAXED_CUT_COPPER(11030),
WAXED_EXPOSED_CUT_COPPER(30043),
@ -2110,42 +2087,34 @@ public enum Material implements Keyed, Translatable {
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
COPPER_DOOR(26809, Door.class),
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_COPPER_DOOR(13236, Door.class),
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_COPPER_DOOR(10208, Door.class),
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_COPPER_DOOR(5348, Door.class),
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_COPPER_DOOR(9954, Door.class),
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_COPPER_DOOR(20748, Door.class),
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_COPPER_DOOR(25073, Door.class),
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_COPPER_DOOR(23888, Door.class),
/**
* BlockData: {@link TrapDoor}
@ -2198,42 +2167,34 @@ public enum Material implements Keyed, Translatable {
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
COPPER_TRAPDOOR(12110, TrapDoor.class),
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_COPPER_TRAPDOOR(19219, TrapDoor.class),
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_COPPER_TRAPDOOR(28254, TrapDoor.class),
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_COPPER_TRAPDOOR(26518, TrapDoor.class),
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_COPPER_TRAPDOOR(12626, TrapDoor.class),
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_COPPER_TRAPDOOR(11010, TrapDoor.class),
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_COPPER_TRAPDOOR(30709, TrapDoor.class),
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_COPPER_TRAPDOOR(21450, TrapDoor.class),
/**
* BlockData: {@link Gate}
@ -2335,6 +2296,7 @@ public enum Material implements Keyed, Translatable {
ARMADILLO_SCUTE(11497),
WOLF_ARMOR(17138, 1, 64),
FLINT_AND_STEEL(28620, 1, 64),
BOWL(32661),
APPLE(7720),
BOW(8745, 1, 384),
ARROW(31091),
@ -2384,7 +2346,6 @@ public enum Material implements Keyed, Translatable {
NETHERITE_AXE(29533, 1, 2031),
NETHERITE_HOE(27385, 1, 2031),
STICK(9773),
BOWL(32661),
MUSHROOM_STEW(16336, 1),
STRING(12806),
FEATHER(30548),
@ -2640,7 +2601,6 @@ public enum Material implements Keyed, Translatable {
/**
* BlockData: {@link Crafter}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
CRAFTER(25243, Crafter.class),
FILLED_MAP(23504),
SHEARS(27971, 1, 238),
@ -2680,9 +2640,7 @@ public enum Material implements Keyed, Translatable {
BAT_SPAWN_EGG(14607),
BEE_SPAWN_EGG(22924),
BLAZE_SPAWN_EGG(4759),
@MinecraftExperimental(Requires.UPDATE_1_21)
BOGGED_SPAWN_EGG(12042),
@MinecraftExperimental(Requires.UPDATE_1_21)
BREEZE_SPAWN_EGG(7580),
CAT_SPAWN_EGG(29583),
CAMEL_SPAWN_EGG(14760),
@ -2758,12 +2716,10 @@ public enum Material implements Keyed, Translatable {
ZOMBIFIED_PIGLIN_SPAWN_EGG(6626),
EXPERIENCE_BOTTLE(12858),
FIRE_CHARGE(4842),
@MinecraftExperimental(Requires.UPDATE_1_21)
WIND_CHARGE(23928),
WRITABLE_BOOK(13393, 1),
WRITTEN_BOOK(24164, 16),
@MinecraftExperimental(Requires.UPDATE_1_21)
MACE(4771, 1, 250),
MACE(4771, 1, 500),
ITEM_FRAME(27318),
GLOW_ITEM_FRAME(26473),
FLOWER_POT(30567),
@ -2911,6 +2867,8 @@ public enum Material implements Keyed, Translatable {
MUSIC_DISC_CAT(16246, 1),
MUSIC_DISC_BLOCKS(26667, 1),
MUSIC_DISC_CHIRP(19436, 1),
MUSIC_DISC_CREATOR(20345, 1),
MUSIC_DISC_CREATOR_MUSIC_BOX(7202, 1),
MUSIC_DISC_FAR(31742, 1),
MUSIC_DISC_MALL(11517, 1),
MUSIC_DISC_MELLOHI(26117, 1),
@ -2923,6 +2881,7 @@ public enum Material implements Keyed, Translatable {
MUSIC_DISC_RELIC(8200, 1),
MUSIC_DISC_5(9212, 1),
MUSIC_DISC_PIGSTEP(21323, 1),
MUSIC_DISC_PRECIPICE(28677, 1),
DISC_FRAGMENT_5(29729),
TRIDENT(7534, 1, 250),
PHANTOM_MEMBRANE(18398),
@ -3160,9 +3119,7 @@ public enum Material implements Keyed, Translatable {
SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE(7070),
RAISER_ARMOR_TRIM_SMITHING_TEMPLATE(29116),
HOST_ARMOR_TRIM_SMITHING_TEMPLATE(12165),
@MinecraftExperimental(Requires.UPDATE_1_21)
FLOW_ARMOR_TRIM_SMITHING_TEMPLATE(29175),
@MinecraftExperimental(Requires.UPDATE_1_21)
BOLT_ARMOR_TRIM_SMITHING_TEMPLATE(9698),
ANGLER_POTTERY_SHERD(9952),
ARCHER_POTTERY_SHERD(21629),
@ -3172,10 +3129,8 @@ public enum Material implements Keyed, Translatable {
BURN_POTTERY_SHERD(21259),
DANGER_POTTERY_SHERD(30506),
EXPLORER_POTTERY_SHERD(5124),
@MinecraftExperimental(Requires.UPDATE_1_21)
FLOW_POTTERY_SHERD(4896),
FRIEND_POTTERY_SHERD(18221),
@MinecraftExperimental(Requires.UPDATE_1_21)
GUSTER_POTTERY_SHERD(28193),
HEART_POTTERY_SHERD(17607),
HEARTBREAK_POTTERY_SHERD(21108),
@ -3184,7 +3139,6 @@ public enum Material implements Keyed, Translatable {
MOURNER_POTTERY_SHERD(23993),
PLENTY_POTTERY_SHERD(28236),
PRIZE_POTTERY_SHERD(4341),
@MinecraftExperimental(Requires.UPDATE_1_21)
SCRAPE_POTTERY_SHERD(30034),
SHEAF_POTTERY_SHERD(23652),
SHELTER_POTTERY_SHERD(28390),
@ -3193,100 +3147,78 @@ public enum Material implements Keyed, Translatable {
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
COPPER_GRATE(16221, Waterlogged.class),
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_COPPER_GRATE(7783, Waterlogged.class),
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_COPPER_GRATE(24954, Waterlogged.class),
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_COPPER_GRATE(14122, Waterlogged.class),
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_COPPER_GRATE(11230, Waterlogged.class),
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_COPPER_GRATE(20520, Waterlogged.class),
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_COPPER_GRATE(16533, Waterlogged.class),
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_COPPER_GRATE(32010, Waterlogged.class),
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
COPPER_BULB(21370, CopperBulb.class),
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
EXPOSED_COPPER_BULB(11944, CopperBulb.class),
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WEATHERED_COPPER_BULB(10800, CopperBulb.class),
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
OXIDIZED_COPPER_BULB(22421, CopperBulb.class),
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_COPPER_BULB(23756, CopperBulb.class),
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_EXPOSED_COPPER_BULB(5530, CopperBulb.class),
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_WEATHERED_COPPER_BULB(13239, CopperBulb.class),
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
WAXED_OXIDIZED_COPPER_BULB(26892, CopperBulb.class),
/**
* BlockData: {@link TrialSpawner}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_SPAWNER(19902, TrialSpawner.class),
@MinecraftExperimental(Requires.UPDATE_1_21)
TRIAL_KEY(12725),
@MinecraftExperimental(Requires.UPDATE_1_21)
OMINOUS_TRIAL_KEY(4986),
/**
* BlockData: {@link Vault}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
VAULT(6288, Vault.class),
@MinecraftExperimental(Requires.UPDATE_1_21)
OMINOUS_BOTTLE(26321),
@MinecraftExperimental(Requires.UPDATE_1_21)
BREEZE_ROD(14281),
/**
* BlockData: {@link Levelled}

View File

@ -47,6 +47,5 @@ public @interface MinecraftExperimental {
@ApiStatus.Internal
public enum Requires {
UPDATE_1_21
}
}

View File

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

View File

@ -236,6 +236,13 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
*/
@ApiStatus.Experimental
Registry<DamageType> DAMAGE_TYPE = Objects.requireNonNull(Bukkit.getRegistry(DamageType.class), "No registry present for DamageType. This is a bug.");
/**
* Jukebox songs.
*
* @see JukeboxSong
*/
@ApiStatus.Experimental
Registry<JukeboxSong> JUKEBOX_SONG = Objects.requireNonNull(Bukkit.getRegistry(JukeboxSong.class), "No registry present for JukeboxSong. This is a bug.");
/**
* Villager profession.
*

View File

@ -58,6 +58,7 @@ import org.bukkit.scoreboard.Criteria;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.structure.StructureManager;
import org.bukkit.util.CachedServerIcon;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -1438,6 +1439,15 @@ public interface Server extends PluginMessageRecipient {
*/
void setMotd(@NotNull String motd);
/**
* Gets the server links which will be sent to clients
*
* @return the server's links
*/
@NotNull
@ApiStatus.Experimental
ServerLinks getServerLinks();
/**
* Gets the default message that is displayed when the server is stopped.
*

View File

@ -0,0 +1,129 @@
package org.bukkit;
import java.net.URI;
import java.util.List;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Represents a collections of links which may be sent to a client.
*/
@ApiStatus.Experimental
public interface ServerLinks {
/**
* Gets the link of a given type, if it exists.
*
* @param type link type
* @return link or null
*/
@Nullable
ServerLink getLink(@NotNull Type type);
/**
* Gets an immutable list of all links.
*
* @return immutable list
*/
@NotNull
List<ServerLink> getLinks();
/**
* Adds the given link, overwriting the first link of the same type if
* already set.
*
* @param type link type
* @param url link url
* @return the added link
*/
@NotNull
ServerLink setLink(@NotNull Type type, @NotNull URI url);
/**
* Adds the given link to the list of links.
*
* @param type link type
* @param url link url
* @return the added link
*/
@NotNull
ServerLink addLink(@NotNull Type type, @NotNull URI url);
/**
* Adds the given link to the list of links.
*
* @param displayName link name / display text
* @param url link url
* @return the added link
*/
@NotNull
ServerLink addLink(@NotNull String displayName, @NotNull URI url);
/**
* Removes the given link.
*
* @param link the link to remove
* @return if the link existed and was removed
*/
boolean removeLink(@NotNull ServerLink link);
/**
* Returns a copy of this link collection, unassociated from the server.
*
* @return copied links
*/
@NotNull
ServerLinks copy();
/**
* Represents a server link.
*/
public interface ServerLink {
/**
* Gets the type of this link if it is a known special type.
*
* @return type or null
*/
@Nullable
Type getType();
/**
* Gets the display name/text of this link.
*
* @return display name
*/
@NotNull
String getDisplayName();
/**
* Gets the url of this link.
*
* @return link url
*/
@NotNull
URI getUrl();
}
/**
* Represents a known type of link which will be translated by the client
* and may have special functionality.
*/
public enum Type {
/**
* Bug report links which may appear on disconnect/crash screens.
*/
REPORT_BUG,
COMMUNITY_GUIDELINES,
SUPPORT,
STATUS,
FEEDBACK,
COMMUNITY,
WEBSITE,
FORUMS,
NEWS,
ANNOUNCEMENTS;
}
}

View File

@ -1,7 +1,6 @@
package org.bukkit;
import org.bukkit.entity.Entity;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
@ -11,7 +10,6 @@ import org.jetbrains.annotations.NotNull;
*
* @see <a href="https://minecraft.wiki/w/Commands/tick">Tick Command</a>
*/
@ApiStatus.Experimental
public interface ServerTickManager {
/**

View File

@ -1,6 +1,5 @@
package org.bukkit;
import org.bukkit.MinecraftExperimental.Requires;
import org.jetbrains.annotations.NotNull;
/**
@ -220,41 +219,25 @@ public enum Sound implements Keyed {
BLOCK_CONDUIT_ATTACK_TARGET("block.conduit.attack.target"),
BLOCK_CONDUIT_DEACTIVATE("block.conduit.deactivate"),
BLOCK_COPPER_BREAK("block.copper.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_BREAK("block.copper_bulb.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_FALL("block.copper_bulb.fall"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_HIT("block.copper_bulb.hit"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_PLACE("block.copper_bulb.place"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_STEP("block.copper_bulb.step"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_TURN_OFF("block.copper_bulb.turn_off"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_BULB_TURN_ON("block.copper_bulb.turn_on"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_DOOR_CLOSE("block.copper_door.close"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_DOOR_OPEN("block.copper_door.open"),
BLOCK_COPPER_FALL("block.copper.fall"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_BREAK("block.copper_grate.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_FALL("block.copper_grate.fall"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_HIT("block.copper_grate.hit"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_PLACE("block.copper_grate.place"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_GRATE_STEP("block.copper_grate.step"),
BLOCK_COPPER_HIT("block.copper.hit"),
BLOCK_COPPER_PLACE("block.copper.place"),
BLOCK_COPPER_STEP("block.copper.step"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_TRAPDOOR_CLOSE("block.copper_trapdoor.close"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_COPPER_TRAPDOOR_OPEN("block.copper_trapdoor.open"),
BLOCK_CORAL_BLOCK_BREAK("block.coral_block.break"),
BLOCK_CORAL_BLOCK_FALL("block.coral_block.fall"),
@ -360,15 +343,10 @@ public enum Sound implements Keyed {
BLOCK_HANGING_SIGN_PLACE("block.hanging_sign.place"),
BLOCK_HANGING_SIGN_STEP("block.hanging_sign.step"),
BLOCK_HANGING_SIGN_WAXED_INTERACT_FAIL("block.hanging_sign.waxed_interact_fail"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_BREAK("block.heavy_core.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_FALL("block.heavy_core.fall"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_HIT("block.heavy_core.hit"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_PLACE("block.heavy_core.place"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_HEAVY_CORE_STEP("block.heavy_core.step"),
BLOCK_HONEY_BLOCK_BREAK("block.honey_block.break"),
BLOCK_HONEY_BLOCK_FALL("block.honey_block.fall"),
@ -546,15 +524,10 @@ public enum Sound implements Keyed {
BLOCK_POLISHED_DEEPSLATE_HIT("block.polished_deepslate.hit"),
BLOCK_POLISHED_DEEPSLATE_PLACE("block.polished_deepslate.place"),
BLOCK_POLISHED_DEEPSLATE_STEP("block.polished_deepslate.step"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_BREAK("block.polished_tuff.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_FALL("block.polished_tuff.fall"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_HIT("block.polished_tuff.hit"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_PLACE("block.polished_tuff.place"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_POLISHED_TUFF_STEP("block.polished_tuff.step"),
BLOCK_PORTAL_AMBIENT("block.portal.ambient"),
BLOCK_PORTAL_TRAVEL("block.portal.travel"),
@ -699,82 +672,49 @@ public enum Sound implements Keyed {
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_PLACE("block.sweet_berry_bush.place"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_ABOUT_TO_SPAWN_ITEM("block.trial_spawner.about_to_spawn_item"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_AMBIENT("block.trial_spawner.ambient"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_AMBIENT_CHARGED("block.trial_spawner.ambient_charged"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_AMBIENT_OMINOUS("block.trial_spawner.ambient_ominous"),
BLOCK_TRIAL_SPAWNER_BREAK("block.trial_spawner.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_CHARGE_ACTIVATE("block.trial_spawner.charge_activate"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_CLOSE_SHUTTER("block.trial_spawner.close_shutter"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_DETECT_PLAYER("block.trial_spawner.detect_player"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_EJECT_ITEM("block.trial_spawner.eject_item"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_FALL("block.trial_spawner.fall"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_HIT("block.trial_spawner.hit"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_OMINOUS_ACTIVATE("block.trial_spawner.ominous_activate"),
BLOCK_TRIAL_SPAWNER_OPEN_SHUTTER("block.trial_spawner.open_shutter"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_PLACE("block.trial_spawner.place"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_SPAWN_ITEM("block.trial_spawner.spawn_item"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_SPAWN_ITEM_BEGIN("block.trial_spawner.spawn_item_begin"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_SPAWN_MOB("block.trial_spawner.spawn_mob"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TRIAL_SPAWNER_STEP("block.trial_spawner.step"),
BLOCK_TRIPWIRE_ATTACH("block.tripwire.attach"),
BLOCK_TRIPWIRE_CLICK_OFF("block.tripwire.click_off"),
BLOCK_TRIPWIRE_CLICK_ON("block.tripwire.click_on"),
BLOCK_TRIPWIRE_DETACH("block.tripwire.detach"),
BLOCK_TUFF_BREAK("block.tuff.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_BREAK("block.tuff_bricks.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_FALL("block.tuff_bricks.fall"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_HIT("block.tuff_bricks.hit"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_PLACE("block.tuff_bricks.place"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_TUFF_BRICKS_STEP("block.tuff_bricks.step"),
BLOCK_TUFF_FALL("block.tuff.fall"),
BLOCK_TUFF_HIT("block.tuff.hit"),
BLOCK_TUFF_PLACE("block.tuff.place"),
BLOCK_TUFF_STEP("block.tuff.step"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_ACTIVATE("block.vault.activate"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_AMBIENT("block.vault.ambient"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_BREAK("block.vault.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_CLOSE_SHUTTER("block.vault.close_shutter"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_DEACTIVATE("block.vault.deactivate"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_EJECT_ITEM("block.vault.eject_item"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_FALL("block.vault.fall"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_HIT("block.vault.hit"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_INSERT_ITEM("block.vault.insert_item"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_INSERT_ITEM_FAIL("block.vault.insert_item_fail"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_OPEN_SHUTTER("block.vault.open_shutter"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_PLACE("block.vault.place"),
@MinecraftExperimental(Requires.UPDATE_1_21)
BLOCK_VAULT_REJECT_REWARDED_PLAYER("block.vault.reject_rewarded_player"),
BLOCK_VAULT_STEP("block.vault.step"),
BLOCK_VINE_BREAK("block.vine.break"),
BLOCK_VINE_FALL("block.vine.fall"),
@ -874,41 +814,23 @@ 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(Requires.UPDATE_1_21)
ENTITY_BOGGED_AMBIENT("entity.bogged.ambient"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_DEATH("entity.bogged.death"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_HURT("entity.bogged.hurt"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_SHEAR("entity.bogged.shear"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BOGGED_STEP("entity.bogged.step"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_CHARGE("entity.breeze.charge"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_DEATH("entity.breeze.death"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_DEFLECT("entity.breeze.deflect"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_HURT("entity.breeze.hurt"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_IDLE_AIR("entity.breeze.idle_air"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_IDLE_GROUND("entity.breeze.idle_ground"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_INHALE("entity.breeze.inhale"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_JUMP("entity.breeze.jump"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_LAND("entity.breeze.land"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_SHOOT("entity.breeze.shoot"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_SLIDE("entity.breeze.slide"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_WHIRL("entity.breeze.whirl"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_BREEZE_WIND_BURST("entity.breeze.wind_burst"),
ENTITY_CAMEL_AMBIENT("entity.camel.ambient"),
ENTITY_CAMEL_DASH("entity.camel.dash"),
@ -1207,9 +1129,7 @@ public enum Sound implements Keyed {
ENTITY_PARROT_FLY("entity.parrot.fly"),
ENTITY_PARROT_HURT("entity.parrot.hurt"),
ENTITY_PARROT_IMITATE_BLAZE("entity.parrot.imitate.blaze"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_PARROT_IMITATE_BOGGED("entity.parrot.imitate.bogged"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_PARROT_IMITATE_BREEZE("entity.parrot.imitate.breeze"),
ENTITY_PARROT_IMITATE_CREEPER("entity.parrot.imitate.creeper"),
ENTITY_PARROT_IMITATE_DROWNED("entity.parrot.imitate.drowned"),
@ -1488,9 +1408,7 @@ public enum Sound implements Keyed {
ENTITY_WARDEN_SONIC_CHARGE("entity.warden.sonic_charge"),
ENTITY_WARDEN_STEP("entity.warden.step"),
ENTITY_WARDEN_TENDRIL_CLICKS("entity.warden.tendril_clicks"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_WIND_CHARGE_THROW("entity.wind_charge.throw"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ENTITY_WIND_CHARGE_WIND_BURST("entity.wind_charge.wind_burst"),
ENTITY_WITCH_AMBIENT("entity.witch.ambient"),
ENTITY_WITCH_CELEBRATE("entity.witch.celebrate"),
@ -1546,11 +1464,8 @@ public enum Sound implements Keyed {
ENTITY_ZOMBIFIED_PIGLIN_ANGRY("entity.zombified_piglin.angry"),
ENTITY_ZOMBIFIED_PIGLIN_DEATH("entity.zombified_piglin.death"),
ENTITY_ZOMBIFIED_PIGLIN_HURT("entity.zombified_piglin.hurt"),
@MinecraftExperimental(Requires.UPDATE_1_21)
EVENT_MOB_EFFECT_BAD_OMEN("event.mob_effect.bad_omen"),
@MinecraftExperimental(Requires.UPDATE_1_21)
EVENT_MOB_EFFECT_RAID_OMEN("event.mob_effect.raid_omen"),
@MinecraftExperimental(Requires.UPDATE_1_21)
EVENT_MOB_EFFECT_TRIAL_OMEN("event.mob_effect.trial_omen"),
EVENT_RAID_HORN("event.raid.horn"),
INTENTIONALLY_EMPTY("intentionally_empty"),
@ -1623,14 +1538,10 @@ public enum Sound implements Keyed {
ITEM_HONEY_BOTTLE_DRINK("item.honey_bottle.drink"),
ITEM_INK_SAC_USE("item.ink_sac.use"),
ITEM_LODESTONE_COMPASS_LOCK("item.lodestone_compass.lock"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_MACE_SMASH_AIR("item.mace.smash_air"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_MACE_SMASH_GROUND("item.mace.smash_ground"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_MACE_SMASH_GROUND_HEAVY("item.mace.smash_ground_heavy"),
ITEM_NETHER_WART_PLANT("item.nether_wart.plant"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_OMINOUS_BOTTLE_DISPOSE("item.ominous_bottle.dispose"),
ITEM_SHIELD_BLOCK("item.shield.block"),
ITEM_SHIELD_BREAK("item.shield.break"),
@ -1646,13 +1557,9 @@ public enum Sound implements Keyed {
ITEM_TRIDENT_RIPTIDE_3("item.trident.riptide_3"),
ITEM_TRIDENT_THROW("item.trident.throw"),
ITEM_TRIDENT_THUNDER("item.trident.thunder"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_WOLF_ARMOR_BREAK("item.wolf_armor.break"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_WOLF_ARMOR_CRACK("item.wolf_armor.crack"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_WOLF_ARMOR_DAMAGE("item.wolf_armor.damage"),
@MinecraftExperimental(Requires.UPDATE_1_21)
ITEM_WOLF_ARMOR_REPAIR("item.wolf_armor.repair"),
MUSIC_CREATIVE("music.creative"),
MUSIC_CREDITS("music.credits"),
@ -1662,11 +1569,14 @@ public enum Sound implements Keyed {
MUSIC_DISC_BLOCKS("music_disc.blocks"),
MUSIC_DISC_CAT("music_disc.cat"),
MUSIC_DISC_CHIRP("music_disc.chirp"),
MUSIC_DISC_CREATOR("music_disc.creator"),
MUSIC_DISC_CREATOR_MUSIC_BOX("music_disc.creator_music_box"),
MUSIC_DISC_FAR("music_disc.far"),
MUSIC_DISC_MALL("music_disc.mall"),
MUSIC_DISC_MELLOHI("music_disc.mellohi"),
MUSIC_DISC_OTHERSIDE("music_disc.otherside"),
MUSIC_DISC_PIGSTEP("music_disc.pigstep"),
MUSIC_DISC_PRECIPICE("music_disc.precipice"),
MUSIC_DISC_RELIC("music_disc.relic"),
MUSIC_DISC_STAL("music_disc.stal"),
MUSIC_DISC_STRAD("music_disc.strad"),

View File

@ -58,6 +58,10 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla block tag representing all wooden doors.
*/
Tag<Material> WOODEN_DOORS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wooden_doors"), Material.class);
/**
* Vanilla block tag representing all doors which can be opened by mobs.
*/
Tag<Material> MOB_INTERACTABLE_DOORS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("mob_interactable_doors"), Material.class);
/**
* Vanilla block tag representing all wooden stairs.
*/
@ -771,6 +775,10 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla block tag representing solid blocks which do not block hopper operation.
*/
Tag<Material> DOES_NOT_BLOCK_HOPPERS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("does_not_block_hoppers"), Material.class);
/**
* Vanilla block tag representing all blocks that resemble air.
*/
Tag<Material> AIR = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("air"), Material.class);
/**
* Key for the built in item registry.
*/
@ -933,10 +941,6 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla item tag representing all fish items.
*/
Tag<Material> ITEMS_FISHES = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("fishes"), Material.class);
/**
* Vanilla item tag representing all music disc items.
*/
Tag<Material> ITEMS_MUSIC_DISCS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("music_discs"), Material.class);
/**
* Vanilla item tag representing all music disc items dropped by creepers.
*/

View File

@ -83,6 +83,26 @@ public enum Attribute implements Keyed, Translatable {
* Strength with which an Entity will jump.
*/
GENERIC_JUMP_STRENGTH("generic.jump_strength"),
/**
* How long an entity remains burning after ingition.
*/
GENERIC_BURNING_TIME("generic.burning_time"),
/**
* Resistance to knockback from explosions.
*/
GENERIC_EXPLOSION_KNOCKBACK_RESISTANCE("generic.explosion_knockback_resistance"),
/**
* Movement speed through difficult terrain.
*/
GENERIC_MOVEMENT_EFFICIENCY("generic.movement_efficiency"),
/**
* Oxygen use underwater.
*/
GENERIC_OXYGEN_BONUS("generic.oxygen_bonus"),
/**
* Movement speed through water.
*/
GENERIC_WATER_MOVEMENT_EFFICIENCY("generic.water_movement_efficiency"),
/**
* The block reach distance of a Player.
*/
@ -95,6 +115,22 @@ public enum Attribute implements Keyed, Translatable {
* Block break speed of a Player.
*/
PLAYER_BLOCK_BREAK_SPEED("player.block_break_speed"),
/**
* Mining speed for correct tools.
*/
PLAYER_MINING_EFFICIENCY("player.mining_efficiency"),
/**
* Sneaking speed.
*/
PLAYER_SNEAKING_SPEED("player.sneaking_speed"),
/**
* Underwater mining speed.
*/
PLAYER_SUBMERGED_MINING_SPEED("player.submerged_mining_speed"),
/**
* Sweeping damage.
*/
PLAYER_SWEEPING_DAMAGE_RATIO("player.sweeping_damage_ratio"),
/**
* Chance of a zombie to spawn reinforcements.
*/

View File

@ -6,6 +6,8 @@ import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import org.bukkit.Keyed;
import org.bukkit.NamespacedKey;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.EquipmentSlotGroup;
@ -16,33 +18,38 @@ import org.jetbrains.annotations.Nullable;
/**
* Concrete implementation of an attribute modifier.
*/
public class AttributeModifier implements ConfigurationSerializable {
public class AttributeModifier implements ConfigurationSerializable, Keyed {
private final UUID uuid;
private final String name;
private final NamespacedKey key;
private final double amount;
private final Operation operation;
private final EquipmentSlotGroup slot;
@Deprecated
public AttributeModifier(@NotNull String name, double amount, @NotNull Operation operation) {
this(UUID.randomUUID(), name, amount, operation);
}
@Deprecated
public AttributeModifier(@NotNull UUID uuid, @NotNull String name, double amount, @NotNull Operation operation) {
this(uuid, name, amount, operation, (EquipmentSlot) null);
}
@Deprecated
public AttributeModifier(@NotNull UUID uuid, @NotNull String name, double amount, @NotNull Operation operation, @Nullable EquipmentSlot slot) {
this(uuid, name, amount, operation, (slot) == null ? EquipmentSlotGroup.ANY : slot.getGroup());
}
@Deprecated
public AttributeModifier(@NotNull UUID uuid, @NotNull String name, double amount, @NotNull Operation operation, @NotNull EquipmentSlotGroup slot) {
Preconditions.checkArgument(uuid != null, "UUID cannot be null");
Preconditions.checkArgument(name != null, "Name cannot be null");
this(NamespacedKey.fromString(uuid.toString()), amount, operation, slot);
}
public AttributeModifier(@NotNull NamespacedKey key, double amount, @NotNull Operation operation, @NotNull EquipmentSlotGroup slot) {
Preconditions.checkArgument(key != null, "Key cannot be null");
Preconditions.checkArgument(operation != null, "Operation cannot be null");
Preconditions.checkArgument(slot != null, "EquipmentSlotGroup cannot be null");
this.uuid = uuid;
this.name = name;
this.key = key;
this.amount = amount;
this.operation = operation;
this.slot = slot;
@ -52,10 +59,19 @@ public class AttributeModifier implements ConfigurationSerializable {
* Get the unique ID for this modifier.
*
* @return unique id
* @see #getKey()
* @deprecated attributes are now identified by keys
*/
@NotNull
@Deprecated
public UUID getUniqueId() {
return uuid;
return UUID.fromString(getKey().toString());
}
@NotNull
@Override
public NamespacedKey getKey() {
return key;
}
/**
@ -65,7 +81,7 @@ public class AttributeModifier implements ConfigurationSerializable {
*/
@NotNull
public String getName() {
return name;
return key.getKey();
}
/**
@ -115,8 +131,7 @@ public class AttributeModifier implements ConfigurationSerializable {
@Override
public Map<String, Object> serialize() {
Map<String, Object> data = new HashMap<String, Object>();
data.put("uuid", uuid.toString());
data.put("name", name);
data.put("key", key.toString());
data.put("operation", operation.ordinal());
data.put("amount", amount);
if (slot != null && slot != EquipmentSlotGroup.ANY) {
@ -132,14 +147,13 @@ public class AttributeModifier implements ConfigurationSerializable {
}
AttributeModifier mod = (AttributeModifier) other;
boolean slots = (this.slot != null ? (this.slot == mod.slot) : mod.slot == null);
return this.uuid.equals(mod.uuid) && this.name.equals(mod.name) && this.amount == mod.amount && this.operation == mod.operation && slots;
return this.key.equals(mod.key) && this.amount == mod.amount && this.operation == mod.operation && slots;
}
@Override
public int hashCode() {
int hash = 5;
hash = 17 * hash + Objects.hashCode(this.uuid);
hash = 17 * hash + Objects.hashCode(this.name);
hash = 17 * hash + Objects.hashCode(this.key);
hash = 17 * hash + (int) (Double.doubleToLongBits(this.amount) ^ (Double.doubleToLongBits(this.amount) >>> 32));
hash = 17 * hash + Objects.hashCode(this.operation);
hash = 17 * hash + Objects.hashCode(this.slot);
@ -149,8 +163,7 @@ public class AttributeModifier implements ConfigurationSerializable {
@Override
public String toString() {
return "AttributeModifier{"
+ "uuid=" + this.uuid.toString()
+ ", name=" + this.name
+ "key=" + this.key.toString()
+ ", operation=" + this.operation.name()
+ ", amount=" + this.amount
+ ", slot=" + (this.slot != null ? this.slot.toString() : "")
@ -159,6 +172,12 @@ public class AttributeModifier implements ConfigurationSerializable {
@NotNull
public static AttributeModifier deserialize(@NotNull Map<String, Object> args) {
NamespacedKey key;
if (args.containsKey("uuid")) {
key = NamespacedKey.fromString((String) args.get("uuid"));
} else {
key = NamespacedKey.fromString((String) args.get("key"));
}
if (args.containsKey("slot")) {
EquipmentSlotGroup slotGroup = EquipmentSlotGroup.getByName(args.get("slot").toString().toLowerCase(Locale.ROOT));
if (slotGroup == null) {
@ -170,9 +189,9 @@ public class AttributeModifier implements ConfigurationSerializable {
}
}
return new AttributeModifier(UUID.fromString((String) args.get("uuid")), (String) args.get("name"), NumberConversions.toDouble(args.get("amount")), Operation.values()[NumberConversions.toInt(args.get("operation"))], slotGroup);
return new AttributeModifier(key, NumberConversions.toDouble(args.get("amount")), Operation.values()[NumberConversions.toInt(args.get("operation"))], slotGroup);
}
return new AttributeModifier(UUID.fromString((String) args.get("uuid")), (String) args.get("name"), NumberConversions.toDouble(args.get("amount")), Operation.values()[NumberConversions.toInt(args.get("operation"))]);
return new AttributeModifier(key, NumberConversions.toDouble(args.get("amount")), Operation.values()[NumberConversions.toInt(args.get("operation"))], EquipmentSlotGroup.ANY);
}
/**

View File

@ -4,8 +4,6 @@ import com.google.common.base.Preconditions;
import java.util.function.Consumer;
import org.bukkit.Keyed;
import org.bukkit.Material;
import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.Translatable;
@ -2877,68 +2875,42 @@ public interface BlockType extends Keyed, Translatable {
/**
* BlockData: {@link Slab}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Slab> TUFF_SLAB = getBlockType("tuff_slab");
/**
* BlockData: {@link Stairs}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Stairs> TUFF_STAIRS = getBlockType("tuff_stairs");
/**
* BlockData: {@link Wall}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Wall> TUFF_WALL = getBlockType("tuff_wall");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> POLISHED_TUFF = getBlockType("polished_tuff");
/**
* BlockData: {@link Slab}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Slab> POLISHED_TUFF_SLAB = getBlockType("polished_tuff_slab");
/**
* BlockData: {@link Stairs}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Stairs> POLISHED_TUFF_STAIRS = getBlockType("polished_tuff_stairs");
/**
* BlockData: {@link Wall}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Wall> POLISHED_TUFF_WALL = getBlockType("polished_tuff_wall");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> CHISELED_TUFF = getBlockType("chiseled_tuff");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> TUFF_BRICKS = getBlockType("tuff_bricks");
/**
* BlockData: {@link Slab}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Slab> TUFF_BRICK_SLAB = getBlockType("tuff_brick_slab");
/**
* BlockData: {@link Stairs}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Stairs> TUFF_BRICK_STAIRS = getBlockType("tuff_brick_stairs");
/**
* BlockData: {@link Wall}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Wall> TUFF_BRICK_WALL = getBlockType("tuff_brick_wall");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> CHISELED_TUFF_BRICKS = getBlockType("chiseled_tuff_bricks");
BlockType.Typed<BlockData> CALCITE = getBlockType("calcite");
BlockType.Typed<BlockData> TINTED_GLASS = getBlockType("tinted_glass");
@ -2974,29 +2946,13 @@ public interface BlockType extends Keyed, Translatable {
BlockType.Typed<BlockData> WEATHERED_CUT_COPPER = getBlockType("weathered_cut_copper");
BlockType.Typed<BlockData> EXPOSED_CUT_COPPER = getBlockType("exposed_cut_copper");
BlockType.Typed<BlockData> CUT_COPPER = getBlockType("cut_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> OXIDIZED_CHISELED_COPPER = getBlockType("oxidized_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> WEATHERED_CHISELED_COPPER = getBlockType("weathered_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> EXPOSED_CHISELED_COPPER = getBlockType("exposed_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> CHISELED_COPPER = getBlockType("chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> WAXED_OXIDIZED_CHISELED_COPPER = getBlockType("waxed_oxidized_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> WAXED_WEATHERED_CHISELED_COPPER = getBlockType("waxed_weathered_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> WAXED_EXPOSED_CHISELED_COPPER = getBlockType("waxed_exposed_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<BlockData> WAXED_CHISELED_COPPER = getBlockType("waxed_chiseled_copper");
/**
* BlockData: {@link Stairs}
@ -3073,194 +3029,130 @@ public interface BlockType extends Keyed, Translatable {
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Door> COPPER_DOOR = getBlockType("copper_door");
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Door> EXPOSED_COPPER_DOOR = getBlockType("exposed_copper_door");
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Door> OXIDIZED_COPPER_DOOR = getBlockType("oxidized_copper_door");
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Door> WEATHERED_COPPER_DOOR = getBlockType("weathered_copper_door");
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Door> WAXED_COPPER_DOOR = getBlockType("waxed_copper_door");
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Door> WAXED_EXPOSED_COPPER_DOOR = getBlockType("waxed_exposed_copper_door");
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Door> WAXED_OXIDIZED_COPPER_DOOR = getBlockType("waxed_oxidized_copper_door");
/**
* BlockData: {@link Door}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Door> WAXED_WEATHERED_COPPER_DOOR = getBlockType("waxed_weathered_copper_door");
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrapDoor> COPPER_TRAPDOOR = getBlockType("copper_trapdoor");
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrapDoor> EXPOSED_COPPER_TRAPDOOR = getBlockType("exposed_copper_trapdoor");
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrapDoor> OXIDIZED_COPPER_TRAPDOOR = getBlockType("oxidized_copper_trapdoor");
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrapDoor> WEATHERED_COPPER_TRAPDOOR = getBlockType("weathered_copper_trapdoor");
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrapDoor> WAXED_COPPER_TRAPDOOR = getBlockType("waxed_copper_trapdoor");
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrapDoor> WAXED_EXPOSED_COPPER_TRAPDOOR = getBlockType("waxed_exposed_copper_trapdoor");
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrapDoor> WAXED_OXIDIZED_COPPER_TRAPDOOR = getBlockType("waxed_oxidized_copper_trapdoor");
/**
* BlockData: {@link TrapDoor}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrapDoor> WAXED_WEATHERED_COPPER_TRAPDOOR = getBlockType("waxed_weathered_copper_trapdoor");
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Waterlogged> COPPER_GRATE = getBlockType("copper_grate");
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Waterlogged> EXPOSED_COPPER_GRATE = getBlockType("exposed_copper_grate");
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Waterlogged> WEATHERED_COPPER_GRATE = getBlockType("weathered_copper_grate");
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Waterlogged> OXIDIZED_COPPER_GRATE = getBlockType("oxidized_copper_grate");
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Waterlogged> WAXED_COPPER_GRATE = getBlockType("waxed_copper_grate");
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Waterlogged> WAXED_EXPOSED_COPPER_GRATE = getBlockType("waxed_exposed_copper_grate");
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Waterlogged> WAXED_WEATHERED_COPPER_GRATE = getBlockType("waxed_weathered_copper_grate");
/**
* BlockData: {@link Waterlogged}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Waterlogged> WAXED_OXIDIZED_COPPER_GRATE = getBlockType("waxed_oxidized_copper_grate");
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<CopperBulb> COPPER_BULB = getBlockType("copper_bulb");
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<CopperBulb> EXPOSED_COPPER_BULB = getBlockType("exposed_copper_bulb");
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<CopperBulb> WEATHERED_COPPER_BULB = getBlockType("weathered_copper_bulb");
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<CopperBulb> OXIDIZED_COPPER_BULB = getBlockType("oxidized_copper_bulb");
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<CopperBulb> WAXED_COPPER_BULB = getBlockType("waxed_copper_bulb");
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<CopperBulb> WAXED_EXPOSED_COPPER_BULB = getBlockType("waxed_exposed_copper_bulb");
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<CopperBulb> WAXED_WEATHERED_COPPER_BULB = getBlockType("waxed_weathered_copper_bulb");
/**
* BlockData: {@link CopperBulb}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<CopperBulb> WAXED_OXIDIZED_COPPER_BULB = getBlockType("waxed_oxidized_copper_bulb");
/**
* BlockData: {@link LightningRod}
@ -3396,14 +3288,10 @@ public interface BlockType extends Keyed, Translatable {
/**
* BlockData: {@link Crafter}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<Crafter> CRAFTER = getBlockType("crafter");
/**
* BlockData: {@link TrialSpawner}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BlockType.Typed<TrialSpawner> TRIAL_SPAWNER = getBlockType("trial_spawner");
//</editor-fold>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,6 @@
package org.bukkit.command;
import java.net.SocketAddress;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
public interface RemoteConsoleCommandSender extends CommandSender {
@ -12,6 +11,5 @@ public interface RemoteConsoleCommandSender extends CommandSender {
* @return the remote sender's address
*/
@NotNull
@ApiStatus.Experimental
public SocketAddress getAddress();
}

View File

@ -21,6 +21,7 @@ import org.jetbrains.annotations.NotNull;
public interface DamageType extends Keyed, Translatable {
public static final DamageType IN_FIRE = getDamageType("in_fire");
public static final DamageType CAMPFIRE = getDamageType("campfire");
public static final DamageType LIGHTNING_BOLT = getDamageType("lightning_bolt");
public static final DamageType ON_FIRE = getDamageType("on_fire");
public static final DamageType LAVA = getDamageType("lava");

View File

@ -4,8 +4,6 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import java.util.Locale;
import org.bukkit.Keyed;
import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.Translatable;
@ -198,19 +196,16 @@ public abstract class Enchantment implements Keyed, Translatable {
/**
* Increases fall damage of maces
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
public static final Enchantment DENSITY = getEnchantment("density");
/**
* Reduces armor effectiveness against maces
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
public static final Enchantment BREACH = getEnchantment("breach");
/**
* Emits wind burst upon hitting enemy
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
public static final Enchantment WIND_BURST = getEnchantment("wind_burst");
/**
@ -284,7 +279,9 @@ public abstract class Enchantment implements Keyed, Translatable {
* fishing.
*
* @return true if the enchantment is a treasure enchantment
* @deprecated enchantment types are now managed by tags
*/
@Deprecated
public abstract boolean isTreasure();
/**

View File

@ -17,14 +17,20 @@ public interface AbstractArrow extends Projectile {
* of the bow that shot it.
*
* @return the knockback strength value
* @see #getWeapon()
* @deprecated a function of the firing weapon
*/
@Deprecated
public int getKnockbackStrength();
/**
* Sets the knockback strength for an arrow.
*
* @param knockbackStrength the knockback strength value
* @see #setWeapon(org.bukkit.inventory.ItemStack)
* @deprecated a function of the firing weapon
*/
@Deprecated
public void setKnockbackStrength(int knockbackStrength);
/**
@ -123,7 +129,10 @@ public interface AbstractArrow extends Projectile {
* Sets if this arrow was shot from a crossbow.
*
* @param shotFromCrossbow if shot from a crossbow
* @see #setWeapon(org.bukkit.inventory.ItemStack)
* @deprecated a function of the firing weapon instead
*/
@Deprecated
public void setShotFromCrossbow(boolean shotFromCrossbow);
/**
@ -143,6 +152,23 @@ public interface AbstractArrow extends Projectile {
@ApiStatus.Experimental
public void setItem(@NotNull ItemStack item);
/**
* Gets the ItemStack which fired this arrow.
*
* @return The firing ItemStack
*/
@NotNull
@ApiStatus.Experimental
public ItemStack getWeapon();
/**
* Sets the ItemStack which fired this arrow.
*
* @param item The firing ItemStack
*/
@ApiStatus.Experimental
public void setWeapon(@NotNull ItemStack item);
/**
* Represents the pickup status of this arrow.
*/

View File

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

View File

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

View File

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

View File

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

View File

@ -7,8 +7,6 @@ import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Keyed;
import org.bukkit.Location;
import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.NamespacedKey;
import org.bukkit.Translatable;
import org.bukkit.World;
@ -21,7 +19,6 @@ 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;
@ -288,21 +285,11 @@ public enum EntityType implements Keyed, Translatable {
ITEM_DISPLAY("item_display", ItemDisplay.class, -1),
SNIFFER("sniffer", Sniffer.class, -1),
TEXT_DISPLAY("text_display", TextDisplay.class, -1),
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BREEZE("breeze", Breeze.class, -1),
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
WIND_CHARGE("wind_charge", WindCharge.class, -1),
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BREEZE_WIND_CHARGE("breeze_wind_charge", BreezeWindCharge.class, -1),
ARMADILLO("armadillo", Armadillo.class, -1),
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
BOGGED("bogged", Bogged.class, -1),
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
OMINOUS_ITEM_SPAWNER("ominous_item_spawner", OminousItemSpawner.class, -1),
/**
* A fishing line and bobber.

View File

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

View File

@ -21,6 +21,7 @@ import org.bukkit.Note;
import org.bukkit.OfflinePlayer;
import org.bukkit.Particle;
import org.bukkit.Server;
import org.bukkit.ServerLinks;
import org.bukkit.Sound;
import org.bukkit.SoundCategory;
import org.bukkit.WeatherType;
@ -184,7 +185,6 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* null value.
*/
@NotNull
@ApiStatus.Experimental
CompletableFuture<byte[]> retrieveCookie(@NotNull NamespacedKey key);
/**
@ -194,7 +194,6 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param value the data to store in the cookie
* @throws IllegalStateException if a cookie cannot be stored at this time
*/
@ApiStatus.Experimental
void storeCookie(@NotNull NamespacedKey key, @NotNull byte[] value);
/**
@ -206,7 +205,6 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalStateException if a transfer cannot take place at this
* time
*/
@ApiStatus.Experimental
void transfer(@NotNull String host, int port);
/**
@ -1015,6 +1013,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendHurtAnimation(float yaw);
/**
* Sends the given server links to the player.
*
* @param links links to send
*/
public void sendLinks(@NotNull ServerLinks links);
/**
* Add custom chat completion suggestions shown to the player while typing a
* message.

View File

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

View File

@ -4,7 +4,6 @@ import org.bukkit.block.Block;
import org.bukkit.event.HandlerList;
import org.bukkit.event.inventory.FurnaceStartSmeltEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
@ -14,10 +13,7 @@ import org.jetbrains.annotations.NotNull;
* <li>A Brewing-Stand starts brewing {@link BrewingStartEvent}</li>
* <li>A Campfire starts cooking {@link CampfireStartEvent}</li>
* </ul>
*
* @apiNote draft API
*/
@ApiStatus.Experimental
public class InventoryBlockStartEvent extends BlockEvent {
private static final HandlerList handlers = new HandlerList();

View File

@ -197,6 +197,10 @@ public class CreatureSpawnEvent extends EntitySpawnEvent {
* When a creature is spawned by the "/summon" command
*/
COMMAND,
/**
* When a creature is spawned by an enchantment
*/
ENCHANTMENT,
/**
* When a creature is spawned by plugins
*/

View File

@ -11,7 +11,12 @@ import org.jetbrains.annotations.Nullable;
public class EntityCombustByBlockEvent extends EntityCombustEvent {
private final Block combuster;
@Deprecated
public EntityCombustByBlockEvent(@Nullable final Block combuster, @NotNull final Entity combustee, final int duration) {
this(combuster, combustee, (float) duration);
}
public EntityCombustByBlockEvent(@Nullable final Block combuster, @NotNull final Entity combustee, final float duration) {
super(combustee, duration);
this.combuster = combuster;
}

View File

@ -9,7 +9,12 @@ import org.jetbrains.annotations.NotNull;
public class EntityCombustByEntityEvent extends EntityCombustEvent {
private final Entity combuster;
@Deprecated
public EntityCombustByEntityEvent(@NotNull final Entity combuster, @NotNull final Entity combustee, final int duration) {
this(combuster, combustee, (float) duration);
}
public EntityCombustByEntityEvent(@NotNull final Entity combuster, @NotNull final Entity combustee, final float duration) {
super(combustee, duration);
this.combuster = combuster;
}

View File

@ -12,10 +12,15 @@ import org.jetbrains.annotations.NotNull;
*/
public class EntityCombustEvent extends EntityEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private int duration;
private float duration;
private boolean cancel;
@Deprecated
public EntityCombustEvent(@NotNull final Entity combustee, final int duration) {
this(combustee, (float) duration);
}
public EntityCombustEvent(@NotNull final Entity combustee, final float duration) {
super(combustee);
this.duration = duration;
this.cancel = false;
@ -35,7 +40,7 @@ public class EntityCombustEvent extends EntityEvent implements Cancellable {
* @return the amount of time (in seconds) the combustee should be alight
* for
*/
public int getDuration() {
public float getDuration() {
return duration;
}
@ -47,6 +52,21 @@ public class EntityCombustEvent extends EntityEvent implements Cancellable {
*
* @param duration the time in seconds to be alight for.
*/
public void setDuration(float duration) {
this.duration = duration;
}
/**
* The number of seconds the combustee should be alight for.
* <p>
* This value will only ever increase the combustion time, not decrease
* existing combustion times.
*
* @param duration the time in seconds to be alight for.
* @see #setDuration(float)
* @deprecated duration is now a float
*/
@Deprecated(forRemoval = true)
public void setDuration(int duration) {
this.duration = duration;
}

View File

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

View File

@ -2,13 +2,11 @@ package org.bukkit.event.player;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player's experience cooldown changes.
*/
@ApiStatus.Experimental
public class PlayerExpCooldownChangeEvent extends PlayerEvent {
private static final HandlerList handlers = new HandlerList();

View File

@ -0,0 +1,43 @@
package org.bukkit.event.player;
import org.bukkit.ServerLinks;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* This event is called when the list of links is sent to the player.
*/
@ApiStatus.Experimental
public class PlayerLinksSendEvent extends PlayerEvent {
private static final HandlerList handlers = new HandlerList();
private final ServerLinks links;
public PlayerLinksSendEvent(@NotNull final Player player, @NotNull final ServerLinks links) {
super(player);
this.links = links;
}
/**
* Gets the links to be sent, for modification.
*
* @return the links
*/
@NotNull
public ServerLinks getLinks() {
return links;
}
@NotNull
@Override
public HandlerList getHandlers() {
return handlers;
}
@NotNull
public static HandlerList getHandlerList() {
return handlers;
}
}

View File

@ -5,13 +5,11 @@ import org.bukkit.block.sign.Side;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* This event is fired when a sign is opened by the player.
*/
@ApiStatus.Experimental
public class PlayerSignOpenEvent extends PlayerEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@ -78,7 +76,6 @@ public class PlayerSignOpenEvent extends PlayerEvent implements Cancellable {
return handlers;
}
@ApiStatus.Experimental
public enum Cause {
/**

View File

@ -5,15 +5,12 @@ import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* This event is fired when the spawn point of the player is changed.
* @apiNote draft API
*/
@ApiStatus.Experimental
public class PlayerSpawnChangeEvent extends PlayerEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();

View File

@ -92,6 +92,10 @@ public class LightningStrikeEvent extends WeatherEvent implements Cancellable {
* Triggered by weather.
*/
WEATHER,
/**
* Triggered by an enchantment but not a trident.
*/
ENCHANTMENT,
/**
* Unknown trigger.
*/

View File

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

View File

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

View File

@ -5,8 +5,6 @@ import com.google.common.collect.Multimap;
import java.util.function.Consumer;
import org.bukkit.Keyed;
import org.bukkit.Material;
import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.Translatable;
@ -107,44 +105,18 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> POLISHED_DEEPSLATE = getItemType("polished_deepslate");
ItemType.Typed<ItemMeta> CALCITE = getItemType("calcite");
ItemType.Typed<ItemMeta> TUFF = getItemType("tuff");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> TUFF_SLAB = getItemType("tuff_slab");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> TUFF_STAIRS = getItemType("tuff_stairs");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> TUFF_WALL = getItemType("tuff_wall");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> CHISELED_TUFF = getItemType("chiseled_tuff");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> POLISHED_TUFF = getItemType("polished_tuff");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> POLISHED_TUFF_SLAB = getItemType("polished_tuff_slab");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> POLISHED_TUFF_STAIRS = getItemType("polished_tuff_stairs");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> POLISHED_TUFF_WALL = getItemType("polished_tuff_wall");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> TUFF_BRICKS = getItemType("tuff_bricks");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> TUFF_BRICK_SLAB = getItemType("tuff_brick_slab");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> TUFF_BRICK_STAIRS = getItemType("tuff_brick_stairs");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> TUFF_BRICK_WALL = getItemType("tuff_brick_wall");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> CHISELED_TUFF_BRICKS = getItemType("chiseled_tuff_bricks");
ItemType.Typed<ItemMeta> DRIPSTONE_BLOCK = getItemType("dripstone_block");
ItemType.Typed<ItemMeta> GRASS_BLOCK = getItemType("grass_block");
@ -211,8 +183,6 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> RAW_IRON_BLOCK = getItemType("raw_iron_block");
ItemType.Typed<ItemMeta> RAW_COPPER_BLOCK = getItemType("raw_copper_block");
ItemType.Typed<ItemMeta> RAW_GOLD_BLOCK = getItemType("raw_gold_block");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> HEAVY_CORE = getItemType("heavy_core");
ItemType.Typed<ItemMeta> AMETHYST_BLOCK = getItemType("amethyst_block");
ItemType.Typed<ItemMeta> BUDDING_AMETHYST = getItemType("budding_amethyst");
@ -224,17 +194,9 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> EXPOSED_COPPER = getItemType("exposed_copper");
ItemType.Typed<ItemMeta> WEATHERED_COPPER = getItemType("weathered_copper");
ItemType.Typed<ItemMeta> OXIDIZED_COPPER = getItemType("oxidized_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> CHISELED_COPPER = getItemType("chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> EXPOSED_CHISELED_COPPER = getItemType("exposed_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WEATHERED_CHISELED_COPPER = getItemType("weathered_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> OXIDIZED_CHISELED_COPPER = getItemType("oxidized_chiseled_copper");
ItemType.Typed<ItemMeta> CUT_COPPER = getItemType("cut_copper");
ItemType.Typed<ItemMeta> EXPOSED_CUT_COPPER = getItemType("exposed_cut_copper");
@ -252,17 +214,9 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> WAXED_EXPOSED_COPPER = getItemType("waxed_exposed_copper");
ItemType.Typed<ItemMeta> WAXED_WEATHERED_COPPER = getItemType("waxed_weathered_copper");
ItemType.Typed<ItemMeta> WAXED_OXIDIZED_COPPER = getItemType("waxed_oxidized_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_CHISELED_COPPER = getItemType("waxed_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_EXPOSED_CHISELED_COPPER = getItemType("waxed_exposed_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_WEATHERED_CHISELED_COPPER = getItemType("waxed_weathered_chiseled_copper");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_OXIDIZED_CHISELED_COPPER = getItemType("waxed_oxidized_chiseled_copper");
ItemType.Typed<ItemMeta> WAXED_CUT_COPPER = getItemType("waxed_cut_copper");
ItemType.Typed<ItemMeta> WAXED_EXPOSED_CUT_COPPER = getItemType("waxed_exposed_cut_copper");
@ -986,29 +940,13 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> BAMBOO_DOOR = getItemType("bamboo_door");
ItemType.Typed<ItemMeta> CRIMSON_DOOR = getItemType("crimson_door");
ItemType.Typed<ItemMeta> WARPED_DOOR = getItemType("warped_door");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> COPPER_DOOR = getItemType("copper_door");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> EXPOSED_COPPER_DOOR = getItemType("exposed_copper_door");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WEATHERED_COPPER_DOOR = getItemType("weathered_copper_door");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> OXIDIZED_COPPER_DOOR = getItemType("oxidized_copper_door");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_COPPER_DOOR = getItemType("waxed_copper_door");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_EXPOSED_COPPER_DOOR = getItemType("waxed_exposed_copper_door");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_WEATHERED_COPPER_DOOR = getItemType("waxed_weathered_copper_door");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_OXIDIZED_COPPER_DOOR = getItemType("waxed_oxidized_copper_door");
ItemType.Typed<ItemMeta> IRON_TRAPDOOR = getItemType("iron_trapdoor");
ItemType.Typed<ItemMeta> OAK_TRAPDOOR = getItemType("oak_trapdoor");
@ -1022,29 +960,13 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> BAMBOO_TRAPDOOR = getItemType("bamboo_trapdoor");
ItemType.Typed<ItemMeta> CRIMSON_TRAPDOOR = getItemType("crimson_trapdoor");
ItemType.Typed<ItemMeta> WARPED_TRAPDOOR = getItemType("warped_trapdoor");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> COPPER_TRAPDOOR = getItemType("copper_trapdoor");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> EXPOSED_COPPER_TRAPDOOR = getItemType("exposed_copper_trapdoor");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WEATHERED_COPPER_TRAPDOOR = getItemType("weathered_copper_trapdoor");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> OXIDIZED_COPPER_TRAPDOOR = getItemType("oxidized_copper_trapdoor");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_COPPER_TRAPDOOR = getItemType("waxed_copper_trapdoor");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_EXPOSED_COPPER_TRAPDOOR = getItemType("waxed_exposed_copper_trapdoor");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_WEATHERED_COPPER_TRAPDOOR = getItemType("waxed_weathered_copper_trapdoor");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_OXIDIZED_COPPER_TRAPDOOR = getItemType("waxed_oxidized_copper_trapdoor");
ItemType.Typed<ItemMeta> OAK_FENCE_GATE = getItemType("oak_fence_gate");
ItemType.Typed<ItemMeta> SPRUCE_FENCE_GATE = getItemType("spruce_fence_gate");
@ -1106,6 +1028,7 @@ public interface ItemType extends Keyed, Translatable {
* ItemMeta: {@link ColorableArmorMeta}
*/
ItemType.Typed<ColorableArmorMeta> WOLF_ARMOR = getItemType("wolf_armor");
ItemType.Typed<ItemMeta> BOWL = getItemType("bowl");
ItemType.Typed<ItemMeta> FLINT_AND_STEEL = getItemType("flint_and_steel");
ItemType.Typed<ItemMeta> APPLE = getItemType("apple");
ItemType.Typed<ItemMeta> BOW = getItemType("bow");
@ -1156,7 +1079,6 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> NETHERITE_AXE = getItemType("netherite_axe");
ItemType.Typed<ItemMeta> NETHERITE_HOE = getItemType("netherite_hoe");
ItemType.Typed<ItemMeta> STICK = getItemType("stick");
ItemType.Typed<ItemMeta> BOWL = getItemType("bowl");
ItemType.Typed<ItemMeta> MUSHROOM_STEW = getItemType("mushroom_stew");
ItemType.Typed<ItemMeta> STRING = getItemType("string");
ItemType.Typed<ItemMeta> FEATHER = getItemType("feather");
@ -1442,8 +1364,6 @@ public interface ItemType extends Keyed, Translatable {
/**
* ItemMeta: {@link BlockStateMeta}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<BlockStateMeta> CRAFTER = getItemType("crafter");
/**
* ItemMeta: {@link MapMeta}
@ -1507,14 +1427,10 @@ public interface ItemType extends Keyed, Translatable {
/**
* ItemMeta: {@link SpawnEggMeta}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<SpawnEggMeta> BOGGED_SPAWN_EGG = getItemType("bogged_spawn_egg");
/**
* ItemMeta: {@link SpawnEggMeta}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<SpawnEggMeta> BREEZE_SPAWN_EGG = getItemType("breeze_spawn_egg");
/**
* ItemMeta: {@link SpawnEggMeta}
@ -1806,8 +1722,6 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<SpawnEggMeta> ZOMBIFIED_PIGLIN_SPAWN_EGG = getItemType("zombified_piglin_spawn_egg");
ItemType.Typed<ItemMeta> EXPERIENCE_BOTTLE = getItemType("experience_bottle");
ItemType.Typed<ItemMeta> FIRE_CHARGE = getItemType("fire_charge");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WIND_CHARGE = getItemType("wind_charge");
/**
* ItemMeta: {@link BookMeta}
@ -1817,8 +1731,6 @@ public interface ItemType extends Keyed, Translatable {
* ItemMeta: {@link BookMeta}
*/
ItemType.Typed<BookMeta> WRITTEN_BOOK = getItemType("written_book");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> MACE = getItemType("mace");
ItemType.Typed<ItemMeta> ITEM_FRAME = getItemType("item_frame");
ItemType.Typed<ItemMeta> GLOW_ITEM_FRAME = getItemType("glow_item_frame");
@ -1994,6 +1906,8 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> MUSIC_DISC_CAT = getItemType("music_disc_cat");
ItemType.Typed<ItemMeta> MUSIC_DISC_BLOCKS = getItemType("music_disc_blocks");
ItemType.Typed<ItemMeta> MUSIC_DISC_CHIRP = getItemType("music_disc_chirp");
ItemType.Typed<ItemMeta> MUSIC_DISC_CREATOR = getItemType("music_disc_creator");
ItemType.Typed<ItemMeta> MUSIC_DISC_CREATOR_MUSIC_BOX = getItemType("music_disc_creator_music_box");
ItemType.Typed<ItemMeta> MUSIC_DISC_FAR = getItemType("music_disc_far");
ItemType.Typed<ItemMeta> MUSIC_DISC_MALL = getItemType("music_disc_mall");
ItemType.Typed<ItemMeta> MUSIC_DISC_MELLOHI = getItemType("music_disc_mellohi");
@ -2006,6 +1920,7 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> MUSIC_DISC_RELIC = getItemType("music_disc_relic");
ItemType.Typed<ItemMeta> MUSIC_DISC_5 = getItemType("music_disc_5");
ItemType.Typed<ItemMeta> MUSIC_DISC_PIGSTEP = getItemType("music_disc_pigstep");
ItemType.Typed<ItemMeta> MUSIC_DISC_PRECIPICE = getItemType("music_disc_precipice");
ItemType.Typed<ItemMeta> DISC_FRAGMENT_5 = getItemType("disc_fragment_5");
ItemType.Typed<ItemMeta> TRIDENT = getItemType("trident");
ItemType.Typed<ItemMeta> PHANTOM_MEMBRANE = getItemType("phantom_membrane");
@ -2026,11 +1941,7 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> MOJANG_BANNER_PATTERN = getItemType("mojang_banner_pattern");
ItemType.Typed<ItemMeta> GLOBE_BANNER_PATTERN = getItemType("globe_banner_pattern");
ItemType.Typed<ItemMeta> PIGLIN_BANNER_PATTERN = getItemType("piglin_banner_pattern");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> FLOW_BANNER_PATTERN = getItemType("flow_banner_pattern");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> GUSTER_BANNER_PATTERN = getItemType("guster_banner_pattern");
/**
* ItemMeta: {@link MusicInstrumentMeta}
@ -2142,11 +2053,7 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE = getItemType("silence_armor_trim_smithing_template");
ItemType.Typed<ItemMeta> RAISER_ARMOR_TRIM_SMITHING_TEMPLATE = getItemType("raiser_armor_trim_smithing_template");
ItemType.Typed<ItemMeta> HOST_ARMOR_TRIM_SMITHING_TEMPLATE = getItemType("host_armor_trim_smithing_template");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> FLOW_ARMOR_TRIM_SMITHING_TEMPLATE = getItemType("flow_armor_trim_smithing_template");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> BOLT_ARMOR_TRIM_SMITHING_TEMPLATE = getItemType("bolt_armor_trim_smithing_template");
ItemType.Typed<ItemMeta> ANGLER_POTTERY_SHERD = getItemType("angler_pottery_sherd");
ItemType.Typed<ItemMeta> ARCHER_POTTERY_SHERD = getItemType("archer_pottery_sherd");
@ -2156,12 +2063,8 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> BURN_POTTERY_SHERD = getItemType("burn_pottery_sherd");
ItemType.Typed<ItemMeta> DANGER_POTTERY_SHERD = getItemType("danger_pottery_sherd");
ItemType.Typed<ItemMeta> EXPLORER_POTTERY_SHERD = getItemType("explorer_pottery_sherd");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> FLOW_POTTERY_SHERD = getItemType("flow_pottery_sherd");
ItemType.Typed<ItemMeta> FRIEND_POTTERY_SHERD = getItemType("friend_pottery_sherd");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> GUSTER_POTTERY_SHERD = getItemType("guster_pottery_sherd");
ItemType.Typed<ItemMeta> HEART_POTTERY_SHERD = getItemType("heart_pottery_sherd");
ItemType.Typed<ItemMeta> HEARTBREAK_POTTERY_SHERD = getItemType("heartbreak_pottery_sherd");
@ -2170,87 +2073,41 @@ public interface ItemType extends Keyed, Translatable {
ItemType.Typed<ItemMeta> MOURNER_POTTERY_SHERD = getItemType("mourner_pottery_sherd");
ItemType.Typed<ItemMeta> PLENTY_POTTERY_SHERD = getItemType("plenty_pottery_sherd");
ItemType.Typed<ItemMeta> PRIZE_POTTERY_SHERD = getItemType("prize_pottery_sherd");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> SCRAPE_POTTERY_SHERD = getItemType("scrape_pottery_sherd");
ItemType.Typed<ItemMeta> SHEAF_POTTERY_SHERD = getItemType("sheaf_pottery_sherd");
ItemType.Typed<ItemMeta> SHELTER_POTTERY_SHERD = getItemType("shelter_pottery_sherd");
ItemType.Typed<ItemMeta> SKULL_POTTERY_SHERD = getItemType("skull_pottery_sherd");
ItemType.Typed<ItemMeta> SNORT_POTTERY_SHERD = getItemType("snort_pottery_sherd");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> COPPER_GRATE = getItemType("copper_grate");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> EXPOSED_COPPER_GRATE = getItemType("exposed_copper_grate");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WEATHERED_COPPER_GRATE = getItemType("weathered_copper_grate");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> OXIDIZED_COPPER_GRATE = getItemType("oxidized_copper_grate");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_COPPER_GRATE = getItemType("waxed_copper_grate");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_EXPOSED_COPPER_GRATE = getItemType("waxed_exposed_copper_grate");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_WEATHERED_COPPER_GRATE = getItemType("waxed_weathered_copper_grate");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_OXIDIZED_COPPER_GRATE = getItemType("waxed_oxidized_copper_grate");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> COPPER_BULB = getItemType("copper_bulb");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> EXPOSED_COPPER_BULB = getItemType("exposed_copper_bulb");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WEATHERED_COPPER_BULB = getItemType("weathered_copper_bulb");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> OXIDIZED_COPPER_BULB = getItemType("oxidized_copper_bulb");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_COPPER_BULB = getItemType("waxed_copper_bulb");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_EXPOSED_COPPER_BULB = getItemType("waxed_exposed_copper_bulb");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_WEATHERED_COPPER_BULB = getItemType("waxed_weathered_copper_bulb");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> WAXED_OXIDIZED_COPPER_BULB = getItemType("waxed_oxidized_copper_bulb");
/**
* ItemMeta: {@link BlockStateMeta}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<BlockStateMeta> TRIAL_SPAWNER = getItemType("trial_spawner");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> TRIAL_KEY = getItemType("trial_key");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> OMINOUS_TRIAL_KEY = getItemType("ominous_trial_key");
/**
* ItemMeta: {@link BlockStateMeta}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<BlockStateMeta> VAULT = getItemType("vault");
/**
* ItemMeta: {@link OminousBottleMeta}
*/
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<OminousBottleMeta> OMINOUS_BOTTLE = getItemType("ominous_bottle");
@MinecraftExperimental(Requires.UPDATE_1_21)
@ApiStatus.Experimental
ItemType.Typed<ItemMeta> BREEZE_ROD = getItemType("breeze_rod");

View File

@ -1,6 +1,5 @@
package org.bukkit.inventory;
import org.bukkit.Tag;
import org.bukkit.block.Jukebox;
import org.jetbrains.annotations.Nullable;
@ -13,9 +12,7 @@ public interface JukeboxInventory extends Inventory {
* Set the record in the jukebox.
* <p>
* This will immediately start playing the inserted item or stop playing if the
* item provided is null. If the provided item is not a record (according to
* {@link Tag#ITEMS_MUSIC_DISCS}), this method will do nothing and not set the
* item in the inventory.
* item provided is null.
*
* @param item the new record
*/

View File

@ -14,6 +14,7 @@ import org.bukkit.inventory.ItemFactory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemRarity;
import org.bukkit.inventory.meta.components.FoodComponent;
import org.bukkit.inventory.meta.components.JukeboxPlayableComponent;
import org.bukkit.inventory.meta.components.ToolComponent;
import org.bukkit.inventory.meta.tags.CustomItemTagContainer;
import org.bukkit.persistence.PersistentDataHolder;
@ -452,6 +453,34 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
*/
void setTool(@Nullable ToolComponent tool);
/**
* Checks if the jukebox playable is set.
*
* @return if a jukebox playable is set
*/
boolean hasJukeboxPlayable();
/**
* Gets the jukebox playable component set on this item.
* <p>
* The returned component is a snapshot of its current state and does not
* reflect a live view of what is on an item. After changing any value on
* this component, it must be set with
* {@link #setJukeboxPlayable(org.bukkit.inventory.meta.components.JukeboxComponent)}
* to apply the changes.
*
* @return component
*/
@Nullable
JukeboxPlayableComponent getJukeboxPlayable();
/**
* Sets the item tool.
*
* @param jukeboxPlayable new component
*/
void setJukeboxPlayable(@Nullable JukeboxPlayableComponent jukeboxPlayable);
/**
* Checks for the existence of any AttributeModifiers.
*
@ -566,7 +595,7 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste
* @throws NullPointerException if the Attribute is null
* @throws NullPointerException if the AttributeModifier is null
*
* @see AttributeModifier#getUniqueId()
* @see AttributeModifier#getKey()
*/
boolean removeAttributeModifier(@NotNull Attribute attribute, @NotNull AttributeModifier modifier);

View File

@ -2,9 +2,11 @@ package org.bukkit.inventory.meta.components;
import java.util.List;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Represents a component which can turn any item into food.
@ -68,6 +70,21 @@ public interface FoodComponent extends ConfigurationSerializable {
*/
void setEatSeconds(float eatSeconds);
/**
* Gets the item this food will convert to once eaten.
*
* @return converted item
*/
@Nullable
ItemStack getUsingConvertsTo();
/**
* Sets the item this food will convert to once eaten.
*
* @param item converted item
*/
void setUsingConvertsTo(@Nullable ItemStack item);
/**
* Gets the effects which may be applied by this item when eaten.
*

View File

@ -0,0 +1,59 @@
package org.bukkit.inventory.meta.components;
import org.bukkit.JukeboxSong;
import org.bukkit.NamespacedKey;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Represents a component which can be inserted into a jukebox.
*/
@ApiStatus.Experimental
public interface JukeboxPlayableComponent extends ConfigurationSerializable {
/**
* Gets the song assigned to this component.
*
* @return song, or null if the song does not exist on the server
*/
@Nullable
JukeboxSong getSong();
/**
* Gets the key of the song assigned to this component.
*
* @return the song key
*/
@NotNull
NamespacedKey getSongKey();
/**
* Sets the song assigned to this component.
*
* @param song the song
*/
void setSong(@NotNull JukeboxSong song);
/**
* Sets the key of the song assigned to this component.
*
* @param song the song key
*/
void setSongKey(@NotNull NamespacedKey song);
/**
* Gets if the song will show in the item tooltip.
*
* @return if the song will show in the tooltip
*/
boolean isShowInTooltip();
/**
* Sets if the song will show in the item tooltip.
*
* @param show true if the song will show in the tooltip
*/
void setShowInTooltip(boolean show);
}

View File

@ -62,7 +62,9 @@ public final class LootContext {
* {@link #getKiller()} entity's looting level will be used instead.
*
* @return the looting level
* @deprecated no longer functional
*/
@Deprecated
public int getLootingModifier() {
return lootingModifier;
}
@ -131,8 +133,10 @@ public final class LootContext {
*
* @param modifier the looting level modifier
* @return the Builder
* @deprecated no longer functional
*/
@NotNull
@Deprecated
public Builder lootingModifier(int modifier) {
this.lootingModifier = modifier;
return this;

View File

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

View File

@ -3,7 +3,6 @@ package org.bukkit.packs;
import java.util.Set;
import org.bukkit.FeatureFlag;
import org.bukkit.Keyed;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
@ -11,7 +10,6 @@ import org.jetbrains.annotations.NotNull;
*
* @see <a href="https://minecraft.wiki/w/Data_pack">Minecraft wiki</a>
*/
@ApiStatus.Experimental
public interface DataPack extends Keyed {
/**

View File

@ -14,7 +14,6 @@ import org.jetbrains.annotations.Nullable;
/**
* Manager of data packs.
*/
@ApiStatus.Experimental
public interface DataPackManager {
/**

View File

@ -1,7 +1,6 @@
package org.bukkit.packs;
import java.util.UUID;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -10,7 +9,6 @@ import org.jetbrains.annotations.Nullable;
*
* @see <a href="https://minecraft.wiki/w/Resource_pack">Minecraft wiki</a>
*/
@ApiStatus.Experimental
public interface ResourcePack {
/**

View File

@ -1,5 +1,4 @@
/**
* Classes dedicated to handling data pack information.
*/
@org.jetbrains.annotations.ApiStatus.Experimental
package org.bukkit.packs;

View File

@ -5,8 +5,6 @@ import java.util.List;
import java.util.function.Supplier;
import org.bukkit.Bukkit;
import org.bukkit.Keyed;
import org.bukkit.MinecraftExperimental;
import org.bukkit.MinecraftExperimental.Requires;
import org.bukkit.NamespacedKey;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
@ -59,13 +57,9 @@ public enum PotionType implements Keyed {
STRONG_TURTLE_MASTER("strong_turtle_master"),
SLOW_FALLING("slow_falling"),
LONG_SLOW_FALLING("long_slow_falling"),
@MinecraftExperimental(Requires.UPDATE_1_21)
WIND_CHARGED("wind_charged"),
@MinecraftExperimental(Requires.UPDATE_1_21)
WEAVING("weaving"),
@MinecraftExperimental(Requires.UPDATE_1_21)
OOZING("oozing"),
@MinecraftExperimental(Requires.UPDATE_1_21)
INFESTED("infested"),
;