Agent Skills: Blockbench PBR Materials

Create and manage PBR (Physically Based Rendering) materials in Blockbench using MCP tools. Use when working with texture_set.json files, creating normal/height/MER maps, configuring material properties for Minecraft Bedrock RTX, or setting up multi-channel texture workflows.

UncategorizedID: jasonjgardner/blockbench-mcp-project/blockbench-pbr-materials

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jasonjgardner/blockbench-mcp-project/tree/HEAD/skills/blockbench-pbr-materials

Skill Files

Browse the full folder contents for blockbench-pbr-materials.

Download Skill

Loading file tree…

skills/blockbench-pbr-materials/SKILL.md

Skill Metadata

Name
blockbench-pbr-materials
Description
Create and manage PBR (Physically Based Rendering) materials in Blockbench using MCP tools. Use when working with texture_set.json files, creating normal/height/MER maps, configuring material properties for Minecraft Bedrock RTX, or setting up multi-channel texture workflows.

Blockbench PBR Materials

Create and manage PBR materials for Minecraft Bedrock RTX and other PBR workflows.

Available Tools

| Tool | Purpose | |------|---------| | create_pbr_material | Create new PBR material with texture channels | | configure_material | Configure material properties | | list_materials | List all PBR materials | | get_material_info | Get detailed material info | | import_texture_set | Import texture_set.json file | | assign_texture_channel | Assign texture to PBR channel | | save_material_config | Export texture_set.json |

PBR Channels

| Channel | Description | Format | |---------|-------------|--------| | color | Base color/albedo | RGB texture | | normal | Normal map for surface detail | RGB (tangent space) | | height | Heightmap for parallax/displacement | Grayscale | | mer | Metalness/Emissive/Roughness packed | R=Metal, G=Emissive, B=Roughness |

Quick Start

Create Basic PBR Material

create_pbr_material: name="stone_pbr", textures={
  color: "stone_color",
  normal: "stone_normal"
}

Create Full Material

create_pbr_material: name="gold_block", textures={
  color: "gold_color",
  normal: "gold_normal",
  height: "gold_height",
  mer: "gold_mer"
}

Material Configuration

Set Material Properties

configure_material: material_id="stone_pbr", config={
  metalness_emissive_roughness: {
    metalness: 0.0,
    emissive: 0.0,
    roughness: 0.8
  }
}

Metallic Material

configure_material: material_id="gold_block", config={
  metalness_emissive_roughness: {
    metalness: 1.0,
    emissive: 0.0,
    roughness: 0.3
  }
}

Emissive Material (Glowing)

configure_material: material_id="glowstone", config={
  metalness_emissive_roughness: {
    metalness: 0.0,
    emissive: 1.0,
    roughness: 0.9
  }
}

Texture Assignment

Assign Individual Channel

assign_texture_channel: material_id="stone_pbr", channel="height",
  texture_id="stone_heightmap"

Replace Channel

assign_texture_channel: material_id="stone_pbr", channel="normal",
  texture_id="stone_normal_v2"

Import/Export

Import texture_set.json

import_texture_set: file_path="C:/packs/stone_texture_set.json"

Export texture_set.json

save_material_config: material_id="stone_pbr",
  output_path="C:/packs/textures/stone_texture_set.json"

Querying Materials

List All Materials

list_materials
# Returns: [{uuid, name, textureCount, hasColor, hasNormal, hasHeight, hasMER}]

Get Material Details

get_material_info: material_id="stone_pbr"
# Returns full channel assignments and config

MER Texture Format

The MER channel packs three properties into RGB:

  • R (Red): Metalness (0=dielectric, 1=metal)
  • G (Green): Emissive intensity (0=none, 1=full glow)
  • B (Blue): Roughness (0=smooth/shiny, 1=rough/matte)

Creating MER Texture

# Create blank MER texture
create_texture: name="block_mer", width=16, height=16,
  fill_color=[0, 0, 204, 255]  # Non-metal, no glow, 80% rough

# Paint metallic areas (R channel)
paint_with_brush: texture_id="block_mer", coordinates=[{x: 8, y: 8}],
  brush_settings={color: "#FF0000", size: 4}  # Metallic spot

# Paint glowing areas (G channel)
paint_with_brush: texture_id="block_mer", coordinates=[{x: 4, y: 4}],
  brush_settings={color: "#00FF00", size: 2, blend_mode: "add"}

Common Material Types

Stone/Rock

create_pbr_material: name="stone", textures={color: "stone_color", normal: "stone_normal"}
configure_material: material_id="stone", config={
  metalness_emissive_roughness: {metalness: 0, emissive: 0, roughness: 0.9}
}

Metal (Gold, Iron)

create_pbr_material: name="gold", textures={color: "gold_color", normal: "gold_normal", mer: "gold_mer"}
configure_material: material_id="gold", config={
  metalness_emissive_roughness: {metalness: 1.0, emissive: 0, roughness: 0.25}
}

Glass/Crystal

create_pbr_material: name="glass", textures={color: "glass_color"}
configure_material: material_id="glass", config={
  metalness_emissive_roughness: {metalness: 0, emissive: 0, roughness: 0.05}
}

Glowing Block

create_pbr_material: name="lamp", textures={color: "lamp_color", mer: "lamp_mer"}
configure_material: material_id="lamp", config={
  metalness_emissive_roughness: {metalness: 0, emissive: 1.0, roughness: 0.8}
}

Subsurface Scattering (Bedrock 1.21.30+)

configure_material: material_id="leaves", config={
  subsurface_scattering: {
    red: 0.3,
    green: 0.8,
    blue: 0.2
  }
}

Workflow Example

Complete Block Material

# 1. Create base textures
create_texture: name="brick_color", width=16, height=16
create_texture: name="brick_normal", width=16, height=16, fill_color="#8080FF"
create_texture: name="brick_mer", width=16, height=16, fill_color=[0, 0, 200, 255]

# 2. Paint textures (color, normal, mer)
paint_with_brush: texture_id="brick_color", ...
paint_with_brush: texture_id="brick_normal", ...

# 3. Create material
create_pbr_material: name="brick", textures={
  color: "brick_color",
  normal: "brick_normal",
  mer: "brick_mer"
}

# 4. Configure
configure_material: material_id="brick", config={
  metalness_emissive_roughness: {metalness: 0, emissive: 0, roughness: 0.85}
}

# 5. Export
save_material_config: material_id="brick", output_path="./textures/brick_texture_set.json"

Tips

  • Normal maps use tangent space (blue-ish color, RGB where B is up)
  • Height maps are grayscale (white=high, black=low)
  • MER channels can be painted separately or as a combined texture
  • Use list_materials to see what's available
  • Always test in-game with RTX enabled for accurate preview
  • Roughness 0 = mirror-like, Roughness 1 = completely diffuse