diff options
| author | mat <github@matdoes.dev> | 2022-05-28 01:16:32 -0500 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-05-28 01:16:32 -0500 |
| commit | 5ce6eb23bbca98e8b8d5c6db691dbbde08041335 (patch) | |
| tree | 53454ccb87adcb43f9df4f9fba8255814e3a43a5 | |
| parent | 3573eb4ba04280cd25263fbe6e468b05036bc9cb (diff) | |
| download | azalea-drasl-5ce6eb23bbca98e8b8d5c6db691dbbde08041335.tar.xz | |
impl From<BlockState> for &dyn Block {
| -rw-r--r-- | azalea-block/block-macros/src/lib.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/azalea-block/block-macros/src/lib.rs b/azalea-block/block-macros/src/lib.rs index 0ad5af34..4e82d39d 100644 --- a/azalea-block/block-macros/src/lib.rs +++ b/azalea-block/block-macros/src/lib.rs @@ -153,6 +153,7 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { let mut block_state_enum_variants = quote! {}; let mut block_structs = quote! {}; + let mut from_state_to_block_match = quote! {}; for block in &input.block_definitions.blocks { let block_property_names = &block .properties @@ -225,6 +226,17 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { #from_block_to_state_match_inner } => BlockState::#variant_name, }); + + // BlockState::AcaciaButton_FloorNorthTrue => &AcaciaButtonBlock { + // face: properties::Face::Floor, + // facing: properties::Facing::North, + // powered: properties::Powered::True, + // }, + from_state_to_block_match.extend(quote! { + BlockState::#variant_name => &#block_struct_name { + #from_block_to_state_match_inner + }, + }) } let block_behavior = &block.behavior; @@ -261,6 +273,16 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { } #block_structs + + impl From<BlockState> for &dyn Block { + fn from(b: BlockState) -> Self { + match b { + #from_state_to_block_match + } + } + } + + } .into() } |
