Block Components
- Applying Components
- List of Vanilla Components
- Collision Box
- Crafting Table
- Destructible by Explosion
- Destructible by Mining
- Destruction Particles
- Display Name
- Entity Fall On
- Flammable
- Friction
- Geometry
- Item Visual
- Light Dampening
- Light Emission
- Liquid Detection
- Loot
- Map Color
- Material Instances
- Placement Filter
- Redstone Conductivity
- Replaceable
- Selection Box
- Tick
- Transformation
FORMAT & MIN ENGINE VERSION 1.21.90
Using the latest format version when creating custom blocks provides access to fresh features and improvements. The wiki aims to share up-to-date information about custom blocks, and currently targets format version 1.21.90
.
OVERRIDING COMPONENTS
Only one instance of each component can be active at once. Duplicate components will be overridden by the latest "permutations" array entry.
Block components are used to change how your block appears and functions in the world.
Applying Components
Block components can be directly applied in the components
child of minecraft:block
, or per block permutation.
{
"format_version": "1.21.90",
"minecraft:block": {
"description": {
"identifier": "wiki:lamp",
"menu_category": {
"category": "items"
}
},
"components": {
"minecraft:light_dampening": 0,
"minecraft:light_emission": 15,
"minecraft:map_color": [210, 200, 190],
"minecraft:geometry": {
"identifier": "geometry.lamp",
"culling": "wiki:culling.lamp"
},
"minecraft:material_instances": {
"*": {
"texture": "wiki:lamp"
},
"shade": {
"texture": "wiki:lamp_shade"
}
}
}
}
}
List of Vanilla Components
Collision Box
Defines the area of the block that entities and blocks collide with.
Requires format version 1.19.50 or later.
Boolean Definition
- When
true
(default), a 16×16×16 collision box is used. - When
false
, the block's collision with entities is disabled.
"minecraft:collision_box": true
Object Definition
origin
: Vector [x, y, z]- Bottom north-western corner of the collision box.
- Measured in pixels from the bottom center of the block unit.
- Must be in the range
[-8, 0, -8]
to[8, 16, 8]
.
size
: Vector [x, y, z]- Size of each side of the collision box.
- Measured in pixels from the
origin
of the collision box. - The sum of
origin
andsize
must be in the range[-8, 0, -8]
to[8, 16, 8]
.
"minecraft:collision_box": {
"origin": [-8, 0, -8],
"size": [16, 16, 16]
}
Crafting Table
Turns your block into a crafting table, opening a functional crafting interface when interacted with.
Requires format version 1.19.50 or later.
Object Definition
crafting_tags
: String Array (required)- Determines which recipes can be used by this crafting table.
- Recipes with any of the defined tags can be used in the crafting table.
- Custom tags should include a namespace (such as
wiki:workbench
) and can be up to 64 characters long. - A maximum of 64 tags can be included.
table_name
: String (optional)- Specifies the language file key that maps to what text will be displayed above the crafting grid in the crafting table's interface.
- If a translation for the given string can not be resolved, the raw string will be displayed.
- If this field is omitted, the name displayed will default to the block's display name.
"minecraft:crafting_table": {
"table_name": "Wiki Workbench",
"crafting_tags": [
"crafting_table",
"wiki:workbench"
]
}
Destructible by Explosion
Determines whether the block can be destroyed by explosions.
Requires format version 1.19.20 or later.
Boolean Definition
- When
true
(default), the block has an explosion resistance of0
. - When
false
, the block cannot be destroyed by explosions.
"minecraft:destructible_by_explosion": false
Object Definition
explosion_resistance
: Float (required)- Defines how resistant the block is to being destroyed by explosions.
- Greater resistance reduces the chance of the block being destroyed when near an explosion.
"minecraft:destructible_by_explosion": {
"explosion_resistance": 20
}
Destructible by Mining
Determines how long it takes for players to mine the block.
Requires format version 1.19.20 or later.
Boolean Definition
- When
true
(default), the block will be destroyed instantly when mined. - When
false
, the block cannot be destroyed by mining it.
"minecraft:destructible_by_mining": false
Object Definition
seconds_to_destroy
: Float- Determines the "hardness" value of the block.
- Greater numbers result in greater mining times.
SECONDS TO DESTROY
The name of the seconds_to_destroy
parameter is misleading. While the name suggests that this parameter determines how many seconds it takes to destroy the block, in reality the parameter sets the "hardness" value of the block.
By default, the number of seconds it takes to destroy a custom block is 1.5× its hardness.
"minecraft:destructible_by_mining": {
"seconds_to_destroy": 20
}
Destruction Particles
Determines the appearance of the particles created when hitting, destroying, stepping on and falling onto blocks.
Object Definition
texture
: String (optional)- Specifies the texture atlas shortname to use from
RP/textures/terrain_texture.json
. - By default, particles will use the texture of the
down
material instance (or*
if not specified).
- Specifies the texture atlas shortname to use from
tint_method
: String (optional)- Specifies the tint method used to tint the
texture
based on the biome the block is placed in.
- Specifies the tint method used to tint the
"minecraft:destruction_particles": {
"texture": "wiki:particle_texture",
"tint_method": "grass"
}
Display Name
The language file key that determines text that will be displayed when you hover over the block in your inventory and hotbar.
- If the given string does not have a translation, the raw string will be displayed.
- Minecraft may revert to using
tile.<identifier>.name
in some scenarios, such as in the "can place on" tooltip.
Requires format version 1.19.60 or later.
String Definition
"minecraft:display_name": "tile.wiki:custom_block.name"
tile.wiki:custom_block.name=Custom Block
Entity Fall On
Causes an entity fall on event to be triggered when an entity falls onto the block.
Requires format version 1.21.10 or later.
Object Definition
min_fall_distance
: Float- The minimum distance (in blocks) that an entity must fall in order to trigger the event.
"minecraft:entity_fall_on": {
"min_fall_distance": 5
}
Flammable
Determines how flammable the block is.
Requires format version 1.19.10 or later.
Boolean Definition
When true
, the block will be able to catch on fire naturally from neighbors. When false
(default), the block will not be able to catch on fire naturally from neighbors, but it can still be directly ignited.
"minecraft:flammable": true
Object Definition
catch_chance_modifier
: Integer- Affects chance that this block will catch flame when next to a fire.
- When 0, fire on the block will eventually burn out.
- When greater than 0, fire will continue to burn until the block is destroyed (or it will burn forever if the
destroy_chance_modifier
is 0). - By default, this is set to 5 which is the same as vanilla planks.
destroy_chance_modifier
: Integer- Affects chance that this block will be destroyed by flames when on fire.
"minecraft:flammable": {
"catch_chance_modifier": 5,
"destroy_chance_modifier": 20
}
Friction
Determines how much an entity is slowed down when moving on top of the block (0.0-0.9).
Requires format version 1.19.20 or later.
Float Definition
"minecraft:friction": 0.4
Geometry
Determines the geometry of this block and any culling rules that should be applied. The geometry of blocks can also be set to any of the vanilla block models.
Custom block model limitations:
Your block is limited to 30×30×30 pixels in size.
At least 1 pixel of your block on each axis must be contained within 16×16×16 block unit.
The absolute bounds of the position of your 30×30×30 block are 30 pixels in each direction from the origin. Your block can be placed in any position within these bounds, as long as it adheres to rule #2.
Requires format version 1.21.10 or later.
String Definition
"minecraft:geometry": "geometry.example_block"
Object Definition
identifier
: String (required)- The identifier of the geometry.
bone_visibility
: Object (optional)- A key-value map determining which bones in a model are visible.
- All bones are visible by default, meaning a value of
true
is redundant. - Keys represent bone names (these do not support wildcards — you must specify the exact bone name)
- Values can either be a boolean or Molang expression string determining whether the bone is visible
- Molang expressions must adhere to permutation condition limitations.
culling
: String (optional)- Determines the identifier of the culling rules that should be applied to the geometry.
- Culling identifiers should take the form
<namespace>:culling.<name>
.
culling_layer
: String- Determines the culling layer identifier to be checked for by the
same_culling_layer
culling rule condition. - Culling layer identifiers should take the form
<namespace>:culling_layer.<name>
. - When using the
minecraft
namespace, the only allowed culling layer identifiers areminecraft:culling_layer.undefined
andminecraft:culling_layer.leaves
.
- Determines the culling layer identifier to be checked for by the
"minecraft:geometry": {
"identifier": "geometry.example_block",
"culling": "wiki:culling.example_block",
"bone_visibility": {
"wiki_bone": false,
"conditional_bone": "q.block_state('wiki:example_state') == 3",
"another_bone": true
}
}
Item Visual
Determines how this block is displayed as an item.
Requires format version 1.21.60 or later.
Object Definition
geometry
: String/Object- The displayed geometry component.
material_instances
: Object- The displayed material instances component.
"minecraft:item_visual": {
"geometry": "minecraft:geometry.full_block",
"material_instances": {
"*": {
"texture": "wiki:block_texture"
}
}
}
Light Dampening
Determines the maximum number of light levels (0-15) that will be dampened when passing through the block, in a range.
Requires format version 1.19.10 or later.
Integer Definition
"minecraft:light_dampening": 15
Light Emission
Determines the integer light level (0-15) emitted by the block.
Requires format version 1.19.20 or later.
Integer Definition
"minecraft:light_emission": 10
Liquid Detection
Determines how this blocks behaves with different types of liquid.
Requires format version 1.21.60 or later.
Object Definition
detection_rules
: Arrayliquid_type
: String- Which type of liquid this rule applies to. Currently only
water
is supported.
- Which type of liquid this rule applies to. Currently only
can_contain_liquid
: Boolean- Whether the liquid type can occupy the same space as this block e.g., waterlogging.
on_liquid_touches
: String- Determines what happens when the liquid type flows into the block.
blocking
(default) prevents the liquid from flowing.broken
causes the block is broken.no_reaction
allows the liquid to flow through the block.popped
causes the block to be popped off, dropping its loot.
stops_liquid_flowing_from_direction
: Array- Determines an array of directions that the liquid cannot flow out of this block from.
- If
on_liquid_touches
is set tono_reaction
, this array also determines the directions that the liquid cannot flow into this block from.
"minecraft:liquid_detection": {
"detection_rules": [
{
"liquid_type": "water",
"can_contain_liquid": true, // Waterloggable
"on_liquid_touches": "no_reaction" // Water flows through the block like air
}
]
}
Loot
The path of the loot table to drop when the block is destroyed (ignored when a tool with the "Silk Touch" enchantment is used). If omitted, the block is dropped as an item.
Loot Definition
"minecraft:loot": "loot_tables/blocks/custom_block.json"
Map Color
Defines a block's appearance when viewed on maps. If omitted, the block is ignored by maps.
String Definition
A hex string (starting with a #
) defining the #RRGGBB
color of the block on a map.
"minecraft:map_color": "#FFFFFF"
Array Definition
An array of 3 integers (0-255) defining the [R, G, B]
color of the block on a map.
"minecraft:map_color": [255, 255, 255]
Object Definition
color
: String- A hex string (starting with a
#
) defining the#RRGGBB
color of the block on a map.
- A hex string (starting with a
tint_method
: String (optional)- Specifies the tint method used to tint the
color
based on the biome the block is placed in.
- Specifies the tint method used to tint the
"minecraft:map_color": {
"color": "#FFFFFF",
"tint_method": "grass"
}
Material Instances
Configuration of your block's rendering, including textures and lighting. The *
instance is the default instance for all cube faces.
Requires format version 1.19.40 or later.
Known Issues:
- All instances must have the same render method (MCPE-190430).
- Block faces will unconditionally darken if intersecting another block.
- By default, the texture of the
down
(or*
if not specified) instance should be used for destruction particles however this does not currently work correctly (MCPE-219143).
"minecraft:material_instances": {
// Instance names "up", "down", "north", "east", "south" and "west" are built in.
"*": {
"texture": "wiki:texture_name", // Shortname defined in "RP/textures/terrain_texture.json".
"render_method": "blend", // One of the render methods in the following tables.
"tint_method": "grass", // Tint the texture based on the biome the block is placed in.
"ambient_occlusion": true, // Defaults to true (1.0); should shadows be created based on surrounding blocks? Floats determine ambient occlusion intensity.
"face_dimming": true, // Defaults to true; should faces with this material be dimmed by their direction?
"isotropic": true // Causes the texture to randomly be rotated based on the block's position.
}
}
Render Methods
Render methods essentially control how a block appears in the world, much like entity materials. Below are the key properties of each type:
Render Method | Transparency | Translucency | Backface Culling | Distant Culling | Vanilla Examples |
---|---|---|---|---|---|
alpha_test | ✔️ | ❌ | ❌ | ✔️ | Vines, Rails, Saplings |
alpha_test_single_sided | ✔️ | ❌ | ✔️ | ✔️ | Doors, Trapdoors |
blend | ✔️ | ✔️ | ✔️ | ❌ | Glass, Beacon, Honey Block |
double_sided | ❌ | ❌ | ❌ | ❌ | N/A - Use for opaque 2D plains |
opaque (default) | ❌ | ❌ | ✔️ | ❌ | Dirt, Stone, Concrete |
- Transparency - fully see-through areas.
- Translucency - semi-transparent areas.
- Backface Culling - faces become invisible when viewed from behind.
- Distant Culling - faces become invisible after reaching half the render distance.
Distance-Based Render Methods
WARNING
Material instances using the following render methods will currently not actually turn opaque at a distance.
Render Method | Near Appearance | Far Appearance | Vanilla Examples |
---|---|---|---|
alpha_test_to_opaque | alpha_test | opaque | Leaves |
alpha_test_single_sided_to_opaque | alpha_test_single_sided | opaque | Kelp |
blend_to_opaque | blend | opaque | N/A |
- Near Appearance - the render method used before reaching half the render distance.
- Far Appearance - the render method used after reaching half the render distance.
Custom Material Instance Names
TIP
Custom material instance names can be defined on the faces of cubes within Blockbench by right-clicking on a cube and opening its Material Instances
.
Learn more about applying different material instances here!
Custom instance names can be defined within material instances, and can be referenced by built-in instance names, or within the block model.
"minecraft:material_instances": {
"*": {
"texture": "wiki:texture_name",
"render_method": "blend" // Must match other instances due to bug
},
// Custom instance name
"end": {
"texture": "wiki:texture_name_end",
"render_method": "blend" // Must match other instances due to bug
},
"up": "end",
"down": "end",
// Instance name defined in model:
"flower": {
"texture": "wiki:texture_name_flower",
"render_method": "blend" // Must match other instances due to bug
}
}
Placement Filter
Determines the placement conditions that a block must be in to be able to survive. If none of the specified conditions are met, the block will not be placed; or if the block is already placed, it will pop off as an item.
Requires format version 1.19.60 or later.
Object Definition
conditions
: Array- List of condition objects specifying places where the block can be placed and survive without popping off as an item.
- A maximum of 64 conditions can be included.
allowed_faces
: Array- The block faces that the block can be placed on
- Can include
all
,side
,up
,down
,north
,south
,west
andeast
.
block_filter
: Array- Array of block descriptors that the block can be placed against in the
allowed_faces
direction. - See this page for a list of vanilla tags and relevant blocks.
- A maximum of 64 block descriptors can be included.
- Array of block descriptors that the block can be placed against in the
"minecraft:placement_filter": {
"conditions": [
{
"allowed_faces": ["up"], // Must be placed on the top of any of the following blocks
"block_filter": [
"minecraft:dirt",
{
"name": "minecraft:sand",
"states": {
"sand_type": "red"
}
},
{
"tags": "!q.any_tag('minecraft:crop', 'wiki:tag')"
}
]
}
]
}
Redstone Conductivity
Defines a block's ability to conduct redstone power.
Requires format version 1.21.40 or later.
Object Definition
redstone_conductor
: Boolean- Determines whether this block conducts direct redstone power.
allows_wire_to_step_down
: Boolean- Determines whether redstone wire can travel down the side of this block.
"minecraft:redstone_conductivity": {
"redstone_conductor": true,
"allows_wire_to_step_down": false
}
Replaceable
Allows this block to be replaced by attempting to place another block in its position. Does not allow the block to be replaced by a block of the same permutation.
Object Definition
"minecraft:replaceable": {}
Selection Box
Defines the area of the block that can be selected by players.
Requires format version 1.19.60 or later.
Boolean Definition
- When
true
(default), a 16×16×16 selection box is used. - When
false
, the block cannot be selected by players.
"minecraft:selection_box": true
Object Definition
origin
: Vector [x, y, z]- Bottom north-western corner of the selection box.
- Measured in pixels from the bottom center of the block unit.
- Must be in the range
[-8, 0, -8]
to[8, 16, 8]
.
size
: Vector [x, y, z]- Size of each side of the selection box.
- Measured in pixels from the
origin
of the selection box. - The sum of
origin
andsize
must be in the range[-8, 0, -8]
to[8, 16, 8]
.
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 16, 16]
}
Tick
Causes the block to tick after a random delay in the range specified by interval_range
.
Requires format version 1.21.10 or later.
Object Definition
interval_range
: Range [min, max]- Two durations (in ticks) which will be used as the minimum and maximum delays for randomness.
looping
: Boolean- Whether this block should continuously tick, rather than only ticking once.
"minecraft:tick": {
"interval_range": [10, 20],
"looping": true
}
Transformation
Determines the transformation of the block's geometry, collision box and selection box.
Transformed models must not exceed the block geometry limits.
Requires format version 1.21.0 or later.
TIP
Lean about rotatable blocks to apply rotation based on how the block is placed, just like furnaces and mob heads!
Object Definition
rotation
: Vector [x, y, z]- The number of degrees to rotate the geometry by on each axis.
- Must be in increments of 90 (negative for anticlockwise rotation).
rotation_pivot
: Vector [x, y, z]- The pivot point (in block units) to rotate the block on.
- By default, rotation is around the center of the block.
scale
: Vector [x, y, z]- The factor to scale the geometry by on each axis.
scale_pivot
: Vector [x, y, z]- The pivot point (in block units) to scale the block on.
- By default, scale is from the center of the block.
translation
: Vector [x, y, z]- The number of block units to offset the geometry by on each axis.
"minecraft:transformation": {
"translation": [-5, 8, 0 ],
"rotation": [90, 180, 0],
"rotation_pivot": [0, 0, 0],
"scale": [0.5, 1, 0.5],
"scale_pivot": [0, 0, 0]
}
Contributors
Edit Block Components on GitHubText and image content on this page is licensed under the Creative Commons Attribution 4.0 International License
Code samples on this page are licensed under the MIT License