summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/bukkit/block/BlockState.java11
-rw-r--r--src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java35
2 files changed, 46 insertions, 0 deletions
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);
+}