aboutsummaryrefslogtreecommitdiff
path: root/azalea-block/src/blocks.rs
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-block/src/blocks.rs')
-rwxr-xr-xazalea-block/src/blocks.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/azalea-block/src/blocks.rs b/azalea-block/src/blocks.rs
index 226542dc..e6923d59 100755
--- a/azalea-block/src/blocks.rs
+++ b/azalea-block/src/blocks.rs
@@ -1,9 +1,18 @@
+use std::any::Any;
+
use crate::BlockBehavior;
use azalea_block_macros::make_block_states;
+use std::fmt::Debug;
-pub trait Block {
+pub trait Block: Debug + Any {
fn behavior(&self) -> BlockBehavior;
fn id(&self) -> &'static str;
+ fn as_blockstate(&self) -> BlockState;
+}
+impl dyn Block {
+ pub fn downcast_ref<T: Block>(&self) -> Option<&T> {
+ (self as &dyn Any).downcast_ref::<T>()
+ }
}
make_block_states! {