package de.ellpeck.actuallyadditions.mod.blocks.base; import net.minecraft.core.Direction; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; /** * Wrapper for Directional block states extending from our base blocks. It's not super nice but it'll do. */ public abstract class DirectionalBlock extends BlockBase { public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public DirectionalBlock(Properties properties) { super(properties); } @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); } @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING); } public abstract static class Container extends BlockContainerBase { public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public Container(Properties properties) { super(properties); this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); } @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); } @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING); } } }