Minecraft Paintings & Custom Art

Understand vanilla painting mechanics, then choose the correct custom-art workflow for your Java Edition version. Minecraft 1.21+ separates the visible texture asset from the data-driven painting definition.

Contents
  1. Vanilla painting mechanics
  2. Controlling which painting appears
  3. Choose the workflow for your Java version
  4. Build and test the pack
  5. Gallery layout tips
  6. Common pitfalls
  7. FAQ

1) Vanilla painting mechanics

Paintings are entities that fit against a wall and snap to the available area. The game picks the largest painting that fits (width × height in blocks). Craft with sticks + wool, then place on a solid wall.

2) Controlling which painting appears

To force a target artwork, briefly frame the area with temporary blocks so only that size fits, place the painting, then remove the frame. Repeat replace if needed to cycle variants of the same size.

3) Choose the workflow for your Java version

Before Java Edition 1.21: a resource pack can replace the texture asset of an existing vanilla painting. It does not create a new data-driven painting size or ID. Asset paths and pack metadata change between releases, so copy the exact painting asset path from the same game version instead of following a version range from an older tutorial.

Java Edition 1.21 and later: a new painting variant uses two separate pack responsibilities:

{
  "width": 2,
  "height": 2,
  "asset_id": "my_gallery:sunset"
}

At vanilla resolution, a 2 × 2-block painting uses a 32 × 32-pixel image. Higher-resolution packs can scale that image up, but must keep the same aspect ratio. The official Java 1.21 notes allow width and height values from 1 to 16 blocks and define asset_id as the sprite ID in the paintings atlas.

Tool boundary: the Classic Editor can help turn a source image into pixel art, but it does not create a Minecraft resource pack, data pack, or painting_variant file. This page describes the separate in-game packaging step.

4) Build and test the pack

  1. Confirm the exact Java Edition release you will run. Use that release's own client JAR or official pack notes as the source for folder layout and pack.mcmeta values.
  2. Crop the art to the declared block ratio. At vanilla resolution, multiply each block dimension by 16 pixels, then export a lossless PNG.
  3. For a pre-1.21 replacement, mirror the chosen vanilla painting's asset path in the resource pack. For a 1.21+ new variant, add the texture asset and the matching painting_variant JSON shown above.
  4. Enable the resource pack. For a 1.21+ new variant, also install the data pack in the world or server and make sure the variant is included in the applicable painting_variant/placeable tag when it should appear through normal placement.
  5. Reload or reopen the world, place the painting on a wall large enough for its declared dimensions, and confirm both the size and artwork. If the frame exists but the art is missing, recheck the namespace and asset_id; if the variant never appears, recheck the data pack and placeable tag.

For the authoritative 1.21 field names and limits, see Mojang's Minecraft: Java Edition 1.21 technical notes.

6) Common pitfalls

FAQ

How do I quickly generate pixel-art style images? Use the Classic Editor and see Getting Started.

Can I mix vanilla and custom paintings? Yes. On older versions, replace only the vanilla assets you intend to change. On Java 1.21+, use your own namespace for new variants so the vanilla definitions remain separate.

Is a resource pack enough for a new Java 1.21+ painting? No. The resource pack supplies the visible asset; the data pack supplies the variant definition and placement registration.

How do I share packs? Share the version-matched resource pack and, for a new 1.21+ variant, the companion data pack. State the tested Java Edition release so players do not assume compatibility with other versions or Bedrock Edition.

Open the Classic Editor → · Back to Tutorials · Pixel Art Complete Guide