Custom Blocks
This is a startup script.
onEvent('block.registry', event => {
event.create('test_block')
.material('glass')
.hardness(0.5)
.displayName('Test Block') // No longer required in 1.18.2+
.tagBlock('minecraft:mineable/shovel') // Make it mine faster using a shovel in 1.18.2+
// Block with custom type (see below for list of types)
event.create('test_block_slab', 'slab').material('glass').hardness(0.5)
})
The texture for this block has to be placed in kubejs/assets/kubejs/textures/block/test_block.png
.
If you want a custom block model, you can create one in Blockbench and put it in kubejs/assets/kubejs/models/block/test_block.json
.
List of available materials - to change break/walk sounds and to change some properties.
Materials (1.18.2) |
air |
wood |
stone |
metal |
grass |
dirt |
water |
lava |
leaves |
plant |
sponge |
wool |
sand |
glass |
explosive |
ice |
snow |
clay |
vegetable |
dragon_egg |
portal |
cake |
web |
slime |
honey |
berry_bush |
lantern |
Other methods block builder supports:
- displayName('name') // Not required for 1.18.2+
- material('material') // See list above
- type('basic') // See available types below. Do not use for 1.18.2, use the syntax in the second example above
- hardness(float) // >= 0.0
- resistance(float) // >= 0.0
- unbreakable() // Sets the resistance to MAX_VALUE and hardness to -1, like bedrock
- lightLevel(int) // 0.0 - 1.0
- harvestTool('tool', level) // Available tools: pickaxe, axe, hoe, shovel, level >= 0 Not used in 1.18.2+, see example above
- opaque(boolean)
- fullBlock(boolean)
- requiresTool(boolean)
- renderType('type') // solid, cutout, translucent, cutout required for blocks with texture like glass, translucent required for blocks like stained glass
- color(tintindex, color)
- texture('texturepath')
- texture('side', 'texturepath')
- model('modelpath')
- noItem()
- box(x0, y0, z0, x1, y1, z1, true) // 0.0 - 16.0, default is (0,0,0,16,16,16, true)
- box(x0, y0, z0, x1, y1, z1, false) // Same as above, but in 0.0 - 1.0 scale, default is (0,0,0,1,1,1, false)
- noCollision()
- notSolid()
- waterlogged()
- noDrops()
- slipperiness(float) //
- speedFactor(float)
- jumpFactor(float)
- randomTick(randomTickEvent => {}) // see below
- item(itemBuilder => {})
- setLootTableJson(json)
- setBlockstateJson(json)
- setModelJson(json)
- noValidSpawns(boolean)
- suffocating(boolean)
- viewBlocking(boolean)
- redstoneConductor(boolean)
- transparent(boolean)
- defaultCutout() // batches a bunch of methods to make blocks such as glass
- defaultTranslucent() // similar to defaultCutout() but using translucent layer instead
- tagBlock('forge:something') // adds a block tag
- tagItem('forge:something_better') // adds an item tag
- tagBoth('forge:something') // adds both block and item tag
Event callbacks:
RandomTickEvent:
- BlockContainerJS block
- Random random
- LevelJS getLevel()
- ServerJS getServer()
Types
- basic
- detector
- slab
- stairs
- fence
- fence_gate
- wall
- wooden_pressure_plate
- stone_pressure_plate
- wooden_button
- stone_button
- falling
- crop