Equestrian Dream Launcher 0.1.1

Запуск
1. Распакуйте папку EquestrianDreamLauncher в любое удобное место.
2. Установите 64-битную Java 21, если она ещё не установлена.
3. Запустите EquestrianDreamLauncher.exe.

Вход через Telegram
Нажмите «Войти и играть», выберите Telegram, затем «Открыть бота». При первом входе выберите
свободный игровой ник в боте и подтвердите код, совпадающий с кодом в лаунчере.
После подтверждения запуск продолжится автоматически. Если вошли через аватар,
нажмите «Играть» на главном экране. Все статусы кроме banned допускают вход.
Сессия сохраняется на 30 дней с шифрованием Windows DPAPI текущего пользователя.
Кнопка «Выйти» удаляет локальную сессию и отзывает её на сервере.
Бот и backend настраиваются владельцем проекта; серверные секреты в EXE не входят.

Обновления лаунчера
При открытии лаунчер проверяет новые версии. Если обновление доступно,
нажмите «Обновить и перезапустить» или «Позже». Загрузку можно отменить.
Размер и контрольная сумма ZIP проверяются до установки. Новая версия
заменяет только EXE и README; настройки, вход и Minecraft сохраняются.
Если новая версия не запускается, помощник восстанавливает прежнюю.
Папка лаунчера должна быть доступна для записи. Если обновление не удалось,
можно продолжить играть и повторить его при следующем открытии.
Первую сборку с обновлятором (0.1.1) нужно установить вручную один раз.

Java
Launcher не загружает Java автоматически. Для текущей Minecraft-сборки требуется
Java 21 x64 (JRE или JDK). Рекомендуется JDK 21 x64. Launcher ищет Java через
JAVA_HOME, PATH и стандартные каталоги популярных поставщиков Java в Windows.

Состояние сервера
Доступность и пинг проверяются при открытии лаунчера и далее примерно каждые
15 секунд. Мс показывают время ответа игрового сервера на Minecraft ping.
Зелёные 3 полоски: до 100 мс; жёлтые 2: 101–250 мс; красная 1: выше 250 мс.
Серая перечёркнутая иконка: ответ не подтверждён. При проверке или отсутствии
ответа вместо мс показывается «—». Таймаут проверки — 5 секунд.
«Нет ответа сервера» может означать недоступность сети либо отключённые сервером
ответы на status; запуск игры по этой причине не блокируется.

Оперативная память
Нажмите шестерёнку в правом верхнем углу, выберите объём ползунком или введите целое число в МБ,
затем нажмите «Сохранить». 1 ГБ = 1024 МБ. Значение сохраняется между запусками
и применяется при следующем запуске Minecraft Vanilla или NeoForge.
«Назад» отменяет несохранённые изменения. Папка игры показана для справки.
Диапазон зависит от физической ОЗУ компьютера и оставляет резерв для Windows.
«Свободно сейчас» показывает текущую доступную память, не меняя максимум.
Выбранное значение ограничивает память Java; полное потребление игры может
быть выше. Если сохранённое значение больше допустимого, исправьте и сохраните
его перед запуском. При ошибке определения ОЗУ нажмите «Обновить сведения».

Запуск и ошибки
После «Играть» показываются этапы: конфигурация, моды, Java, загрузка Minecraft
и NeoForge, подготовка и запуск. Процент относится к текущему этапу.
Во время подготовки и работы игры кнопки «Играть», шестерёнка настроек и аккаунт и ввод
ника недоступны. После завершения игры действия становятся доступны снова.
При сбое открывается панель с причиной, кодом завершения и последним выводом
Minecraft. «Обновить» перечитывает launcher.log, «Скопировать логи» копирует
показанный текст, «Открыть папку логов» открывает папку в Проводнике.
После закрытия панели её можно открыть кнопкой «Логи». Ошибку можно исправить
и повторить «Играть»; если недоступна начальная конфигурация или обработчик
запуска, требуется перезапуск лаунчера.

Крупный архив модов может загружаться дольше 30 секунд. Лаунчер продолжает
загрузку, пока поступают данные; если передача остановилась на 30 секунд,
будет показана ошибка ожидания. После восстановления сети повторите «Играть».
Во время загрузки показываются полученные МБ, скорость и прошедшее время.
Если сервер не сообщил размер, процент не показывается. При паузе указывается,
сколько секунд нет новых данных. Моды скачиваются одним ZIP; после получения
архива отображаются имена распаковываемых файлов и счётчик готовых файлов.
Проверка архива, распаковка и сохранение набора показываются отдельными этапами.

Данные
Все загруженные файлы и настройки находятся в:
%LOCALAPPDATA%\EquestrianDreamLauncher

Minecraft: %LOCALAPPDATA%\EquestrianDreamLauncher\game
Настройки: %LOCALAPPDATA%\EquestrianDreamLauncher\state
Логи:     %LOCALAPPDATA%\EquestrianDreamLauncher\logs
Главный log-файл:
%LOCALAPPDATA%\EquestrianDreamLauncher\logs\launcher.log

Backend
Адрес задаётся в launcher-config.json рядом с EXE:
{ "server_url": "https://launcher.nevermoreland.ru/" }
Также допустимы https://89.125.214.122 и полный URL с /api/client-config.
После изменения файла перезапустите лаунчер. Конфигурация сборки, Telegram
и обновления используют один backend. При смене адреса потребуется войти заново.
Приоритет: LAUNCHER_SERVER_URL, файл рядом с EXE, встроенная копия конфига.
Встроенная копия берётся из launcher-config.json репозитория при сборке;
она используется только при отсутствии внешнего файла. Ошибочный JSON блокирует запуск.
Обновление сохраняет внешний конфиг. ZIP обновления содержит только EXE и README;
для ручной установки конфиг можно скопировать из готовой папки дистрибутива.
Backend должен поддерживать Telegram API.
HTTP 404 при входе означает, что нужно проверить адрес или обновление backend.
Используется прямой HTTPS URL. Бот запускается отдельно от лаунчера.

Примечание
Launcher распространяется без installer и цифровой подписи. Windows SmartScreen
может показать стандартное предупреждение для нового неподписанного приложения.
