Used in Block Registry




#.displayName(value: TextComponent)

Sets the block's display name.

#.material(value: string)

(No longer supported in 1.20+, see mapColor and soundType below!)
Set the item's material to an available material from the Materials List:
Material List
  • 'air'
  • 'amethyst'
  • 'bamboo'
  • 'bamboo_sapling'
  • 'barrier'
  • 'bubble_column'
  • 'buildable_glass'
  • 'cactus'
  • 'cake'
  • 'clay'
  • 'cloth_decoration'
  • 'decoration'
  • 'dirt'
  • 'egg'
  • 'explosive'
  • 'fire'
  • 'froglight'
  • 'frogspawn'
  • 'glass'
  • 'grass'
  • 'heavy_metal'
  • 'ice'
  • 'ice_solid'
  • 'lava'
  • 'leaves'
  • 'metal'
  • 'moss'
  • 'nether_wood'
  • 'piston'
  • 'plant'
  • 'portal'
  • 'powder_snow'
  • 'replaceable_fireproof_plant'
  • 'replaceable_plant'
  • 'replaceable_water_plant'
  • 'sand'
  • 'sculk'
  • 'shulker_shell'
  • 'snow'
  • 'sponge'
  • 'stone'
  • 'structural_air'
  • 'top_snow'
  • 'vegetable'
  • 'water'
  • 'water_plant'
  • 'web'
  • 'wood'
  • 'wool'

#.mapColor(value: MapColor)

(1.20.1+ only)
Set block map color.

#.soundType(value: SoundType)

(1.20.1+ only)
Set block sound type. You can also use one of these shortcut methods:
  • .noSoundType()
  • .woodSoundType()
  • .stoneSoundType()
  • .gravelSoundType()
  • .grassSoundType()
  • .sandSoundType()
  • .cropSoundType()
  • .glassSoundType() BlockProperty)

Adds more blockstates to the block, like being waterlogged or facing a certain direction.

#.tagBlock(value: ID)

Adds a tag to the block, e.g 'namespace:tag_name'

#.tagItem(value: ID)

Adds a tag to the block's item, if it has one, e.g 'forge:storage_blocks/iron'

#.tagBoth(value: ID)

Adds both block and item tag if possible, e.g 'minecraft:planks'

#.hardness(value: float)

Sets the block's Hardness value. Used for calculating the time it takes for the block to be destroyed.

#.resistance(value: float)

Set's the block's resistance to things like explosions


Shortcut to set the resistance to MAX_VALUE and hardness to -1 (like bedrock)

#.lightLevel(value: float)

Sets the block's light level (0.0 - 1.0).

#.opaque(value: boolean)

Sets whether the block is opaque. Full, opaque blocks will not let light through.

#.fullBlock(value: boolean)

Sets whether the block renders as a full block. Full blocks have certain optimizations applied to them, such as not rendering terrain behind them. If you're using .box() to make a custom hitbox, please set this to false.

#.requiresTool(value: boolean)

If true, the block will use certain block tags to determine whether it should drop an item when mined. For example, a block tagged with #minecraft:mineable/axe, #minecraft:mineable/pickaxe, and #minecraft:needs_iron_tool would drop nothing unless it was mined with an axe or pickaxe that was at least iron level.

#.renderType(value: RenderType)

Sets the render type.

#.color(tintIndex: int, color: Color)

Recolors a block to a certain color

#.textureAll(value: ID)

Textures all 6 sides of the block to the same texture.
The path must look like kubejs:block/texture_name (which would be included under kubejs/assets/kubejs/textures/block/texture_name.png).
Defaults to kubejs:block/<block_name>

#.texture(side: Direction, texture: ID)

Texture one side by itself.

#.model(value: ID)

Specify a custom model.
The path must look like 'kubejs:block/texture_name' (which would be included under kubejs/assets/kubejs/models/block/texture_name.png).
Defaults to 'kubejs:block/<block_name>'.


Removes the associated item. Minecraft does this by default for a few blocks, like nether portal blocks. Use this if the player should never be able to hold or place the block. float, y0: float, z0: float, x1: float, y1: float, z1: float, scale16?: boolean)

scale16 boolean defaults to true.
Sets a custom hitbox for the block, affecting collision. You can use this multiple times to define a complex shape composed of multiple boxes.
Each box is a rectangular prism with corners at (x0, y0, z0) and (x1, y1, z1)
You will probably want to set up a custom block model that matches the shape you define here.
The final boolean determines the coordinate scale of the box. Passing in true will use the numbers 0-16, while passing in false will use coordinates ranging from 0.0 to 1.0


Removes the default full-block hitbox, allowing you to fall through the block.


Tells the renderer that the block isn't solid.


Allows the block to be waterloggable.


The block will not drop itself, even if mined with silk touch.

#.slipperiness(value: float)

Sets the slipperiness of the block. Affects how much entities slide while moving on it. Almost every block in Vanilla has a slipperiness value of 0.6, except slime (0.8) and ice (0.98).

#.speedFactor(value: float)

A modifier affecting how quickly players walk on the block.

#.jumpFactor(value: float)

A modifier affecting how high players can jump off the block.

#.randomTick(callback: Consumer<RandomTickEvent>)

A function to run when the block recieves a random tick.

#.item(item: Consumer<ItemBuilder>)

Modify certain properties of the block's item.
See Item Registry for more info.

#.setLootTableJson(value: json)

Pass in a custom loot table JSON directly

#.setBlockstateJson(value: json)

Pass in a custom blockstate JSON directly

#.setModelJson(value: json)

Pass in a custom model JSON directly

#.noValidSpawns(value: boolean)

If true, the block is not counted as a valid spawnpoint for entities

#.suffocating(value: boolean)

Whether the block will suffocate entities that have their head inside it

#.viewBlocking(value: boolean)

Whether the block counts as blocking a player's view.

#.redstoneConductor(value: boolean)

Sets whether the block will conduct redstone. True by default.

#.transparent(value: boolean)

Sets whether the block is transparent or not


Batches a bunch of methods to make blocks such as glass


similar to .defaultCutout() but using translucent layer instead