Skip to content

2. Adding blocks and items

Martijn Muijsers edited this page May 26, 2026 · 8 revisions

Let's add our own blocks and items!

This assumes you've already done the project setup.


Adding blocks

Each block is added with a single data pack file: data/<namespace>/block/<id>.json.

For example, if you want to create a block dyed_planks:green_planks, you create this file:

src/
└── main/
    └── resources/
        └── data_pack/
            └── data/
                └── dyed_planks/
                    └── block/
                        └── green_planks.json

Here is a quick example for a green_plank_stairs.json:

{
  "type": "minecraft:stair",

  "base_state": "dyed_planks:green_planks",

  "properties": {
    "destroy_time": 2.0,
    "explosion_resistance": 3.0,
    "ignited_by_lava": true,
    "instrument": "minecraft:bass",
    "map_color": "minecraft:color_light_green",
    "sound_type": "minecraft:wood"
  },

  "mappings": [
    {
      "type": "stairs",
      "fallback": "minecraft:warped_planks"
    }
  ]
}

The JSON contains 4 parts:

  • A type
  • Some additional values based on the type (for example, the full block for stairs, or the particles of leaves)
  • properties
  • mappings

Detailed explanation of the 4 parts:

  • The type of the block.
    This determines the block states of the block, and also includes some behavior.

    Expand the list of possible types

    Below are all possible block types.

    Some types require additional values (see further below for explanation).
    Some types have default values for some properties that are different from the regular defaults (see further below for explanation).
    Some types have a recommended mapping type (see further below for explanation).

    All types work. Types with 🧩 have been tested to also work for vanilla clients. Other types have not been tested yet.

    • minecraft:block 🧩

      A full-cube block.

      Recommended mapping type: full_block


    • minecraft:air

      Air.

      ⚠️ Not recommended to be used, because Minecraft treats air as a special type.

    • minecraft:amethyst

      An amethyst block.

      Recommended mapping type: full_block

    • minecraft:amethyst_cluster

      An amethyst cluster.

      Required additional values:

      • height The height of the cluster (a float in the range [0, 16])
      • width The width of the cluster (a float in the range [0, 16])
    • minecraft:anvil
    • minecraft:attached_stem

      Required additional values:

      • fruit The fruit block (a block, e.g. minecraft:melon)
      • seed The seed item (an item, e.g. minecraft:melon_seeds)
      • stem The non-attached stem block (a block, e.g. minecraft:melon_stem)
    • minecraft:azalea
    • minecraft:bamboo_sapling
    • minecraft:bamboo_stalk
    • minecraft:banner

      Required additional values:

      • color The color (one of: black, blue, brown, cyan, gray, green, light_blue, light_gray, lime, magenta, orange, pink, purple, red, white, yellow)
    • minecraft:barrel 🧩

      A barrel.

      Recommended mapping type: barrel

    • minecraft:barrier
    • minecraft:base_coral_fan
    • minecraft:base_coral_plant
    • minecraft:base_coral_wall_fan
    • minecraft:beacon
    • minecraft:bed

      Required additional values:

      • color The color (one of: black, blue, brown, cyan, gray, green, light_blue, light_gray, lime, magenta, orange, pink, purple, red, white, yellow)
    • minecraft:beehive

      A beehive.

      Recommended mapping type: full_block

    • minecraft:beetroot
    • minecraft:bell
    • minecraft:big_dripleaf
    • minecraft:big_dripleaf_stem
    • minecraft:blast_furnace 🧩

      A blast furnace.

      Recommended mapping type: furnace

    • minecraft:brewing_stand
    • minecraft:brushable 🧩

      A brushable block, such as suspicious sand.

      Required additional values:

      • brush_completed_sound The sound when brushing is completed (an entry in the minecraft:sound_event registry, e.g. minecraft:item.brush.brushing.gravel)
      • brush_sound The sound while brushing (an entry in the minecraft:sound_event registry, e.g. minecraft:item.brush.brushing.gravel)
      • turns_into The block to turn into after brushing (a block, e.g. minecraft:gravel)

      Recommended mapping type: brushable

    • minecraft:bubble_column
    • minecraft:budding_amethyst

      A budding amethyst block.

      Recommended mapping type: full_block

    • minecraft:bush
    • minecraft:button 🧩

      A button.

      Required additional values:

      • block_set_type The block set that this button is a part of (one of: acacia bamboo, birch, cherry, copper, crimson, dark_oak, gold, iron, jungle, mangrove, oak, pale_oak, polished_blackstone, spruce, stone, warped)
      • ticks_to_stay_pressed The number of ticks that the button stays pressed (an integer in the range [1, 1024])

      Default properties:

      "has_collision": false,
      "explosion_resistance": 0.5,
      "destroy_time": 0.5,
      "push_reaction": "minecraft:destroy"

      Not default, but recommended properties for wooden buttons:

      "sound_type": "minecraft:wood",
      "ignited_by_lava": true

      Recommended mapping type: button

    • minecraft:cactus
    • minecraft:cactus_flower
    • minecraft:cake
    • minecraft:calibrated_sculk_sensor
    • minecraft:campfire

      A campfire.

      Required additional values:

      • fire_damage The fire damage this campfire does (an integer in the range [0, 1000])
      • spawn_particles Whether this campfire spawns particles (true or false)
    • minecraft:candle_cake

      A candle cake.

      Required additional values:

      • candle The candle block (a block, e.g. minecraft:green_candle)
    • minecraft:candle
    • minecraft:carpet
    • minecraft:carrot
    • minecraft:cartography_table 🧩

      A cartography table.

      Recommended mapping type: full_block

    • minecraft:cauldron
    • minecraft:cave_vines
    • minecraft:cave_vines_plant
    • minecraft:ceiling_hanging_sign

      Required additional values:

      • wood_type The wood type (one of: acacia, bamboo, birch, cherry, crimson, dark_oak, jungle, mangrove, oak, pale_oak spruce, warped)
    • minecraft:chain 🧩

      A chain.

      Recommended mapping type: chain

    • minecraft:chest

      A chest.

      Required additional values:

      • close_sound The sound when closing the chest (an entry in the minecraft:sound_event registry, e.g. minecraft:block.chest.close)
      • open_sound The sound when opening the chest (an entry in the minecraft:sound_event registry, e.g. minecraft:block.chest.open)
    • minecraft:chiseled_book_shelf 🧩

      A chiseled bookshelf.

      Recommended mapping type: chiseled_bookshelf

    • minecraft:chorus_flower

      Required additional values:

      • plant The corresponding plant block (a block, e.g. minecraft:chorus_plant)
    • minecraft:chorus_plant
    • minecraft:cocoa
    • minecraft:colored_falling 🧩

      A falling block with falling dust that has a specific color.

      Required additional values:
      • falling_dust_color The color of the falling particles (an ARGB color integer, e.g. 4294901760)

      Recommended mapping type: full_block

    • minecraft:command

      Required additional values:

      • automatic Whether this command block is automatic (true or false) (is only true in vanilla for minecraft:chain_command_block)
    • minecraft:comparator
    • minecraft:composter
    • minecraft:concrete_powder 🧩

      A concrete powder block.

      Required additional values:

      • concrete The corresponding concrete block (a block, e.g. minecraft:green_concrete)

      Recommended mapping type: full_block

    • minecraft:conduit
    • minecraft:copper_bulb_block

      A copper bulb.

    • minecraft:copper_chest

      A copper chest.

      Required additional values:

      • close_sound The sound when closing the chest (an entry in the minecraft:sound_event registry, e.g. minecraft:block.chest.close)
      • open_sound The sound when opening the chest (an entry in the minecraft:sound_event registry, e.g. minecraft:block.chest.open)
      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)
    • minecraft:copper_golem_statue

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)
    • minecraft:coral 🧩

      An alive coral block.

      Required additional values:

      • dead The corresponding dead coral block (a block, e.g. minecraft:dead_brain_coral_block)

      Recommended mapping type: full_block

    • minecraft:coral_fan

      Required additional values:

      • dead The corresponding dead coral fan block (a block, e.g. minecraft:dead_brain_coral_fan)
    • minecraft:coral_plant

      Required additional values:

      • dead The corresponding dead coral plant block (a block, e.g. minecraft:dead_brain_coral)
    • minecraft:coral_wall_fan

      Required additional values:

      • dead The corresponding dead coral wall fan block (a block, e.g. minecraft:dead_brain_coral_wall_fan)
    • minecraft:crafter
    • minecraft:crafting_table 🧩

      A crafting table.

      Recommended mapping type: full_block

    • minecraft:creaking_heart
    • minecraft:crop
    • minecraft:crying_obsidian 🧩

      Crying obsidian.

      Recommended mapping type: full_block

    • minecraft:daylight_detector
    • minecraft:dry_vegetation
    • minecraft:decorated_pot
    • minecraft:detector_rail
    • minecraft:dirt_path
    • minecraft:dispenser
    • minecraft:door 🧩

      A door.

      Required additional values:

      • block_set_type The block set that this button is a part of (one of: acacia bamboo, birch, cherry, copper, crimson, dark_oak, gold, iron, jungle, mangrove, oak, pale_oak, polished_blackstone, spruce, stone, warped)

      Default properties:

      "can_occlude": false,
      "push_reaction": "minecraft:destroy"

      Not default, but recommended properties for wooden doors:

      "sound_type": "minecraft:wood",
      "explosion_resistance": 3.0,
      "destroy_time": 3.0,
      "ignited_by_lava": true,
      "instrument": "minecraft:bass"

      Recommended mapping type: door

    • minecraft:double_plant
    • minecraft:dragon_egg
    • minecraft:dried_ghast
    • minecraft:drop_experience

      Required additional values:

      • experience The amount of experience dropped (an integer providing returning a result between 0 and 10, e.g. {"value": 2} or {"min_inclusive": 0, "max_inclusive": 3})
    • minecraft:dropper
    • minecraft:enchantment_table
    • minecraft:ender_chest
    • minecraft:end_gateway
    • minecraft:end_portal
    • minecraft:end_portal_frame
    • minecraft:end_rod
    • minecraft:eyeblossom

      Required additional values:

      • open Whether the blossom is open (true or false)
    • minecraft:farm
    • minecraft:bonemealable_feature_placer

      Required additional values:

      • feature The feature that will be placed (an entry in the minecraft:worldgen/configured_feature registry, e.g. minecraft:azalea_tree)
    • minecraft:fence

      A fence.

      Default properties:

      "force_solid_on": true

      Not default, but recommended properties for wooden fences:

      "sound_type": "minecraft:wood",
      "explosion_resistance": 3.0,
      "destroy_time": 2.0,
      "ignited_by_lava": true,
      "instrument": "minecraft:bass"

      Recommended mapping type: fence

    • minecraft:fence_gate 🧩

      A fence gate.

      Required additional values:

      • wood_type The wood type (one of: acacia, bamboo, birch, cherry, crimson, dark_oak, jungle, mangrove, oak, pale_oak spruce, warped)

      Default properties:

      "force_solid_on": true

      Not default, but recommended properties for wooden fence gates:

      "sound_type": "minecraft:wood",
      "explosion_resistance": 3.0,
      "destroy_time": 2.0,
      "ignited_by_lava": true,
      "instrument": "minecraft:bass"

      Recommended mapping type: fence_gate

    • minecraft:fire
    • minecraft:firefly_bush
    • minecraft:flower

      Required additional values:

      • suspicious_stew_effects The effects that this flower gives when used to make a suspicious stew (a list of suspicious stew effects, where each effect has an id (an entry in the minecraft:mob_effect registry) and an optional duration (default is 160 ticks), e.g. [{"id": "minecraft:slowness"}, {"id": "minecraft:mining_fatigue", "duration": 320}])
    • minecraft:flower_pot

      An empty or filled flower pot.

      Required additional values:

      • potted The corresponding flower block (a block, e.g. minecraft:poppy)

      Default properties:

      "explosion_resistance": 0.0,
      "destroy_time": 0.0,
      "can_occlude": false,
      "push_reaction": "minecraft:destroy"

      Recommended mapping type: flower_pot

    • minecraft:frogspawn
    • minecraft:frosted_ice
    • minecraft:furnace 🧩

      A furnace.

      Recommended mapping type: furnace

    • minecraft:glazed_terracotta 🧩

      A glazed terracotta block.

      Recommended mapping type: glazed_terracotta

    • minecraft:glow_lichen
    • minecraft:grass
    • minecraft:grindstone
    • minecraft:half_transparent
    • minecraft:hanging_moss
    • minecraft:hanging_roots
    • minecraft:hay 🧩

      A hay block.

      Recommended mapping type: full_block

    • minecraft:heavy_core
    • minecraft:honey
    • minecraft:hopper
    • minecraft:huge_mushroom
    • minecraft:ice
    • minecraft:infested 🧩

      An infested block, such as infested stone bricks.

      Required additional values:

      • host The non-infested block (a block, e.g. minecraft:stone_bricks)

      Recommended mapping type: full_block

    • minecraft:infested_rotated_pillar 🧩

      An infested rotated pillar, such as infested deepslate.

      Required additional values:

      • host The non-infested block (a block, e.g. minecraft:deepslate)

      Recommended mapping type: rotated_pillar

    • minecraft:iron_bars
    • minecraft:jack_o_lantern 🧩

      A jack o'lantern.

      Recommended mapping type: pumpkin

    • minecraft:jigsaw
    • minecraft:jukebox
    • minecraft:kelp
    • minecraft:kelp_plant
    • minecraft:ladder 🧩

      A ladder.

      Default properties:

      "sound_type": "minecraft:ladder",
      "explosion_resistance": 0.4,
      "destroy_time": 0.4,
      "can_occlude": false,
      "force_solid_off": true

      Recommended mapping type: ladder

    • minecraft:lantern
    • minecraft:lava_cauldron
    • minecraft:layered_cauldron

      Required additional values:

      • interactions The type of changes that happen when the cauldron is interacted with (one of: empty, lava, powder_snow, water)
      • precipitation How the contents of the cauldron behave, for example when an entity is inside the cauldron (one of: none, rain, snow)
    • minecraft:leaf_litter
    • minecraft:lectern
    • minecraft:lever
    • minecraft:light
    • minecraft:lightning_rod
    • minecraft:liquid

      Required additional values:

      • fluid The fluid of this liquid (an entry in the minecraft:fluid registry: one of minecraft:flowing_lava, minecraft:flowing_water, minecraft:lava, minecraft:water)
    • minecraft:loom 🧩

      A loom.

      Recommended mapping type: loom

    • minecraft:magma 🧩

      A magma block.

      Recommended mapping type: full_block

    • minecraft:mangrove_leaves 🧩

      Mangrove leaves.

      Required additional values:

      • leaf_particle_chance The chance of leaf particles spawning in any tick (a float in the range [0, 1])

      Default properties:

      "map_color": "minecraft:plant",
      "sound_type": "minecraft:grass",
      "explosion_resistance": 0.2,
      "destroy_time": 0.2,
      "is_randomly_ticking": true,
      "can_occlude": false,
      "ignited_by_lava": true,
      "push_reaction": "minecraft:destroy",
      "is_redstone_conductor": "minecraft:never",
      "is_suffocating": "minecraft:never",
      "is_view_blocking": "minecraft:never"

      Recommended mapping type: leaves

    • minecraft:mangrove_propagule

      A mangrove propagule.

      Required additional values:

      • tree The type of tree grown (one of: acacia, azalea, birch, cherry, dark_oak, jungle, mangrove, oak, pale_oak spruce)

      Default properties:

      "map_color": "minecraft:plant",
      "has_collision": false,
      "sound_type": "minecraft:grass",
      "explosion_resistance": 0.0,
      "destroy_time": 0.0,
      "is_randomly_ticking": true,
      "can_occlude": false,
      "push_reaction": "minecraft:destroy",
      "offset_function": "minecraft:xz"
    • minecraft:mangrove_roots
    • minecraft:mossy_carpet
    • minecraft:moving_piston
    • minecraft:mud 🧩

      A mud block.

      Recommended mapping type: full_block

    • minecraft:multiface
    • minecraft:mushroom

      Required additional values:

      • feature The mushroom feature that this block is a part of (an entry in the minecraft:worldgen/configured_feature registry, e.g. minecraft:huge_red_mushroom)
    • minecraft:mycelium
    • minecraft:nether_fungus

      Required additional values:

      • feature The feature that will be grown from this fungus when bonemealed (an entry in the minecraft:worldgen/configured_feature registry, e.g. minecraft:warped_fungus_planted)
    • minecraft:nether_portal 🧩

      A nether portal block (the type of the inside blocks that are normally purple).

      Recommended mapping type: nether_portal

    • minecraft:nether_roots
    • minecraft:nether_sprouts
    • minecraft:nether_wart
    • minecraft:netherrack 🧩

      A netherrack block.

      Recommended mapping type: full_block

    • minecraft:note
    • minecraft:nylium 🧩

      A nylium block.

      Recommended mapping type: full_block

    • minecraft:observer
    • minecraft:piglinwallskull
    • minecraft:flower_bed
    • minecraft:piston_base

      Required additional values:

      • sticky Whether the base is sticky (true or false)
    • minecraft:piston_head
    • minecraft:pitcher_crop
    • minecraft:player_head
    • minecraft:player_wall_head
    • minecraft:pointed_dripstone
    • minecraft:potato
    • minecraft:powder_snow
    • minecraft:powered
    • minecraft:powered_rail
    • minecraft:pressure_plate 🧩

      A pressure plate.

      Required additional values:

      • block_set_type The block set that this button is a part of (one of: acacia bamboo, birch, cherry, copper, crimson, dark_oak, gold, iron, jungle, mangrove, oak, pale_oak, polished_blackstone, spruce, stone, warped)

      Default properties:

      "has_collision": false,
      "explosion_resistance": 0.5,
      "destroy_time": 0.5,
      "force_solid_on": true,
      "push_reaction": "minecraft:destroy"

      Not default, but recommended properties for wooden pressure plates:

      "sound_type": "minecraft:wood",
      "ignited_by_lava": true,
      "instrument": "minecraft:bass"

      Recommended mapping type: pressure_plate

    • minecraft:pumpkin 🧩

      A pumpkin.

      Recommended mapping type: pumpkin

    • minecraft:rail
    • minecraft:redstone_lamp
    • minecraft:redstone_ore 🧩

      Redstone ore.

      Recommended mapping type: redstone_ore

    • minecraft:redstone_torch
    • minecraft:redstone_wall_torch
    • minecraft:redstone_wire
    • minecraft:repeater
    • minecraft:respawn_anchor 🧩

      A respawn anchor.

      Recommended mapping type: respawn_anchor

    • minecraft:rooted_dirt 🧩

      A rooted dirt block.

      Recommended mapping type: full_block

    • minecraft:rotated_pillar 🧩

      A block that can be rotated along 3 axes, such as logs.

      Recommended mapping type: rotated_pillar

    • minecraft:sapling

      A sapling.

      Required additional values:

      • tree The type of tree grown (one of: acacia, azalea, birch, cherry, dark_oak, jungle, mangrove, oak, pale_oak spruce)

      Default properties:

      "map_color": "minecraft:plant",
      "has_collision": false,
      "sound_type": "minecraft:grass",
      "explosion_resistance": 0.0,
      "destroy_time": 0.0,
      "is_randomly_ticking": true,
      "can_occlude": false,
      "push_reaction": "minecraft:destroy"

      Recommended mapping type: sapling

    • minecraft:sand 🧩

      A sand block.

      Required additional values:

      • falling_dust_color The color of the falling particles (an ARGB hex color, e.g. #ffff0000)

      Recommended mapping type: full_block

    • minecraft:scaffolding
    • minecraft:sculk_catalyst
    • minecraft:sculk 🧩

      A sculk block.

      Recommended mapping type: full_block

    • minecraft:sculk_sensor
    • minecraft:sculk_shrieker
    • minecraft:sculk_vein
    • minecraft:seagrass
    • minecraft:sea_pickle
    • minecraft:shelf
    • minecraft:short_dry_grass
    • minecraft:shulker_box

      Additional values:

      • color (optional) The color (one of: black, blue, brown, cyan, gray, green, light_blue, light_gray, lime, magenta, orange, pink, purple, red, white, yellow)
    • minecraft:skull

      Required additional values:

      • kind The type of skull (one of creeper, dragon, piglin, player, skeleton, wither_skeleton, zombie)
    • minecraft:slab 🧩

      A slab.

      Recommended mapping type: slab

    • minecraft:slime
    • minecraft:small_dripleaf
    • minecraft:smithing_table 🧩

      A smithing table.

      Recommended mapping type: full_block

    • minecraft:smoker 🧩

      A smoker.

      Recommended mapping type: furnace

    • minecraft:sniffer_egg
    • minecraft:snow_layer
    • minecraft:snowy_dirt
    • minecraft:soul_fire
    • minecraft:soul_sand
    • minecraft:spawner
    • minecraft:sponge 🧩

      A dry sponge block.

      Recommended mapping type: full_block

    • minecraft:spore_blossom
    • minecraft:stained_glass_pane

      Required additional values:

      • color The color (one of: black, blue, brown, cyan, gray, green, light_blue, light_gray, lime, magenta, orange, pink, purple, red, white, yellow)
    • minecraft:stained_glass 🧩

      A stained glass full block.

      Required additional values:

      • color The color (one of: black, blue, brown, cyan, gray, green, light_blue, light_gray, lime, magenta, orange, pink, purple, red, white, yellow)

      Recommended mapping type: full_block

    • minecraft:stair

      Stairs.

      Required additional values:

      • base_state The base block state for the stairs (a block state, e.g. minecraft:diamond_block or minecraft:oak_log[axis=z])
    • minecraft:standing_sign

      Required additional values:

      • wood_type The wood type (one of: acacia, bamboo, birch, cherry, crimson, dark_oak, jungle, mangrove, oak, pale_oak spruce, warped)
    • minecraft:stem

      Required additional values:

      • attached_stem The non-attached stem block (a block, e.g. minecraft:attached_melon_stem)
      • fruit The fruit block (a block, e.g. minecraft:melon)
      • seed The seed item (an item, e.g. minecraft:melon_seeds)
    • minecraft:stonecutter
    • minecraft:structure
    • minecraft:structure_void
    • minecraft:sugar_cane
    • minecraft:sweet_berry_bush
    • minecraft:tall_dry_grass
    • minecraft:tall_flower
    • minecraft:tall_grass
    • minecraft:tall_seagrass
    • minecraft:target
    • minecraft:test
    • minecraft:test_instance
    • minecraft:tinted_glass 🧩

      A tinted glass block.

      Recommended mapping type: full_block

    • minecraft:tinted_particle_leaves 🧩

      Leaves that change color based on the biome.

      Required additional values:

      • leaf_particle_chance The chance of leaf particles spawning in any tick (a float in the range [0, 1])

      Default properties:

      "map_color": "minecraft:plant",
      "sound_type": "minecraft:grass",
      "explosion_resistance": 0.2,
      "destroy_time": 0.2,
      "is_randomly_ticking": true,
      "can_occlude": false,
      "ignited_by_lava": true,
      "push_reaction": "minecraft:destroy",
      "is_redstone_conductor": "minecraft:never",
      "is_suffocating": "minecraft:never",
      "is_view_blocking": "minecraft:never"

      Recommended mapping type: leaves

    • minecraft:tnt
    • minecraft:torchflower_crop
    • minecraft:torch

      Required additional values:

      • particle_options The type of particle emitted by the torch (an entry in the minecraft:particle_type registry, e.g. minecraft:soul_fire_flame)
    • minecraft:transparent
    • minecraft:trapdoor 🧩

      Required additional values:

      • block_set_type The block set that this button is a part of (one of: acacia bamboo, birch, cherry, copper, crimson, dark_oak, gold, iron, jungle, mangrove, oak, pale_oak, polished_blackstone, spruce, stone, warped)

      Default properties:

      "can_occlude": false,
      "is_valid_spawn": "minecraft:never"

      Not default, but recommended properties for wooden trapdoors:

      "sound_type": "minecraft:wood",
      "explosion_resistance": 3.0,
      "destroy_time": 3.0,
      "instrument": "minecraft:bass"

      Recommended mapping type: trapdoor

    • minecraft:trapped_chest
    • minecraft:trial_spawner
    • minecraft:trip_wire_hook
    • minecraft:tripwire

      Required additional values:

      • hook The associated hook block (a block, e.g. minecraft:tripwire_hook)
    • minecraft:turtle_egg
    • minecraft:twisting_vines_plant
    • minecraft:twisting_vines
    • minecraft:untinted_particle_leaves 🧩

      Leaves that don't change color based on the biome.

      Required additional values:

      • leaf_particle The particles emitted by these leaves (an object containing a type from the minecraft:particle_type registry, e.g. minecraft:tinted_leaves, and any additional required options based on that type, e.g. {"type": "minecraft:tinted_leaves", "color": 4294492531})
      • leaf_particle_chance The chance of particles spawning in any tick (a float in the range [0, 1])

      Default properties:

      "map_color": "minecraft:plant",
      "sound_type": "minecraft:grass",
      "explosion_resistance": 0.2,
      "destroy_time": 0.2,
      "is_randomly_ticking": true,
      "can_occlude": false,
      "ignited_by_lava": true,
      "push_reaction": "minecraft:destroy",
      "is_redstone_conductor": "minecraft:never",
      "is_suffocating": "minecraft:never",
      "is_view_blocking": "minecraft:never"

      Recommended mapping type: leaves

    • minecraft:vault
    • minecraft:vine
    • minecraft:wall_banner

      Required additional values:

      • color The color (one of: black, blue, brown, cyan, gray, green, light_blue, light_gray, lime, magenta, orange, pink, purple, red, white, yellow)
    • minecraft:wall_hanging_sign

      Required additional values:

      • wood_type The wood type (one of: acacia, bamboo, birch, cherry, crimson, dark_oak, jungle, mangrove, oak, pale_oak spruce, warped)
    • minecraft:wall_sign

      Required additional values:

      • wood_type The wood type (one of: acacia, bamboo, birch, cherry, crimson, dark_oak, jungle, mangrove, oak, pale_oak spruce, warped)
    • minecraft:wall_skull

      Required additional values:

      • kind The type of skull (one of creeper, dragon, piglin, player, skeleton, wither_skeleton, zombie)
    • minecraft:wall_torch

      Required additional values:

      • particle_options The type of particle emitted by the torch (an entry in the minecraft:particle_type registry, e.g. minecraft:soul_fire_flame)
    • minecraft:wall

      A wall.

      Default properties:

      "force_solid_on": true

      Not default, but recommended properties for regular stone walls:

      "explosion_resistance": 6.0,
      "destroy_time": 1.5,
      "requires_correct_tool_for_drops": true,
      "instrument": "minecraft:basedrum"

      Recommended mapping type: fence

    • minecraft:waterlily
    • minecraft:waterlogged_transparent
    • minecraft:weathering_copper_bar

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)
    • minecraft:weathering_copper_bulb

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)
    • minecraft:weathering_copper_chain 🧩

      An oxidizing chain.

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)

      Recommended mapping type: chain

    • minecraft:weathering_copper_chest

      Required additional values:

      • close_sound The sound when closing the chest (an entry in the minecraft:sound_event registry, e.g. minecraft:block.chest.close)
      • open_sound The sound when opening the chest (an entry in the minecraft:sound_event registry, e.g. minecraft:block.chest.open)
      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)
    • minecraft:weathering_copper_door 🧩

      An oxidizing door.

      Required additional values:

      • block_set_type The block set that this button is a part of (one of: acacia bamboo, birch, cherry, copper, crimson, dark_oak, gold, iron, jungle, mangrove, oak, pale_oak, polished_blackstone, spruce, stone, warped)
      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)

      Default properties:

      "map_color": "minecraft:color_orange",
      "explosion_resistance": "6.0",
      "destroy_time": "3.0",
      "requires_correct_tool_for_drops": "true",
      "can_occlude": false,
      "push_reaction": "minecraft:destroy"

      Recommended mapping type: door

    • minecraft:weathering_copper_full 🧩

      An oxidizing block.

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)

      Recommended mapping type: full_block

    • minecraft:weathering_copper_golem_statue

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)
    • minecraft:weathering_copper_grate 🧩

      An oxidizing grate block.

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)

      Recommended mapping type: full_block

    • minecraft:weathering_copper_slab 🧩

      An oxidizing slab.

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)

      Recommended mapping type: slab

    • minecraft:weathering_copper_stair 🧩

      Oxidizing stairs.

      Required additional values:

      • base_state The base block state for the stairs (a block state, e.g. minecraft:weathered_cut_copper or minecraft:weather_copper_bulb)
      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)

      Recommended mapping type: stairs

    • minecraft:weathering_copper_trap_door 🧩

      An oxidizing trapdoor.

      Required additional values:

      • block_set_type The block set that this button is a part of (one of: acacia bamboo, birch, cherry, copper, crimson, dark_oak, gold, iron, jungle, mangrove, oak, pale_oak, polished_blackstone, spruce, stone, warped)
      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)

      Default properties:

      "map_color": "minecraft:color_orange",
      "explosion_resistance": "6.0",
      "destroy_time": "3.0",
      "requires_correct_tool_for_drops": "true",
      "can_occlude": false,
      "is_valid_spawn": "minecraft:never"

      Recommended mapping type: trapdoor

    • minecraft:weathering_lantern

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)
    • minecraft:weathering_lightning_rod

      Required additional values:

      • weathering_state The copper weathering state (one of: unaffected, exposed, weathered, oxidized)
    • minecraft:web
    • minecraft:weeping_vines_plant
    • minecraft:weeping_vines
    • minecraft:weighted_pressure_plate 🧩

      A weighted pressure plate.

      Required additional values:

      • block_set_type The block set that this button is a part of (one of: acacia bamboo, birch, cherry, copper, crimson, dark_oak, gold, iron, jungle, mangrove, oak, pale_oak, polished_blackstone, spruce, stone, warped)
      • max_weight The number of entities that need to be on this pressure plate for it to output maximum redstone power (an integer in the range [1, 1024])

      Default properties:

      "has_collision": false,
      "explosion_resistance": 0.5,
      "destroy_time": 0.5,
      "force_solid_on": true,
      "push_reaction": "minecraft:destroy"

      Recommended mapping type: pressure_plate

    • minecraft:wet_sponge 🧩

      A wet sponge block.

      Recommended mapping type: full_block

    • minecraft:wither_rose

      Required additional values:

      • suspicious_stew_effects The effects that this flower gives when used to make a suspicious stew (a list of suspicious stew effects, where each effect has an id (an entry in the minecraft:mob_effect registry) and an optional duration (default is 160 ticks), e.g. [{"id": "minecraft:slowness"}, {"id": "minecraft:mining_fatigue", "duration": 320}])
    • minecraft:wither_skull
    • minecraft:wither_wall_skull
    • minecraft:wool_carpet

      Required additional values:

      • color The color (one of: black, blue, brown, cyan, gray, green, light_blue, light_gray, lime, magenta, orange, pink, purple, red, white, yellow)

    For example, minecraft:slab gives the block the slab block states (i.e. top, bottom, double, and all waterlogged variants).
    An example of included behavior is minecraft:ladder blocks being climbable.

  • Some additional values may be required based on the type you chose.

    For example, the type minecraft:stair requires a value base_state that points to the corresponding full block state.

    Wich additional values are required is described in the expandable section above (per type).

  • The properties of the block.
    These set some behavioral and visual aspects of the block.

    Adding properties is optional, and each property is optional, but you usually want to set a few common properties to customize the block to your liking.

    Here is an example:

    "properties": {
      "destroy_time": 2.0,
      "explosion_resistance": 3.0,
      "ignited_by_lava": true,
      "instrument": "minecraft:bass",
      "map_color": "minecraft:color_light_green",
      "sound_type": "minecraft:wood"
    }
    Expand the list of properties you can set

    Common

    • can_occlude (default true) Whether this block can someimes hide blocks behind it (true or false)
      (can be set to false for blocks like glass or flowers)

    • destroy_time (default 0) How long it takes to break the block (a float)
      (for example, it is 0 for flowers (instabreak), 0.2 for leaves, 1.5 for stone bricks and 50 for obsidian)

    • explosion_resistance (default 0) How strong the block is against explosions (uses the same scale as destroy_time, is usually set the same or higher)

    • friction (default 0.6) The slipperiness of the block (a float in the range [0, 1])
      (for example, it is 0.6 for regular blocks, 0.98 for ice and 0.989 for blue ice)

    • has_collision (default true) Whether entities will collide with the block (true or false)

    • ignited_by_lava (default false) Whether this block catches on fire when too close to lava (true or false)

    • instrument (default "minecraft:harp") The note block instrument (when this block is placed below a note block)

      Expand the list of instruments
      • minecraft:banjo
      • minecraft:basedrum
      • minecraft:bass
      • minecraft:bell
      • minecraft:bit
      • minecraft:chime
      • minecraft:cow_bell
      • minecraft:creeper
      • minecraft:custom_head
      • minecraft:didgeridoo
      • minecraft:dragon
      • minecraft:flute
      • minecraft:guitar
      • minecraft:harp
      • minecraft:hat
      • minecraft:iron_xylophone
      • minecraft:piglin
      • minecraft:pling
      • minecraft:skeleton
      • minecraft:snare
      • minecraft:wither_skeleton
      • minecraft:xylophone
      • minecraft:zombie
    • is_randomly_ticking (default false) Whether the block needs to be randomly ticked by the world (true or false)
      (for example, for crops to grow or grass to spread)

    • jump_factor (default 1) The vertical speed factor applied when jumping on this block (a float)
      (for example, this is 1 for regular blocks and 0.5 for honey blocks)

    • light_emission (default 0) The light level that the block emits (an integer in the range [0, 15])

    • map_color (default "minecraft:none") The pixel color shown in Minecraft maps

      Expand the list of map colors
      • minecraft:none

      • minecraft:clay
      • minecraft:color_black
      • minecraft:color_blue
      • minecraft:color_brown
      • minecraft:color_cyan
      • minecraft:color_gray
      • minecraft:color_green
      • minecraft:color_light_blue
      • minecraft:color_light_gray
      • minecraft:color_light_green
      • minecraft:color_magenta
      • minecraft:color_orange
      • minecraft:color_pink
      • minecraft:color_purple
      • minecraft:color_red
      • minecraft:color_yellow
      • minecraft:crimson_hyphae
      • minecraft:crimson_nylium
      • minecraft:crimson_stem
      • minecraft:deepslate
      • minecraft:diamond
      • minecraft:dirt
      • minecraft:emerald
      • minecraft:fire
      • minecraft:glow_lichen
      • minecraft:gold
      • minecraft:grass
      • minecraft:ice
      • minecraft:lapis
      • minecraft:metal
      • minecraft:nether
      • minecraft:plant
      • minecraft:podzol
      • minecraft:quartz
      • minecraft:raw_iron
      • minecraft:sand
      • minecraft:snow
      • minecraft:stone
      • minecraft:terracotta_black
      • minecraft:terracotta_blue
      • minecraft:terracotta_brown
      • minecraft:terracotta_cyan
      • minecraft:terracotta_gray
      • minecraft:terracotta_green
      • minecraft:terracotta_light_blue
      • minecraft:terracotta_light_gray
      • minecraft:terracotta_light_green
      • minecraft:terracotta_magenta
      • minecraft:terracotta_orange
      • minecraft:terracotta_pink
      • minecraft:terracotta_purple
      • minecraft:terracotta_red
      • minecraft:terracotta_white
      • minecraft:terracotta_yellow
      • minecraft:warped_hyphae
      • minecraft:warped_nylium
      • minecraft:warped_stem
      • minecraft:warped_wart_block
      • minecraft:water
      • minecraft:wood
      • minecraft:wool
    • push_reaction (default "minecraft:normal") How the block reacts to being pushed or pulled by a piston

      Expand the list of push reactions
      • minecraft:block Cannot be pushed or pulled
      • minecraft:destroy Breaks when pushed, and cannot be pulled
      • minecraft:normal Can be pushed and pulled
      • minecraft:push_only Can be pushed, but not pulled
    • replaceable (default: false) Whether this block is replaced when a player clicks it to place a block (true or false)
      (for example, this is true for leaf litter)

    • requires_correct_tool_for_drops (default false) Whether the block must be mined with the correct tool to drop anything (true or false)
      (whether a tool is correct is determined by whether the block has the corresponding tag: #minecraft:mineable/axe, #minecraft:mineable/hoe, #minecraft:mineable/pickaxe, #minecraft:mineable/shovel)

    • sound_type (default "minecraft:stone") The sounds the block makes

      Expand the list of sound types
      • minecraft:empty

      • minecraft:amethyst
      • minecraft:amethyst_cluster
      • minecraft:ancient_debris
      • minecraft:anvil
      • minecraft:azalea
      • minecraft:azalea_leaves
      • minecraft:bamboo
      • minecraft:bamboo_sapling
      • minecraft:bamboo_wood
      • minecraft:bamboo_wood_hanging_sign
      • minecraft:basalt
      • minecraft:big_dripleaf
      • minecraft:bone_block
      • minecraft:cactus_flower
      • minecraft:calcite
      • minecraft:candle
      • minecraft:cave_vines
      • minecraft:chain
      • minecraft:cherry_leaves
      • minecraft:cherry_sapling
      • minecraft:cherry_wood
      • minecraft:cherry_wood_hanging_sign
      • minecraft:chiseled_bookshelf
      • minecraft:cobweb
      • minecraft:copper
      • minecraft:copper_bulb
      • minecraft:copper_golem_statue
      • minecraft:copper_grate
      • minecraft:coral_block
      • minecraft:creaking_heart
      • minecraft:crop
      • minecraft:decorated_pot
      • minecraft:decorated_pot_cracked
      • minecraft:deepslate
      • minecraft:deepslate_bricks
      • minecraft:deepslate_tiles
      • minecraft:dried_ghast
      • minecraft:dripstone_block
      • minecraft:flowering_azalea
      • minecraft:froglight
      • minecraft:frogspawn
      • minecraft:fungus
      • minecraft:gilded_blackstone
      • minecraft:glass
      • minecraft:glow_lichen
      • minecraft:grass
      • minecraft:gravel
      • minecraft:hanging_roots
      • minecraft:hanging_sign
      • minecraft:hard_crop
      • minecraft:heavy_core
      • minecraft:honey_block
      • minecraft:iron
      • minecraft:ladder
      • minecraft:lantern
      • minecraft:large_amethyst_bud
      • minecraft:leaf_litter
      • minecraft:lily_pad
      • minecraft:lodestone
      • minecraft:mangrove_roots
      • minecraft:medium_amethyst_bud
      • minecraft:metal
      • minecraft:moss
      • minecraft:moss_carpet
      • minecraft:mud
      • minecraft:mud_bricks
      • minecraft:muddy_mangrove_roots
      • minecraft:nether_bricks
      • minecraft:nether_gold_ore
      • minecraft:nether_ore
      • minecraft:nether_sprouts
      • minecraft:nether_wart
      • minecraft:nether_wood
      • minecraft:nether_wood_hanging_sign
      • minecraft:netherite_block
      • minecraft:netherrack
      • minecraft:nylium
      • minecraft:packed_mud
      • minecraft:pink_petals
      • minecraft:pointed_dripstone
      • minecraft:polished_deepslate
      • minecraft:polished_tuff
      • minecraft:powder_snow
      • minecraft:resin
      • minecraft:resin_bricks
      • minecraft:rooted_dirt
      • minecraft:roots
      • minecraft:sand
      • minecraft:scaffolding
      • minecraft:sculk
      • minecraft:sculk_catalyst
      • minecraft:sculk_sensor
      • minecraft:sculk_shrieker
      • minecraft:sculk_vein
      • minecraft:shelf
      • minecraft:shroomlight
      • minecraft:slime_block
      • minecraft:small_amethyst_bud
      • minecraft:small_dripleaf
      • minecraft:snow
      • minecraft:soul_sand
      • minecraft:soul_soil
      • minecraft:spawner
      • minecraft:sponge
      • minecraft:spore_blossom
      • minecraft:stem
      • minecraft:stone
      • minecraft:suspicious_gravel
      • minecraft:suspicious_sand
      • minecraft:sweet_berry_bush
      • minecraft:trial_spawner
      • minecraft:tuff
      • minecraft:tuff_bricks
      • minecraft:twisting_vines
      • minecraft:vault
      • minecraft:vine
      • minecraft:wart_block
      • minecraft:weeping_vines
      • minecraft:wet_grass
      • minecraft:wet_sponge
      • minecraft:wood
      • minecraft:wool
    • speed_factor (default 1) The default speed of walking on this block (a float)
      (for example, it is 1 for regular blocks and 0.4 for soul sand)

    For specific purposes

    • dynamic_shape (default false) Whether the block has at least one block state that doesn't have a constant collision bounding box (true or false)
      (while most block states' collision bounding boxes are static and do not depend on anything else, there are few exceptions, such as moving pistons and shulker boxes)

    • emissive_rendering (default "minecraft:never") Whether the block is rendered as bright even without light around it (calculated per block state)

      Expand the list of block state predicates
      • minecraft:always Always
      • minecraft:sculk_phase_active Only for sculk sensor block states that are active
      • minecraft:never Never
    • force_solid_off (default false) Whether to mark this block as non-solid (true or false)
      (if set to true, this block will not structurally support adjacent blocks such as banners, signs or even item frames)

    • force_solid_on (default false) Whether to mark this block as solid (true or false)
      (if set to true, this block will structurally support adjacent blocks such as banners, signs and even item frames; and if set to false, the solidity of the each side of the block will be determined automatically)

    • is_redstone_conductor (default "minecraft:is_collision_shape_full_block") Whether the block conducts redstone (calculated per block state)
      (for example, this is minecraft:never for leaves and minecraft:always for mud)

      Expand the list of block state predicates
      • minecraft:always Always minecraft:is_collision_shape_full_block Only for each block state that has a full-cube collision shape
      • minecraft:never Never
    • is_suffocating (default "minecraft:blocks_motion_and_is_collision_shape_full_block") Whether the block suffocates the player (calculated per block state)

      Expand the list of block state predicates
      • minecraft:always Always
      • minecraft:blocks_motion_and_is_collision_shape_full_block Only for each block state that has a full-cube collision shape and blocks motion completely (aka not a cobweb or similar)
      • minecraft:is_collision_shape_full_block Only for each block state that has a full-cube collision shape
      • minecraft:max_snow_layers Only for the snow layer block state with 8 layers
      • minecraft:never Never
      • minecraft:not_extended_piston Always, except for extended piston bases
      • minecraft:not_closed_shulker Always, except for open shulker boxes
    • is_view_blocking (default "minecraft:blocks_motion_and_is_collision_shape_full_block") Whether the player's view is blocked when they are inside this block, typically while suffocating (calculated per block state)

      Expand the list of block state predicates
      • minecraft:always Always
      • minecraft:blocks_motion_and_is_collision_shape_full_block Only for each block state that has a full-cube collision shape and blocks motion completely (aka not a cobweb or similar)
      • minecraft:is_collision_shape_full_block Only for each block state that has a full-cube collision shape
      • minecraft:max_snow_layers Only for the snow layer block state with 8 layers
      • minecraft:never Never
      • minecraft:not_extended_piston Always, except for extended piston bases
      • minecraft:not_closed_shulker Always, except for open shulker boxes
    • offset_function (default: "minecraft:none") Whether the position of the block is offset slightly randomly (such as for flowers)

      Expand the list of offset functions
      • minecraft:none No offset
      • minecraft:xz Only horizontally offset
      • minecraft:xyz Horizontally and vertically offset
    • required_features (default ["minecraft:vanilla"]) A list of feature flags required for this block

    • spawn_terrain_particles (default true) Whether particles appear when entities walk over the block (true or false)

    Technical

    • post_process (default "null") Coordinates relative to the current block, that need post-processing based on this block ("null" for none, or an int array such as "[0, 1, 0]" (which would indicate the block above))
    • is_air (default false) Whether this block is air (true or false)
      (not recommended to be used, because Minecraft treats air as a special type)
    • liquid (default false) Whether this block is a liquid (true or false)
  • The mappings of the block.
    Apart from clients with the Spoutcraft client mod, Spout servers also support vanilla clients. To allow this, custom blocks need to be mapped to vanilla blocks, with or without a resource pack. Adding mappings is optional, but you need a mapping if you want your plugin to be compatible with vanilla clients.

    Here is an example:

    "mappings": [
      {
        "type": "stairs",
        "fallback": "minecraft:warped_planks"
      }
    ]

    This hints to Spout the type of mapping you need (stairs, where each stairs block state is mapped to a vanilla stairs block state), and which fallback you think is appropriate when not using a resource pack.

    Expand the list of mappings you can apply
    • full_block
      For full-cube blocks.

      Arguments:

      • from (optional) The block state(s) that need to be mapped
        (default: every block state of the block)
      • fallback (optional) The vanilla block state to use when no resource pack is available
        (default: minecraft:stone)

      Examples:

      "mappings": [
        {
          "type": "full_block",
          "fallback": "minecraft:lapis_block"
        }
      ]
      "mappings": [
        {
          "type": "full_block",
          "from": "beautiful_lamps:double_lamp[left=false,right=false]",
          "fallback": "minecraft:redstone_lamp[lit=false]"
        },
        {
          "type": "full_block",
          "from": [
            "beautiful_lamps:double_lamp[left=false,right=true]",
            "beautiful_lamps:double_lamp[left=true,right=false]"
            "beautiful_lamps:double_lamp[left=true,right=true]",
          ]
          "fallback": "minecraft:redstone_lamp[lit=true]"
        }
      ]

    • barrel
      For barrels.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:barrel)

      Example:

      "mappings": [
        {
          "type": "barrel"
        }
      ]
    • brushable
      For brushable blocks, such as supicious sand.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:suspicious_sand)

      Example:

      "mappings": [
        {
          "type": "brushable",
          "fallback": "minecraft:suspicious_gravel"
        }
      ]
    • button
      For buttons.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:stone_button)

      Example:

      "mappings": [
        {
          "type": "button",
          "fallback": "minecraft:birch_button"
        }
      ]
    • chain
      For chains.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:iron_chain)

      Example:

      "mappings": [
        {
          "type": "chain",
          "fallback": "minecraft:iron_chain"
        }
      ]
    • chiseled_bookshelf
      For chiseled bookshelves.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:chiseled_bookshelf)

      Example:

      "mappings": [
        {
          "type": "chiseled_bookshelf"
        }
      ]
    • door
      For doors.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:oak_door)

      Example:

      "mappings": [
        {
          "type": "door",
          "fallback": "minecraft:iron_door"
        }
      ]
    • fence
      For fences.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:oak_fence)

      Example:

      "mappings": [
        {
          "type": "fence",
          "fallback": "minecraft:nether_brick_fence"
        }
      ]
    • fence_gate
      For fence gates.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:oak_fence_gate)

      Example:

      "mappings": [
        {
          "type": "fence_gate",
          "fallback": "minecraft:acacia_fence_gate"
        }
      ]
    • flower_pot
      For empty and filled flower pots.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:flower_pot)

      Example:

      "mappings": [
        {
          "type": "flower_pot",
          "fallback": "minecraft:potted_acacia_sapling"
        }
      ]
    • furnace
      For furnaces (including specialized furnaces like the smoker).

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:furnace)

      Example:

      "mappings": [
        {
          "type": "furnace",
          "fallback": "minecraft:blast_furnace"
        }
      ]
    • glazed_terracotta
      For glazed terracotta.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:white_glazed_terracotta)

      Example:

      "mappings": [
        {
          "type": "glazed_terracottace",
          "fallback": "minecraft:red_glazed_terracotta"
        }
      ]
    • ladder
      For ladders.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:ladder)

      Example:

      "mappings": [
        {
          "type": "ladder"
        }
      ]
    • leaves
      For leaves.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:oak_leaves)
      • tinted (optional) Whether the leaves are tinted
        (default: based on the custom leaves block automatically)

      Example:

      "mappings": [
        {
          "type": "leaves",
          "fallback": "minecraft:cherry_leaves"
        }
      ]
    • loom
      For looms.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:loom)

      Example:

      "mappings": [
        {
          "type": "loom"
        }
      ]
    • nether_portal
      For portals with the shape of nether portals.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:nether_portal)

      Example:

      "mappings": [
        {
          "type": "nether_portal"
        }
      ]
    • pressure_plate
      For pressure plates.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:stone_pressure_plate)

      Example:

      "mappings": [
        {
          "type": "pressure_plate",
          "fallback": "minecraft:birch_pressure_plate"
        }
      ]
    • pumpkin
      For carved pumpkins and pumpkin lanterns.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:pumpkin)

      Example:

      "mappings": [
        {
          "type": "pumpkin",
          "fallback": "minecraft:jack_o_lantern"
        }
      ]
    • redstone_ore
      For redstone ore blocks.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:redstone_ore)

      Example:

      "mappings": [
        {
          "type": "redstone_ore",
          "fallback": "minecraft:deepslate_redstone_ore"
        }
      ]
    • respawn_anchor
      For respawn anchors.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:respawn_anchor)

      Example:

      "mappings": [
        {
          "type": "respawn_anchor"
        }
      ]
    • rotated_pillar
      For blocks that can be rotated in 3 orientations, such as logs.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:quartz_pillar)

      Example:

      "mappings": [
        {
          "type": "rotated_pillar",
          "fallback": "minecraft:dark_oak_log"
        }
      ]
    • sapling
      For saplings.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:oak_sapling)

      Example:

      "mappings": [
        {
          "type": "sapling",
          "fallback": "minecraft:birch_sapling"
        }
      ]
    • slab
      For slabs.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:stone_slab)
      • full_block_fallback (optional) A block state that can be used as the double slab when no resource pack is available (default: none, based on fallback)

      Example (for a dirt slab):

      "mappings": [
        {
          "type": "slab",
          "fallback": "minecraft:mud_brick_slab",
          "fallback": "minecraft:dirt"
        }
      ]
    • stairs
      For stairs.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:stone_stairs)

      Example:

      "mappings": [
        {
          "type": "stairs",
          "fallback": "minecraft:stone_brick_stairs"
        }
      ]
    • trapdoor
      For trapdoors.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:oak_trapdoor)

      Example:

      "mappings": [
        {
          "type": "trapdoor",
          "fallback": "minecraft:jungle_trapdoor"
        }
      ]

    • wall
      For walls.

      Arguments:

      • fallback (optional) The vanilla block to use when no resource pack is available
        (default: minecraft:cobblestone_wall)

      Example:

      "mappings": [
        {
          "type": "wall",
          "fallback": "minecraft:stone_brick_wall"
        }
      ]
    • manual

      When none of the above types apply, you can define mappings manually.

      This is not recommended to be used unless you know what you are doing.
      If no suitable mapping type is available, please ask about upcoming support in the Discord server. We are in the process of adding more.

      Arguments:

      • awareness_levels (optional) A list of client types for which this mapping will apply:

        • spout:vanilla A vanilla client without the generated resource pack
        • spout:resource_pack A vanilla client with the generated resource pack
        • spout:client_mod A client with the Spoutcraft client mod

        (default: ["spout:vanilla", "spout:resource_pack"])

      • from (optional) The block state(s) that need to be mapped
        (default: every block state of the block)

      • to The vanilla block state to map to

      Examples:

      "mappings": [
        {
          "type": "manual",
          "to": "minecraft:dandelion"
        }
      ]
      "mappings": [
        {
          "type": "manual",
          "from": "atmospheric_effects:invisible_glow[bright=false]",
          "to": "minecraft:light[level=7]"
        },
        {
          "type": "manual",
          "from": "atmospheric_effects:invisible_glow[bright=true]",
          "to": "minecraft:light[level=15]"
        }
      ]

