kosta2014p 80dc1826a1 PixelLauncher 2.1.1 — быстрые настройки в главном меню
- Подменю «Быстрые настройки» (☰): светлая тема, автозагрузка Windows,
  трей при запуске игры, авто-бэкап мира, масштаб интерфейса (100/125/150%),
  язык (RU/EN) — переключаются сразу и сохраняются, без открытия диалога
  «Настройки»; при сбое автозагрузки флажок возвращается обратно.
- Версия 2.1.1: бамп по всем файлам (лаунчер, installer.iss, UA, манифест).
2026-10-19 19:26:18 +07:00

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 (апгрейд со старой версии мастер не показывает).
S
Description
PixelLauncher — оффлайн-лаунчер Minecraft
Readme
412 KiB
0 Stars 1 Watchers 0 Forks
2026-10-22 14:21:49 +00:00
Languages
Python 99.4%
Inno Setup 0.6%