Quadros e discos personalizados precisam de dois pacotes, e a instalação de apenas um deles costuma ser a causa da falha
O datapack registra o conteúdo; o pacote de recursos fornece a textura e o som. Apenas o datapack registra, mas não há nada para mostrar. Entenda também o limite de 4x4 e por que a duração do disco não é apenas estética.
Quadros e discos de música são registros reais no Java moderno, o que significa que você pode adicioná-los em vez de substituir os originais. Nada do que você adicionar desloca um quadro ou disco existente.
O problema é que o conteúdo é dividido em dois tipos diferentes de pacotes, e cada um é inútil sozinho.
Onde cada coisa vai
O datapack registra o item:
data/<ns>/painting_variant/<id>.json asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json sound_event, description, length, comparator
O pacote de recursos fornece o que você vê e ouve:
assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json
Se você instalar apenas o datapack, o conteúdo será registrado com sucesso — ele existe, /give o encontra, mas simplesmente não há textura nem áudio. Esse resultado é muito mais confuso do que uma falha total, e é a razão comum pela qual um quadro personalizado "não funcionou". A ferramenta desta página envia ambos em um único arquivo .zip especificamente para que não possam ser separados.
Observe os dois arquivos pack.mcmeta. Eles são pacotes separados com identidades separadas; não existe um formato combinado que contenha ambos.
IDs de registro são mais rigorosos que nomes de arquivo
Um ID pode conter apenas a-z, 0-9, _, . e -. Qualquer outra coisa e o pacote falha ao carregar — não apenas a entrada quebrada, mas o pacote inteiro. Letras maiúsculas e espaços são os dois que mais pegam as pessoas, porque ambos são perfeitamente comuns no nome de arquivo que você arrastou.
Quadros: de 1×1 a 4×4
Os tamanhos originais variam de 1×1 a 4×4 blocos, oferecendo dezesseis formas possíveis. Uma variante fora dessa faixa ainda será renderizada — o jogo não a rejeita — mas não pode ser pendurada em uma parede do tamanho que os jogadores esperam, então é efetivamente impossível de colocar em uma construção normal.
O tamanho é declarado no JSON como width e height, em blocos. Não é inferido do PNG, então um quadro 3×1 cuja textura é quadrada é um arquivo válido que será exibido esticado.
A duração do disco não é apenas um rótulo
length_in_seconds controla duas coisas: o tempo do Toca-Discos e a rampa do comparador — o sinal que um comparador lê de um Toca-Discos tocando aumenta ao longo da duração declarada da faixa.
Portanto, uma duração imprecisa não é um erro estético. Declare uma faixa de 200 segundos como 100 e o comparador terminará sua rampa na metade do caminho, o que silenciosamente quebra qualquer mecanismo de redstone que dependa do fim do disco. Por essa exata razão, esta ferramenta lê a duração real do arquivo em vez de pedir que você a digite.
As faixas também são escritas com "stream": true em sounds.json. Músicas são longas, e carregar uma faixa completa na memória antes de reproduzi-la causa travamentos — o streaming é o padrão certo para qualquer coisa com duração de disco, e o errado para um efeito sonoro curto.