UnicoreCMS

Скины и плащи

Публичные адреса текстур для лаунчеров, серверов и рендеров

Скин и плащ игрок загружает из кабинета. Наружу они отдаются двумя способами: по постоянному адресу с ником или UUID и статикой по имени файла. Авторизация не нужна ни там, ни там — лаунчеру, серверному плагину и скин-рендеру токена взять неоткуда.

По нику или UUID

ПутьЧто отдаёт
/cabinet/skin/public/skin/username/:usernameСкин по нику
/cabinet/skin/public/skin/uuid/:uuidСкин по UUID
/cabinet/skin/public/cloak/username/:usernameПлащ по нику
/cabinet/skin/public/cloak/uuid/:uuidПлащ по UUID

Ответ — PNG с Content-Type: image/png. Хвост .png у ника или UUID допускается: /cabinet/skin/public/skin/username/Steve.png отдаёт то же, что и без него, — это удобно для модов и плагинов, которые подставляют расширение сами.

Адреса постоянные, а файл за ними меняется при каждой загрузке, поэтому сервер отдаёт их с Cache-Control: no-cache и ETag. Клиент, который умеет условные запросы, шлёт If-None-Match и получает 304 Not Modified, пока скин не сменился; новый скин видно сразу после загрузки.

СитуацияСкинПлащ
У игрока загружен файлФайл игрокаФайл игрока
Файла нетСкин по умолчанию из storage/default/skin.png404
Игрока нетСкин по умолчанию404

Плащ без файла — 404 намеренно: прозрачная заглушка вместо плаща скрыла бы элитры у игроков. Если проекту нужен общий плащ по умолчанию, положите его в storage/default/cloak.png — тогда он будет отдаваться вместо 404.

Статикой

В публичном профиле и в ответах лаунчеру поля skin.file и cloak.file содержат имя файла. Файл доступен как {API_BASEURL}/{file} — это то, что показывают сайт и панель. Имя случайное и меняется при каждой загрузке, поэтому такой адрес можно кэшировать сколько угодно: старый файл после замены просто перестаёт существовать.

Ограничения загрузки

Загрузка идёт из кабинета по праву player.skin.upload и player.cloak.upload. Принимается только PNG не больше 2 МБ. Обычный скин — 64×64 или 64×32, обычный плащ — 64×32; текстуры крупнее открывают права player.skin.hd и player.cloak.hd, их обычно продают как привилегию.

GravitLauncher

Модуль UnicoreProvider получает адрес и хеш скина прямо в ответе на запрос игрока, отдельно настраивать адреса не нужно — см. Лаунчер.

Содержание