How to Make a Custom Block in Minecraft Bedrock (2026)

Build a placeable, mineable block with its own texture, name, sound-ready material setup, light level, and a workflow you can extend to custom geometry.

Stable foundationThis guide uses stable custom-block fundamentals checked against Microsoft Creator documentation in July 2026. Newer components such as connection and support rules can have different experiment requirements on older format versions.

The short answer

A custom Bedrock block needs a block definition in the Behavior Pack and a texture registration in the Resource Pack. The block's minecraft:material_instances component references a texture key from terrain_texture.json. A language entry gives it a readable inventory name.

We will create Glowing Slate with the identifier icedfox:glowing_slate. It behaves like a solid cube, emits light, appears in Creative mode, and can be mined in Survival.

File structure

Pack structure
GlowingSlate_BP/
  manifest.json
  blocks/
    glowing_slate.json

GlowingSlate_RP/
  manifest.json
  textures/
    terrain_texture.json
    blocks/
      glowing_slate.png
  texts/
    en_US.lang
    languages.json

This simple cube does not need a custom geometry file. Add models/blocks/*.geo.json only when the shape is more complex than a full cube.

Step 1: define the block

Create GlowingSlate_BP/blocks/glowing_slate.json:

blocks/glowing_slate.json
{
  "format_version": "1.21.80",
  "minecraft:block": {
    "description": {
      "identifier": "icedfox:glowing_slate",
      "menu_category": {
        "category": "construction"
      }
    },
    "components": {
      "minecraft:geometry": "geometry.full_block",
      "minecraft:material_instances": {
        "*": {
          "texture": "glowing_slate",
          "render_method": "opaque"
        }
      },
      "minecraft:destructible_by_mining": {
        "seconds_to_destroy": 1.5
      },
      "minecraft:destructible_by_explosion": {
        "explosion_resistance": 6
      },
      "minecraft:friction": 0.6,
      "minecraft:light_emission": 10,
      "minecraft:light_dampening": 15,
      "minecraft:map_color": "#5BBF8A"
    }
  }
}

What these components control

  • geometry.full_block uses the standard full cube shape.
  • material_instances links every face to one texture key and defines how it renders.
  • destructible_by_mining controls how long the block takes to break.
  • destructible_by_explosion controls blast resistance.
  • light_emission turns the block into a light source; values run from dark to bright within the supported range.
  • light_dampening controls how much light passes through the block.

Start with a minimal block. Add permutations, traits, loot, collision changes, custom components, or redstone behavior only after the cube places and renders correctly.

Step 2: register the terrain texture

Save a square PNG at GlowingSlate_RP/textures/blocks/glowing_slate.png. Then create or merge this entry into textures/terrain_texture.json:

textures/terrain_texture.json
{
  "resource_pack_name": "Glowing Slate Resources",
  "texture_name": "atlas.terrain",
  "padding": 8,
  "num_mip_levels": 4,
  "texture_data": {
    "glowing_slate": {
      "textures": "textures/blocks/glowing_slate"
    }
  }
}

The glowing_slate key matches the texture value in minecraft:material_instances. The path omits the .png extension.

Transparent textures need the right render methodUse alpha_test for fully opaque or fully transparent pixels, and use blending only when partial transparency is genuinely required. Blending costs more and can produce sorting artifacts.

Step 3: name the block

Declare your Resource Pack language in texts/languages.json:

texts/languages.json
[
  "en_US"
]

Then add this line to texts/en_US.lang:

texts/en_US.lang
tile.icedfox:glowing_slate.name=Glowing Slate

Use additional language files for translations. Keep en_US complete because it is the normal fallback.

Step 4: test placement and breaking

  1. Activate both packs in a clean test world.
  2. Run /give @s icedfox:glowing_slate 64.
  3. Place the block against every face and inspect all sides.
  4. Switch between day and night to verify light emission.
  5. Break it in Survival and compare the mining time with nearby vanilla blocks.
  6. Use /setblock ~ ~ ~ icedfox:glowing_slate to test command placement.
  7. Reload the world and confirm placed blocks persist.

If the command does not recognize the block, focus on the Behavior Pack. If it places but renders pink and black, focus on the Resource Pack texture key and path.

When to use Minecraft Block Wizard

Blockbench's Minecraft Block Wizard is useful when you want to:

  • Generate a first working block without assembling every file manually.
  • Start from a vanilla-style preset.
  • Create and preview custom geometry and textures.
  • Export directly to development packs or as an .mcaddon.
  • Configure basic mining, explosion, friction, light, transparency, and sound choices visually.

After export, inspect the generated files. The wizard is a starting point, not a replacement for understanding identifiers, material instances, geometry names, and texture paths.

Safe next steps

Different textures per face

Define named material instances for faces or model bones instead of mapping * to one texture. Keep each texture key registered in terrain_texture.json.

Custom geometry

Export a Bedrock block model from Blockbench, place its geometry JSON under the Resource Pack, and replace geometry.full_block with the geometry identifier from that file.

Rotation and placement

Use block traits, states, permutations, and transformation components when orientation affects the model. Test every state; a block that looks correct facing north may expose broken UVs in the other directions.

Interactive behavior

Use native block components first. Use a Script API custom component when the block must react to player interaction, ticks, redstone updates, placement, or destruction in a way data-driven components cannot express.

Common custom block problems

Pink and black block

The block exists but the client cannot resolve its material. Match the material texture key to terrain_texture.json, confirm the PNG path, and verify the Resource Pack is active.

Invisible block with collision

The Behavior Pack definition loaded but the geometry or material did not. Check the geometry identifier, resource paths, and Content Log. If using a custom model, verify its geometry name inside the exported file.

Block appears in commands but not Creative inventory

Add a valid menu_category to the block description, then reload the pack and search by its translated name.

Block breaks but drops nothing

Mining behavior and drops are separate. Add and reference an appropriate loot table when the default drop behavior does not match your design.

Texture is blurry or has seams

Check texture dimensions, UV mapping, transparent edge pixels, mip behavior, and whether the model stretches a small region across a large face.

Frequently asked questions

Do basic custom blocks require experimental toggles?

Basic custom blocks and their core geometry/material workflow are stable. Some newer block components can require Upcoming Creator Features when used with older format versions. Check the current reference for each advanced component.

Can one block have several visual states?

Yes. Define block states and permutations, then switch geometry, materials, or other components based on those states.

Can a custom block emit redstone?

Bedrock's current block component and Script API surfaces continue to evolve. Check the stable reference for redstone producer or consumer components and their format-version requirements before relying on them.

Official sources checked