Aangepaste schilderijen en platen vereisen twee packs, en er slechts één installeren is de meest voorkomende fout
Het datapack registreert de inhoud; het resourcepack levert de textuur en het geluid. Alleen een datapack en het registreert wel, maar toont niets. Plus de 4×4-limiet en waarom plaatlengte niet cosmetisch is.
Schilderijen en muziekplaten zijn beide echte registers in modern Java, wat betekent dat je ze kunt toevoegen in plaats van vanilla-varianten te vervangen. Niets wat je toevoegt vervangt een bestaand schilderij of bestaande plaat.
Het addertje onder het gras is dat de inhoud verdeeld is over twee verschillende soorten packs, en elk afzonderlijk nutteloos is.
Wat hoort waar
Het datapack registreert het item:
data/<ns>/painting_variant/<id>.json asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json sound_event, description, length, comparator
Het resourcepack levert wat je ziet en hoort:
assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json
Installeer alleen het datapack en de inhoud wordt succesvol geregistreerd — het bestaat, /give finds it, and there is simply no texture and no audio. That is a much more confusing outcome than an outright failure, and it is the usual reason a custom painting "didn't work". The tool on this page ships both in one zip specifically so they cannot be separated.
Let op de twee pack.mcmeta files. They are separate packs with separate identities; there is no combined format that holds both.
Register-id's zijn strenger dan bestandsnamen
Een id mag alleen het volgende bevatten a-z, 0-9, _, . and -. Anything else and het pack laadt niet — niet slechts die ene foute invoer, maar het hele pack. Hoofdletters en spaties zijn de twee valkuilen, omdat beide volkomen normaal zijn in de bestandsnaam die je erin hebt gesleept.
Schilderijen: 1×1 tot 4×4
Vanilla-formaten variëren van 1 × 1 tot 4 × 4 blokken, wat zestien mogelijke vormen oplevert. Een variant buiten dat bereik wordt nog steeds gerenderd — de game weigert het niet — maar kan niet worden opgehangen aan een muur van het verwachte formaat, waardoor het in een normale build effectief onplaatsbaar is.
Het formaat wordt in de JSON gedeclareerd als width and height, in blocks. It is not inferred from the PNG, so a 3 × 1 painting whose texture is square is a valid file that displays stretched.
Plaatlengte is niet zomaar een label
length_in_seconds drives two things: the jukebox timing, and the comparator-signaalstijging — het signaal dat een comparator uit een spelende platenspeler leest, stijgt gedurende de opgegeven duur van het nummer.
Een onnauwkeurige lengte is dus geen cosmetische fout. Declareer je een nummer van 200 seconden als 100, dan voltooit de comparator zijn stijging halverwege, wat geruisloos alle redstone breekt die getimed is op het einde van een plaat. Deze tool leest om precies die reden de werkelijke duur uit het bestand in plaats van je te vragen dit in te typen.
Nummers worden ook geschreven met "stream": true in sounds.json. Music is long, and loading a full track into memory before playing it stutters — streaming is the right default for anything disc-length, and the wrong one for a short sound effect.