
Как FlowUpdater усиливает разработку лаунчеров Minecraft
FlowUpdater (FlowArg/FlowUpdater)
Бесплатное и открытая система обновления Minecraft.
Строите кастомный лаунчер Minecraft? Вам нужна надёжная система обновлений, которая не сломает установки игроков. FlowUpdater - бесплатная Java-библиотека, автоматизирующая трудоёмкие части обновлений Minecraft - управление версиями, проверку файлов, загрузку модов и проверку целостности. Это то, за что обращаются разработчики лаунчеров, не хотящие тратить месяцы на построение своей собственной конвейерной системы обновлений.
Что делает FlowUpdater
Представьте FlowUpdater как мост между вашим лаунчером и файлами установки Minecraft. Вместо ручной загрузки версий, проверки хешей файлов и организации модов, вы передаёте конфигурацию, и библиотека всё делает сама. Она проверяет, какие файлы уже есть, скачивает отсутствующие, верифицирует всё и готовит к запуску.
Библиотека адаптируется под ваши требования. Ваш лаунчер может нуждаться в чистом Minecraft, или в vanilla с Forge, или в полностью кастомном модпаке с CurseForge.
Проект фокусируется на надёжности и кастомизации - это два ключевых слова, на которых настаивают мейнтейнеры. Это не пытка стать всеобъемлющим решением с красивым UI. Это библиотека. Вы интегрируете её в свой лаунчер и контролируете, как она работает.
Почему стоит использовать FlowUpdater
Большинство разработчиков, использующих FlowUpdater, попадают в несколько категорий. Первые - это строители кастомных лаунчеров - люди, создающие брендовый клиент для своей сообщества или модпака. Вместо написания логики обновлений с нуля, они подключают FlowUpdater и сосредотачиваются на UI и функциях. Вторые - создатели модпаков, распространяющие через CurseForge или свои серверы, где FlowUpdater обрабатывает грязную работу по разрешению и скачиванию модов.
Администраторы серверов, работающие над системами автоматического обновления для игроков, представляют третий случай использования. Вы можете встроить FlowUpdater, чтобы игроки автоматически синхронизировали моды и конфигурации сразу после входа.
Что отличает FlowUpdater от простого ручного скачивания файлов? Безопасность и скорость. Коррупция файлов происходит - сбои сети, частичные скачивания, ошибки диска. FlowUpdater верифицирует каждый файл с помощью чек-сумов, поэтому ваши игроки никогда случайно не запустят сломанную установку. Она также пропускает файлы, которые уже есть, поэтому обновления скачивают только delta. Для кого-то с медленной связью, обновляющего большой модпак, это разница между пятью минутами и ожиданием часа.
Настройка FlowUpdater в вашем проекте
FlowUpdater распространяется через Maven Central.
Добавьте зависимость. В Gradle:
dependencies {
implementation 'fr.flowarg:flowupdater:1.9.4'
}Или Maven:
fr.flowarg
flowupdater
1.9.4
Затем xây dựng свою конфигурацию. По минимуму вам нужна версия Minecraft - ту, которая нужна вашим игрокам. Создайте объект этой версии и передайте его в FlowUpdater.
Вот критическая часть: запускайте обновление в отдельном потоке. FlowUpdater блокируется до завершения скачивания и организации всего. Если не запустите в потоке, ваш UI лаунчера зафризит, и пользователи подумают, что приложение крахнулось.
Важное примечание по интеграции с CurseForge - библиотека включает встроенную поддержку, но использует API-ключ, принадлежащий мейнтейнерам FlowUpdater. Если вы форкнете проект или построите что-то, что будет широко распространяться, вам нужен свой собственный API-ключ CurseForge. Читайте лицензию GPL-3.0 внимательно по этому пункту.
Функции, которые действительно важны
FlowUpdater не притворяется чем-то, чем он не является. Он делает несколько вещей и делает их хорошо.
Управление версиями простое. Вы указываете версию Minecraft, и FlowUpdater знает, где её взять, какие библиотеки Java ей нужны, и какие ассеты (звуки, текстуры, модели) с ней идут. Для кастомных версий вы можете передать свой собственный JSON-файл конфигурации.
Поддержка загрузчика модов охватывает основные. Forge, NeoForge, Fabric - FlowUpdater знает, как скачать и установить каждый загрузчик, и он понимает цепочки совместимости версий.
Интеграция с CurseForge действительно экономит время, если вы распределяете модпаки. Вместо хостинга своих собственных файлов модов, вы ссылаетесь на ID проектов и файлов CurseForge, и FlowUpdater автоматически их скачивает. Создатели модпаков экономят затраты на бандWIDTH и часы на управление файлами.
Кастомные моды и файлы работают вместе со всем остальным. Если у вас есть свой хостинг мода или файла конфигурации, передайте список с URL-ами, размерами файлов и хешами SHA-1. FlowUpdater обращается с ними идентично - скачивает, если отсутствуют, верифицирует, если присутствуют.
Колбэки прогресса позволяют показать пользователям, что на самом деле происходит. Вы получаете общее количество файлов для скачивания, текущий прогресс, имена файлов - данные, которые ваш UI может использовать для нормальной прогресс-бары вместо «пожалуйста, подождите».
Общие ловушки и как их избежать
Потоки - первая ловушка. Я уже упоминал это выше, но стоит повторить, потому что люди пропускают это.
Второе: не хардкодите API-ключи в исходный код. Если вы распространяете код своего лаунчера на GitHub, любой может украсть этот ключ и использовать вашу квоту, попав в ограничения скорости CurseForge.
Третье - форматирование строк версий. ID версий Minecraft следуют определённым шаблонам. Стандартные релизные версии и идентификаторы снепшотов работают, но случайные строки - нет. Если вы принимаете пользовательский ввод для версий, валидируйте его против белого списка известных версий.
Последнее: хеши файлов важны. Когда вы добавляете кастомные моды в свой список, правильно рассчитывайте хеши SHA-1. Опечатка означает, что FlowUpdater будет считать файл повреждённым и скачивать его заново каждый раз.
Когда использовать альтернативы
FlowUpdater - это библиотека, а не лаунчер. Если вы хотите готовый лаунчер, который можно сразу скачать и запустить, смотрите в другую сторону - MultiMC, PrLauncher и подобные существующие лаунчеры справляются с этим. FlowUpdater предназначен для разработчиков, строящих свои собственные решения.
Если вы кодите на языке, отличном от Java, вам нужное другое решение. Если ваш проект включает всего два-три фиксированных мода и вы готовы хостить файлы сами, построение простого скрипта скачивания может быть излишним. Но как только вам нужны версионирование, автоматические обновления и установки, ориентированные на игроков, FlowUpdater зарабатывает своё право на существование.
Для администраторов серверов Minecraft есть промежуточная зона. Вы можете использовать FlowUpdater, чтобы построить небольшой инструмент обновления, который игроки запускают перед входом. Полезное дополнение к вашему лаунчеру: интегрируйтесь с создателем белого списка на minecraft.how, чтобы игроки могли легко управлять списком сервера. А если вы управляете своим сервером, инструмент бесплатного DNS помогает привязать кастомные домены к вашим серверам.
Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Комментарии
Пока нет комментариев. Станьте первым, кто поделится своим мнением!


