Wiki 9Minecraft Wiki 9Minecraft

Assigning Vanilla Block Sounds in blocks.json

How to wire up step, break, place, and hit sounds for custom blocks using vanilla sound sets.

5Sections
2Code examples
3Known errors

By default, a newly registered custom block in Minecraft Bedrock makes no sound when walked on, mined, or placed—or it falls back to a generic stone sound depending on the format version. To give a custom block proper audio feedback without importing custom `.ogg` files, you assign it a vanilla sound set inside the Resource Pack's `blocks.json` file. This single string controls breaking, placing, stepping, hitting, and landing sounds all at once.

Why Block Sounds Live in the Resource Pack

A common point of confusion for creators moving between entities and blocks is where sound definitions belong. Custom block components in the Behavior Pack (`BP/blocks/*.json`) handle collision, mining speed, loot, and block states, but there is no server-side component for block sounds. Audio is treated strictly as a client-side presentation detail alongside textures.

Instead of adding a component to your Behavior Pack block file, you must edit or create `RP/blocks.json` at the root of your Resource Pack. This file acts as a lookup table that links your block's namespace identifier (such as `my_addon:copper_grate`) to a terrain texture entry and a `sound` category. When a player interacts with the block in the world, the client checks `RP/blocks.json`, finds the sound group name, and looks up the corresponding audio events in `RP/sounds/sound_definitions.json` and the engine's internal sound mapping.

Basic Configuration in RP/blocks.json

Every custom block you add should have a matching key in `RP/blocks.json`. Inside that block's object, add the `sound` property set to one of the game's built-in sound group strings. You do not need to include the `minecraft:` namespace prefix on the sound value itself, though your block identifier key must keep its namespace.

Note that while the modern `minecraft:material_instances` component in the Behavior Pack allows you to define textures without needing `RP/blocks.json` for visuals, you still need an entry in `RP/blocks.json` if you want to assign a block sound group. If you already define textures in `minecraft:material_instances`, your `RP/blocks.json` entry only needs to contain the `sound` key.

RP/blocks.json
{
  "format_version": [
    1,
    1,
    0
  ],
  "my_addon:treated_planks": {
    "sound": "wood"
  },
  "my_addon:basalt_bricks": {
    "textures": "basalt_bricks",
    "sound": "stone"
  },
  "my_addon: glowing_crystal": {
    "sound": "amethyst_block"
  }
}

Common Vanilla Block Sound Identifiers

