home / skills / jasonjgardner / blockbench-mcp-project / blockbench-pbr-materials
This skill helps you create and manage Blockbench PBR materials for Minecraft Bedrock RTX, streamlining texture workflows and MER mapping.
npx playbooks add skill jasonjgardner/blockbench-mcp-project --skill blockbench-pbr-materialsReview the files below or copy the command above to add this skill to your agents.
---
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
This skill creates and manages PBR (Physically Based Rendering) materials in Blockbench using MCP tools. It streamlines creating texture channels, configuring metalness/emissive/roughness (MER) maps, and importing/exporting texture_set.json for Minecraft Bedrock RTX workflows. Use it to build multi-channel textures and prepare materials for in-game RTX previews.
The skill exposes commands to create materials, assign or replace texture channels (color, normal, height, mer), and configure per-material properties like metalness, emissive intensity, roughness, and subsurface scattering. It can import existing texture_set.json files and export material configurations back to texture_set.json for pack distribution. MER textures pack Metalness, Emissive, and Roughness into the R, G, and B channels respectively.
What does MER stand for and how are channels mapped?
MER packs Metalness (R), Emissive intensity (G), and Roughness (B) into a single RGB texture to reduce channel usage.
Which format should normal and height maps use?
Normal maps use RGB tangent-space (blue-dominant). Height maps should be grayscale where white is high and black is low.