From 42f3c56b7104223a63cd8f1dbc99530f5f0836bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sun, 5 Oct 2025 16:47:12 -0600 Subject: [PATCH] Extended BlockState API --- .../com/dfsek/terra/api/block/BlockData.java | 8 +++++ .../terra/api/block/state/BlockState.java | 8 +++++ .../api/block/state/BlockStateExtended.java | 32 +++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/BlockData.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/block/state/BlockStateExtended.java 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;} +}