From 3573eb4ba04280cd25263fbe6e468b05036bc9cb Mon Sep 17 00:00:00 2001 From: mat Date: Sat, 28 May 2022 01:12:12 -0500 Subject: more block macro stuff --- azalea-block/src/behavior.rs | 9 +++++++++ azalea-block/src/blocks.rs | 9 +++++++-- azalea-block/src/lib.rs | 7 +++++-- 3 files changed, 21 insertions(+), 4 deletions(-) (limited to 'azalea-block/src') diff --git a/azalea-block/src/behavior.rs b/azalea-block/src/behavior.rs index 974260f2..949f3bd8 100644 --- a/azalea-block/src/behavior.rs +++ b/azalea-block/src/behavior.rs @@ -1,3 +1,12 @@ +#[derive(Default)] pub struct BlockBehavior { pub has_collision: bool, } + +impl BlockBehavior { + #[inline] + pub fn no_collision(mut self) -> Self { + self.has_collision = false; + self + } +} diff --git a/azalea-block/src/blocks.rs b/azalea-block/src/blocks.rs index 855de96b..d4339ada 100644 --- a/azalea-block/src/blocks.rs +++ b/azalea-block/src/blocks.rs @@ -1,5 +1,10 @@ +use crate::BlockBehavior; use block_macros::make_block_states; +pub trait Block { + fn behavior(&self) -> BlockBehavior; +} + make_block_states! { PROPERTIES => { Face { @@ -31,12 +36,12 @@ make_block_states! { }; } BLOCKS => { - acacia_button => BlockBehavior::new().no_collision(), { + acacia_button => BlockBehavior::default().no_collision(), { Face, Facing, Powered }; - acacia_door => BlockBehavior::new(), { + acacia_door => BlockBehavior::default(), { Facing, Half, Hinge, diff --git a/azalea-block/src/lib.rs b/azalea-block/src/lib.rs index 488e8e62..459b486e 100644 --- a/azalea-block/src/lib.rs +++ b/azalea-block/src/lib.rs @@ -1,2 +1,5 @@ -pub mod behavior; -pub mod blocks; +mod behavior; +mod blocks; + +pub use behavior::BlockBehavior; +pub use blocks::*; -- cgit v1.2.3