Сборка клиента на версиях до 5.1.0
Это просто

Никаких специальных действий не требуется. Соблюдайте структуру папок и профиля, для этого за основу вы можете взять ближайший по версии, уже готовый профиль/клиент и подправить необходимые параметры. Некоторые клиенты(1.14/1.15) умельцы уже собрали и выложили на своё зеркало. Следите за доступными зеркалами на нашем Discord сервере, там же можно задать вопрос по сборке какой то нестандартной версии

Сборка клиента на версии 5.1.0+
Важно

Для уже готового клиента, скачанного с зеркала выполните:

Для сборки клиента с Forge также выполните следущее:

Для сборки клиента с Fabric выполните следущее:

Подпись всего клиента
Сложный уровень

Начиная с 5.1.0 появилась возможность подписывать не только лаунчер, а весь клиент целиком. Подпись всего клиента осуществляется командой signdir и доступна только если у вас настроен свой сертификат(автосгенерированный не подойдет). Перед началом подписи убедитесь что вы настроили раздел sign Лаунчсервера

  1. Сделайте бекап клиента
  2. Подготовьте клиент к подписи. Удалите из forge.jar/minecraft.jar/liteloader.jar файлы подписи, которые находятся в META-INF и имеют разрешение .SF/.RSA/.EC при их наличии. Так же может понадобится удаление из манифеста всех хешей. Убедитесь, что ничего вы этим действием не сломали
  3. Выполните signdir updates/ВашКлиент
  4. Выполните syncUpdates

После каждого обновления модов и любых других .jar файлов вам нужно будет их переподписать командой signjar updates/ВашКлиент/ПутьКФайлу. Команда signdir не умеет игнорировать уже подписанные файлы, имейте это ввиду

Подпись клиента - вспомогательное действие, нужное некоторым защитам от читов для нормальной работы

Наложение патчей на клиент
Сложный уровень

Для работы некоторых возможностей лаунчера необходимо, что бы обращения к некоторым вызовам перенаправлялись в лаунчер. Это можно сделать с помощью мультикоманды patcher из UnsafeCommandsPack

Исходный классИсходный методПрокси классПрокси метод
java.lang.SystemsetSecurityManagerpro.gravit.launcher.api.SystemServicesetSecurityManager
java.lang.Systemexitpro.gravit.launcher.api.SystemServiceexit

Так как это статические функции то должен использоваться патчер, который работает с опкодом INVOKESTATIC. В данном случае это pro.gravit.launchermodules.unsafecommands.patcher.StaticReplacerPatcher. Этот патчер принимает 4 аргумента в том порядке, в котором они указаны в таблице.

Нет смысла пытаться пропатчить все .jar файлы(включая моды) этим патчером. Как правило достаточно патча forge.jar, так как в других файлах(и тем более модах) эти вызовы встречатся не должны. В выборе что патчить руководствуйтесь инструкцией к вашей защите