# Create A Block ## Create Your Block Class JavaScript: ```javascript import { Identifier, BlockState, BlockSettings, ActionResult, CustomBlock, BuiltinRegistry } from 'minecraft'; const ironBlock = BuiltinRegistry.BLOCK.get(new Identifier('minecraft:iron_block')); class MyBlock extends CustomBlock { constructor() { super(new BlockSettings(ironBlock.getMaterial(), ironBlock.getMaterialColor())); } onUse(world, blockState, blockPos, side, player, hand) { world.setBlockState(blockPos.offset(side), BlockState.getDefaultState(new Identifier('minecraft:stone'))); return ActionResult.SUCCESS; } } ``` TypeScript: ```typescript import { Identifier, BlockState, BlockSettings, ActionResult, World, Pos, Hand, PlayerEntity, Direction, CustomBlock, BuiltinRegistry } from 'minecraft'; const ironBlock = BuiltinRegistry.BLOCK.get(new Identifier('minecraft:iron_block')); class MyBlock extends CustomBlock { constructor() { super(new BlockSettings(ironBlock.getMaterial(), ironBlock.getMaterialColor())); } onUse(world: World, blockState: BlockState, blockPos: Pos, side: Direction, player: PlayerEntity, hand: Hand): ActionResult { world.setBlockState(blockPos.offset(side), BlockState.getDefaultState(new Identifier('minecraft:stone'))); return ActionResult.SUCCESS; } } ``` ## Register Your Block ```javascript import { Registry, Identifier } from 'minecraft'; Registry.register(Registry.BLOCK, new Identifier('modid', 'my_block'), new MyBlock()); ``` ## Register Your Block Item ```javascript import { Registry, Identifier, BlockItem, ItemSettings } from 'minecraft'; Registry.register(Registry.ITEM, new Identifier('modid', 'my_block'), new BlockItem(new Identifier('modid', 'my_block'), new ItemSettings().itemGroup('building_blocks'))); ```