Guides / Building & Resources

Набор скинов Bedrock состоит из четырех файлов, и две его ошибки проявляются незаметно

Два UUID, которые должны отличаться, обязательный языковой файл и ключи скинов, которые игнорируют пунктуацию — так «Мой скин!» и «Мой скин?» становятся одним скином без ошибок.

.mcpack — это zip-архив с другим расширением, а набор скинов внутри него требует ровно четыре типа файлов:

manifest.json      a header and a skin_pack module, each with its own UUID
skins.json         one entry per skin: texture, geometry, and a KEY
texts/en_US.lang   the display names — skins.json holds only keys
*.png              the textures themselves

Три из четырех легко сделать правильно. Все интересные ошибки возникают из-за взаимосвязи между ними.

Два UUID должны отличаться

manifest.json содержит UUID в своем header и еще один в своем модуле skin_pack:

{
  "format_version": 1,
  "header":  { "name": "…", "uuid": "…", "version": [1, 0, 0] },
  "modules": [ { "type": "skin_pack", "uuid": "…", "version": [1, 0, 0] } ]
}

Это две отдельные сущности — сам пакет и то, что внутри пакета — и повторное использование одного значения для обоих является настоящей ошибкой, хотя при сборке ничего не сообщается.

Есть второе, более тонкое следствие: повторный импорт с теми же UUID рассматривается как тот же пакет, и Minecraft молча сохраняет уже имеющуюся копию. Редактирование пакета, его пересборка с теми же идентификаторами и повторный импорт выглядит так, будто ничего не произошло. Каждая сборка с этой страницы получает новые UUID именно по этой причине, поэтому для повторного импорта отредактированного пакета требуется новая загрузка, а не повторная архивация старого.

Языковой файл не является необязательным

skins.json никогда не содержит отображаемого имени. Он содержит ключ, а texts/en_US.lang сопоставляет этот ключ с текстом:

skinpack.<PackKey>=My Pack
skin.<PackKey>.<SkinKey>=My First Skin

Если отправить пакет без языкового файла, ошибок не будет — каждый скин просто появится в игре под своим исходным ключом. Это самая распространенная причина, по которой собранный вручную пакет выглядит сломанным, хотя при проверке все в порядке.

Ключи игнорируют пунктуацию, а дубликаты схлопываются

Ключ должен быть буквенно-цифровым. Все остальное удаляется:

ваше имяключ
My Skin!MySkin
My Skin?MySkin
Skin #2Skin2
!!!Skin1 (запасной, по позиции)

Первые две строки — это ловушка. Два скина, названные человеком по-разному, становятся одним ключом, и дубликат ключа не вызывает ошибки — он молча схлопывается в один скин в игре. Вы загружаете двенадцать скинов, получаете одиннадцать, и ничто не сообщает вам, какой из них пропал.

Здесь сборщик защищается от этого, добавляя счетчик к любому уже использованному ключу, так что второй MySkin становится MySkin1. Стоит знать, если вы собираете пакет вручную: проверка, которая вам нужна, проводится по очищенным именам, а не по тем, которые вы ввели.

Имя, состоящее полностью из пунктуации, не оставляет ничего, поэтому оно возвращается к Skin плюс его позиция в списке.

Для тонких скинов нужна правильная строка геометрии

Каждая запись называет модель, и их две:

  • geometry.humanoid.custom — классический, 4-пиксельные руки
  • geometry.humanoid.customSlim — тонкий, 3-пиксельные руки

Ошибка здесь является обычной причиной того, что скин с пропорциями Алекс появляется с блочными руками Стива. Текстура в порядке; модель запрашивается именно та. Сборщик пакетов определяет это, анализируя четвертую колонку руки, но написанный вручную skins.json должен явно указать это, и две строки отличаются на четыре символа в конце.

Записи также содержат "type": "free", а плащ — это необязательный дополнительный PNG, на который ссылается та же запись — плащ перемещается внутри пакета скинов, а не как отдельная загрузка.

Создание набора скинов →

More guides

Browse all →

Нужны другие инструменты для Minecraft?

Набор генераторов, просмотрщиков и конвертеров прямо в браузере — всё бесплатно.