The Best Resource for Minecraft
The Best Resource for Minecraft

Голови гравців за іменем користувача: як працює компонент профілю і чому голови стають порожніми

Голови гравців за іменем користувача: як працює компонент профілю і чому голови стають порожніми

Голова зберігає знімок скіна, а не живе посилання. Ось що таке компонент профілю, чому стара голова показує неправильний скін і як із цим пов'язаний пошук UUID.

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

Команда

/give @p player_head[profile="Notch"]

Параметр profile component replaced the old SkullOwner NBT. Snippets using {SkullOwner:"Notch"} are pre-1.20.5 and do nothing now.

Що насправді зберігається

Голова не зберігає ім'я користувача для подальшого завантаження скіна. Коли голова створюється, сервер зіставляє ім'я з UUID та знімком текстури, і запікає це в предмет:

"profile": {
  "name": "Notch",
  "id": [I; …],
  "properties": [{ "name": "textures", "value": "<base64>" }]
}

Два наслідки:

  • Голова, створена рік тому, показує тогорічний скін. Зміна скіна гравцем

не оновлює голови, які вже розміщені у світі. Це не помилка, і оновлення не відбувається.

  • Голови працюють офлайн. Після запікання виклик Mojang API для рендерингу не потрібен, що

пояснює, чому голови зберігаються на серверах у режимі offline-mode, тоді як /give ... profile="Name" does not resolve there.

Чому голова порожня або показує Стіва

У порядку ймовірності:

  1. Ім'я не вдалося зіставити. Сервер у режимі offline-mode або API був недоступний, коли

виконувалася команда. Нічого запекти, тому ви отримуєте стандартний скін.

  1. Імені не існує. Mojang нічого не повертає для видалених або ніколи не зареєстрованих

облікових записів.

  1. Чанк не перезавантажено. Голова завантажується асинхронно; іноді потрібно відвести погляд

вбік і повернутися назад.

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

Користувацькі голови використовують текстуру, а не ім'я

Декоративні голови — меблі, їжа, голови мобів із каталогів — не мають власника. Вони містять лише properties texture value with a base64 blob pointing at a texture URL. That is why they are shareable as a single long give command and why they never break when a player renames.

Base64 декодується в невеликий JSON, що містить textures.SKIN.url on textures.minecraft.net. Nothing else in it matters for rendering.

Формати UUID

Існує дві форми, і вони не взаємозамінні у кожному контексті:

trimmed   069a79f444e94726a5befca90e38aaf5
dashed    069a79f4-44e9-4726-a5be-fca90e38aaf5

Команди та NBT зазвичай вимагають форму з дефісами або масив цілих чисел. Веб-API зазвичай повертають скорочену форму. Перетворення між ними механічне — вставте дефіси після 8, 12, 16 і 20 символів.

Отримайте голову за іменем користувача, переглядайте каталоги декоративних голів або конвертуйте формати UUID у Інструменти для голів гравців та імен користувачів.

Спробувати інструмент: Player Head & Username Tools →