blockbench-texturing

Create and paint textures in Blockbench using MCP tools. Use when creating textures, painting on models, using brush tools, filling colors, drawing shapes, applying gradients, managing texture layers, or working with UV mapping. Covers pixel art texturing, procedural painting, and UV manipulation.

By jasonjgardner · 816 installs

npx skills add jasonjgardner/blockbench-mcp-project --skill blockbench-texturing

Source repository · Upstream listing

Blockbench Texturing Create and paint textures for 3D models using Blockbench MCP tools. When the model should use Minecraft's own textures ("vanilla" or "default" textures, or a named block such as bricks or oak planks), use [vanilla textures](../blockbench vanilla textures/SKILL.md). It downloads Mojang's originals from the CDN before any painting or generation. For animated texture sheets, use [flipbook textures](../blockbench flipbook textures/SKILL.md): generate artwork through the GPT Image 2.5 texture skill, convert measured sprite cells to a vertical strip, and configure one frame UV dimensions and playback metadata. Plan UVs Before Texture Detail Carry forward the user's [appearance/performance preference](../blockbench use/references/appearance and performance.md). For performance or balanced designs, allocate shared UV tiles for repeated braces/infills, seat ribs, seams, and mounting details before adding geometry. Paint small fasteners onto existing supporting faces; add aligned [PBR maps](../blockbench pbr materials/SKILL.md) when the target supports them. Reusing UVs alone does not reduce the geometry already present. Fix texel density before sizing textures. Choose between tiled faces and a unique atlas; for low poly glTF, collapse face UVs onto a palette atlas. Confirm whether the target accepts non square or non power of two images: Minecraft does not, while Hytale and Babylon.js do. Minecraft face UVs do not wrap, so repeat a tile by splitting faces. See [real time asset planning](../blockbench use/references/real time asset planning.md) sections 7–9. Inspect the target's box/per face UV mode and effective UV dimensions before painting. UV units can differ from image pixels; formats with per texture uv size use each face's texture dimensions. Preserve deliberate mirrored/repeated UV overlaps, and allocate unique space for asymmetric detail. Preview a checker or directional mark for stretching, orientation and seams. Match pixel density to the user's style and viewing distance; Minecraft pixel art rules do not apply to every format. See [format and delivery guidance](../blockbench use/references/formats and delivery.md). Blockbench's native texture template workflow can lay out UVs, but create texture creates/imports an image and does not generate that layout. auto uv mesh maps faces and does not pack islands. For packed layouts, use a tool actually advertised by the running bundle or the native template/UV workflow; preserve an existing painted atlas before rearranging it. Preserve UV Proportions and Material Scale Read [UV scale and distortion guidance](references/uv scale and distortion.md) before applying detailed materials, sharing swatches across different face sizes, or correcting stretched textures. Compute sampled image pixels per model unit along both face directions using the effective texture's frame and logical UV sizes. A shared material normally needs proportionate UV footprints, not the same full rectangle on every face. Check both local stretching and scale differences between parts with a reversible checker, then inspect the actual grain/pattern. Prefer proportionate subregions, appropriate trim strips, or verified target supported tiling. A bounded UV rectangle or larger image does not prove correct scale. Keep deliberate stretching for uniform materials or designed effects; a plain albedo with detailed PBR channels still needs the scale check. Replace Repeated Geometry with a UV Tile Use a small number of format supported panels for repeated rail infills or X braces when the chosen viewing distance tolerates flat detail. Map the pattern onto those panels and keep the holes transparent. Reserve opaque regions for solid surfaces and pad atlas islands without filling intentional holes. Check edge on views, both sides, filtering/mipmaps, and distant views for disappearing bars, halos, or texture bleed before removing the replaced geometry. Test transparent layers for overdraw; one cutout panel per bar defeats the reduction. Choose the target's alpha test/culling behavior explicitly; double sided rendering and translucent blending have costs. Multiple textures are permitted when the format supports them, but importing images does not complete runtime material wiring. For Bedrock custom blocks, follow [material instance and texture delivery](../blockbench use/references/bedrock material instances.md); entity bindings use a different workflow. Generate a Native Texture Template For a new atlas, enter a supported Edit mode and establish the intended outliner selection, then open the native action without accepting its defaults: Inspect the returned app screenshot/dialog before using fill dialog . The current native dialog commonly has name , type="template" , resolution (pixel density), rearrange uv , double use (reuse matching faces), power , and padding . Send only fields present in that host's dialog. Example after inspecting its defaults: Choose density, overlap reuse and padding for the target; the template's resolution is not a requested final atlas width. An empty outliner selection may select the whole model, and single texture formats can process all eligible visible elements even with a partial selection. Check the operation's scope before confirming, especially on painted content. Generation may continue asynchronously: verify list textures , actual UVs and get texture after completion before painting. fill dialog: confirm=false cancels the dialog; it is not a way to fill fields and leave it open. See the [native texture generator](https://github.com/JannisX11/blockbench/blob/master/js/texturing/texture generator.js) and [official template workflow](https://blockbench.net/wiki/guides/bedrock modeling/). Paint coordinates are image pixels. Pass an explicit texture id to each paint tool when more than one texture exists. Layers and selections affect native painting; inspect the selected layer and existing selection before painting. layer name names a new/renamed layer; for most layer actions the tool operates on the currently selected layer rather than resolving an arbitrary layer by name. Available Tools Texture Management Tool Purpose create texture Create new texture with size and fill color list textures List all project textures get texture Get texture image data activate texture Select an existing texture apply texture Apply texture to element Paint Tools Tool Purpose paint with brush Paint with customizable brush paint fill tool Bucket fill areas draw shape tool Draw rectangles/ellipses gradient tool Apply gradients eraser tool Erase with brush settings color picker tool Pick colors from texture copy brush tool Clone/copy texture areas Brush Management Tool Purpose create brush preset Save brush settings load brush preset Load saved brush paint settings Configure paint mode Layers & Selection Tool Purpose texture layer management Manage texture layers texture selection Create/modify selections UV Tools Tool Purpose set mesh uv Set UV coordinates auto uv mesh Auto generate UVs rotate mesh uv Rotate UV mapping get mesh info Read mesh face/vertex keys and existing UVs with include uv=true get cube uv Inspect box/per face UVs, effective face texture, UV dimensions and bitmap dimensions set cube uv Edit box offset/mirroring or per face rectangles, rotations and texture references Resources Resource URI Purpose textures textures://{id} List/read texture info Creating Textures New Blank Texture Texture with Transparency Separate UV Dimensions from Bitmap Resolution In a format with per texture uv size=true , create texture accepts uv width and uv height together as positive numbers. Omit both to preserve the native defaults. The pair also works when importing image data ; it sets logical UV dimensions after image decoding without resizing the bitmap. This static image has four pixels per UV unit on each axis. Multiple textures can have different UV sizes in the same project, so use the face's effective texture dimensions for mapping. list textures exposes uv size , bitmap size , and frame size in the current bundle. Formats with project wide UV dimensions reject per texture overrides; inspect and edit the native project UV size settings instead. Changing logical dimensions can change existing mapping, so preserve the intended pixel density and verify the result. Apply to Element create texture requires layer name whenever fill color is supplied. Texture lookups accept a name or UUID; use the UUID from list textures when names are ambiguous. Painting Basic Brush Stroke Soft Brush Fill Area The native fill API supports exact color matching only; nonzero tolerance is rejected. Face/element fill modes depend on native geometry/UV context. Texture pixel coordinates alone do not identify a model face. Use explicit rectangular painting for a known UV rectangle, or establish and verify the native target context before face filling. Inspect the result; a success message alone does not prove that only the intended face changed. Shapes & Gradients Draw Rectangle Draw Hollow Ellipse Apply Gradient Erasing Color Picking Clone/Copy Brush Brush Presets Create Preset Load Preset Texture Layers Create Layer Set Layer Opacity Merge Down Selections Rectangle Selection Add to Selection Invert Selection Feather Edges UV Mapping Cube UVs Confirm get cube uv and set cube uv are advertised by get capabilities: include tools=true ; older loaded bundles need reloading before these tools are available. Use a cube's actual UUID as id when a group has the same name. Choose the example matching the cube's inspected mode; box offsets and face rectangles are different workflows. Changing modes requires an explicit box uv argument and a format that permits it; native conversion can reset rotations and enable disabled faces. The tool verifies that conversion succeeded and rolls back a refused conversion. Nonzero face rotations require the format's uv rotation support. Explicit rectangles normally disable automatic remapping; Hytale preserves autouv=1 and requires rectangle extents to match the absolute base face dimensions, swapping width/height for 90/270 degree UV rotation. Matching offsets and mirrors are allowed, while changed extents are rejected before Undo. Hytale quads cannot use box UV. See the [Hytale native UV behavior](https://github.com/JannisX11/hytale blockbench plugin/blob/main/src/element.ts). Per face texture accepts an existing texture name/UUID, false for unassigned, or null to disable the face. Single texture and per group texture formats restrict per face assignments; use their existing global/group workflow. Hytale resolves textures through an attachment collection or the project default even when single texture=false ; the tool rejects non null per face assignments there. Reinspect after edits, including effective texture , uv size , bitmap size , and frame size . Convert UVs to pixels within a frame using frame size / uv size on each axis; bitmap size includes the entire animated atlas. For a frame 64 pixels across 16 UV units, a UV coordinate of 4 is frame X=16. Auto UV for Mesh project uses the active preview camera; unwrap creates an independent planar mapping per face and does not pack UV islands. cylinder and sphere use the mesh local origin and each mapped face's effective UV dimensions, so inspect texture assignments first. Pass explicit returned face keys in faces to target onl