+++ block/[[ --BlockClassName-- ]].java @@@ create @@@ package [[ --packageNamespace-- ]].block; import javax.annotation.Nullable; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; public class [[ --BlockClassName-- ]] extends Block { public static final String NAME = "[[ --block_name-- ]]"; public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; protected static final VoxelShape SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D); public [[ --BlockClassName-- ]](Properties properties) { super(properties); this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); } @Override public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) { return SHAPE; } @Override protected void createBlockStateDefinition(StateDefinition.Builder blockState) { blockState.add(FACING); } @Override @Nullable public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); } } +++ block/ModBlocks.java @@@ after:@TemplateEntryPoint("Register Blocks") @@@ public static final RegistryObject [[ --BLOCK_NAME-- ]] = BLOCKS.register([[ --BlockClassName-- ]].NAME, () -> new [[ --BlockClassName-- ]](BlockBehaviour.Properties.of(Material.STONE) .requiresCorrectToolForDrops().strength(3.0F, 6.0F).sound([[ --SoundType-- ]]))); +++ item/ModItems.java @@@ after:@TemplateEntryPoint("Register Block Items") @@@ public static final RegistryObject [[ --BLOCK_NAME-- ]] = ITEMS.register([[ --BlockClassName-- ]].NAME, () -> new BlockItem(ModBlocks.[[ --BLOCK_NAME-- ]].get(), new Item.Properties().tab(CreativeModeTab.TAB_BUILDING_BLOCKS)));