steel_core/behavior/blocks/building/
glazed_terracotta_block.rs1use steel_macros::block_behavior;
4use steel_registry::blocks::BlockRef;
5use steel_registry::blocks::block_state_ext::BlockStateExt;
6use steel_registry::blocks::properties::{BlockStateProperties, Direction, EnumProperty};
7use steel_utils::BlockStateId;
8
9use crate::behavior::block::BlockBehavior;
10use crate::behavior::context::BlockPlaceContext;
11
12#[block_behavior]
14pub struct GlazedTerracottaBlock {
15 block: BlockRef,
16}
17
18const HORIZONTAL_FACING: &EnumProperty<Direction> = &BlockStateProperties::HORIZONTAL_FACING;
19
20impl GlazedTerracottaBlock {
21 #[must_use]
23 pub const fn new(block: BlockRef) -> Self {
24 Self { block }
25 }
26}
27
28impl BlockBehavior for GlazedTerracottaBlock {
29 fn get_state_for_placement(&self, context: &BlockPlaceContext<'_>) -> Option<BlockStateId> {
30 Some(
31 self.block
32 .default_state()
33 .set_value(HORIZONTAL_FACING, context.horizontal_direction().opposite()),
34 )
35 }
36}