<< All versions

Skill v1.0.1

currentAutomated scan100/100
mojang/minecraft-creator-tools/create-block

+7 new

──Details
PublishedOctober 27, 2026 at 01:27 PM
Content Hashsha256:d4c1b37a2a473203...
Git SHAa8f2cd2fc7aa
Bump Typepatch
Compare with v1.0.0
──Files
Files (1 file, 8.0 KB)
SKILL.md8.0 KBactive
SKILL.md · 118 lines · 8.0 KB

name: create-block description: Create a new placeable block for a Minecraft Bedrock Edition add-on from a plain description, or change an existing one, such as a decorative, glowing, ore, crate, slab, stairs, or light-source block, including its texture, sounds, mining time, drops, which way it faces, and whether it generates in the world. Use this whenever someone wants a new block or wants to change one of their blocks, for example "make a glowing mushroom block you can harvest", "add a ruby ore that generates underground", "create a stone brick variant", or "make my crate face the player". For mobs use create-mob, for handheld items use create-item, for redrawing a block's texture use design-model, and for structures built out of blocks use Minecraft Creator Tools' designStructure tool directly. Custom 3D block shapes aren't supported yet. Not for Minecraft Java Edition mods. metadata: version: "1.0.1"


Create or change a block

A block needs a behavior pack definition, a texture registered in terrain_texture.json, an entry in the resource pack's blocks.json, and often a loot table. For a new block, the Minecraft Creator Tools MCP tool createMinecraftContent writes these from one definition; your job is to translate the request, then check and finish what it produces. For a block that already exists, skip to "Changing an existing block".

1. Understand the request

Work out, or choose sensible defaults for:

  • Name and a short lowercase ID (glow_mushroom_block).
  • Shape: full cube (default), slab, stairs, fence, wall, cross (plant-like), or custom.
  • Behavior: light level (0-15), how long it takes to mine, explosion resistance, flammable, falls like sand, faces the player when placed.
  • What it drops when mined: itself (default), other items, or nothing.
  • Whether it generates naturally (ores, plants) and where.
  • Look: color or pixel-art texture, and sound set (stone, wood, gravel, grass, sand, glass, metal, cloth, snow, coral).

Only ask when an answer would change the design a lot; otherwise pick defaults and say what you chose. Blocks that _do_ something custom when clicked or stepped on need the Script API, which these skills don't cover yet; create the block and tell the user that part needs scripting.

2. Pick the project folder and namespace

  • Existing project: reuse its namespace from existing identifier values.
  • New project: an empty folder and a short lowercase namespace (letters, digits, underscores). Never minecraft.

3. Generate with createMinecraftContent

Pass outputPath as the project folder itself. Put blocks in blockTypes, and world generation in features:

json
{
"schemaVersion": "1.0.0",
"namespace": "gems",
"itemTypes": [{ "id": "ruby", "displayName": "Ruby", "color": "#D01C3A" }],
"blockTypes": [
{
"id": "ruby_ore",
"displayName": "Ruby Ore",
"traits": ["solid"],
"destroyTime": 3,
"mapColor": "#8C3A4A",
"sounds": "stone",
"drops": [{ "item": "gems:ruby" }]
}
],
"features": [
{
"id": "ruby_ore_feature",
"spread": {
"places": [
{
"type": "ore",
"id": "gems:ruby_ore",
"replacesBlocks": ["minecraft:stone", "minecraft:deepslate"],
"count": 4
}
],
"count": 3,
"heightPlacement": { "type": "range", "min": -32, "max": 16 },
"biomes": ["overworld"]
}
}
]
}

Useful traits: solid, transparent, leaves, log, slab, stairs, fence, wall, door, trapdoor, container, workstation, light_source, gravity, button, lever, pressure_plate, redstone_signal. Use states and permutations for blocks that change (growth stages, on/off); those take native Minecraft JSON. references/placement-and-worldgen.md covers blocks that face the player and world generation. spread only works for ores; plants, trees, and other placements need raw feature JSON.

4. Check what was generated

Open behavior_packs/<pack>/blocks/<id>.json and compare it with the request. Known gaps as of Creator Tools 0.17:

  • Unknown fields are silently dropped, even in `features`. A feature with the wrong shape is counted in the summary but produces no files. Confirm features/ and feature_rules/ files exist for each feature. Fix blocks by editing the generated file; running the tool again won't update a file that already exists.
  • Only ore world generation is complete. Other spread placement types, scatter, count ranges, and heights of exactly 0 aren't handled; see references/placement-and-worldgen.md.
  • Scatter features use an older layout that validation flags with a JSONF warning about a missing distribution field. references/placement-and-worldgen.md shows the current layout.
  • Custom drops aren't wired up. A loot table is written to loot_tables/blocks/<id>.json, but the block doesn't point to it, so it drops itself. Add to the block's components:

``json "minecraft:loot": "loot_tables/blocks/ruby_ore.json" ``

  • Adding to an existing project rewrites both manifests. The behavior pack's dependency on its resource pack gets a new UUID that points at nothing, and header.name is reset. Check git diff (or compare with a copy you made first) and restore the original manifest values. The debug-addon validation script reports a broken dependency as [PACKDEP].
  • Sounds live in resource_packs/<pack>/blocks.json, not the behavior file. That's expected.

5. Give it a readable name

Creator Tools doesn't create localization, so the block shows as tile.<namespace>:<id>.name. Run the debug-addon skill's names script with the display names the user asked for. <debug-addon-skill-folder> is the debug-addon skill's folder, next to this skill's folder; if it's missing, install the debug-addon skill too.

bash
node "<debug-addon-skill-folder>/scripts/add-missing-names.mjs" <project-folder> --name "gems:ruby_ore=Ruby Ore"

6. Texture

Without a texture, the block gets a placeholder generated from mapColor. For a specific look, pass texture.all (or per-face up/down/side) with pixelArt in the definition, or use the design-model skill's pixel-art step to draw a 16x16 resource_packs/<pack>/textures/blocks/<id>.png. Keep the file path and the key in terrain_texture.json unchanged so the block keeps finding its texture.

7. Validate

Follow the debug-addon skill: run its validation script, add pack icons (new projects don't have them), and fix errors until none remain.

8. Tell the user

Summarize the blocks created, the defaults you picked, and how to try it: find it in the creative inventory (Construction tab by default) or use /give @s <namespace>:<id>, then place and mine it. World generation only happens in newly generated chunks, so they need a new world or unexplored area to see ores. To look at it without Minecraft, they can run npx -y @minecraft/creator-tools@latest view -i <project-folder>.

Changing an existing block

  1. Find the block's file (behavior_packs/<pack>/blocks/*.json, matched by identifier) and edit its components directly. Running createMinecraftContent again won't change a file that already exists.
  2. Common changes: minecraft:light_emission, minecraft:destructible_by_mining (seconds_to_destroy), minecraft:destructible_by_explosion, minecraft:friction, minecraft:loot, minecraft:map_color, and menu_category in the description. Sounds are in the resource pack's blocks.json.
  3. Validate with the debug-addon skill, and tell the user what changed.

If the MCP tools aren't available

This skill needs the Minecraft Creator Tools MCP server (npx -y @minecraft/creator-tools@latest mcp). If its tools are missing, tell the user and suggest adding that server. As a fallback, npx -y @minecraft/creator-tools@latest add --help lists template-based commands; these need the user to have accepted the Minecraft EULA themselves (npx -y @minecraft/creator-tools@latest eula). Never accept it on their behalf.

← v1.0.0All versions