TEXT_DISPLAY = getEntityType("text_display");
/**
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 3813dd67..ee66dc0c 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -510,6 +510,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendBlockChange(@NotNull Location loc, @NotNull BlockData block);
+ /**
+ * Send a multi-block change. This fakes a block change packet for a user
+ * at multiple locations. This will not actually change the world in any
+ * way.
+ *
+ * This method may send multiple packets to the client depending on the
+ * blocks in the collection. A packet must be sent for each chunk section
+ * modified, meaning one packet for each 16x16x16 block area. Even if only
+ * one block is changed in two different chunk sections, two packets will
+ * be sent.
+ *
+ * Additionally, this method cannot guarantee the functionality of changes
+ * being sent to the player in chunks not loaded by the client. It is the
+ * responsibility of the caller to ensure that the client is within range
+ * of the changed blocks or to handle any side effects caused as a result.
+ *
+ * @param blocks the block states to send to the player
+ */
+ public void sendBlockChanges(@NotNull Collection blocks);
+
/**
* Send a multi-block change. This fakes a block change packet for a user
* at multiple locations. This will not actually change the world in any
@@ -529,7 +549,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param blocks the block states to send to the player
* @param suppressLightUpdates whether or not light updates should be
* suppressed when updating the blocks on the client
+ * @deprecated suppressLightUpdates is not functional in versions greater
+ * than 1.19.4
*/
+ @Deprecated
public void sendBlockChanges(@NotNull Collection blocks, boolean suppressLightUpdates);
/**
diff --git a/src/main/java/org/bukkit/entity/Sniffer.java b/src/main/java/org/bukkit/entity/Sniffer.java
index e9a8c2c9..af5110b4 100644
--- a/src/main/java/org/bukkit/entity/Sniffer.java
+++ b/src/main/java/org/bukkit/entity/Sniffer.java
@@ -2,19 +2,12 @@ package org.bukkit.entity;
import java.util.Collection;
import org.bukkit.Location;
-import org.bukkit.MinecraftExperimental;
-import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Represents a Sniffer.
- *
- * @apiNote This entity is part of an experimental feature of Minecraft and
- * hence subject to change.
*/
-@MinecraftExperimental
-@ApiStatus.Experimental
public interface Sniffer extends Animals {
/**
diff --git a/src/main/java/org/bukkit/entity/memory/MemoryKey.java b/src/main/java/org/bukkit/entity/memory/MemoryKey.java
index f1c184ed..8f601e85 100644
--- a/src/main/java/org/bukkit/entity/memory/MemoryKey.java
+++ b/src/main/java/org/bukkit/entity/memory/MemoryKey.java
@@ -7,9 +7,7 @@ import java.util.Set;
import java.util.UUID;
import org.bukkit.Keyed;
import org.bukkit.Location;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
-import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -71,8 +69,6 @@ public final class MemoryKey implements Keyed {
public static final MemoryKey LIKED_NOTEBLOCK_POSITION = new MemoryKey<>(NamespacedKey.minecraft("liked_noteblock"), Location.class);
public static final MemoryKey LIKED_NOTEBLOCK_COOLDOWN_TICKS = new MemoryKey<>(NamespacedKey.minecraft("liked_noteblock_cooldown_ticks"), Integer.class);
public static final MemoryKey ITEM_PICKUP_COOLDOWN_TICKS = new MemoryKey<>(NamespacedKey.minecraft("item_pickup_cooldown_ticks"), Integer.class);
- @MinecraftExperimental
- @ApiStatus.Experimental
public static final MemoryKey SNIFFER_EXPLORED_POSITIONS = new MemoryKey<>(NamespacedKey.minecraft("sniffer_explored_positions"), Location.class);
/**
diff --git a/src/main/java/org/bukkit/generator/structure/Structure.java b/src/main/java/org/bukkit/generator/structure/Structure.java
index ff7708a3..ca310cfe 100644
--- a/src/main/java/org/bukkit/generator/structure/Structure.java
+++ b/src/main/java/org/bukkit/generator/structure/Structure.java
@@ -46,6 +46,7 @@ public abstract class Structure implements Keyed {
public static final Structure RUINED_PORTAL_OCEAN = getStructure("ruined_portal_ocean");
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");
private static Structure getStructure(String name) {
return Registry.STRUCTURE.get(NamespacedKey.minecraft(name));
diff --git a/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java b/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
index e7e3e85f..b99f2607 100644
--- a/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
+++ b/src/main/java/org/bukkit/inventory/ChiseledBookshelfInventory.java
@@ -1,15 +1,11 @@
package org.bukkit.inventory;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.block.ChiseledBookshelf;
-import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
/**
* Interface to the inventory of a chiseled bookshelf.
*/
-@MinecraftExperimental
-@ApiStatus.Experimental
public interface ChiseledBookshelfInventory extends Inventory {
@Nullable
diff --git a/src/main/java/org/bukkit/inventory/ItemFlag.java b/src/main/java/org/bukkit/inventory/ItemFlag.java
index 0a1c39a2..42fcc311 100644
--- a/src/main/java/org/bukkit/inventory/ItemFlag.java
+++ b/src/main/java/org/bukkit/inventory/ItemFlag.java
@@ -1,8 +1,5 @@
package org.bukkit.inventory;
-import org.bukkit.MinecraftExperimental;
-import org.jetbrains.annotations.ApiStatus;
-
/**
* A ItemFlag can hide some Attributes from ItemStacks
*/
@@ -40,7 +37,5 @@ public enum ItemFlag {
/**
* Setting to show/hide armor trim from leather armor.
*/
- @MinecraftExperimental
- @ApiStatus.Experimental
HIDE_ARMOR_TRIM;
}
diff --git a/src/main/java/org/bukkit/inventory/SmithingInventory.java b/src/main/java/org/bukkit/inventory/SmithingInventory.java
index 8f7749d1..96d526b7 100644
--- a/src/main/java/org/bukkit/inventory/SmithingInventory.java
+++ b/src/main/java/org/bukkit/inventory/SmithingInventory.java
@@ -1,15 +1,10 @@
package org.bukkit.inventory;
-import org.bukkit.MinecraftExperimental;
import org.jetbrains.annotations.Nullable;
/**
* Interface to the inventory of a Smithing table.
- *
- * @apiNote Check {@link #getType()} to better handle either the current or experimental
- * variant of this inventory
*/
-@MinecraftExperimental
public interface SmithingInventory extends Inventory {
/**
diff --git a/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java b/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
index 2c676295..c631a7d4 100644
--- a/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
+++ b/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
@@ -1,18 +1,11 @@
package org.bukkit.inventory;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
-import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* Represents a smithing trim recipe.
- *
- * @apiNote This recipe is part of an experimental feature of Minecraft and
- * hence subject to change.
*/
-@MinecraftExperimental
-@ApiStatus.Experimental
public class SmithingTrimRecipe extends SmithingRecipe implements ComplexRecipe {
private final RecipeChoice template;
diff --git a/src/main/java/org/bukkit/inventory/meta/ArmorMeta.java b/src/main/java/org/bukkit/inventory/meta/ArmorMeta.java
index 5d4df713..e167cb5c 100644
--- a/src/main/java/org/bukkit/inventory/meta/ArmorMeta.java
+++ b/src/main/java/org/bukkit/inventory/meta/ArmorMeta.java
@@ -1,8 +1,6 @@
package org.bukkit.inventory.meta;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.inventory.meta.trim.ArmorTrim;
-import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -12,8 +10,6 @@ import org.jetbrains.annotations.Nullable;
* Note: Armor trims are part of an experimental feature of Minecraft
* and hence subject to change.
*/
-@MinecraftExperimental
-@ApiStatus.Experimental
public interface ArmorMeta extends ItemMeta {
/**
diff --git a/src/main/java/org/bukkit/inventory/meta/BundleMeta.java b/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
index f7f8d0d0..bc992fdf 100644
--- a/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
+++ b/src/main/java/org/bukkit/inventory/meta/BundleMeta.java
@@ -1,14 +1,10 @@
package org.bukkit.inventory.meta;
import java.util.List;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.inventory.ItemStack;
-import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-@MinecraftExperimental
-@ApiStatus.Experimental
public interface BundleMeta extends ItemMeta {
/**
diff --git a/src/main/java/org/bukkit/inventory/meta/SkullMeta.java b/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
index 461cdecc..5a18a66a 100644
--- a/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
+++ b/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
@@ -1,10 +1,8 @@
package org.bukkit.inventory.meta;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
import org.bukkit.OfflinePlayer;
import org.bukkit.profile.PlayerProfile;
-import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -90,8 +88,6 @@ public interface SkullMeta extends ItemMeta {
*
* @param noteBlockSound the key of the sound to be played, or null
*/
- @MinecraftExperimental
- @ApiStatus.Experimental
void setNoteBlockSound(@Nullable NamespacedKey noteBlockSound);
/**
@@ -102,8 +98,6 @@ public interface SkullMeta extends ItemMeta {
*
* @return the key of the sound, or null
*/
- @MinecraftExperimental
- @ApiStatus.Experimental
@Nullable
NamespacedKey getNoteBlockSound();
diff --git a/src/main/java/org/bukkit/inventory/meta/trim/ArmorTrim.java b/src/main/java/org/bukkit/inventory/meta/trim/ArmorTrim.java
index c33c92f5..b4877e31 100644
--- a/src/main/java/org/bukkit/inventory/meta/trim/ArmorTrim.java
+++ b/src/main/java/org/bukkit/inventory/meta/trim/ArmorTrim.java
@@ -2,20 +2,14 @@ package org.bukkit.inventory.meta.trim;
import com.google.common.base.Preconditions;
import java.util.Objects;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.inventory.meta.ArmorMeta;
-import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* Represents an armor trim that may be applied to an item.
*
* @see ArmorMeta#setTrim(ArmorTrim)
- * @apiNote Armor trims are part of an experimental feature of Minecraft and
- * hence subject to change.
*/
-@MinecraftExperimental
-@ApiStatus.Experimental
public class ArmorTrim {
private final TrimMaterial material;
diff --git a/src/main/java/org/bukkit/inventory/meta/trim/TrimMaterial.java b/src/main/java/org/bukkit/inventory/meta/trim/TrimMaterial.java
index d5c17559..6291cf7c 100644
--- a/src/main/java/org/bukkit/inventory/meta/trim/TrimMaterial.java
+++ b/src/main/java/org/bukkit/inventory/meta/trim/TrimMaterial.java
@@ -1,21 +1,13 @@
package org.bukkit.inventory.meta.trim;
import org.bukkit.Keyed;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.inventory.ItemType;
-import org.jetbrains.annotations.ApiStatus;
/**
* Represents a material that may be used in an {@link ArmorTrim}.
- *
- * @apiNote Armor trims are part of an experimental feature of Minecraft and
- * hence subject to change. Constants in this class may be null if a data pack
- * is not present to enable these features.
*/
-@MinecraftExperimental
-@ApiStatus.Experimental
public interface TrimMaterial extends Keyed {
/**
diff --git a/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java b/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
index 934eaa57..bacf94c3 100644
--- a/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
+++ b/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
@@ -1,21 +1,13 @@
package org.bukkit.inventory.meta.trim;
import org.bukkit.Keyed;
-import org.bukkit.MinecraftExperimental;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.inventory.ItemType;
-import org.jetbrains.annotations.ApiStatus;
/**
* Represents a pattern that may be used in an {@link ArmorTrim}.
- *
- * @apiNote Armor trims are part of an experimental feature of Minecraft and
- * hence subject to change. Constants in this class may be null if a data pack
- * is not present to enable these features.
*/
-@MinecraftExperimental
-@ApiStatus.Experimental
public interface TrimPattern extends Keyed {
/**
diff --git a/src/main/java/org/bukkit/loot/LootTables.java b/src/main/java/org/bukkit/loot/LootTables.java
index b76a5b28..95bbda00 100644
--- a/src/main/java/org/bukkit/loot/LootTables.java
+++ b/src/main/java/org/bukkit/loot/LootTables.java
@@ -155,7 +155,15 @@ 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"),
+ SNIFFER_DIGGING("gameplay/sniffer_digging"),
PIGLIN_BARTERING("gameplay/piglin_bartering"),
+ // Archaeology
+ DESERT_WELL_ARCHAEOLOGY("archaeology/desert_well"),
+ DESERT_PYRAMID_ARCHAEOLOGY("archaeology/desert_pyramid"),
+ TRAIL_RUINS_ARCHAEOLOGY_COMMON("archaeology/trail_ruins_common"),
+ TRAIL_RUINS_ARCHAEOLOGY_RARE("archaeology/trail_ruins_rare"),
+ OCEAN_RUIN_WARM_ARCHAEOLOGY("archaeology/ocean_ruin_warm"),
+ OCEAN_RUIN_COLD_ARCHAEOLOGY("archaeology/ocean_ruin_cold"),
// Sheep
SHEEP("entities/sheep"),
SHEEP_BLACK("entities/sheep/black"),