MC Toolkit

Руководства / Строительство и ресурсы

Набор скинов для Bedrock — это четыре файла, и два его режима отказа безмолвны

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

Набор скинов .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, и именно поэтому для повторного импорта отредактированного набора нужно скачать его заново, а не перепаковать старый.

Lang-файл не опционален

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

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

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

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

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

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

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

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

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

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

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

  • geometry.humanoid.custom — классическая, руки в 4 пикселя
  • geometry.humanoid.customSlim — slim, руки в 3 пикселя

Ошибка здесь — обычная причина того, что скин с пропорциями Alex появляется с квадратными руками Steve. Текстура в порядке; запрошена не та модель. Сборщик набора угадывает её по двум столбцам, которые оставляет пустыми тонкая рука (x 54–55), и позволяет исправить её для каждой записи, но написанный вручную skins.json должен указывать её явно, а эти две строки различаются четырьмя символами в конце.

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

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

Другие руководства

Смотреть все →