aboutsummaryrefslogtreecommitdiff
path: root/azalea-block/src
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-block/src')
-rw-r--r--azalea-block/src/behavior.rs9
-rw-r--r--azalea-block/src/blocks.rs9
-rw-r--r--azalea-block/src/lib.rs7
3 files changed, 21 insertions, 4 deletions
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::*;