Офлайн-лаунчер Minecraft: аккаунты без Microsoft, установка версий и лоадеров (Fabric, Quilt, Forge, NeoForge), каталог модпаков Modrinth, поиск и обновление модов, разбор вылетов, системный трей, автозагрузка, плагины, прокси и зеркала.
18 KiB
PixelLauncher
Компактный оффлайн-лаунчер Minecraft в стиле LiteLauncher: тёмное минималистичное окно, пиксельный пейзаж-баннер, большая зелёная кнопка «ИГРАТЬ» и пилюля с версией.
Возможности
- Оффлайн-режим — ник + сгенерированный по правилам Mojang UUID
- Менеджер аккаунтов — несколько ников, клик по нику в шапке для быстрого переключения, управление в «Аккаунты…»
- Все версии из официального манифеста Mojang (920+): релизы, снапшоты, старые версии
- Лента новостей — последние версии прямо на главном экране (клик выбирает версию)
- Fabric и Quilt — установка модлоадера одной кнопкой (меню → «Установить Fabric/Quilt…»): скачивается JSON профиля, файлы лоадера докачиваются при первом запуске
- Автодокачка client jar, библиотек, нативов и ассетов с проверкой SHA-1 (многопоточно)
- Отмена загрузки — кнопка «■ ОТМЕНА» под статусом во время докачки
- Зеркала скачивания — если официальные серверы Mojang плохо грузятся, укажите зеркала в настройках (по одному в строке)
- Автозагрузка Java — если подходящей Java нет, лаунчер сам скачает JRE
с Eclipse Adoptium (~45 МБ) в
.launcher/runtime/и запустит игру - Детектор вылетов — при ненулевом коде завершения журнал открывается сам и показывает хвост лога с ошибкой
- Живой лог игры — вывод игры течёт в окно «Журнал» в реальном времени
- Очистка версий — меню → «Очистка версий…»: размер каждой установленной версии, удаление ненужных и подчистка неиспользуемых ассетов
- Моды — меню → «Моды…»: список установленных модов с включением/выключением
(переименование в
mods-disabled), удалением и поиском в Modrinth (нужен только стандартный HTTP) — установка одной кнопкой под текущую версию и загрузчик - Импорт модпаков
.mrpack(CurseForge/Modrinth-пакеты): скачивание файлов по индексу, раскладка оверрайдов, проверка путей - Обновления модов — в «Моды…» кнопка «Проверить обновления»: включённые
моды сверяются с Modrinth по SHA-1 (батчи через
POST /version_files), свежие версии скачиваются, старый jar отключается в.disabled - Разбор вылетов — после аварийного завершения журнал сам называет причину:
нехватка ОЗУ (с подсказкой
-Xmx), проблема с Java, исключение (корневоеCaused by) и виновный мод — с вопросом «Отключить его?» - Профили запуска — меню → «Профили…»: несколько профилей (ник, версия, ОЗУ, полный экран и по желанию набор включённых модов), переключение одной кнопкой, имя активного профиля в пилюле
- Миры и копии — меню → «Миры и копии…»: список миров с размером и датой, ZIP-копия по одному миру с капом последних копий (настраивается), удаление копий и миров, быстрый переход в папку копий
- Избранные версии — ★ в диалоге версий закрепляет версию сверху, фильтр «только избранные», частые (по статистике запусков) поднимаются вверх списка
- Трей — свёртывание в трей (иконка в области уведомлений), плашки о статусе запуска/вылета, контекстное меню с командами лаунчера
- История и статистика — меню → «История…»: сколько раз запускалась каждая версия, суммарное и последнее время игры, сводка вылетов
- Прокси — настройки → сеть: HTTP и SOCKS5 (с авторизацией), проверка соединения кнопкой
- Настройки запуска игры — профиль: пресеты JVM (мало RAM / быстро / безопасно / чисто / для Fabric), разрешение и полный экран, окно игры
- Архив логов — окно «Журнал» показывает сеанс и все прошлые
game-*.logс поиском по тексту (Ctrl+F, «только ошибки») - Скин — предпросмотр фронтального вида по нику (кэш mc-heads.net) или своё фото (PNG 64×64), кнопка рядом с ником
- Сцены баннера — день / ночь / незер / пещера или случайная при каждом открытии (меню → «Сцена баннера»)
- Масштаб интерфейса 100/125/150% (настройки), ярлык текущей версии на рабочем столе, экспорт/импорт настроек в JSON
- Быстрые повторные запуски — см. раздел «Скорость»
- Проверка целостности — меню → «Проверить файлы игры…» (полный пересчёт SHA-1)
- Наследование версий (
inheritsFrom), виртуальные ассеты для старых версий - Автоподбор Java под конкретную версию игры (PATH, JAVA_HOME, Program Files, ~/.jdks, /usr/lib/jvm)
- Профиль: ник, ОЗУ (или «авто» по памяти системы), Java, JVM-аргументы
- Резервная копия миров в ZIP
- Выбор версии в отдельном диалоге: поиск-фильтр, даты релиза, отметка снапшотов и локальных (Fabric/Quilt) версий
- Язык интерфейса RU/EN — переключается в настройках
- Акцентный цвет — пять вариантов в настройках
- Окно можно менять по размеру — захват за «◢» в правом нижнем углу
- Быстрый доступ к папкам — игры, миров и скриншотов прямо из меню
- Журнал с цветными сообщениями (успех/ошибка/предупреждение) и Ctrl+C для копирования
- Лог запуска игры — полный вывод пишется в
.launcher/logs/game-*.log - Автообновление лаунчера — меню → «Проверить обновление лаунчера…» и
тихая проверка при старте: манифест
/update.json, скачивание установщика с проверкой SHA-256, запуск обновления в один клик - Своё зеркало API — запросы к Modrinth и манифесту Mojang идут через прокси на VPS; при сбое зеркало отключается до конца сессии и запрос уходит напрямую, на официальный путь
- Без сторонних библиотек — только tkinter
Запуск
python main.py
Или двойной клик по run.bat (Windows).
Требуется Python 3.8+ с tkinter. Дополнительные библиотеки ставить не нужно.
Сборка установщика
python make_installer.py
Собирает PixelLauncherSetup<версия>.exe прямо в папке проекта. Внутри —
embeddable Python той же версии + заимствованный tkinter/Tcl, приложение и
иконка; установка в %LOCALAPPDATA%\PixelLauncher без прав администратора
(скрипт installer.iss, нужен Inno Setup 6 с ISCC.exe). Версия в
installer.iss должна совпадать с LAUNCHER_VERSION; после новой сборки
обновите файл и update.json на сервере.
Плагины и протокол
- Плагины — файлы Python в папке
pluginsрядом сmain.py: константыPLUGIN_NAME/VERSION/AUTHOR/DESCRIPTION, функцияon_load(api)(подпискиapi.on(...), кнопкиapi.add_action(...)) и необязательныйon_unload(). События:launcher_ready,before_launch,after_launch,game_exit,profile_switched,account_switched,launcher_closing. Своё json-хранилище плагина —plugins/storage/. Управление: меню ⚙ → «Плагины…» (пересканирование, удаление) и «Магазин плагинов…» (каталог с сайта). - Протокол
pixellauncher://— ссылки с сайта:plugin/<файл.py>ставит плагин из магазина,mrpack/<url>скачивает и импортирует модпак. Ключи HKCU пишет установщик; если лаунчер уже открыт, ссылка уходит в очередь и обрабатывается работающей копией. - Формат плагинов совпадает с верстаком на сайте (
/constructor); каталог магазина —/plugins/catalog.json.
Скорость
Повторные запуски не тратят время на лишнюю работу:
- Манифест версий (около 1.5 МБ) не перекачивается каждый раз: свежий кэш (до 1 часа) читается с диска — загрузка списка занимает ~0.1 с вместо ~2 с. «Обновить список версий» в диалоге принудительно ходит в сеть.
- JSON версии кэшируется на 6 часов и не качается заново при каждом запуске.
- Проверка уже скачанных файлов — по размеру (один
statна файл) вместо полного чтения и пересчёта SHA-1. Для версии с 3000+ ассетов это секунды на каждом старте. Полная проверка SHA-1 — по запросу: меню → «Проверить файлы игры…». - Обнаружение Java кэшируется (
.launcher/java_cache.json):java -versionпрогоняется по кандидатам один раз, повторные запуски берут версию из кэша. - Нативы распаковываются один раз: повторная распаковка пропускается, пока
natives-jar'ы не изменились (сигнатура в
.stamp). - Загрузка файлов — до 32 параллельных потоков, прогресс обновляется по мере готовности каждого файла.
Интерфейс
- Верхняя панель: логотип, ник (клик — переключение аккаунтов), шестерёнка — меню (профиль, профили запуска, аккаунты, версии, Fabric/Quilt, копия, миры и копии, плагины, магазин плагинов, скачивание, очистка, папки, журнал, настройки, о программе)
- Баннер: пиксельный пейзаж с заголовком PIXEL LAUNCHER, тянется на всю ширину окна; сцена переключается в меню (день/ночь/незер/пещера/random)
- ИГРАТЬ — большая зелёная кнопка с анимацией нажатия (цвет = акцентный цвет из настроек)
- Пилюля
Minecraft <версия>— клик открывает список версий - Лента «Последние версии» — 3 свежие версии из манифеста, клик выбирает версию
- Внизу — тонкая полоса прогресса и строка статуса; во время загрузки под статусом появляется кнопка отмены
- Кнопка «—» сворачивает лаунчер в трей (кнопка «×» закрывает)
- Диалоги со списком версий идут в тёмном оформлении (Windows 10/11)
Все файлы игры хранятся в .minecraft рядом с лаунчером (меню → Настройки).
Структура
main.py точка входа
launcher/
ui.py интерфейс: окно, баннер, диалоги
config.py настройки (settings.json), аккаунты, зеркала
i18n.py перевод интерфейса (RU/EN)
manifest.py манифест версий Mojang + кэш, локальные версии
version.py разбор JSON версии, classpath, аргументы
downloader.py докачка библиотек/ассетов, зеркала, отмена, нативы
java.py поиск и выбор Java
java_fetch.py автозагрузка JRE с Eclipse Adoptium
mods.py установщик Fabric/Quilt + менеджер модов, обновления
modrinth.py поиск и установка модов с Modrinth API (+ POST /version_files)
mrpack.py импорт модпаков .mrpack
crash.py разбор логов вылетов: причина и виновный мод
worlds.py список миров, ZIP-копии с капом, удаление
stats.py история запусков и статистика игры
tray.py иконка в трей, меню и плашки (Windows)
launch.py оффлайн-UUID, запуск, живой лог, код завершения
http.py HTTP-хелперы: повторы, SHA-1, прогресс, отмена, прокси,
зеркала API (одна попытка через зеркало, затем напрямую)
selfupdate.py автообновление: манифест /update.json, SHA-256, установщик
onboarding.py мастер первого запуска: язык, ник, ОЗУ
plugins.py плагины: загрузка .py, события, API, хранилище, магазин
protocol.py протокол pixellauncher:// и одна живая копия лаунчера
Примечания
- Работает только оффлайн-режим Minecraft (серверы в offline-режиме).
- Java: 1.20.5+ → Java 21+, 1.16–1.20 → Java 17+, 1.12–1.16 → Java 8/11.
Лаунчер подберёт подходящую автоматически, а если Java не найдена —
скачает её с Eclipse Adoptium и положит в
.launcher/runtime/. - Лента новостей собирается из манифеста версий Mojang (официальные RSS-эндпоинты minecraft.net закрыты).
- Зеркала скачивания задаются в настройках (по одному URL в строке); SHA-1 у файлов одинаков на любых зеркалах, проверка не меняется.
- Прокси (HTTP/SOCKS5) применяется ко всем запросам лаунчера, включая загрузку файлов игры, поиск модов и установку модпаков.
- Манифест автообновления и зеркала API живут на VPS и доступны по домену:
база обновлений —
https://pixellauncher.ru(UPDATE_BASEвselfupdate.py), зеркала —https://pixellauncher.ru/proxy/…. HTTPS выпущен Let's Encrypt (certbot), автопродление — snap-таймер certbot. - Установленный лаунчер не пишет в системные папки: файлы игры,
settings.jsonи сам лаунчер лежат в%LOCALAPPDATA%\PixelLauncher, деинсталлятор не трогает.minecraftи журналы. - При первом запуске показывается мастер первоначальной настройки (язык,
ник, ОЗУ) —
launcher/onboarding.py. Он закрывается кнопкой «Пропустить настройку», после чего не появляется снова: флагonboarding_doneвsettings.json(апгрейд со старой версии мастер не показывает).