diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java b/common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java new file mode 100644 index 000000000..c8c7e6f5d --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.api.block; + +import com.dfsek.terra.api.Handle; + + +public interface BlockData extends Handle { + String toString(); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java index 2bcbd8a7a..440a29669 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockState.java @@ -115,4 +115,12 @@ public interface BlockState extends Handle { * @return Whether this state is air */ boolean isAir(); + + /** + * Get whether this BlockState is an extended state. + * Extended states are states that contain extra data not normally present in a BlockState. + * + * @return Whether this state is extended. + */ + default boolean isExtended() { return false; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockStateExtended.java b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockStateExtended.java new file mode 100644 index 000000000..c274736ab --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/block/state/BlockStateExtended.java @@ -0,0 +1,32 @@ +package com.dfsek.terra.api.block.state; + +import com.dfsek.terra.api.block.BlockData; + + +public interface BlockStateExtended extends BlockState { + /** + * Sets the BlockData. + * + * @param data BlockData to set + * + * @return New BlockStateExtended with the given BlockData + */ + BlockStateExtended setData(BlockData data); + + /** + * Gets the BlockData. + * + * @return BlockData of this BlockStateExtended + */ + BlockData getData(); + + /** + * Gets the BlockState. + * + * @return Raw BlockState of this BlockStateExtended + */ + BlockState getState(); + + @Override + default boolean isExtended() {return true;} +}