How to use it
- Drop a PNG, JPG or WebP picture. Drag the crop box to keep the part you want; “Use the whole image” resets it.
- Set the width in blocks – the height follows the crop’s aspect ratio while the lock is on. A 64-block-wide wall is a serious build; 32 is a good first project.
- Choose wall or floor, your game version and the block groups you can afford. Open “Individual blocks” to drop any block you dislike (the art is recomputed instantly).
- Try a dithering pattern if the picture has gradients, and compare Lab with RGB matching for skin tones and sky colours.
- Download the blueprint PNG and the materials CSV or copy the materials list; the build-steps TXT tells you each layer (walls, bottom-up) or row (floors, far row first) as runs like “5 × [2] White Concrete”.
Example
A 400 × 300 px logo cropped to its centre and set to 48 blocks wide becomes a 48 × 36 wall (1,728 cells). With concrete and wool enabled and no dithering the plan uses 7 block types: 812 × White Concrete (12 × 64 + 44, 1 shulker box), 503 × Black Concrete, 190 × Red Wool… The blueprint PNG is drawn at 32 px per block (1,576 × 1,192 px) with every cell numbered 1–7; layer 1 of the instructions is the bottom row of the image.
How the plan is made
1. crop → area-average resample to W × H blocks (each cell = mean colour of the source pixels it covers)
2. per cell: block = argmin over enabled blocks of ΔE76(Lab(cell), Lab(block average colour)) (or redmean / plain RGB distance)
3. optional dithering spreads the matching error to neighbouring cells (Floyd–Steinberg 7/16 3/16 5/16 1/16, Atkinson 6 × 1/8) or adds a Bayer threshold
stacks = ⌊count / 64⌋ + remainder · shulker boxes = ⌈count / (27 × 64)⌉ per block typeThe block colours are hand-compiled averages of the default Java Edition textures (side faces for logs and similar blocks). They are meant for choosing between blocks and may differ by a few RGB units from a pixel-exact average; in the game, texture noise, shading and light change the look. Translucent blocks (glass, ice), tinted blocks (grass, leaves), glazed terracotta and heavily patterned blocks are left out because a single average colour does not describe them. Map colours used by Minecraft maps are a different, smaller palette and are not used here.
Walls are built as the image is seen from the front: layer 1 is the bottom row and column 1 is on the left. Floors are listed from the far row (top of the image) towards you. Falling blocks are always excluded from walls because they need support below; on floors they are allowed unless you switch them off.
Sources: Minecraft Wiki – Block (list of blocks and the version each was added), Minecraft Wiki – Shulker Box (27 slots), CIE 1976 L*a*b* colour difference.
Questions
- Why are the colours in the preview flat instead of textured?
- The preview shows each block as its average colour so you can judge the overall picture; drawing real textures would require redistributing Minecraft assets. In the game the textures add detail but the colours sit where the preview puts them.
- Can I export a schematic or litematic file?
- Not in this version. The JSON export contains the full grid (rows of legend numbers plus a legend with block ids), which is easy to convert with a script; the blueprint and the build steps are designed for building by hand.
- Does it work for map art?
- Partly. Floor mode gives you a horizontal plan, but in-game maps render blocks with their own 61-colour map palette and height-based shading, not with the texture averages used here, so the colours on a map will differ.
- How big can the art be?
- Up to 256 × 256 blocks (65,536 cells). Larger plans get a smaller blueprint cell (down to 6 px) and the cell numbers disappear below 14 px per cell – the CSV, TXT and JSON exports stay complete.