diff options
Diffstat (limited to 'azalea-block/src/blocks.rs')
| -rwxr-xr-x | azalea-block/src/blocks.rs | 11 |
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! { |
