Для власних картин і платівок потрібні два набори, і встановлення лише одного з них — поширена помилка
Набір даних реєструє вміст; набір ресурсів надає текстуру та звук. Лише набір даних — і він реєструється, але нічого не показує. Плюс ліміт 4×4 і чому тривалість платівки не є косметичною.
Картини та музичні платівки є повноцінними реєстрами в сучасній Java, що означає, що ви можете додавати їх, а не замінювати ванільні. Ніщо з доданого вами не витісняє наявну картину чи платівку.
Підступ у тому, що вміст розділений між двома різними типами наборів, і кожен із них марний сам по собі.
Що куди йде
Набір даних реєструє елемент:
data/<ns>/painting_variant/<id>.json asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json sound_event, description, length, comparator
Набір ресурсів надає те, що ви бачите та чуєте:
assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json
Встановіть лише набір даних, і вміст успішно зареєструється — він існує, /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.
Зверніть увагу на два pack.mcmeta files. They are separate packs with separate identities; there is no combined format that holds both.
Ідентифікатори реєстру суворіші за імена файлів
Ідентифікатор може містити лише a-z, 0-9, _, . and -. Anything else and набір не вдається завантажити — не один зламаний запис, а весь набір. Великі літери та пробіли — це дві речі, на яких ловляться найчастіше, адже обидві цілком звичні для імені доданого вами файлу.
Картини: від 1×1 до 4×4
Ванільні розміри варіюються від 1 × 1 до 4 × 4 блоків, утворюючи шістнадцять можливих форм. Варіант поза цим діапазоном усе одно рендеритиметься — гра не відхилить його, — але його не можна повісити на стіну очікуваного гравцями розміру, тому його фактично неможливо розмістити у звичайній споруді.
Розмір оголошується в JSON як 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.
Тривалість платівки — це не просто позначка
length_in_seconds drives two things: the jukebox timing, and the наростання сигналу компаратора — сигнал, який компаратор зчитує з програвача під час відтворення, наростає впродовж оголошеної тривалості треку.
Тому неточна тривалість — це не косметична помилка. Оголосіть 200-секундний трек як 100, і компаратор завершить наростання на середині, що непомітно зламає будь-які редстоун-схеми, прив'язані до закінчення платівки. Саме з цієї причини цей інструмент зчитує реальну тривалість із файлу, а не просить вас вводити її вручну.
Треки також записуються з "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.