Adding items

Adding items works the same as adding blocks.

Each item is added with a single data pack file: data/<namespace>/item/<id>.json.

For example, if you want to create an item dyed_planks:wood_varnish, you create this file:

src/
└── main/
    └── resources/
        └── data_pack/
            └── data/
                └── dyed_planks/
                    └── item/
                        └── wood_varnish.json

Here is a quick example for a green_planks.json, an item for a block:

{
  "type": "minecraft:block",
  "block": "dyed_planks:green_planks"
}

And here is a quick example for a diamond_nugget.json:

{
  "type": "minecraft:item",
  "mappings": [
    {
      "to": "minecraft:prismarine_shard"
    }
  ]
}

The JSON contains 4 parts:

  • A type
  • Some additional values based on the type (for example, the block for block items)
  • properties
  • mappings

Detailed explanation of the 4 parts:

  • The type of the item.
    This determines the base behavior of the item.

    Expand the list of possible types
    • minecraft:item A regular item with no special behavior

    • minecraft:block An item for a block

    • minecraft:double_high_block An item for a double-high block (such as doors or tall flowers)

    • minecraft:egg An egg, which fires egg projectiles when thrown

  • Some additional values may be required based on the type you chose.

    For example, the type minecraft:block requires a value block that points to the corresponding block.

    Expand the list of additional required values
    • minecraft:block
      • block The block of this block item (a block, e.g. willow_trees:willow_log)
  • The properties of the item.
    These set some behavioral and visual aspects of the item.

    Adding properties is optional, and each property is optional.

    Here is an example:

    "properties": {
      "components": {
        "minecraft:max_damage": 50,
        "minecraft:weapon": {
          "disable_blocking_for_seconds": 20,
          "item_damage_per_attack": 1
        }
      }
    }
    Expand the list of properties you can set
    • components (default empty) The base data components for each item of this type
    • required_features (default ["minecraft:vanilla"]) A list of feature flags required for this item
  • The mappings of the item.

    You do not need to add mappings for block items if you already added non-manual (like full_block, leaves, slab etc.) mappings for the block. The items will be mapped automatically too.

    Otherwise, item mappings are similar to manual block mappings, with arguments:

    • awareness_levels (optional) A list of client types for which this mapping will apply:

      • spout:vanilla A vanilla client without the generated resource pack
      • spout:resource_pack A vanilla client with the generated resource pack
      • spout:client_mod A client with the Spout client mod

      (default: ["spout:vanilla", "spout:resource_pack"])

    • to The vanilla item to map to

    Example:

    "mappings": [
      {
        "to": "minecraft:slime_ball"
      }
    ]

