process-classes
diff --git a/paper-api/src/main/java/org/bukkit/Achievement.java b/paper-api/src/main/java/org/bukkit/Achievement.java
deleted file mode 100644
index 0080e0fea2..0000000000
--- a/paper-api/src/main/java/org/bukkit/Achievement.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.bukkit;
-
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Represents an achievement, which may be given to players.
- * @deprecated future versions of Minecraft do not have achievements
- */
-@Deprecated
-public enum Achievement {
- OPEN_INVENTORY,
- MINE_WOOD (OPEN_INVENTORY),
- BUILD_WORKBENCH (MINE_WOOD),
- BUILD_PICKAXE (BUILD_WORKBENCH),
- BUILD_FURNACE (BUILD_PICKAXE),
- ACQUIRE_IRON (BUILD_FURNACE),
- BUILD_HOE (BUILD_WORKBENCH),
- MAKE_BREAD (BUILD_HOE),
- BAKE_CAKE (BUILD_HOE),
- BUILD_BETTER_PICKAXE (BUILD_PICKAXE),
- COOK_FISH (BUILD_FURNACE),
- ON_A_RAIL (ACQUIRE_IRON),
- BUILD_SWORD (BUILD_WORKBENCH),
- KILL_ENEMY (BUILD_SWORD),
- KILL_COW (BUILD_SWORD),
- FLY_PIG (KILL_COW),
- SNIPE_SKELETON (KILL_ENEMY),
- GET_DIAMONDS (ACQUIRE_IRON),
- NETHER_PORTAL (GET_DIAMONDS),
- GHAST_RETURN (NETHER_PORTAL),
- GET_BLAZE_ROD (NETHER_PORTAL),
- BREW_POTION (GET_BLAZE_ROD),
- END_PORTAL (GET_BLAZE_ROD),
- THE_END (END_PORTAL),
- ENCHANTMENTS (GET_DIAMONDS),
- OVERKILL (ENCHANTMENTS),
- BOOKCASE (ENCHANTMENTS),
- EXPLORE_ALL_BIOMES (END_PORTAL),
- SPAWN_WITHER (THE_END),
- KILL_WITHER (SPAWN_WITHER),
- FULL_BEACON (KILL_WITHER),
- BREED_COW (KILL_COW),
- DIAMONDS_TO_YOU (GET_DIAMONDS),
- OVERPOWERED (BUILD_BETTER_PICKAXE)
- ;
-
- private final Achievement parent;
-
- private Achievement() {
- parent = null;
- }
-
- private Achievement(/*@Nullable*/ Achievement parent) {
- this.parent = parent;
- }
-
- /**
- * Returns whether or not this achievement has a parent achievement.
- *
- * @return whether the achievement has a parent achievement
- */
- public boolean hasParent() {
- return parent != null;
- }
-
- /**
- * Returns the parent achievement of this achievement, or null if none.
- *
- * @return the parent achievement or null
- */
- @Nullable
- public Achievement getParent() {
- return parent;
- }
-}
diff --git a/paper-api/src/main/java/org/bukkit/Bukkit.java b/paper-api/src/main/java/org/bukkit/Bukkit.java
index d24d99e713..4eecd55546 100644
--- a/paper-api/src/main/java/org/bukkit/Bukkit.java
+++ b/paper-api/src/main/java/org/bukkit/Bukkit.java
@@ -358,12 +358,9 @@ public final class Bukkit {
*
* This method may not return objects for offline players.
*
- * @deprecated Use {@link #getPlayer(UUID)} as player names are no longer
- * guaranteed to be unique
* @param name the name to look up
* @return a player if one was found, null otherwise
*/
- @Deprecated
@Nullable
public static Player getPlayer(@NotNull String name) {
return server.getPlayer(name);
@@ -372,12 +369,9 @@ public final class Bukkit {
/**
* Gets the player with the exact given name, case insensitive.
*
- * @deprecated Use {@link #getPlayer(UUID)} as player names are no longer
- * guaranteed to be unique
* @param name Exact name of the player to retrieve
* @return a player object if one was found, null otherwise
*/
- @Deprecated
@Nullable
public static Player getPlayerExact(@NotNull String name) {
return server.getPlayerExact(name);
@@ -390,12 +384,9 @@ public final class Bukkit {
* This list is not sorted in any particular order. If an exact match is
* found, the returned list will only contain a single result.
*
- * @deprecated Use {@link #getPlayer(UUID)} as player names are no longer
- * guaranteed to be unique
* @param name the (partial) name to match
* @return list of all possible players
*/
- @Deprecated
@NotNull
public static List matchPlayer(@NotNull String name) {
return server.matchPlayer(name);
diff --git a/paper-api/src/main/java/org/bukkit/GameRule.java b/paper-api/src/main/java/org/bukkit/GameRule.java
index ee7ae56f92..a7020d5c14 100644
--- a/paper-api/src/main/java/org/bukkit/GameRule.java
+++ b/paper-api/src/main/java/org/bukkit/GameRule.java
@@ -121,6 +121,31 @@ public final class GameRule {
*/
public static final GameRule DISABLE_RAIDS = new GameRule<>("disableRaids", Boolean.class);
+ /**
+ * Whether phantoms will appear without sleeping or not.
+ */
+ public static final GameRule DO_INSOMNIA = new GameRule<>("doInsomnia", Boolean.class);
+
+ /**
+ * Whether clients will respawn immediately after death or not.
+ */
+ public static final GameRule DO_IMMEDIATE_RESPAWN = new GameRule<>("doImmediateRespawn", Boolean.class);
+
+ /**
+ * Whether drowning damage is enabled or not.
+ */
+ public static final GameRule DROWNING_DAMAGE = new GameRule<>("drowningDamage", Boolean.class);
+
+ /**
+ * Whether fall damage is enabled or not.
+ */
+ public static final GameRule FALL_DAMAGE = new GameRule<>("fallDamage", Boolean.class);
+
+ /**
+ * Whether fire damage is enabled or not.
+ */
+ public static final GameRule FIRE_DAMAGE = new GameRule<>("fireDamage", Boolean.class);
+
// Numerical rules
/**
* How often a random block tick occurs (such as plant growth, leaf decay,
diff --git a/paper-api/src/main/java/org/bukkit/Material.java b/paper-api/src/main/java/org/bukkit/Material.java
index ce3bb9155d..9dc0ed03f3 100644
--- a/paper-api/src/main/java/org/bukkit/Material.java
+++ b/paper-api/src/main/java/org/bukkit/Material.java
@@ -22,6 +22,7 @@ import org.bukkit.block.data.Snowable;
import org.bukkit.block.data.Waterlogged;
import org.bukkit.block.data.type.Bamboo;
import org.bukkit.block.data.type.Bed;
+import org.bukkit.block.data.type.Beehive;
import org.bukkit.block.data.type.Bell;
import org.bukkit.block.data.type.BrewingStand;
import org.bukkit.block.data.type.BubbleColumn;
@@ -190,6 +191,10 @@ public enum Material implements Keyed {
BEACON(6608),
BEDROCK(23130),
BEEF(4803),
+ /**
+ * BlockData: {@link Beehive}
+ */
+ BEEHIVE(11830, Beehive.class),
BEETROOT(23305),
/**
* BlockData: {@link Ageable}
@@ -197,6 +202,11 @@ public enum Material implements Keyed {
BEETROOTS(22075, Ageable.class),
BEETROOT_SEEDS(21282),
BEETROOT_SOUP(16036, 1),
+ /**
+ * BlockData: {@link Beehive}
+ */
+ BEE_NEST(8825, Beehive.class),
+ BEE_SPAWN_EGG(22924),
/**
* BlockData: {@link Bell}
*/
@@ -1010,6 +1020,10 @@ public enum Material implements Keyed {
* BlockData: {@link AnaloguePowerable}
*/
HEAVY_WEIGHTED_PRESSURE_PLATE(16970, AnaloguePowerable.class),
+ HONEYCOMB(9482),
+ HONEYCOMB_BLOCK(28780),
+ HONEY_BLOCK(30615),
+ HONEY_BOTTLE(22927, 16),
/**
* BlockData: {@link Hopper}
*/
@@ -3454,7 +3468,9 @@ public enum Material implements Keyed {
case BARRIER:
case BEACON:
case BEDROCK:
+ case BEEHIVE:
case BEETROOTS:
+ case BEE_NEST:
case BELL:
case BIRCH_BUTTON:
case BIRCH_DOOR:
@@ -3700,6 +3716,8 @@ public enum Material implements Keyed {
case GRINDSTONE:
case HAY_BLOCK:
case HEAVY_WEIGHTED_PRESSURE_PLATE:
+ case HONEYCOMB_BLOCK:
+ case HONEY_BLOCK:
case HOPPER:
case HORN_CORAL:
case HORN_CORAL_BLOCK:
@@ -4135,6 +4153,7 @@ public enum Material implements Keyed {
case ENCHANTED_GOLDEN_APPLE:
case GOLDEN_APPLE:
case GOLDEN_CARROT:
+ case HONEY_BOTTLE:
case MELON_SLICE:
case MUSHROOM_STEW:
case MUTTON:
@@ -4333,6 +4352,8 @@ public enum Material implements Keyed {
case BARRIER:
case BEACON:
case BEDROCK:
+ case BEEHIVE:
+ case BEE_NEST:
case BELL:
case BIRCH_DOOR:
case BIRCH_FENCE:
@@ -4534,6 +4555,8 @@ public enum Material implements Keyed {
case GRINDSTONE:
case HAY_BLOCK:
case HEAVY_WEIGHTED_PRESSURE_PLATE:
+ case HONEYCOMB_BLOCK:
+ case HONEY_BLOCK:
case HOPPER:
case HORN_CORAL_BLOCK:
case ICE:
@@ -5279,6 +5302,8 @@ public enum Material implements Keyed {
case BAMBOO:
case BAMBOO_SAPLING:
case BARREL:
+ case BEEHIVE:
+ case BEE_NEST:
case BIRCH_DOOR:
case BIRCH_FENCE:
case BIRCH_FENCE_GATE:
@@ -5549,6 +5574,8 @@ public enum Material implements Keyed {
case ALLIUM:
case AZURE_BLUET:
case BAMBOO:
+ case BEEHIVE:
+ case BEE_NEST:
case BIRCH_FENCE:
case BIRCH_FENCE_GATE:
case BIRCH_LEAVES:
@@ -5983,6 +6010,8 @@ public enum Material implements Keyed {
case BARREL:
case BARRIER:
case BEDROCK:
+ case BEEHIVE:
+ case BEE_NEST:
case BIRCH_LOG:
case BIRCH_PLANKS:
case BIRCH_WOOD:
@@ -6076,6 +6105,7 @@ public enum Material implements Keyed {
case GREEN_TERRACOTTA:
case GREEN_WOOL:
case HAY_BLOCK:
+ case HONEYCOMB_BLOCK:
case HORN_CORAL_BLOCK:
case INFESTED_CHISELED_STONE_BRICKS:
case INFESTED_COBBLESTONE:
@@ -6563,6 +6593,8 @@ public enum Material implements Keyed {
case ANVIL:
case BARREL:
case BEACON:
+ case BEEHIVE:
+ case BEE_NEST:
case BELL:
case BIRCH_BUTTON:
case BIRCH_DOOR:
@@ -6814,6 +6846,7 @@ public enum Material implements Keyed {
case WHITE_BED:
case YELLOW_BED:
return 0.2F;
+ case BEE_NEST:
case BLACK_STAINED_GLASS:
case BLACK_STAINED_GLASS_PANE:
case BLUE_STAINED_GLASS:
@@ -6910,11 +6943,13 @@ public enum Material implements Keyed {
case WHITE_CONCRETE_POWDER:
case YELLOW_CONCRETE_POWDER:
return 0.5F;
+ case BEEHIVE:
case CLAY:
case COMPOSTER:
case FARMLAND:
case GRASS_BLOCK:
case GRAVEL:
+ case HONEYCOMB_BLOCK:
case MYCELIUM:
case SPONGE:
case WET_SPONGE:
@@ -6935,10 +6970,6 @@ public enum Material implements Keyed {
case CUT_RED_SANDSTONE:
case CUT_SANDSTONE:
case CYAN_WOOL:
- case END_STONE_BRICKS:
- case END_STONE_BRICK_SLAB:
- case END_STONE_BRICK_STAIRS:
- case END_STONE_BRICK_WALL:
case GRAY_WOOL:
case GREEN_WOOL:
case LIGHT_BLUE_WOOL:
@@ -7278,6 +7309,10 @@ public enum Material implements Keyed {
case DRAGON_EGG:
case EMERALD_ORE:
case END_STONE:
+ case END_STONE_BRICKS:
+ case END_STONE_BRICK_SLAB:
+ case END_STONE_BRICK_STAIRS:
+ case END_STONE_BRICK_WALL:
case GOLD_BLOCK:
case GOLD_ORE:
case HOPPER:
@@ -7393,6 +7428,7 @@ public enum Material implements Keyed {
case WHITE_BED:
case YELLOW_BED:
return 0.2F;
+ case BEE_NEST:
case BLACK_STAINED_GLASS:
case BLACK_STAINED_GLASS_PANE:
case BLUE_STAINED_GLASS:
@@ -7488,11 +7524,13 @@ public enum Material implements Keyed {
case WHITE_CONCRETE_POWDER:
case YELLOW_CONCRETE_POWDER:
return 0.5F;
+ case BEEHIVE:
case CLAY:
case COMPOSTER:
case FARMLAND:
case GRASS_BLOCK:
case GRAVEL:
+ case HONEYCOMB_BLOCK:
case MYCELIUM:
case SPONGE:
case WET_SPONGE:
@@ -7520,10 +7558,6 @@ public enum Material implements Keyed {
case CUT_RED_SANDSTONE:
case CUT_SANDSTONE:
case CYAN_WOOL:
- case END_STONE_BRICKS:
- case END_STONE_BRICK_SLAB:
- case END_STONE_BRICK_STAIRS:
- case END_STONE_BRICK_WALL:
case GRAY_WOOL:
case GREEN_WOOL:
case LIGHT_BLUE_WOOL:
@@ -7904,6 +7938,10 @@ public enum Material implements Keyed {
return 6.0F;
case DRAGON_EGG:
case END_STONE:
+ case END_STONE_BRICKS:
+ case END_STONE_BRICK_SLAB:
+ case END_STONE_BRICK_STAIRS:
+ case END_STONE_BRICK_WALL:
return 9.0F;
case LAVA:
case WATER:
diff --git a/paper-api/src/main/java/org/bukkit/Particle.java b/paper-api/src/main/java/org/bukkit/Particle.java
index 68cb74420f..49467ac70a 100644
--- a/paper-api/src/main/java/org/bukkit/Particle.java
+++ b/paper-api/src/main/java/org/bukkit/Particle.java
@@ -68,6 +68,10 @@ public enum Particle {
FALLING_LAVA,
LANDING_LAVA,
FALLING_WATER,
+ DRIPPING_HONEY,
+ FALLING_HONEY,
+ LANDING_HONEY,
+ FALLING_NECTAR,
// ----- Legacy Separator -----
LEGACY_BLOCK_CRACK(MaterialData.class),
LEGACY_BLOCK_DUST(MaterialData.class),
diff --git a/paper-api/src/main/java/org/bukkit/Server.java b/paper-api/src/main/java/org/bukkit/Server.java
index b4fb052229..7a03e93eb5 100644
--- a/paper-api/src/main/java/org/bukkit/Server.java
+++ b/paper-api/src/main/java/org/bukkit/Server.java
@@ -299,24 +299,18 @@ public interface Server extends PluginMessageRecipient {
*
* This method may not return objects for offline players.
*
- * @deprecated Use {@link #getPlayer(UUID)} as player names are no longer
- * guaranteed to be unique
* @param name the name to look up
* @return a player if one was found, null otherwise
*/
- @Deprecated
@Nullable
public Player getPlayer(@NotNull String name);
/**
* Gets the player with the exact given name, case insensitive.
*
- * @deprecated Use {@link #getPlayer(UUID)} as player names are no longer
- * guaranteed to be unique
* @param name Exact name of the player to retrieve
* @return a player object if one was found, null otherwise
*/
- @Deprecated
@Nullable
public Player getPlayerExact(@NotNull String name);
@@ -327,12 +321,9 @@ public interface Server extends PluginMessageRecipient {
* This list is not sorted in any particular order. If an exact match is
* found, the returned list will only contain a single result.
*
- * @deprecated Use {@link #getPlayer(UUID)} as player names are no longer
- * guaranteed to be unique
* @param name the (partial) name to match
* @return list of all possible players
*/
- @Deprecated
@NotNull
public List matchPlayer(@NotNull String name);
diff --git a/paper-api/src/main/java/org/bukkit/Sound.java b/paper-api/src/main/java/org/bukkit/Sound.java
index 91e5f0f09b..e857cf84ec 100644
--- a/paper-api/src/main/java/org/bukkit/Sound.java
+++ b/paper-api/src/main/java/org/bukkit/Sound.java
@@ -38,6 +38,11 @@ public enum Sound {
BLOCK_BEACON_AMBIENT,
BLOCK_BEACON_DEACTIVATE,
BLOCK_BEACON_POWER_SELECT,
+ BLOCK_BEEHIVE_DRIP,
+ BLOCK_BEEHIVE_ENTER,
+ BLOCK_BEEHIVE_EXIT,
+ BLOCK_BEEHIVE_SHEAR,
+ BLOCK_BEEHIVE_WORK,
BLOCK_BELL_RESONATE,
BLOCK_BELL_USE,
BLOCK_BLASTFURNACE_FIRE_CRACKLE,
@@ -99,6 +104,12 @@ public enum Sound {
BLOCK_GRAVEL_PLACE,
BLOCK_GRAVEL_STEP,
BLOCK_GRINDSTONE_USE,
+ BLOCK_HONEY_BLOCK_BREAK,
+ BLOCK_HONEY_BLOCK_FALL,
+ BLOCK_HONEY_BLOCK_HIT,
+ BLOCK_HONEY_BLOCK_PLACE,
+ BLOCK_HONEY_BLOCK_SLIDE,
+ BLOCK_HONEY_BLOCK_STEP,
BLOCK_IRON_DOOR_CLOSE,
BLOCK_IRON_DOOR_OPEN,
BLOCK_IRON_TRAPDOOR_CLOSE,
@@ -224,6 +235,12 @@ public enum Sound {
ENTITY_BAT_HURT,
ENTITY_BAT_LOOP,
ENTITY_BAT_TAKEOFF,
+ ENTITY_BEE_DEATH,
+ ENTITY_BEE_HURT,
+ ENTITY_BEE_LOOP,
+ ENTITY_BEE_LOOP_AGGRESSIVE,
+ ENTITY_BEE_POLLINATE,
+ ENTITY_BEE_STING,
ENTITY_BLAZE_AMBIENT,
ENTITY_BLAZE_BURN,
ENTITY_BLAZE_DEATH,
@@ -400,8 +417,10 @@ public enum Sound {
ENTITY_ILLUSIONER_PREPARE_BLINDNESS,
ENTITY_ILLUSIONER_PREPARE_MIRROR,
ENTITY_IRON_GOLEM_ATTACK,
+ ENTITY_IRON_GOLEM_DAMAGE,
ENTITY_IRON_GOLEM_DEATH,
ENTITY_IRON_GOLEM_HURT,
+ ENTITY_IRON_GOLEM_REPAIR,
ENTITY_IRON_GOLEM_STEP,
ENTITY_ITEM_BREAK,
ENTITY_ITEM_FRAME_ADD_ITEM,
@@ -467,7 +486,6 @@ public enum Sound {
ENTITY_PARROT_IMITATE_CREEPER,
ENTITY_PARROT_IMITATE_DROWNED,
ENTITY_PARROT_IMITATE_ELDER_GUARDIAN,
- ENTITY_PARROT_IMITATE_ENDERMAN,
ENTITY_PARROT_IMITATE_ENDERMITE,
ENTITY_PARROT_IMITATE_ENDER_DRAGON,
ENTITY_PARROT_IMITATE_EVOKER,
@@ -476,10 +494,8 @@ public enum Sound {
ENTITY_PARROT_IMITATE_HUSK,
ENTITY_PARROT_IMITATE_ILLUSIONER,
ENTITY_PARROT_IMITATE_MAGMA_CUBE,
- ENTITY_PARROT_IMITATE_PANDA,
ENTITY_PARROT_IMITATE_PHANTOM,
ENTITY_PARROT_IMITATE_PILLAGER,
- ENTITY_PARROT_IMITATE_POLAR_BEAR,
ENTITY_PARROT_IMITATE_RAVAGER,
ENTITY_PARROT_IMITATE_SHULKER,
ENTITY_PARROT_IMITATE_SILVERFISH,
@@ -492,9 +508,7 @@ public enum Sound {
ENTITY_PARROT_IMITATE_WITCH,
ENTITY_PARROT_IMITATE_WITHER,
ENTITY_PARROT_IMITATE_WITHER_SKELETON,
- ENTITY_PARROT_IMITATE_WOLF,
ENTITY_PARROT_IMITATE_ZOMBIE,
- ENTITY_PARROT_IMITATE_ZOMBIE_PIGMAN,
ENTITY_PARROT_IMITATE_ZOMBIE_VILLAGER,
ENTITY_PARROT_STEP,
ENTITY_PHANTOM_AMBIENT,
@@ -759,6 +773,7 @@ public enum Sound {
ITEM_FIRECHARGE_USE,
ITEM_FLINTANDSTEEL_USE,
ITEM_HOE_TILL,
+ ITEM_HONEY_BOTTLE_DRINK,
ITEM_NETHER_WART_PLANT,
ITEM_SHIELD_BLOCK,
ITEM_SHIELD_BREAK,
diff --git a/paper-api/src/main/java/org/bukkit/Statistic.java b/paper-api/src/main/java/org/bukkit/Statistic.java
index c54c001286..bda1940333 100644
--- a/paper-api/src/main/java/org/bukkit/Statistic.java
+++ b/paper-api/src/main/java/org/bukkit/Statistic.java
@@ -86,7 +86,9 @@ public enum Statistic implements Keyed {
INTERACT_WITH_STONECUTTER,
BELL_RING,
RAID_TRIGGER,
- RAID_WIN;
+ RAID_WIN,
+ INTERACT_WITH_ANVIL,
+ INTERACT_WITH_GRINDSTONE;
private final Type type;
private final NamespacedKey key;
diff --git a/paper-api/src/main/java/org/bukkit/Tag.java b/paper-api/src/main/java/org/bukkit/Tag.java
index 1d9021b0b0..1d93a12345 100644
--- a/paper-api/src/main/java/org/bukkit/Tag.java
+++ b/paper-api/src/main/java/org/bukkit/Tag.java
@@ -158,6 +158,18 @@ public interface Tag extends Keyed {
* Vanilla block tag representing all fences.
*/
Tag FENCES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("fences"), Material.class);
+ /**
+ * Vanilla block tag representing all tall flowers.
+ */
+ Tag TALL_FLOWERS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("tall_flowers"), Material.class);
+ /**
+ * Vanilla block tag representing all flowers.
+ */
+ Tag FLOWERS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("flowers"), Material.class);
+ /**
+ * Vanilla block tag representing all shulker boxes.
+ */
+ Tag SHULKER_BOXES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("shulker_boxes"), Material.class);
/**
* Vanilla block tag denoting blocks that enderman may pick up and hold.
*/
@@ -198,10 +210,6 @@ public interface Tag extends Keyed {
* Vanilla block tag denoting all blocks bamboo may be planted on.
*/
Tag BAMBOO_PLANTABLE_ON = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("bamboo_plantable_on"), Material.class);
- /**
- * Vanilla block tag denoting dirt like blocks.
- */
- Tag DIRT_LIKE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("dirt_like"), Material.class);
/**
* Vanilla block tag representing all standing signs.
*/
@@ -214,6 +222,30 @@ public interface Tag extends Keyed {
* Vanilla block tag representing all signs.
*/
Tag SIGNS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("signs"), Material.class);
+ /**
+ * Vanilla block tag representing all blocks immune to dragons.
+ */
+ Tag DRAGON_IMMUNE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("dragon_immune"), Material.class);
+ /**
+ * Vanilla block tag representing all blocks immune to withers.
+ */
+ Tag WITHER_IMMUNE = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("wither_immune"), Material.class);
+ /**
+ * Vanilla block tag representing all beehives.
+ */
+ Tag BEEHIVES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("beehives"), Material.class);
+ /**
+ * Vanilla block tag representing all crops.
+ */
+ Tag CROPS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("crops"), Material.class);
+ /**
+ * Vanilla block tag representing all bee growables.
+ */
+ Tag BEE_GROWABLES = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("bee_growables"), Material.class);
+ /**
+ * Vanilla block tag representing all portals.
+ */
+ Tag PORTALS = Bukkit.getTag(REGISTRY_BLOCKS, NamespacedKey.minecraft("portals"), Material.class);
/**
* Key for the built in item registry.
*/
@@ -242,6 +274,10 @@ public interface Tag extends Keyed {
* Vanilla item tag representing all arrow items.
*/
Tag ITEMS_ARROWS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("arrows"), Material.class);
+ /**
+ * Vanilla item tag representing all books that may be placed on lecterns.
+ */
+ Tag ITEMS_LECTERN_BOOKS = Bukkit.getTag(REGISTRY_ITEMS, NamespacedKey.minecraft("lectern_books"), Material.class);
/**
* Returns whether or not this tag has an entry for the specified item.
diff --git a/paper-api/src/main/java/org/bukkit/block/Beehive.java b/paper-api/src/main/java/org/bukkit/block/Beehive.java
new file mode 100644
index 0000000000..c1c47c246f
--- /dev/null
+++ b/paper-api/src/main/java/org/bukkit/block/Beehive.java
@@ -0,0 +1,25 @@
+package org.bukkit.block;
+
+import org.bukkit.Location;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Represents a captured state of a bee hive.
+ */
+public interface Beehive extends TileState {
+
+ /**
+ * Get the hive's flower location.
+ *
+ * @return flower location or null
+ */
+ @Nullable
+ Location getFlower();
+
+ /**
+ * Set the hive's flower location.
+ *
+ * @param location or null
+ */
+ void setFlower(@Nullable Location location);
+}
diff --git a/paper-api/src/main/java/org/bukkit/block/FlowerPot.java b/paper-api/src/main/java/org/bukkit/block/FlowerPot.java
deleted file mode 100644
index 1155edc3a0..0000000000
--- a/paper-api/src/main/java/org/bukkit/block/FlowerPot.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.bukkit.block;
-
-import org.bukkit.material.MaterialData;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Represents a captured state of a flower pot.
- * @deprecated not a tile entity in future versions of Minecraft
- */
-@Deprecated
-public interface FlowerPot extends BlockState {
-
- /**
- * Gets the item present in this flower pot.
- *
- * @return item present, or null for empty.
- */
- @Nullable
- MaterialData getContents();
-
- /**
- * Sets the item present in this flower pot.
- *
- * NOTE: The Vanilla Minecraft client will currently not refresh this until
- * a block update is triggered.
- *
- * @param item new item, or null for empty.
- */
- void setContents(@Nullable MaterialData item);
-}
diff --git a/paper-api/src/main/java/org/bukkit/block/NoteBlock.java b/paper-api/src/main/java/org/bukkit/block/NoteBlock.java
deleted file mode 100644
index 14bb68baea..0000000000
--- a/paper-api/src/main/java/org/bukkit/block/NoteBlock.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.bukkit.block;
-
-import org.bukkit.Instrument;
-import org.bukkit.Note;
-
-/**
- * Represents a captured state of a note block.
- * @deprecated not a tile entity in future versions of Minecraft
- */
-@Deprecated
-public interface NoteBlock extends BlockState {
-
- /**
- * Gets the note.
- *
- * @return The note.
- */
- public Note getNote();
-
- /**
- * Gets the note.
- *
- * @return The note ID.
- * @deprecated Magic value
- */
- @Deprecated
- public byte getRawNote();
-
- /**
- * Set the note.
- *
- * @param note The note.
- */
- public void setNote(Note note);
-
- /**
- * Set the note.
- *
- * @param note The note ID.
- * @deprecated Magic value
- */
- @Deprecated
- public void setRawNote(byte note);
-
- /**
- * Attempts to play the note at the block.
- *
- * If the block represented by this block state is no longer a note block,
- * this will return false.
- *
- * @return true if successful, otherwise false
- * @throws IllegalStateException if this block state is not placed
- */
- public boolean play();
-
- /**
- * Plays an arbitrary note with an arbitrary instrument at the block.
- *
- * If the block represented by this block state is no longer a note block,
- * this will return false.
- *
- * @param instrument Instrument ID
- * @param note Note ID
- * @return true if successful, otherwise false
- * @throws IllegalStateException if this block state is not placed
- * @deprecated Magic value
- */
- @Deprecated
- public boolean play(byte instrument, byte note);
-
- /**
- * Plays an arbitrary note with an arbitrary instrument at the block.
- *
- * If the block represented by this block state is no longer a note block,
- * this will return false.
- *
- * @param instrument The instrument
- * @param note The note
- * @return true if successful, otherwise false
- * @throws IllegalStateException if this block state is not placed
- * @see Instrument Note
- */
- public boolean play(Instrument instrument, Note note);
-}
diff --git a/paper-api/src/main/java/org/bukkit/block/data/type/Beehive.java b/paper-api/src/main/java/org/bukkit/block/data/type/Beehive.java
new file mode 100644
index 0000000000..7cfa05d7a7
--- /dev/null
+++ b/paper-api/src/main/java/org/bukkit/block/data/type/Beehive.java
@@ -0,0 +1,30 @@
+package org.bukkit.block.data.type;
+
+import org.bukkit.block.data.Directional;
+
+/**
+ * 'honey_level' represents the amount of honey stored in the hive.
+ */
+public interface Beehive extends Directional {
+
+ /**
+ * Gets the value of the 'honey_level' property.
+ *
+ * @return the 'honey_level' value
+ */
+ int getHoneyLevel();
+
+ /**
+ * Sets the value of the 'honey_level' property.
+ *
+ * @param honeyLevel the new 'honey_level' value
+ */
+ void setHoneyLevel(int honeyLevel);
+
+ /**
+ * Gets the maximum allowed value of the 'honey_level' property.
+ *
+ * @return the maximum 'honey_level' value
+ */
+ int getMaximumHoneyLevel();
+}
diff --git a/paper-api/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/paper-api/src/main/java/org/bukkit/command/defaults/VersionCommand.java
index 9d8360f764..cbce524442 100644
--- a/paper-api/src/main/java/org/bukkit/command/defaults/VersionCommand.java
+++ b/paper-api/src/main/java/org/bukkit/command/defaults/VersionCommand.java
@@ -41,8 +41,7 @@ public class VersionCommand extends BukkitCommand {
if (args.length == 0) {
sender.sendMessage("This server is running " + Bukkit.getName() + " version " + Bukkit.getVersion() + " (Implementing API version " + Bukkit.getBukkitVersion() + ")");
- sender.sendMessage(ChatColor.YELLOW + "This is a final build for 1.14.4. Please see https://www.spigotmc.org/go/1.14.4 for details about upgrading.");
- // sendVersion(sender);
+ sendVersion(sender);
} else {
StringBuilder name = new StringBuilder();
diff --git a/paper-api/src/main/java/org/bukkit/entity/Bee.java b/paper-api/src/main/java/org/bukkit/entity/Bee.java
new file mode 100644
index 0000000000..41b23d87a1
--- /dev/null
+++ b/paper-api/src/main/java/org/bukkit/entity/Bee.java
@@ -0,0 +1,82 @@
+package org.bukkit.entity;
+
+import org.bukkit.Location;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Represents a Bee.
+ */
+public interface Bee extends Animals {
+
+ /**
+ * Get the bee's hive location.
+ *
+ * @return hive location or null
+ */
+ @Nullable
+ Location getHive();
+
+ /**
+ * Set the bee's hive location.
+ *
+ * @param location or null
+ */
+ void setHive(@Nullable Location location);
+
+ /**
+ * Get the bee's flower location.
+ *
+ * @return flower location or null
+ */
+ @Nullable
+ Location getFlower();
+
+ /**
+ * Set the bee's flower location.
+ *
+ * @param location or null
+ */
+ void setFlower(@Nullable Location location);
+
+ /**
+ * Get if the bee has nectar.
+ *
+ * @return nectar
+ */
+ boolean hasNectar();
+
+ /**
+ * Set if the bee has nectar.
+ *
+ * @param nectar whether the entity has nectar
+ */
+ void setHasNectar(boolean nectar);
+
+ /**
+ * Get if the bee has stung.
+ *
+ * @return has stung
+ */
+ boolean hasStung();
+
+ /**
+ * Set if the bee has stung.
+ *
+ * @param stung has stung
+ */
+ void setHasStung(boolean stung);
+
+ /**
+ * Get the bee's anger level.
+ *
+ * @return anger level
+ */
+ int getAnger();
+
+ /**
+ * Set the bee's new anger level.
+ *
+ * @param anger new anger
+ */
+ void setAnger(int anger);
+}
diff --git a/paper-api/src/main/java/org/bukkit/entity/EntityType.java b/paper-api/src/main/java/org/bukkit/entity/EntityType.java
index 527cb045f3..0ab001b7e2 100644
--- a/paper-api/src/main/java/org/bukkit/entity/EntityType.java
+++ b/paper-api/src/main/java/org/bukkit/entity/EntityType.java
@@ -260,6 +260,7 @@ public enum EntityType implements Keyed {
TRADER_LLAMA("trader_llama", TraderLlama.class, -1),
WANDERING_TRADER("wandering_trader", WanderingTrader.class, -1),
FOX("fox", Fox.class, -1),
+ BEE("bee", Bee.class, -1),
/**
* A fishing line and bobber.
*/
diff --git a/paper-api/src/main/java/org/bukkit/entity/Player.java b/paper-api/src/main/java/org/bukkit/entity/Player.java
index ea112e4534..89d05d9fd5 100644
--- a/paper-api/src/main/java/org/bukkit/entity/Player.java
+++ b/paper-api/src/main/java/org/bukkit/entity/Player.java
@@ -1,7 +1,6 @@
package org.bukkit.entity;
import java.net.InetSocketAddress;
-import org.bukkit.Achievement;
import org.bukkit.DyeColor;
import org.bukkit.Effect;
import org.bukkit.GameMode;
@@ -452,39 +451,6 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Deprecated
public void updateInventory();
- /**
- * Awards the given achievement and any parent achievements that the
- * player does not have.
- *
- * @param achievement Achievement to award
- * @throws IllegalArgumentException if achievement is null
- * @deprecated future versions of Minecraft do not have achievements
- */
- @Deprecated
- public void awardAchievement(@NotNull Achievement achievement);
-
- /**
- * Removes the given achievement and any children achievements that the
- * player has.
- *
- * @param achievement Achievement to remove
- * @throws IllegalArgumentException if achievement is null
- * @deprecated future versions of Minecraft do not have achievements
- */
- @Deprecated
- public void removeAchievement(@NotNull Achievement achievement);
-
- /**
- * Gets whether this player has the given achievement.
- *
- * @param achievement the achievement to check
- * @return whether the player has the achievement
- * @throws IllegalArgumentException if achievement is null
- * @deprecated future versions of Minecraft do not have achievements
- */
- @Deprecated
- public boolean hasAchievement(@NotNull Achievement achievement);
-
/**
* Increments the given statistic for this player.
*
diff --git a/paper-api/src/main/java/org/bukkit/entity/memory/MemoryKey.java b/paper-api/src/main/java/org/bukkit/entity/memory/MemoryKey.java
index dd33800d9f..8a5c92a68b 100644
--- a/paper-api/src/main/java/org/bukkit/entity/memory/MemoryKey.java
+++ b/paper-api/src/main/java/org/bukkit/entity/memory/MemoryKey.java
@@ -49,6 +49,7 @@ public final class MemoryKey implements Keyed {
public static final MemoryKey MEETING_POINT = new MemoryKey<>(NamespacedKey.minecraft("meeting_point"), Location.class);
public static final MemoryKey JOB_SITE = new MemoryKey<>(NamespacedKey.minecraft("job_site"), Location.class);
public static final MemoryKey LAST_SLEPT = new MemoryKey<>(NamespacedKey.minecraft("last_slept"), Long.class);
+ public static final MemoryKey LAST_WOKEN = new MemoryKey<>(NamespacedKey.minecraft("last_woken"), Long.class);
public static final MemoryKey LAST_WORKED_AT_POI = new MemoryKey<>(NamespacedKey.minecraft("last_worked_at_poi"), Long.class);
/**
diff --git a/paper-api/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java b/paper-api/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java
deleted file mode 100644
index 07fa439a4f..0000000000
--- a/paper-api/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.bukkit.event.player;
-
-import org.bukkit.Achievement;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.HandlerList;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * Called when a player earns an achievement.
- * @deprecated future versions of Minecraft do not have achievements
- */
-@Deprecated
-public class PlayerAchievementAwardedEvent extends PlayerEvent implements Cancellable {
- private static final HandlerList handlers = new HandlerList();
- private final Achievement achievement;
- private boolean isCancelled = false;
-
- public PlayerAchievementAwardedEvent(Player player, Achievement achievement) {
- super(player);
- this.achievement = achievement;
- }
-
- /**
- * Gets the Achievement being awarded.
- *
- * @return the achievement being awarded
- */
- public Achievement getAchievement() {
- return achievement;
- }
-
- @Override
- public boolean isCancelled() {
- return isCancelled;
- }
-
- @Override
- public void setCancelled(boolean cancel) {
- this.isCancelled = cancel;
- }
-
- @NotNull
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-}
diff --git a/paper-api/src/main/java/org/bukkit/inventory/ComplexRecipe.java b/paper-api/src/main/java/org/bukkit/inventory/ComplexRecipe.java
new file mode 100644
index 0000000000..46381c8f97
--- /dev/null
+++ b/paper-api/src/main/java/org/bukkit/inventory/ComplexRecipe.java
@@ -0,0 +1,12 @@
+package org.bukkit.inventory;
+
+import org.bukkit.Keyed;
+
+/**
+ * Represents a complex recipe which has imperative server-defined behavior, eg
+ * armor dyeing.
+ *
+ * Note: Since a complex recipe has dynamic outputs, {@link #getResult()} will
+ * sometimes return an AIR ItemStack.
+ */
+public interface ComplexRecipe extends Recipe, Keyed {}