Update to Minecraft 1.16.1

By: md_5 <git@md-5.net>
This commit is contained in:
Bukkit/Spigot 2020-06-25 10:00:00 +10:00
parent 3fd0ae0a81
commit eed3a67ee8
36 changed files with 1299 additions and 151 deletions

View File

@ -5,7 +5,7 @@
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.15.2-R0.1-SNAPSHOT</version>
<version>1.16.1-R0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Bukkit</name>
@ -74,14 +74,14 @@
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.25</version>
<version>1.26</version>
<scope>compile</scope>
</dependency>
<!-- annotations -->
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>18.0.0</version>
<version>19.0.0</version>
<scope>provided</scope>
</dependency>
<!-- testing -->
@ -100,7 +100,7 @@
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-tree</artifactId>
<version>7.3.1</version>
<version>8.0.1</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@ -106,7 +106,7 @@ public enum ChatColor {
* you need to dynamically convert colour codes from your custom format.
*/
public static final char COLOR_CHAR = '\u00A7';
private static final Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "[0-9A-FK-OR]");
private static final Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "[0-9A-FK-ORX]");
private final int intCode;
private final char code;
@ -218,7 +218,7 @@ public enum ChatColor {
char[] b = textToTranslate.toCharArray();
for (int i = 0; i < b.length - 1; i++) {
if (b[i] == altColorChar && "0123456789AaBbCcDdEeFfKkLlMmNnOoRr".indexOf(b[i + 1]) > -1) {
if (b[i] == altColorChar && "0123456789AaBbCcDdEeFfKkLlMmNnOoRrXx".indexOf(b[i + 1]) > -1) {
b[i] = ChatColor.COLOR_CHAR;
b[i + 1] = Character.toLowerCase(b[i + 1]);
}

View File

@ -1,7 +1,5 @@
package org.bukkit;
import com.google.common.collect.Maps;
import java.util.Map;
import org.bukkit.entity.Ageable;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Entity;
@ -18,7 +16,6 @@ import org.bukkit.entity.Witch;
import org.bukkit.entity.Wolf;
import org.bukkit.entity.ZombieVillager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* A list of all Effects that can happen to entities.
@ -152,7 +149,6 @@ public enum EntityEffect {
private final byte data;
private final Class<? extends Entity> applicable;
private static final Map<Byte, EntityEffect> BY_DATA = Maps.newHashMap();
EntityEffect(final int data, /*@NotNull*/ Class<? extends Entity> clazz) {
this.data = (byte) data;
@ -179,24 +175,4 @@ public enum EntityEffect {
public Class<? extends Entity> getApplicable() {
return applicable;
}
/**
* Gets the EntityEffect with the given data value
*
* @param data Data value to fetch
* @return The {@link EntityEffect} representing the given value, or null
* if it doesn't exist
* @deprecated Magic value
*/
@Deprecated
@Nullable
public static EntityEffect getByData(final byte data) {
return BY_DATA.get(data);
}
static {
for (EntityEffect entityEffect : values()) {
BY_DATA.put(entityEffect.data, entityEffect);
}
}
}

View File

@ -158,6 +158,16 @@ public final class GameRule<T> {
*/
public static final GameRule<Boolean> DO_TRADER_SPAWNING = new GameRule<>("doTraderSpawning", Boolean.class);
/**
* Whether mobs should cease being angry at a player once they die.
*/
public static final GameRule<Boolean> FORGIVE_DEAD_PLAYERS = new GameRule<>("forgiveDeadPlayers", Boolean.class);
/**
* Whether mobs will target all player entities once angered.
*/
public static final GameRule<Boolean> UNIVERSAL_ANGER = new GameRule<>("universalAnger", Boolean.class);
// Numerical rules
/**
* How often a random block tick occurs (such as plant growth, leaf decay,

File diff suppressed because it is too large Load Diff

View File

@ -72,6 +72,16 @@ public enum Particle {
FALLING_HONEY,
LANDING_HONEY,
FALLING_NECTAR,
SOUL_FIRE_FLAME,
ASH,
CRIMSON_SPORE,
WARPED_SPORE,
SOUL,
DRIPPING_OBSIDIAN_TEAR,
FALLING_OBSIDIAN_TEAR,
LANDING_OBSIDIAN_TEAR,
REVERSE_PORTAL,
WHITE_ASH,
// ----- Legacy Separator -----
LEGACY_BLOCK_CRACK(MaterialData.class),
LEGACY_BLOCK_DUST(MaterialData.class),

View File

@ -7,6 +7,7 @@ import java.util.Iterator;
import java.util.Map;
import java.util.function.Predicate;
import org.bukkit.advancement.Advancement;
import org.bukkit.attribute.Attribute;
import org.bukkit.block.Biome;
import org.bukkit.boss.KeyedBossBar;
import org.bukkit.enchantments.Enchantment;
@ -51,6 +52,12 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
* @see Art
*/
Registry<Art> ART = new SimpleRegistry<>(Art.class);
/**
* Attribute.
*
* @see Attribute
*/
Registry<Attribute> ATTRIBUTE = new SimpleRegistry<>(Attribute.class);
/**
* Server biomes.
*

View File

@ -9,13 +9,34 @@ package org.bukkit;
* depend on the ordinal values of this class.
*/
public enum Sound {
AMBIENT_BASALT_DELTAS_ADDITIONS,
AMBIENT_BASALT_DELTAS_LOOP,
AMBIENT_BASALT_DELTAS_MOOD,
AMBIENT_CAVE,
AMBIENT_CRIMSON_FOREST_ADDITIONS,
AMBIENT_CRIMSON_FOREST_LOOP,
AMBIENT_CRIMSON_FOREST_MOOD,
AMBIENT_NETHER_WASTES_ADDITIONS,
AMBIENT_NETHER_WASTES_LOOP,
AMBIENT_NETHER_WASTES_MOOD,
AMBIENT_SOUL_SAND_VALLEY_ADDITIONS,
AMBIENT_SOUL_SAND_VALLEY_LOOP,
AMBIENT_SOUL_SAND_VALLEY_MOOD,
AMBIENT_UNDERWATER_ENTER,
AMBIENT_UNDERWATER_EXIT,
AMBIENT_UNDERWATER_LOOP,
AMBIENT_UNDERWATER_LOOP_ADDITIONS,
AMBIENT_UNDERWATER_LOOP_ADDITIONS_RARE,
AMBIENT_UNDERWATER_LOOP_ADDITIONS_ULTRA_RARE,
AMBIENT_WARPED_FOREST_ADDITIONS,
AMBIENT_WARPED_FOREST_LOOP,
AMBIENT_WARPED_FOREST_MOOD,
BLOCK_ANCIENT_DEBRIS_BREAK,
BLOCK_ANCIENT_DEBRIS_FALL,
BLOCK_ANCIENT_DEBRIS_HIT,
BLOCK_ANCIENT_DEBRIS_PLACE,
BLOCK_ANCIENT_DEBRIS_STEP,
BLOCK_ANVIL_BREAK,
BLOCK_ANVIL_DESTROY,
BLOCK_ANVIL_FALL,
@ -34,6 +55,11 @@ public enum Sound {
BLOCK_BAMBOO_STEP,
BLOCK_BARREL_CLOSE,
BLOCK_BARREL_OPEN,
BLOCK_BASALT_BREAK,
BLOCK_BASALT_FALL,
BLOCK_BASALT_HIT,
BLOCK_BASALT_PLACE,
BLOCK_BASALT_STEP,
BLOCK_BEACON_ACTIVATE,
BLOCK_BEACON_AMBIENT,
BLOCK_BEACON_DEACTIVATE,
@ -46,6 +72,11 @@ public enum Sound {
BLOCK_BELL_RESONATE,
BLOCK_BELL_USE,
BLOCK_BLASTFURNACE_FIRE_CRACKLE,
BLOCK_BONE_BLOCK_BREAK,
BLOCK_BONE_BLOCK_FALL,
BLOCK_BONE_BLOCK_HIT,
BLOCK_BONE_BLOCK_PLACE,
BLOCK_BONE_BLOCK_STEP,
BLOCK_BREWING_STAND_BREW,
BLOCK_BUBBLE_COLUMN_BUBBLE_POP,
BLOCK_BUBBLE_COLUMN_UPWARDS_AMBIENT,
@ -53,6 +84,11 @@ public enum Sound {
BLOCK_BUBBLE_COLUMN_WHIRLPOOL_AMBIENT,
BLOCK_BUBBLE_COLUMN_WHIRLPOOL_INSIDE,
BLOCK_CAMPFIRE_CRACKLE,
BLOCK_CHAIN_BREAK,
BLOCK_CHAIN_FALL,
BLOCK_CHAIN_HIT,
BLOCK_CHAIN_PLACE,
BLOCK_CHAIN_STEP,
BLOCK_CHEST_CLOSE,
BLOCK_CHEST_LOCKED,
BLOCK_CHEST_OPEN,
@ -87,7 +123,17 @@ public enum Sound {
BLOCK_FENCE_GATE_OPEN,
BLOCK_FIRE_AMBIENT,
BLOCK_FIRE_EXTINGUISH,
BLOCK_FUNGUS_BREAK,
BLOCK_FUNGUS_FALL,
BLOCK_FUNGUS_HIT,
BLOCK_FUNGUS_PLACE,
BLOCK_FUNGUS_STEP,
BLOCK_FURNACE_FIRE_CRACKLE,
BLOCK_GILDED_BLACKSTONE_BREAK,
BLOCK_GILDED_BLACKSTONE_FALL,
BLOCK_GILDED_BLACKSTONE_HIT,
BLOCK_GILDED_BLACKSTONE_PLACE,
BLOCK_GILDED_BLACKSTONE_STEP,
BLOCK_GLASS_BREAK,
BLOCK_GLASS_FALL,
BLOCK_GLASS_HIT,
@ -129,6 +175,11 @@ public enum Sound {
BLOCK_LAVA_POP,
BLOCK_LEVER_CLICK,
BLOCK_LILY_PAD_PLACE,
BLOCK_LODESTONE_BREAK,
BLOCK_LODESTONE_FALL,
BLOCK_LODESTONE_HIT,
BLOCK_LODESTONE_PLACE,
BLOCK_LODESTONE_STEP,
BLOCK_METAL_BREAK,
BLOCK_METAL_FALL,
BLOCK_METAL_HIT,
@ -136,6 +187,36 @@ public enum Sound {
BLOCK_METAL_PRESSURE_PLATE_CLICK_OFF,
BLOCK_METAL_PRESSURE_PLATE_CLICK_ON,
BLOCK_METAL_STEP,
BLOCK_NETHERITE_BLOCK_BREAK,
BLOCK_NETHERITE_BLOCK_FALL,
BLOCK_NETHERITE_BLOCK_HIT,
BLOCK_NETHERITE_BLOCK_PLACE,
BLOCK_NETHERITE_BLOCK_STEP,
BLOCK_NETHERRACK_BREAK,
BLOCK_NETHERRACK_FALL,
BLOCK_NETHERRACK_HIT,
BLOCK_NETHERRACK_PLACE,
BLOCK_NETHERRACK_STEP,
BLOCK_NETHER_BRICKS_BREAK,
BLOCK_NETHER_BRICKS_FALL,
BLOCK_NETHER_BRICKS_HIT,
BLOCK_NETHER_BRICKS_PLACE,
BLOCK_NETHER_BRICKS_STEP,
BLOCK_NETHER_GOLD_ORE_BREAK,
BLOCK_NETHER_GOLD_ORE_FALL,
BLOCK_NETHER_GOLD_ORE_HIT,
BLOCK_NETHER_GOLD_ORE_PLACE,
BLOCK_NETHER_GOLD_ORE_STEP,
BLOCK_NETHER_ORE_BREAK,
BLOCK_NETHER_ORE_FALL,
BLOCK_NETHER_ORE_HIT,
BLOCK_NETHER_ORE_PLACE,
BLOCK_NETHER_ORE_STEP,
BLOCK_NETHER_SPROUTS_BREAK,
BLOCK_NETHER_SPROUTS_FALL,
BLOCK_NETHER_SPROUTS_HIT,
BLOCK_NETHER_SPROUTS_PLACE,
BLOCK_NETHER_SPROUTS_STEP,
BLOCK_NETHER_WART_BREAK,
BLOCK_NOTE_BLOCK_BANJO,
BLOCK_NOTE_BLOCK_BASEDRUM,
@ -153,6 +234,11 @@ public enum Sound {
BLOCK_NOTE_BLOCK_PLING,
BLOCK_NOTE_BLOCK_SNARE,
BLOCK_NOTE_BLOCK_XYLOPHONE,
BLOCK_NYLIUM_BREAK,
BLOCK_NYLIUM_FALL,
BLOCK_NYLIUM_HIT,
BLOCK_NYLIUM_PLACE,
BLOCK_NYLIUM_STEP,
BLOCK_PISTON_CONTRACT,
BLOCK_PISTON_EXTEND,
BLOCK_PORTAL_AMBIENT,
@ -160,6 +246,15 @@ public enum Sound {
BLOCK_PORTAL_TRIGGER,
BLOCK_PUMPKIN_CARVE,
BLOCK_REDSTONE_TORCH_BURNOUT,
BLOCK_RESPAWN_ANCHOR_AMBIENT,
BLOCK_RESPAWN_ANCHOR_CHARGE,
BLOCK_RESPAWN_ANCHOR_DEPLETE,
BLOCK_RESPAWN_ANCHOR_SET_SPAWN,
BLOCK_ROOTS_BREAK,
BLOCK_ROOTS_FALL,
BLOCK_ROOTS_HIT,
BLOCK_ROOTS_PLACE,
BLOCK_ROOTS_STEP,
BLOCK_SAND_BREAK,
BLOCK_SAND_FALL,
BLOCK_SAND_HIT,
@ -170,6 +265,11 @@ public enum Sound {
BLOCK_SCAFFOLDING_HIT,
BLOCK_SCAFFOLDING_PLACE,
BLOCK_SCAFFOLDING_STEP,
BLOCK_SHROOMLIGHT_BREAK,
BLOCK_SHROOMLIGHT_FALL,
BLOCK_SHROOMLIGHT_HIT,
BLOCK_SHROOMLIGHT_PLACE,
BLOCK_SHROOMLIGHT_STEP,
BLOCK_SHULKER_BOX_CLOSE,
BLOCK_SHULKER_BOX_OPEN,
BLOCK_SLIME_BLOCK_BREAK,
@ -177,12 +277,28 @@ public enum Sound {
BLOCK_SLIME_BLOCK_HIT,
BLOCK_SLIME_BLOCK_PLACE,
BLOCK_SLIME_BLOCK_STEP,
BLOCK_SMITHING_TABLE_USE,
BLOCK_SMOKER_SMOKE,
BLOCK_SNOW_BREAK,
BLOCK_SNOW_FALL,
BLOCK_SNOW_HIT,
BLOCK_SNOW_PLACE,
BLOCK_SNOW_STEP,
BLOCK_SOUL_SAND_BREAK,
BLOCK_SOUL_SAND_FALL,
BLOCK_SOUL_SAND_HIT,
BLOCK_SOUL_SAND_PLACE,
BLOCK_SOUL_SAND_STEP,
BLOCK_SOUL_SOIL_BREAK,
BLOCK_SOUL_SOIL_FALL,
BLOCK_SOUL_SOIL_HIT,
BLOCK_SOUL_SOIL_PLACE,
BLOCK_SOUL_SOIL_STEP,
BLOCK_STEM_BREAK,
BLOCK_STEM_FALL,
BLOCK_STEM_HIT,
BLOCK_STEM_PLACE,
BLOCK_STEM_STEP,
BLOCK_STONE_BREAK,
BLOCK_STONE_BUTTON_CLICK_OFF,
BLOCK_STONE_BUTTON_CLICK_ON,
@ -198,7 +314,18 @@ public enum Sound {
BLOCK_TRIPWIRE_CLICK_OFF,
BLOCK_TRIPWIRE_CLICK_ON,
BLOCK_TRIPWIRE_DETACH,
BLOCK_VINE_STEP,
BLOCK_WART_BLOCK_BREAK,
BLOCK_WART_BLOCK_FALL,
BLOCK_WART_BLOCK_HIT,
BLOCK_WART_BLOCK_PLACE,
BLOCK_WART_BLOCK_STEP,
BLOCK_WATER_AMBIENT,
BLOCK_WEEPING_VINES_BREAK,
BLOCK_WEEPING_VINES_FALL,
BLOCK_WEEPING_VINES_HIT,
BLOCK_WEEPING_VINES_PLACE,
BLOCK_WEEPING_VINES_STEP,
BLOCK_WET_GRASS_BREAK,
BLOCK_WET_GRASS_FALL,
BLOCK_WET_GRASS_HIT,
@ -288,6 +415,7 @@ public enum Sound {
ENTITY_DONKEY_ANGRY,
ENTITY_DONKEY_CHEST,
ENTITY_DONKEY_DEATH,
ENTITY_DONKEY_EAT,
ENTITY_DONKEY_HURT,
ENTITY_DRAGON_FIREBALL_EXPLODE,
ENTITY_DROWNED_AMBIENT,
@ -360,6 +488,7 @@ public enum Sound {
ENTITY_FOX_SLEEP,
ENTITY_FOX_SNIFF,
ENTITY_FOX_SPIT,
ENTITY_FOX_TELEPORT,
ENTITY_GENERIC_BIG_FALL,
ENTITY_GENERIC_BURN,
ENTITY_GENERIC_DEATH,
@ -385,6 +514,14 @@ public enum Sound {
ENTITY_GUARDIAN_FLOP,
ENTITY_GUARDIAN_HURT,
ENTITY_GUARDIAN_HURT_LAND,
ENTITY_HOGLIN_AMBIENT,
ENTITY_HOGLIN_ANGRY,
ENTITY_HOGLIN_ATTACK,
ENTITY_HOGLIN_CONVERTED_TO_ZOMBIFIED,
ENTITY_HOGLIN_DEATH,
ENTITY_HOGLIN_HURT,
ENTITY_HOGLIN_RETREAT,
ENTITY_HOGLIN_STEP,
ENTITY_HORSE_AMBIENT,
ENTITY_HORSE_ANGRY,
ENTITY_HORSE_ARMOR,
@ -458,8 +595,10 @@ public enum Sound {
ENTITY_MOOSHROOM_SHEAR,
ENTITY_MOOSHROOM_SUSPICIOUS_MILK,
ENTITY_MULE_AMBIENT,
ENTITY_MULE_ANGRY,
ENTITY_MULE_CHEST,
ENTITY_MULE_DEATH,
ENTITY_MULE_EAT,
ENTITY_MULE_HURT,
ENTITY_OCELOT_AMBIENT,
ENTITY_OCELOT_DEATH,
@ -491,10 +630,12 @@ public enum Sound {
ENTITY_PARROT_IMITATE_EVOKER,
ENTITY_PARROT_IMITATE_GHAST,
ENTITY_PARROT_IMITATE_GUARDIAN,
ENTITY_PARROT_IMITATE_HOGLIN,
ENTITY_PARROT_IMITATE_HUSK,
ENTITY_PARROT_IMITATE_ILLUSIONER,
ENTITY_PARROT_IMITATE_MAGMA_CUBE,
ENTITY_PARROT_IMITATE_PHANTOM,
ENTITY_PARROT_IMITATE_PIGLIN,
ENTITY_PARROT_IMITATE_PILLAGER,
ENTITY_PARROT_IMITATE_RAVAGER,
ENTITY_PARROT_IMITATE_SHULKER,
@ -508,6 +649,7 @@ public enum Sound {
ENTITY_PARROT_IMITATE_WITCH,
ENTITY_PARROT_IMITATE_WITHER,
ENTITY_PARROT_IMITATE_WITHER_SKELETON,
ENTITY_PARROT_IMITATE_ZOGLIN,
ENTITY_PARROT_IMITATE_ZOMBIE,
ENTITY_PARROT_IMITATE_ZOMBIE_VILLAGER,
ENTITY_PARROT_STEP,
@ -517,6 +659,16 @@ public enum Sound {
ENTITY_PHANTOM_FLAP,
ENTITY_PHANTOM_HURT,
ENTITY_PHANTOM_SWOOP,
ENTITY_PIGLIN_ADMIRING_ITEM,
ENTITY_PIGLIN_AMBIENT,
ENTITY_PIGLIN_ANGRY,
ENTITY_PIGLIN_CELEBRATE,
ENTITY_PIGLIN_CONVERTED_TO_ZOMBIFIED,
ENTITY_PIGLIN_DEATH,
ENTITY_PIGLIN_HURT,
ENTITY_PIGLIN_JEALOUS,
ENTITY_PIGLIN_RETREAT,
ENTITY_PIGLIN_STEP,
ENTITY_PIG_AMBIENT,
ENTITY_PIG_DEATH,
ENTITY_PIG_HURT,
@ -620,6 +772,7 @@ public enum Sound {
ENTITY_SNOW_GOLEM_AMBIENT,
ENTITY_SNOW_GOLEM_DEATH,
ENTITY_SNOW_GOLEM_HURT,
ENTITY_SNOW_GOLEM_SHEAR,
ENTITY_SNOW_GOLEM_SHOOT,
ENTITY_SPIDER_AMBIENT,
ENTITY_SPIDER_DEATH,
@ -635,6 +788,15 @@ public enum Sound {
ENTITY_STRAY_DEATH,
ENTITY_STRAY_HURT,
ENTITY_STRAY_STEP,
ENTITY_STRIDER_AMBIENT,
ENTITY_STRIDER_DEATH,
ENTITY_STRIDER_EAT,
ENTITY_STRIDER_HAPPY,
ENTITY_STRIDER_HURT,
ENTITY_STRIDER_RETREAT,
ENTITY_STRIDER_SADDLE,
ENTITY_STRIDER_STEP,
ENTITY_STRIDER_STEP_LAVA,
ENTITY_TNT_PRIMED,
ENTITY_TROPICAL_FISH_AMBIENT,
ENTITY_TROPICAL_FISH_DEATH,
@ -715,6 +877,12 @@ public enum Sound {
ENTITY_WOLF_SHAKE,
ENTITY_WOLF_STEP,
ENTITY_WOLF_WHINE,
ENTITY_ZOGLIN_AMBIENT,
ENTITY_ZOGLIN_ANGRY,
ENTITY_ZOGLIN_ATTACK,
ENTITY_ZOGLIN_DEATH,
ENTITY_ZOGLIN_HURT,
ENTITY_ZOGLIN_STEP,
ENTITY_ZOMBIE_AMBIENT,
ENTITY_ZOMBIE_ATTACK_IRON_DOOR,
ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR,
@ -727,10 +895,6 @@ public enum Sound {
ENTITY_ZOMBIE_HORSE_HURT,
ENTITY_ZOMBIE_HURT,
ENTITY_ZOMBIE_INFECT,
ENTITY_ZOMBIE_PIGMAN_AMBIENT,
ENTITY_ZOMBIE_PIGMAN_ANGRY,
ENTITY_ZOMBIE_PIGMAN_DEATH,
ENTITY_ZOMBIE_PIGMAN_HURT,
ENTITY_ZOMBIE_STEP,
ENTITY_ZOMBIE_VILLAGER_AMBIENT,
ENTITY_ZOMBIE_VILLAGER_CONVERTED,
@ -738,6 +902,10 @@ public enum Sound {
ENTITY_ZOMBIE_VILLAGER_DEATH,
ENTITY_ZOMBIE_VILLAGER_HURT,
ENTITY_ZOMBIE_VILLAGER_STEP,
ENTITY_ZOMBIFIED_PIGLIN_AMBIENT,
ENTITY_ZOMBIFIED_PIGLIN_ANGRY,
ENTITY_ZOMBIFIED_PIGLIN_DEATH,
ENTITY_ZOMBIFIED_PIGLIN_HURT,
EVENT_RAID_HORN,
ITEM_ARMOR_EQUIP_CHAIN,
ITEM_ARMOR_EQUIP_DIAMOND,
@ -746,6 +914,7 @@ public enum Sound {
ITEM_ARMOR_EQUIP_GOLD,
ITEM_ARMOR_EQUIP_IRON,
ITEM_ARMOR_EQUIP_LEATHER,
ITEM_ARMOR_EQUIP_NETHERITE,
ITEM_ARMOR_EQUIP_TURTLE,
ITEM_AXE_STRIP,
ITEM_BOOK_PAGE_TURN,
@ -774,6 +943,7 @@ public enum Sound {
ITEM_FLINTANDSTEEL_USE,
ITEM_HOE_TILL,
ITEM_HONEY_BOTTLE_DRINK,
ITEM_LODESTONE_COMPASS_LOCK,
ITEM_NETHER_WART_PLANT,
ITEM_SHIELD_BLOCK,
ITEM_SHIELD_BREAK,
@ -798,6 +968,7 @@ public enum Sound {
MUSIC_DISC_FAR,
MUSIC_DISC_MALL,
MUSIC_DISC_MELLOHI,
MUSIC_DISC_PIGSTEP,
MUSIC_DISC_STAL,
MUSIC_DISC_STRAD,
MUSIC_DISC_WAIT,
@ -806,8 +977,13 @@ public enum Sound {
MUSIC_END,
MUSIC_GAME,
MUSIC_MENU,
MUSIC_NETHER,
MUSIC_NETHER_BASALT_DELTAS,
MUSIC_NETHER_CRIMSON_FOREST,
MUSIC_NETHER_NETHER_WASTES,
MUSIC_NETHER_SOUL_SAND_VALLEY,
MUSIC_NETHER_WARPED_FOREST,
MUSIC_UNDER_WATER,
PARTICLE_SOUL_ESCAPE,
UI_BUTTON_CLICK,
UI_CARTOGRAPHY_TABLE_TAKE_RESULT,
UI_LOOM_SELECT_PATTERN,

View File

@ -88,7 +88,10 @@ public enum Statistic implements Keyed {
RAID_TRIGGER,
RAID_WIN,
INTERACT_WITH_ANVIL,
INTERACT_WITH_GRINDSTONE;
INTERACT_WITH_GRINDSTONE,
TARGET_HIT,
INTERACT_WITH_SMITHING_TABLE,
STRIDER_ONE_CM;
private final Type type;
private final NamespacedKey key;

View File

@ -142,6 +142,21 @@ public final class StructureType {
*/
public static final StructureType PILLAGER_OUTPOST = register(new StructureType("pillager_outpost", MapCursor.Type.RED_X));
/**
* Nether fossils.
*/
public static final StructureType NETHER_FOSSIL = register(new StructureType("nether_fossil", MapCursor.Type.RED_X));
/**
* Ruined portal.
*/
public static final StructureType RUINED_PORTAL = register(new StructureType("ruined_portal", MapCursor.Type.RED_X));
/**
* Bastion remnant.
*/
public static final StructureType BASTION_REMNANT = register(new StructureType("bastion_remnant", MapCursor.Type.RED_X));
/* ****************
* STRUCTURE TYPES REGISTERED ABOVE THIS
* ****************

View File

@ -60,10 +60,18 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla block tag representing all wooden fences.
*/
Tag<Material> WOODEN_FENCES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wooden_fences"), Material.class);
/**
* Vanilla block tag representing all pressure plates.
*/
Tag<Material> PRESSURE_PLATES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("pressure_plates"), Material.class);
/**
* Vanilla block tag representing all wooden pressure plates.
*/
Tag<Material> WOODEN_PRESSURE_PLATES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wooden_pressure_plates"), Material.class);
/**
* Vanilla block tag representing all stone pressure plates.
*/
Tag<Material> STONE_PRESSURE_PLATES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("stone_pressure_plates"), Material.class);
/**
* Vanilla block tag representing all wooden trapdoors.
*/
@ -77,6 +85,10 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla block tag representing all sapling variants.
*/
Tag<Material> SAPLINGS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("saplings"), Material.class);
/**
* Vanilla block tag representing all log and bark variants that burn.
*/
Tag<Material> LOGS_THAT_BURN = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("logs_that_burn"), Material.class);
/**
* Vanilla block tag representing all log and bark variants.
*/
@ -105,6 +117,14 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla block tag representing all spruce log and bark variants.
*/
Tag<Material> SPRUCE_LOGS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("spruce_logs"), Material.class);
/**
* Vanilla block tag representing all crimson stems.
*/
Tag<Material> CRIMSON_STEMS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("crimson_stems"), Material.class);
/**
* Vanilla block tag representing all warped stems.
*/
Tag<Material> WARPED_STEMS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("warped_stems"), Material.class);
/**
* Vanilla block tag representing all banner blocks.
*/
@ -167,9 +187,17 @@ public interface Tag<T extends Keyed> extends Keyed {
*/
Tag<Material> FLOWERS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("flowers"), Material.class);
/**
* Vanilla block tag representing all shulker boxes.
* Vanilla block tag representing all piglin repellents.
*/
Tag<Material> SHULKER_BOXES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("shulker_boxes"), Material.class);
Tag<Material> PIGLIN_REPELLENTS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("piglin_repellents"), Material.class);
/**
* Vanilla block tag representing all gold ores.
*/
Tag<Material> GOLD_ORES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("gold_ores"), Material.class);
/**
* Vanilla block tag representing all non flammable wood.
*/
Tag<Material> NON_FLAMMABLE_WOOD = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("non_flammable_wood"), Material.class);
/**
* Vanilla block tag denoting blocks that enderman may pick up and hold.
*/
@ -222,7 +250,7 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla block tag representing all signs.
*/
Tag<Material> SIGNS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("signs"), Material.class);
/**
/**
* Vanilla block tag representing all blocks immune to dragons.
*/
Tag<Material> DRAGON_IMMUNE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("dragon_immune"), Material.class);
@ -230,6 +258,10 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla block tag representing all blocks immune to withers.
*/
Tag<Material> WITHER_IMMUNE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wither_immune"), Material.class);
/**
* Vanilla block tag representing all base blocks used for wither summoning.
*/
Tag<Material> WITHER_SUMMON_BASE_BLOCKS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wither_summon_base_blocks"), Material.class);
/**
* Vanilla block tag representing all beehives.
*/
@ -246,10 +278,93 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla block tag representing all portals.
*/
Tag<Material> PORTALS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("portals"), Material.class);
/**
* Vanilla block tag representing all fire blocks.
*/
Tag<Material> FIRE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("fire"), Material.class);
/**
* Vanilla block tag representing all nylium blocks.
*/
Tag<Material> NYLIUM = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("nylium"), Material.class);
/**
* Vanilla block tag representing all wart blocks.
*/
Tag<Material> WART_BLOCKS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wart_blocks"), Material.class);
/**
* Vanilla block tag representing all beacon base blocks.
*/
Tag<Material> BEACON_BASE_BLOCKS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("beacon_base_blocks"), Material.class);
/**
* Vanilla block tag representing all blocks affected by the soul speed enchantment.
*/
Tag<Material> SOUL_SPEED_BLOCKS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("soul_speed_blocks"), Material.class);
/**
* Vanilla block tag representing all wall post overrides.
*/
Tag<Material> WALL_POST_OVERRIDE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wall_post_override"), Material.class);
/**
* Vanilla block tag representing all climbable blocks.
*/
Tag<Material> CLIMBABLE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("climbable"), Material.class);
/**
* Vanilla block tag representing all shulker boxes.
*/
Tag<Material> SHULKER_BOXES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("shulker_boxes"), Material.class);
/**
* Vanilla block tag representing all hoglin repellents.
*/
Tag<Material> HOGLIN_REPELLENTS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("hoglin_repellents"), Material.class);
/**
* Vanilla block tag representing all soul fire base blocks.
*/
Tag<Material> SOUL_FIRE_BASE_BLOCKS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("soul_fire_base_blocks"), Material.class);
/**
* Vanilla block tag representing all warm strider blocks.
*/
Tag<Material> STRIDER_WARM_BLOCKS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("strider_warm_blocks"), Material.class);
/**
* Vanilla block tag representing all campfires.
*/
Tag<Material> CAMPFIRES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("campfires"), Material.class);
/**
* Vanilla block tag representing all blocks guarded by piglins.
*/
Tag<Material> GUARDED_BY_PIGLINS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("guarded_by_piglins"), Material.class);
/**
* Vanilla block tag representing all blocks that prevent inside mob
* spawning.
*/
Tag<Material> PREVENT_MOB_SPAWNING_INSIDE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("prevent_mob_spawning_inside"), Material.class);
/**
* Vanilla block tag representing all fence gates.
*/
Tag<Material> FENCE_GATES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("fence_gates"), Material.class);
/**
* Vanilla block tag representing all unstable bottom center blocks.
*/
Tag<Material> UNSTABLE_BOTTOM_CENTER = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("unstable_bottom_center"), Material.class);
/**
* Vanilla block tag representing all blocks that burn forever in the
* overworld.
*/
Tag<Material> INFINIBURN_OVERWORLD = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("infiniburn_overworld"), Material.class);
/**
* Vanilla block tag representing all blocks that burn forever in the
* nether.
*/
Tag<Material> INFINIBURN_NETHER = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("infiniburn_nether"), Material.class);
/**
* Vanilla block tag representing all blocks that burn forever in the end.
*/
Tag<Material> INFINIBURN_END = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("infiniburn_end"), Material.class);
/**
* Key for the built in item registry.
*/
String REGISTRY_ITEMS = "items";
/**
* Vanilla item tag representing all items loved by piglins.
*/
Tag<Material> ITEMS_PIGLIN_LOVED = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("piglin_loved"), Material.class);
/**
* Vanilla item tag representing all banner items.
*/
@ -266,6 +381,10 @@ public interface Tag<T extends Keyed> extends Keyed {
* 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.
*/
Tag<Material> ITEMS_CREEPER_DROP_MUSIC_DISCS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("creeper_drop_music_discs"), Material.class);
/**
* Vanilla item tag representing all coal items.
*/
@ -278,6 +397,18 @@ public interface Tag<T extends Keyed> extends Keyed {
* Vanilla item tag representing all books that may be placed on lecterns.
*/
Tag<Material> ITEMS_LECTERN_BOOKS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("lectern_books"), Material.class);
/**
* Vanilla item tag representing all items that may be placed in beacons.
*/
Tag<Material> ITEMS_BEACON_PAYMENT_ITEMS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("beacon_payment_items"), Material.class);
/**
* Vanilla item tag representing all stone tool materials.
*/
Tag<Material> ITEMS_STONE_TOOL_MATERIALS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("stone_tool_materials"), Material.class);
/**
* Vanilla item tag representing all furnace materials.
*/
Tag<Material> ITEMS_FURNACE_MATERIALS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("furnace_materials"), Material.class);
/**
* Returns whether or not this tag has an entry for the specified item.

View File

@ -1502,8 +1502,12 @@ public interface World extends PluginMessageRecipient, Metadatable {
* Gets the type of this world.
*
* @return Type of this world.
* @deprecated world type is only used to select the default word generation
* settings and is not stored in Vanilla worlds, making it impossible for
* this method to always return the correct value.
*/
@Nullable
@Deprecated
public WorldType getWorldType();
/**

View File

@ -11,11 +11,8 @@ import org.jetbrains.annotations.Nullable;
public enum WorldType {
NORMAL("DEFAULT"),
FLAT("FLAT"),
VERSION_1_1("DEFAULT_1_1"),
LARGE_BIOMES("LARGEBIOMES"),
AMPLIFIED("AMPLIFIED"),
CUSTOMIZED("CUSTOMIZED"),
BUFFET("BUFFET");
AMPLIFIED("AMPLIFIED");
private static final Map<String, WorldType> BY_NAME = Maps.newHashMap();
private final String name;

View File

@ -1,9 +1,14 @@
package org.bukkit.attribute;
import java.util.Locale;
import org.bukkit.Keyed;
import org.bukkit.NamespacedKey;
import org.jetbrains.annotations.NotNull;
/**
* Types of attributes which may be present on an {@link Attributable}.
*/
public enum Attribute {
public enum Attribute implements Keyed {
/**
* Maximum health of an Entity.
@ -53,4 +58,16 @@ public enum Attribute {
* Chance of a zombie to spawn reinforcements.
*/
ZOMBIE_SPAWN_REINFORCEMENTS;
private final NamespacedKey key;
private Attribute() {
this.key = NamespacedKey.minecraft(this.name().toLowerCase(Locale.ROOT));
}
@NotNull
@Override
public NamespacedKey getKey() {
return key;
}
}

View File

@ -17,7 +17,7 @@ public enum Biome implements Keyed {
TAIGA,
SWAMP,
RIVER,
NETHER,
NETHER_WASTES,
THE_END,
FROZEN_OCEAN,
FROZEN_RIVER,
@ -83,7 +83,11 @@ public enum Biome implements Keyed {
MODIFIED_WOODED_BADLANDS_PLATEAU,
MODIFIED_BADLANDS_PLATEAU,
BAMBOO_JUNGLE,
BAMBOO_JUNGLE_HILLS;
BAMBOO_JUNGLE_HILLS,
SOUL_SAND_VALLEY,
CRIMSON_FOREST,
WARPED_FOREST,
BASALT_DELTAS;
private final NamespacedKey key;

View File

@ -46,7 +46,8 @@ public enum PatternType {
SKULL("sku"),
FLOWER("flo"),
MOJANG("moj"),
GLOBE("glb");
GLOBE("glb"),
PIGLIN("pig");
private final String identifier;
private static final Map<String, PatternType> byString = new HashMap<String, PatternType>();

View File

@ -0,0 +1,44 @@
package org.bukkit.block.data.type;
import org.bukkit.block.data.BlockData;
import org.jetbrains.annotations.NotNull;
/**
* 'orientation' is the direction the block is facing.
*/
public interface Jigsaw extends BlockData {
/**
* Gets the value of the 'orientation' property.
*
* @return the 'orientation' value
*/
@NotNull
Orientation getOrientation();
/**
* Sets the value of the 'orientation' property.
*
* @param orientation the new 'orientation' value
*/
void setOrientation(@NotNull Orientation orientation);
/**
* The directions the Jigsaw can be oriented.
*/
public enum Orientation {
DOWN_EAST,
DOWN_NORTH,
DOWN_SOUTH,
DOWN_WEST,
UP_EAST,
UP_NORTH,
UP_SOUTH,
UP_WEST,
WEST_UP,
EAST_UP,
NORTH_UP,
SOUTH_UP;
}
}

View File

@ -0,0 +1,30 @@
package org.bukkit.block.data.type;
import org.bukkit.block.data.BlockData;
/**
* 'charges' represents the amount of times the anchor may still be used.
*/
public interface RespawnAnchor extends BlockData {
/**
* Gets the value of the 'charges' property.
*
* @return the 'charges' value
*/
int getCharges();
/**
* Sets the value of the 'charges' property.
*
* @param charges the new 'charges' value
*/
void setCharges(int charges);
/**
* Gets the maximum allowed value of the 'charges' property.
*
* @return the maximum 'charges' value
*/
int getMaximumCharges();
}

View File

@ -0,0 +1,47 @@
package org.bukkit.block.data.type;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.Waterlogged;
import org.jetbrains.annotations.NotNull;
/**
* This class encompasses the 'north', 'east', 'south', 'west', height flags
* which are used to set the height of a wall.
*/
public interface Wall extends Waterlogged {
/**
* Gets the height of the specified face.
*
* @param face to check
* @return if face is enabled
*/
@NotNull
Height getHeight(@NotNull BlockFace face);
/**
* Set the height of the specified face.
*
* @param face to set
* @param height the height
*/
void setHeight(@NotNull BlockFace face, @NotNull Height height);
/**
* The different heights a face of a wall may have.
*/
public enum Height {
/**
* No wall present.
*/
NONE,
/**
* Low wall present.
*/
LOW,
/**
* Tall wall present.
*/
TALL;
}
}

View File

@ -200,6 +200,11 @@ public abstract class Enchantment implements Keyed {
*/
public static final Enchantment VANISHING_CURSE = new EnchantmentWrapper("vanishing_curse");
/**
* Walk quicker on soul blocks
*/
public static final Enchantment SOUL_SPEED = new EnchantmentWrapper("soul_speed");
private static final Map<NamespacedKey, Enchantment> byKey = new HashMap<NamespacedKey, Enchantment>();
private static final Map<String, Enchantment> byName = new HashMap<String, Enchantment>();
private static boolean acceptingNew = true;

View File

@ -8,21 +8,6 @@ import org.jetbrains.annotations.NotNull;
* Represents the applicable target for a {@link Enchantment}
*/
public enum EnchantmentTarget {
/**
* Allows the Enchantment to be placed on all items
*/
ALL {
@Override
public boolean includes(@NotNull Material item) {
for (EnchantmentTarget target : EnchantmentTarget.values()) {
if (target != this && target.includes(item)) {
return true;
}
}
return false;
}
},
/**
* Allows the Enchantment to be placed on armor
@ -47,7 +32,8 @@ public enum EnchantmentTarget {
|| item.equals(Material.CHAINMAIL_BOOTS)
|| item.equals(Material.IRON_BOOTS)
|| item.equals(Material.DIAMOND_BOOTS)
|| item.equals(Material.GOLDEN_BOOTS);
|| item.equals(Material.GOLDEN_BOOTS)
|| item.equals(Material.NETHERITE_BOOTS);
}
},
@ -61,7 +47,8 @@ public enum EnchantmentTarget {
|| item.equals(Material.CHAINMAIL_LEGGINGS)
|| item.equals(Material.IRON_LEGGINGS)
|| item.equals(Material.DIAMOND_LEGGINGS)
|| item.equals(Material.GOLDEN_LEGGINGS);
|| item.equals(Material.GOLDEN_LEGGINGS)
|| item.equals(Material.NETHERITE_LEGGINGS);
}
},
@ -75,7 +62,8 @@ public enum EnchantmentTarget {
|| item.equals(Material.CHAINMAIL_CHESTPLATE)
|| item.equals(Material.IRON_CHESTPLATE)
|| item.equals(Material.DIAMOND_CHESTPLATE)
|| item.equals(Material.GOLDEN_CHESTPLATE);
|| item.equals(Material.GOLDEN_CHESTPLATE)
|| item.equals(Material.NETHERITE_CHESTPLATE);
}
},
@ -90,7 +78,8 @@ public enum EnchantmentTarget {
|| item.equals(Material.DIAMOND_HELMET)
|| item.equals(Material.IRON_HELMET)
|| item.equals(Material.GOLDEN_HELMET)
|| item.equals(Material.TURTLE_HELMET);
|| item.equals(Material.TURTLE_HELMET)
|| item.equals(Material.NETHERITE_HELMET);
}
},
@ -104,7 +93,8 @@ public enum EnchantmentTarget {
|| item.equals(Material.STONE_SWORD)
|| item.equals(Material.IRON_SWORD)
|| item.equals(Material.DIAMOND_SWORD)
|| item.equals(Material.GOLDEN_SWORD);
|| item.equals(Material.GOLDEN_SWORD)
|| item.equals(Material.NETHERITE_SWORD);
}
},
@ -119,16 +109,25 @@ public enum EnchantmentTarget {
|| item.equals(Material.IRON_SHOVEL)
|| item.equals(Material.DIAMOND_SHOVEL)
|| item.equals(Material.GOLDEN_SHOVEL)
|| item.equals(Material.NETHERITE_SHOVEL)
|| item.equals(Material.WOODEN_PICKAXE)
|| item.equals(Material.STONE_PICKAXE)
|| item.equals(Material.IRON_PICKAXE)
|| item.equals(Material.DIAMOND_PICKAXE)
|| item.equals(Material.GOLDEN_PICKAXE)
|| item.equals(Material.NETHERITE_PICKAXE)
|| item.equals(Material.WOODEN_AXE)
|| item.equals(Material.STONE_AXE)
|| item.equals(Material.IRON_AXE)
|| item.equals(Material.DIAMOND_AXE)
|| item.equals(Material.GOLDEN_AXE);
|| item.equals(Material.GOLDEN_AXE)
|| item.equals(Material.NETHERITE_AXE)
|| item.equals(Material.WOODEN_HOE)
|| item.equals(Material.STONE_HOE)
|| item.equals(Material.IRON_HOE)
|| item.equals(Material.DIAMOND_HOE)
|| item.equals(Material.GOLDEN_HOE)
|| item.equals(Material.NETHERITE_HOE);
}
},
@ -199,6 +198,16 @@ public enum EnchantmentTarget {
public boolean includes(@NotNull Material item) {
return item.equals(Material.CROSSBOW);
}
},
/**
* Allow the Enchantment to be placed on vanishing items.
*/
VANISHABLE {
@Override
public boolean includes(@NotNull Material item) {
return BREAKABLE.includes(item) || (WEARABLE.includes(item) && !item.equals(Material.ELYTRA)) || item.equals(Material.COMPASS);
}
};
/**

View File

@ -213,7 +213,7 @@ public enum EntityType implements Keyed {
ZOMBIE("zombie", Zombie.class, 54),
SLIME("slime", Slime.class, 55),
GHAST("ghast", Ghast.class, 56),
PIG_ZOMBIE("zombie_pigman", PigZombie.class, 57),
ZOMBIFIED_PIGLIN("zombified_piglin", PigZombie.class, 57),
ENDERMAN("enderman", Enderman.class, 58),
CAVE_SPIDER("cave_spider", CaveSpider.class, 59),
SILVERFISH("silverfish", Silverfish.class, 60),
@ -261,6 +261,10 @@ public enum EntityType implements Keyed {
WANDERING_TRADER("wandering_trader", WanderingTrader.class, -1),
FOX("fox", Fox.class, -1),
BEE("bee", Bee.class, -1),
HOGLIN("hoglin", Hoglin.class, -1),
PIGLIN("piglin", Piglin.class, -1),
STRIDER("strider", Strider.class, -1),
ZOGLIN("zoglin", Zoglin.class, -1),
/**
* A fishing line and bobber.
*/
@ -309,6 +313,7 @@ public enum EntityType implements Keyed {
NAME_MAP.put("snowman", SNOWMAN);
NAME_MAP.put("villager_golem", IRON_GOLEM);
NAME_MAP.put("ender_crystal", ENDER_CRYSTAL);
NAME_MAP.put("zombie_pigman", ZOMBIFIED_PIGLIN);
}
private EntityType(/*@Nullable*/ String name, /*@Nullable*/ Class<? extends Entity> clazz, int typeId) {

View File

@ -3,7 +3,7 @@ package org.bukkit.entity;
import org.bukkit.inventory.meta.FireworkMeta;
import org.jetbrains.annotations.NotNull;
public interface Firework extends Entity {
public interface Firework extends Projectile {
/**
* Get a copy of the fireworks meta

View File

@ -0,0 +1,6 @@
package org.bukkit.entity;
/**
* Represents a Hoglin.
*/
public interface Hoglin extends Animals { }

View File

@ -230,31 +230,6 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder
*/
public int getSleepTicks();
/**
* Gets the Location where the player will spawn at their bed, null if
* they have not slept in one or their current bed spawn is invalid.
*
* @return Bed Spawn Location if bed exists, otherwise null.
*/
@Nullable
public Location getBedSpawnLocation();
/**
* Sets the Location where the player will spawn at their bed.
*
* @param location where to set the respawn location
*/
public void setBedSpawnLocation(@Nullable Location location);
/**
* Sets the Location where the player will spawn at their bed.
*
* @param location where to set the respawn location
* @param force whether to forcefully set the respawn location even if a
* valid bed is not present
*/
public void setBedSpawnLocation(@Nullable Location location, boolean force);
/**
* Attempts to make the entity sleep at the given location.
* <br>

View File

@ -0,0 +1,6 @@
package org.bukkit.entity;
/**
* Represents a Piglin.
*/
public interface Piglin extends Monster { }

View File

@ -225,6 +225,32 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public boolean isSleepingIgnored();
/**
* Gets the Location where the player will spawn at their bed, null if
* they have not slept in one or their current bed spawn is invalid.
*
* @return Bed Spawn Location if bed exists, otherwise null.
*/
@Nullable
@Override
public Location getBedSpawnLocation();
/**
* Sets the Location where the player will spawn at their bed.
*
* @param location where to set the respawn location
*/
public void setBedSpawnLocation(@Nullable Location location);
/**
* Sets the Location where the player will spawn at their bed.
*
* @param location where to set the respawn location
* @param force whether to forcefully set the respawn location even if a
* valid bed is not present
*/
public void setBedSpawnLocation(@Nullable Location location, boolean force);
/**
* Play a note for a player at a location. This requires a note block
* at the particular location (as far as the client is concerned). This

View File

@ -0,0 +1,6 @@
package org.bukkit.entity;
/**
* Represents a Strider.
*/
public interface Strider extends Animals, Vehicle { }

View File

@ -0,0 +1,6 @@
package org.bukkit.entity;
/**
* Represents a Zoglin.
*/
public interface Zoglin extends Monster { }

View File

@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Keyed;
import org.bukkit.Location;
import org.bukkit.NamespacedKey;
@ -46,11 +47,17 @@ public final class MemoryKey<T> implements Keyed {
private static final Map<NamespacedKey, MemoryKey> MEMORY_KEYS = new HashMap<>();
//
public static final MemoryKey<Location> HOME = new MemoryKey<>(NamespacedKey.minecraft("home"), Location.class);
public static final MemoryKey<Location> MEETING_POINT = new MemoryKey<>(NamespacedKey.minecraft("meeting_point"), Location.class);
public static final MemoryKey<Location> POTENTIAL_JOB_SITE = new MemoryKey<>(NamespacedKey.minecraft("potential_job_site"), Location.class);
public static final MemoryKey<Location> JOB_SITE = new MemoryKey<>(NamespacedKey.minecraft("job_site"), Location.class);
public static final MemoryKey<Location> MEETING_POINT = new MemoryKey<>(NamespacedKey.minecraft("meeting_point"), Location.class);
public static final MemoryKey<Long> LAST_SLEPT = new MemoryKey<>(NamespacedKey.minecraft("last_slept"), Long.class);
public static final MemoryKey<Long> LAST_WOKEN = new MemoryKey<>(NamespacedKey.minecraft("last_woken"), Long.class);
public static final MemoryKey<Long> LAST_WORKED_AT_POI = new MemoryKey<>(NamespacedKey.minecraft("last_worked_at_poi"), Long.class);
public static final MemoryKey<Boolean> UNIVERSAL_ANGER = new MemoryKey<>(NamespacedKey.minecraft("universal_anger"), Boolean.class);
public static final MemoryKey<UUID> ANGRY_AT = new MemoryKey<>(NamespacedKey.minecraft("angry_at"), UUID.class);
public static final MemoryKey<Boolean> ADMIRING_ITEM = new MemoryKey<>(NamespacedKey.minecraft("admiring_item"), Boolean.class);
public static final MemoryKey<Boolean> ADMIRING_DISABLED = new MemoryKey<>(NamespacedKey.minecraft("admiring_disabled"), Boolean.class);
public static final MemoryKey<Boolean> HUNTED_RECENTLY = new MemoryKey<>(NamespacedKey.minecraft("hunted_recently"), Boolean.class);
/**
* Returns a {@link MemoryKey} by a {@link NamespacedKey}.

View File

@ -81,6 +81,10 @@ public enum InventoryType {
* An anvil inventory, with 2 CRAFTING slots and 1 RESULT slot
*/
ANVIL(3, "Repairing"),
/**
* A smithing inventory, with 2 CRAFTING slots and 1 RESULT slot
*/
SMITHING(3, "Smithing"),
/**
* A beacon inventory, with 1 CRAFTING slot
*/

View File

@ -370,6 +370,7 @@ public abstract class InventoryView {
type = InventoryType.SlotType.CRAFTING;
break;
case ANVIL:
case SMITHING:
case CARTOGRAPHY:
case GRINDSTONE:
case MERCHANT:

View File

@ -0,0 +1,6 @@
package org.bukkit.inventory;
/**
* Interface to the inventory of a Smithing table.
*/
public interface SmithingInventory extends Inventory { }

View File

@ -26,6 +26,11 @@ public enum LootTables implements Keyed {
JUNGLE_TEMPLE_DISPENSER("chests/jungle_temple_dispenser"),
NETHER_BRIDGE("chests/nether_bridge"),
PILLAGER_OUTPOST("chests/pillager_outpost"),
BASTION_TREASURE("chests/bastion_treasure"),
BASTION_OTHER("chests/bastion_other"),
BASTION_BRIDGE("chests/bastion_bridge"),
BASTION_HOGLIN_STABLE("chests/bastion_hoglin_stable"),
RUINED_PORTAL("chests/ruined_portal"),
SHIPWRECK_MAP("chests/shipwreck_map"),
SHIPWRECK_SUPPLY("chests/shipwreck_supply"),
SHIPWRECK_TREASURE("chests/shipwreck_treasure"),
@ -138,6 +143,7 @@ public enum LootTables implements Keyed {
SHEPHERD_GIFT("gameplay/hero_of_the_village/shepherd_gift"),
TOOLSMITH_GIFT("gameplay/hero_of_the_village/toolsmith_gift"),
WEAPONSMITH_GIFT("gameplay/hero_of_the_village/weaponsmith_gift"),
PIGLIN_BARTERING("gameplay/piglin_bartering"),
// Sheep
SHEEP("entities/sheep"),
SHEEP_BLACK("entities/sheep/black"),

View File

@ -86,7 +86,14 @@ public final class MapPalette {
c(53, 35, 24), c(65, 43, 30), c(76, 50, 35), c(40, 26, 18),
c(53, 57, 29), c(65, 70, 36), c(76, 82, 42), c(40, 43, 22),
c(100, 42, 32), c(122, 51, 39), c(142, 60, 46), c(75, 31, 24),
c(26, 15, 11), c(31, 18, 13), c(37, 22, 16), c(19, 11, 8)
c(26, 15, 11), c(31, 18, 13), c(37, 22, 16), c(19, 11, 8),
c(133, 33, 34), c(163, 41, 42), c(189, 48, 49), c(100, 25, 25),
c(104, 44, 68), c(127, 54, 83), c(148, 63, 97), c(78, 33, 51),
c(64, 17, 20), c(79, 21, 25), c(92, 25, 29), c(48, 13, 15),
c(15, 88, 94), c(18, 108, 115), c(22, 126, 134), c(11, 66, 70),
c(40, 100, 98), c(50, 122, 120), c(58, 142, 140), c(30, 75, 74),
c(60, 31, 43), c(74, 37, 53), c(86, 44, 62), c(45, 23, 32),
c(14, 127, 93), c(17, 155, 114), c(20, 180, 133), c(10, 95, 70)
};
// Interface

View File

@ -1,14 +0,0 @@
package org.bukkit;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import org.junit.Test;
public class EntityEffectTest {
@Test
public void getByData() {
for (EntityEffect entityEffect : EntityEffect.values()) {
assertThat(EntityEffect.getByData(entityEffect.getData()), is(entityEffect));
}
}
}