Перейти к содержимому

Вход в игре и скины

В игру игроки заходят через authlib-injector. Он направляет игру на Yggdrasil-endpoint Laminara, а тот проверяет логин через тот же источник учёток, что и лаунчер, выдаёт игровые токены и подписывает скины.

Включается разделом yggdrasil:

{
"yggdrasil": {
"enabled": true,
"serverName": "Laminara",
"rsaKeyPath": "/var/lib/laminara/yggdrasil-rsa.pem",
"skinProvider": "template",
"skinConfig": { "skin": "https://skins.example.com/%nickname%.png", "slim": true },
"skinDomains": ["skins.example.com"]
}
}

Yggdrasil поднимается на том же публичном порту, что и лаунчер, по пути /yggdrasil/. authlib-injector запускается с этим адресом:

-javaagent:authlib-injector.jar=https://ваш-домен/yggdrasil/

Скины — тоже адаптеры

Откуда брать скины, задаёт skinProvider.

Ссылка на файл скина с подстановками: %nickname%, %username% и %uuid% заменяются на данные игрока.

"skinProvider": "template",
"skinConfig": {
"skin": "https://skins.example.com/%nickname%.png",
"cape": "https://skins.example.com/capes/%uuid%.png",
"slim": true
}

cape и slim (тонкая модель рук) необязательны.

skinDomains перечисляет домены, с которых игра примет текстуры. Домены ваших скинов должны быть в этом списке.

Подпись текстур

В корне /yggdrasil/ сервер публикует RSA-ключ — он создаётся и сохраняется по rsaKeyPath при первом запуске. Свойство текстур каждого профиля подписывается этим ключом по схеме RSA-SHA1, ровно так, как проверяет authlib-injector. Поэтому игра доверяет скинам.