Completing blocks and items with the data pack and resource pack

After adding a block or item with its own .json file, you can reference it in data pack files and resource pack files.

While we won't explain data packs and resource packs here, you can read about them on the Minecraft wiki:

Typically, you want to add some files to the data pack to define behavior:

  • Crafting recipes (into data_pack/data/<namespace>/recipe, and often also corresponding advancements into data_pack/data/<namespace>/advancement/recipes
  • Loot tables, such as for drops from breaking a block (into data_pack/data/<namespace>/loot_table)
  • Tags
  • ...and maybe more

And also to the resource pack, to add models and textures:

  • Block states (into resource_pack/assets/blockstates)
  • Items (into resource_pack/assets/items)
  • Models (into resource_pack/assets/models/block and resource_pack/assets/models/item)
  • Textures (into resource_pack/assets/textures/block and resource_pack/assets/textures/item)
  • ...and maybe more
Expand for an example directory structure

Only the block and item .json files:

src/
└── main/
    └── resources/
        └── data_pack/
            └── data/
                └── dyed_planks/
                    ├── block/
                    │   ├── green_plank_stairs.json
                    │   └── green_planks.json
                    └── item/
                        ├── green_plank_stairs.json
                        ├── green_planks.json
                        └── wood_varnish.json

With all corresponding data pack and resource pack files:

src/
└── main/
    └── resources/
        ├── data_pack/
        │   ├── pack.mcmeta
        │   └── data/
        │       ├── dyed_planks/
        │       │   ├── advancement/
        │       │   │   └── recipes/
        │       │   │       ├── building_blocks/
        │       │   │       │   ├── green_plank_stairs_from_green_planks.json
        │       │   │       │   ├── green_plank_stairs_from_undyed_stairs.json
        │       │   │       │   └── green_planks.json
        │       │   │       └── misc/
        │       │   │           └── wood_varnish.json
        │       │   ├── block/
        │       │   │   ├── green_plank_stairs.json
        │       │   │   └── green_planks.json
        │       │   ├── item/
        │       │   │   ├── green_plank_stairs.json
        │       │   │   ├── green_planks.json
        │       │   │   └── wood_varnish.json
        │       │   ├── loot_table/
        │       │   │   └── blocks/
        │       │   │       ├── green_plank_stairs.json
        │       │   │       └── green_planks.json
        │       │   └── recipe/
        │       │       ├── green_plank_stairs_from_green_planks.json
        │       │       ├── green_plank_stairs_from_undyed_stairs.json
        │       │       ├── green_planks.json
        │       │       └── wood_varnish.json
        │       └── minecraft/
        │           └── tags/
        │               ├── block/
        │               │   ├── mineable/
        │               │   │   └── axe.json
        │               │   ├── slabs.json
        │               │   └── stairs.json
        │               └── item/
        │                   ├── slabs.json
        │                   └── stairs.json
        └── resource_pack/
            └── assets/
                ├── dyed_planks/
                │   ├── blockstates/
                │   │   ├── green_plank_stairs.json
                │   │   └── green_planks.json
                │   ├── items/
                │   │   ├── green_plank_stairs.json
                │   │   ├── green_planks.json
                │   │   └── wood_varnish.json
                │   ├── models/
                │   │   ├── block/
                │   │   │   ├── green_plank_stairs.json
                │   │   │   ├── green_plank_stairs_inner.json
                │   │   │   ├── green_plank_stairs_outer.json
                │   │   │   └── green_planks.json
                │   │   └── item/
                │   │       └── wood_varnish.json
                │   └── textures/
                │       ├── block/
                │       │   └── green_planks.png
                │       └── item/
                │           └── wood_varnish.png
                └── minecraft/
                    └── lang/
                        ├── de_de.json
                        ├── en_us.json
                        ├── ja_jp.json
                        ├── nl_nl.json
                        └── zh_cn.json

Adding translations

Custom blocks and items need names. You can register them in the resource pack in assets/minecraft/lang/<locale>.json, just like a regular resource pack.

Here is a quick example of assets/minecraft/lang/en_us.json:

{
  "block.willow_trees.willow_log": "Willow Log",
  "item.willow_trees.willow_twig": "Willow Twig",
  "spout.namespace.willow_trees": "Willow Trees"
}

You can see the full list of possible locales here.

Translations for your namespaces

If you have any custom namespaces (such as willow_trees if you add a block willow_trees:willow_log), you should include them in your translations like this:

"spout.namespace.willow_trees": "Willow Trees"

This essentially functions as the "name of the mod" for that namespace. This name will be displayed by client mods like Jade.