The Best Resource for Minecraft
The Best Resource for Minecraft

Пак скінів Bedrock складається з чотирьох файлів, і два з типів помилок у ньому — безмовні

Пак скінів Bedrock складається з чотирьох файлів, і два з типів помилок у ньому — безмовні

Два UUID, які мають відрізнятися, обов'язковий lang-файл і ключі скінів, що прибирають пунктуацію — тож 'My Skin!' і 'My Skin?' стають одним скіном без жодної помилки.

A .mcpack is a zip with a different extension, and a skin pack inside one needs exactly four kinds of file:

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 carries a UUID in its header and another in its skin_pack module:

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

Це два окремі ідентифікатори — сам пак і вміст пака, — тому повторне використання одного значення для обох є реальною помилкою, хоча під час збірки про це нічого не повідомляє.

Є й другий, менш помітний наслідок: повторний імпорт з тими самими UUID сприймається як той самий пак, і Minecraft мовчки залишає копію, яку вже має. Редагування пака, повторне збирання з тими самими ідентифікаторами та повторний імпорт виглядають так, ніби нічого не змінилося. Кожна збірка з цієї сторінки отримує нові UUID саме з цієї причини, тому для повторного імпорту відредагованого пака потрібне нове завантаження, а не просто повторне пакування в zip старого.

Файл lang є обов'язковим

skins.json never contains a display name. It contains a ключ, і texts/en_US.lang maps that key to text:

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

Якщо випустити пак без файлу lang, помилок не буде — кожен скін просто з'явиться в грі під своїм необробленим ключем. Це найпоширеніша причина, чому зібраний вручну пак виглядає зламаним, хоча проходить валідацію.

Ключі очищають пунктуацію, а дублікати об'єднуються

Ключ має складатися лише з літер і цифр. Усе інше видаляється:

ваше ім'яключ
My Skin!MySkin
My Skin?MySkin
Skin #2Skin2
!!!Skin1 (fallback, by position)

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

Конструктор тут захищає від цього, додаючи лічильник до будь-якого ключа, який він уже використав, тож другий MySkin becomes MySkin1. Worth knowing if you assemble a pack by hand: the check you need is on the очищені назви, а не ті, які ви ввели.

Ім'я, яке складається лише з пунктуації, не залишає взагалі нічого, тому використовується резервне значення Skin plus its position in the list.

Для Slim потрібен правильний рядок геометрії

Кожен запис вказує на модель, і їх дві:

  • geometry.humanoid.custom — classic, 4-pixel arms
  • geometry.humanoid.customSlim — slim, 3-pixel arms

Помилка тут є звичайною причиною того, що скін із пропорціями Алекс з'являється з масивними руками Стіва. З текстурою все гаразд; проблема саме в запитаній моделі. Конструктор паків визначає її, перевіряючи четвертий стовпець руки, але написаний вручну skins.json has to say it explicitly, and the two strings differ by four characters at the end.

Записи також містять "type": "free", and a cape is an optional extra PNG referenced from the same entry — the cape travels inside the skin pack rather than as a separate download.

Спробувати інструмент: Skin Pack Maker →