Guides / Building & Resources

Custom paintings and music discs without replacing the originals

Both became datapack registries, so you can add new ones instead of overwriting vanilla. Here are the two files each needs and the sizing rule paintings must follow.

The old way to get a custom painting was to overwrite paintings_kristoffer_zetterstrand.png and lose a vanilla one. Both paintings and music discs are now registries, so you add rather than replace.

Paintings need two files

A datapack entry defining the painting:

data/<namespace>/painting_variant/my_art.json
{
  "asset_id": "my_pack:my_art",
  "width": 2,
  "height": 2,
  "title": { "text": "My Art" },
  "author": { "text": "Me" }
}

And a resource pack supplying the image:

assets/my_pack/textures/painting/my_art.png

width and height are in blocks, and the texture must match that ratio at 16 pixels per block. A 2×1 painting needs a 32×16 texture. Get the ratio wrong and it stretches; there is no auto-fit.

Vanilla sizes are 1×1 up to 4×4. Larger works but needs a wall to match.

Making it obtainable

Adding the variant does not put it in the game. Two routes:

  • The placement tag — add it to #minecraft:placeable so a normal painting item can

randomly become it.

  • Directly/give @p painting[entity_data={id:"minecraft:painting",variant:"my_pack:my_art"}]

Most map-makers want the second: a specific painting, not a random one.

Music discs need three

data/<namespace>/jukebox_song/my_song.json
{
  "sound_event": { "sound_id": "my_pack:music/my_song" },
  "description": { "text": "My Artist - My Song" },
  "length_in_seconds": 154,
  "comparator_output": 12
}

Plus sounds.json mapping that sound id to a file, plus the .ogg itself:

assets/my_pack/sounds.json
assets/my_pack/sounds/music/my_song.ogg

Three details matter:

  • length_in_seconds must be right. It drives when the jukebox stops and when the

particle stream ends, not the audio. Wrong value means silence at the end or a cut-off.

  • comparator_output is 1–15 and is what a comparator reads. Vanilla discs each have

a distinct value; reuse one and redstone cannot tell them apart.

  • Stream the ogg. "stream": true in sounds.json for anything music-length.

Then give it:

/give @p music_disc_13[jukebox_playable="my_pack:my_song"]

Any disc item works as the carrier — the component decides what plays.

Why this is better than overwriting

A pack that replaces vanilla assets conflicts with every other pack that does the same, and breaks when Mojang renames a file. Registry additions are namespaced, so two packs adding paintings coexist. It is also the only approach that survives a version bump without editing.

Build painting variants, jukebox songs, totems and chat emoji into one ready resource pack zip with the Custom Content Pack Makers.

Open the Custom Content Pack Makers →

More guides

Browse all →

Looking for more Minecraft tools?

A suite of client-side generators, viewers and converters — all free, all in your browser.