Each sound string in `RP/blocks.json` maps to a whole suite of interactions: walking (`step`), breaking (`dig` or `break`), placing, hitting while mining (`hit`), and falling onto the block (`fall`). Choosing `

Sound IdentifierMaterial FeelTypical Vanilla Blocks
stoneHard, heavy mineralStone, cobblestone, ores, concrete
woodHollow, creaky timberPlanks, logs, crafting tables, chests
gravelLoose, crunching aggregateGravel, dirt, coarse dirt, podzol
grassSoft, fibrous foliageGrass block, leaves, hay bale,sponge
sandFine, shifting grainsSand, red sand, concrete powder
glassHigh-pitched, brittleGlass, glass panes, glowstone, ice
metalResonant, clinking metallicIron block, gold block,铁bars
clothMuted, soft fabricWool, carpet, beds
slimeWet, squishySlime block
snowCrisp, muffled crunchSnow, snow layer, powder snow
lanternHollow metallic clankLantern, soul lantern
chainRattling metal linksChain
copperBright, tonal metalCopper blocks, cut copper
amethyst_blockMusical, chiming crystalBlock of amethyst, budding amethyst
deepslateDense, low-pitched stoneDeepslate, cobbled deepslate
deepslate_bricksPolished, crisp heavy stoneDeepslate bricks, deepslate tiles
tuffHollow, ashy stoneTuff
nether_bricksDry, ceramic clinkNether bricks, red nether bricks
bone_blockDry, hollow rattleBone block
sculkOrganic, wet crackleSculk, sculk sensor
mudSquelching, heavy wet earthMud, muddy mangrove roots
bamboo_woodLight, snappy hollow woodBamboo planks, bamboo mosaic
cherry_woodSoft, slightly muted timberCherry planks, cherry log

How Block Sounds Pair with Behavior Pack Components

While the sound itself is declared in `RP/blocks.json`, the way the sound plays in-game depends heavily on how your block is configured in the Behavior Pack (`BP/blocks/*.json`). For instance, the `hit` sound (played continuously while a player holds down the mine button) will only be heard if the block takes time to break via `minecraft:destructible_by_mining`. If `seconds_to_destroy` is set to `0`, the block breaks instantaneously and skips straight to the break sound.

Similarly, step and fall sounds require the player to actually collide with the block. If you set `minecraft:collision_box` to `false` (for example, on a custom flower or tall grass block), players walk through the block rather than on top of it, so the step sound will not trigger in the normal way.

BP/blocks/treated_planks.json
{
  "format_version": "1.20.80",
  "minecraft:block": {
    "description": {
      "identifier": "my_addon:treated_planks"
    },
    "components": {
      "minecraft:destructible_by_mining": {
        "seconds_to_destroy": 2.0
      },
      "minecraft:destructible_by_explosion": {
        "explosion_resistance": 3.0
      },
      "minecraft:material_instances": {
        "*": {
          "texture": "treated_planks",
          "render_method": "opaque"
        }
      }
    }
  }
}

Limitations of RP/blocks.json Sounds

Because `RP/blocks.json` keys are flat block identifiers, you cannot switch the `sound` group dynamically using block states or permutations. A custom block has one sound group for its entire lifecycle across all of its states. If your block transforms into a drastically different material (such as wet mud drying into hard brick), and you want the step and break sounds to change accordingly, it is usually cleaner to split the states into two separate block identifiers rather than one block with a state.

If you need a one-off sound when a player right-clicks or interacts with a block (such as flipping a custom switch or opening a custom crate), `RP/blocks.json` does not cover that. For interaction sounds, attach a custom script component in your Behavior Pack and call the `world.playSound` or `Dimension.playSound` method in `@minecraft/server` when the `onPlayerInteract` event fires.

Which versions this applies to

Applies to all modern Bedrock versions (1.16.100 through 1.21+). No experimental toggles are required to assign vanilla sounds in RP/blocks.json, though specific newer sound strings (like cherry_wood or bamboo_wood) require a client version that includes those vanilla blocks (1.20+).

When it does not work

What you seeWhyThe fix
The block is completely silent when walked on, placed, or broken, or plays the default stone sound instead of wood/metal.Either the block identifier in RP/blocks.json is missing its namespace (e.g. writing "treated_planks" instead of "my_addon:treated_planks"), or the sound string is misspelled (such as writing "wooden" instead of "wood" or "iron" instead of "metal").Make sure the key in RP/blocks.json matches the exact "identifier" string from your Behavior Pack block file, including the namespace, and verify the sound value against the vanilla sound list.
Content Log shows: [Blocks][error]-blocks.json | ... syntax error or duplicate key.Multiple developers or tools added the same custom block identifier to RP/blocks.json twice, or left a trailing comma on the last entry in the file.Validate RP/blocks.json with a strict JSON linter, remove trailing commas, and merge any duplicate block identifier objects so each block appears only once.
Defining textures in RP/blocks.json overrides or conflicts with minecraft:material_instances in the Behavior Pack.When a block uses the modern minecraft:material_instances component in BP/blocks/*.json, putting a "textures" key inside RP/blocks.json as well can cause the game to ignore your material instance settings.Omit the "textures" key from RP/blocks.json on modern custom blocks; leave only the "sound" key inside the block's entry and keep all texture definitions inside the Behavior Pack's minecraft:material_instances component.

Reference, straight from the game files

Read out of the game itself, so the ids match the version you are building for.