From fc9b07810a28a0bdaf5541bf1b7bb2107d90323d Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Tue, 24 Mar 2015 15:36:33 +0000 Subject: Add BlockStateMeta which allows creating and editting 1.8's blockEntityTag --- src/main/java/org/bukkit/block/BlockState.java | 11 +++++++ .../org/bukkit/inventory/meta/BlockStateMeta.java | 35 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java diff --git a/src/main/java/org/bukkit/block/BlockState.java b/src/main/java/org/bukkit/block/BlockState.java index 96bf1d0d..866a73d9 100644 --- a/src/main/java/org/bukkit/block/BlockState.java +++ b/src/main/java/org/bukkit/block/BlockState.java @@ -192,4 +192,15 @@ public interface BlockState extends Metadatable { */ @Deprecated public void setRawData(byte data); + + /** + * Returns whether this state is placed in the world. + * + * Some methods will not work if the blockState isn't + * placed in the world. + * + * @return whether the state is placed in the world + * or 'virtual' (e.g. on an itemstack) + */ + boolean isPlaced(); } diff --git a/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java b/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java new file mode 100644 index 00000000..4c2a7467 --- /dev/null +++ b/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java @@ -0,0 +1,35 @@ + +package org.bukkit.inventory.meta; + +import org.bukkit.block.BlockState; + +public interface BlockStateMeta extends ItemMeta { + + /** + * Returns whether the item has a block state currently + * attached to it. + * + * @return whether a block state is already attached + */ + boolean hasBlockState(); + + /** + * Returns the currently attached block state for this + * item or creates a new one if one doesn't exist. + * + * The state is a copy, it must be set back (or to another + * item) with {@link #setBlockState(org.bukkit.block.BlockState)} + * + * @return the attached state or a new state + */ + BlockState getBlockState(); + + /** + * Attaches a copy of the passed block state to the item. + * + * @param blockState the block state to attach to the block. + * @throws IllegalArgumentException if the blockState is null + * or invalid for this item. + */ + void setBlockState(BlockState blockState); +} -- cgit v1.2.3