Лаунчер и авторизация
Что такое лаунчер
StrangeCraft CMS включает собственный лаунчер — программу, через которую игроки заходят в ваш проект. Игрокам не нужен аккаунт Mojang: они входят по нику (или email) и паролю аккаунта вашего сайта. Пароль единый — тот же, что на сайте и в игре.
Что лаунчер делает сам:
- скачивает и устанавливает нужную версию Minecraft, загрузчик модов (Forge, Fabric, NeoForge) и подходящую Java;
- скачивает вашу сборку модов и держит её в актуальном состоянии (при обновлении докачивает только изменённое);
- запускает игру и автоматически заводит игрока на сервер — без ввода
/login; - показывает новости сайта (у новости есть галочка «показывать в лаунчере») и список серверов с онлайном;
- сам обновляется: новые версии лаунчера раздаёт ваша же CMS, игрокам ничего скачивать вручную не надо.
Установщики бывают для Windows (.exe) и Linux (.AppImage). Публичная страница «Скачать лаунчер» появляется на сайте автоматически, как только опубликован хотя бы один релиз.
Аккаунты, созданные только через OAuth (VK/Discord и т.п.) и не имеющие пароля, войти в лаунчер по паролю не могут — сначала нужно задать пароль на сайте.
Всё управление — в админке, раздел Лаунчер (подразделы «Сборки» и «Релизы»), плюс настройки в Настройки → Лаунчер.
Сборки (builds)
Сборка — это клиентский модпак, который лаунчер скачивает игрокам: версия Minecraft, загрузчик модов и набор файлов.
Создание сборки вручную
- Админка → Лаунчер → Сборки → «Добавить сборку».
- Заполните: слаг (латиница, для URL), название, версию Minecraft, загрузчик (Vanilla / Forge / Fabric / NeoForge), при необходимости — версию загрузчика и мажорную версию Java.
- Сохраните. Пока сборка пустая — файлы нужно импортировать (см. ниже).
- Когда файлы импортированы, включите галочку «Сборка видна в лаунчере».
Импорт модпака из каталога (Modrinth и CurseForge)
Кнопка «Импорт из каталога» на странице сборок открывает поиск по двум каталогам модпаков:
- Modrinth — работает сразу, ключей не требует.
- CurseForge — нужен API-ключ. Он бесплатный: получите его на console.curseforge.com (раздел API Keys) и вставьте в Настройки → Лаунчер → «CurseForge API-ключ». Важно: нужен именно ключ каталожного API. Токен вида
cfc_pat_…(Personal Access Token из «CF for Studios») для этого API не подходит — CMS покажет понятную ошибку с подсказкой, если вставить не тот ключ.
Порядок импорта:
- Выберите каталог, найдите модпак, откройте список его версий.
- Выберите версию (версии с неподдерживаемым загрузчиком, например Quilt, отмечаются как неподдерживаемые).
- Укажите слаг и название новой сборки, при желании — сервер авто-входа, и запустите импорт.
- Импорт идёт в фоне — нужен запущенный queue-воркер. Ход импорта виден в таблице сборок.
Особенность CurseForge: некоторые авторы запрещают раздачу своих модов через API. Такие моды CMS скачать не сможет — в таблице сборок появится список «Не скачано автоматически: N модов» со ссылками. Скачайте их вручную, сложите в zip и нажмите «Дозалить zip» — файлы добавятся к сборке, не стирая уже импортированное.
Импорт zip вручную
- Кнопка «Загрузить zip» у сборки — для архивов примерно до 1 ГБ (архив грузится частями по 20 МБ, распаковка идёт в фоне, нужен queue-воркер).
- Многогигабайтные паки: залейте zip или каталог на сервер по SFTP и выполните в консоли сервера:
php artisan launcher:import-build <слаг-сборки> <путь-к-архиву-или-каталогу>
Синхронизация файлов (что удаляется, а что нет)
У каждой сборки два списка путей (поля в форме сборки):
- Строгая синхронизация (force) — по умолчанию
mods, coremods, scripts, kubejs. Эти каталоги приводятся к сборке точь-в-точь: лишние файлы у игрока удаляются. Так игрок не пронесёт на сервер посторонние моды. - Пользовательские пути (user) — по умолчанию
options.txt, servers.dat, config, saves, screenshots, resourcepacks, shaderpacks, logs. После первой установки они не перезаписываются: настройки, сохранения и скриншоты игрока не трогаются.
Всё остальное просто докачивается при отсутствии или несовпадении файла, без удаления. При импорте из каталога есть галочка «строгий config» — тогда каталог config переносится из пользовательских путей в строгие и будет принудительно совпадать со сборкой.
Привязка сборки к серверу
В форме сборки есть поле «Сервер авто-входа». Если он указан, кнопка «Играть» в лаунчере запустит игру сразу с подключением к этому серверу, а сайт создаст одноразовую сессию авто-входа — игрок попадёт на сервер без ввода /login (окно действия сессии настраивается: Настройки → Лаунчер → «Срок жизни join-сессии»).
Доступ к сборкам по ролям
В форме сборки можно выбрать роли, которым она видна (например «Тестировщик» и «Администрация» для тестовой сборки). Пустой выбор — сборка видна всем. Ограничение действует и на список сборок, и на скачивание файлов.
Релизы лаунчера
Релиз — это установщики самого лаунчера (.exe для Windows, .AppImage для Linux). Их хранит и раздаёт сама CMS. Раздел: Админка → Лаунчер → Релизы.
Собрать установщик прямо на сервере
- В блоке «Собрать установщик на сервере» выберите цель: Windows + Linux, только Windows или только Linux.
- При желании впишите версию в формате
1.2.3(иначе возьмётся текущая из исходника) и поставьте галочку «опубликовать». - Нажмите «Собрать». Сборка идёт в фоне — нужен запущенный queue-воркер; лог виден прямо на странице.
Что нужно на сервере: Node.js/npm (зависимости доустановятся сами при первой сборке), а для Windows-цели на Linux — Wine. Wine доустановится автоматически только если у воркера есть права root/sudo; иначе поставьте его заранее (флаг CMS_LAUNCHER_BUILD=1 в установщике КМС) или собирайте только Linux.
Одновременно может идти только одна сборка — вторая не запустится, пока не закончится первая.
Загрузить готовые установщики
Если вы собрали установщики где-то ещё, загрузите их формой «Загрузить релиз»: версия (например 0.1.5), файл .exe и/или .AppImage, заметки. Достаточно одного файла; второй можно догрузить позже повторной отправкой с той же версией.
Публикация и автообновления
У релиза два состояния: «черновик» и «опубликован» (кнопки «Опубликовать» / «Снять»). Опубликованный релиз:
- раздаётся на публичной странице «Скачать лаунчер»;
- становится актуальным для автообновлений: лаунчеры игроков сами проверяют и ставят новую версию (файлы обновления генерирует и раздаёт CMS).
В Настройки → Лаунчер есть «Минимальная версия лаунчера»: у игроков со старее указанной появится блокирующий баннер обновления.
Брендинг лаунчера
Внешний вид лаунчера меняется из CMS без пересборки установщиков — лаунчер читает настройки при каждом запуске.
- Настройки → Лаунчер: «Название в лаунчере» (пусто — берётся название сайта), «Подпись под названием», ссылки на сайт и регистрацию подставляются автоматически. Настройка «Акцентный цвет» устарела, но работает как запасной вариант.
- Тема лаунчера берётся из активной темы сайта (Темы → редактор, секция «Лаунчер»): палитра цветов, фоновая картинка (только https), затемнение фона, включение/выключение элементов (подпись, новости, серверы, ссылка на регистрацию), анимации. Если тема ничего не задала — используется стандартная тёмная палитра.
Главный экран, скины и прочее
- Модульный главный экран — состав и порядок блоков (профиль игрока, серверы, новости, события) настраиваются в редакторе темы, вкладка «Лаунчер» (см. «Темы и внешний вид»).
- Скины и плащи — игрок загружает их прямо из настроек лаунчера; работают на серверах с собственной авторизацией (session-режим).
- Краш-репорты — если игра упала, лаунчер предложит отправить отчёт: в CMS создаётся тикет с логом в категории «Технические проблемы».
- Discord Rich Presence — статус «Играет на …» в профиле Discord; включается указанием Application ID в Настройках → Лаунчер.
Режимы авторизации серверов
У каждого сервера в Админка → Серверы → карточка сервера есть поле «Режим авторизации» (в базе — servers.auth_mode). Три варианта:
offline — вход по паролю через auth-плагин
Классическая схема для нелицензионных проектов: сервер запущен с online-mode=false, вход контролирует серверный плагин StrangeCraftCore — игрок вводит /login <пароль> (пароль аккаунта сайта). Игроки из лаунчера проходят без /login благодаря сессии авто-входа.
session — вход через аккаунты сайта (authlib-injector)
Сервер работает с online-mode=true, но вход проверяется не у Mojang, а у вашего сайта — через технологию authlib-injector. Это работает на любом ядре, включая модовые (Forge/Fabric/NeoForge), потому что не требует плагина для самой проверки входа:
- сервер запускается с параметром
-javaagent:authlib-injector.jar=https://ваш-сайт/api/yggdrasil; - лаунчер запускает игру с тем же агентом автоматически;
- баны применяются прямо на входе: забаненному на сайте игроку сервер откажет ещё до подключения;
- скины, загруженные на сайте, видны в игре — сайт отдаёт их серверу вместе с профилем игрока, отдельный плагин скинов не нужен.
Серверы, созданные через панель CMS, получают агент и online-mode=true автоматически при выборе режима session.
mojang — обычная лицензия
Стандартная проверка через серверы Mojang (online-mode=true), как у любого лицензионного сервера. Сайт в проверку входа не вмешивается.
Гибридный вход на session-серверах
Если игрок пришёл на session-сервер со сторонним клиентом (не вашим лаунчером) или с истёкшим токеном лаунчера, его вход считается неподтверждённым. Такого игрока пустят только серверы, где установлен плагин StrangeCraftCore и он на связи — и плагин заморозит игрока до ввода /login <пароль>. Серверы без плагина неподтверждённых игроков не пускают вовсе. Баны действуют и на неподтверждённые входы.
Правила для сети из нескольких серверов
- Не смешивайте в одной сети режимы mojang и session. Когда в сети есть session-серверы, лаунчер включает authlib-агент на весь запуск игры (кроме случая, когда игрок запускается прицельно на mojang-сервер) — попасть с таким запуском на mojang-сервер не получится. Держите лицензионные и «сайтовые» серверы в разных сетях/сборках.
- Серверы за прокси Velocity: проверку входа делает сам прокси, поэтому бэкенды работают с
online-mode=falseи инжектор на них не ставится — для session-режима агент нужен на самом прокси. Обязательно держите порты бэкендов закрытыми: с открытым портом и выключенной проверкой на сервер зайдёт кто угодно под любым ником.
Откуда берётся jar authlib-injector
Файл authlib-injector.jar кладут в хранилище CMS скрипты установки/обновления (install.sh/update.sh) из ассетов релиза CMS. Если файла нет, скачайте его командой на сервере сайта:
php artisan launcher:fetch-authlib
Команда качает проверенную версию (1.2.8) и сверяет контрольную сумму. Серверы, созданные через панель, скачивают jar с вашего же сайта автоматически при установке.