Перейдём к настройке клиента.
Работа с игровым клиентом
Клиенты, ресурсы и другие файлы для загрузки лаунчером хранятся в виде субдиректорий в директории updates, а профили, в которых указываются имя директорий, адрес сервера для автозахода, исключения при обновлении и другие сведения, необходимые для запуска клиента хранятся в директории profiles
Совместимость
На текущий момент поддерживается запуск:
Любой Vanilla версии с 1.7.10 до 1.19.2
Любой Forge версии с 1.7.10 до 1.16.5
Любой Fabric версии с 1.13 до 1.19.2
Уточняйте обновлённый список на офф вики!
Рекомендации
При создании проекта используйте самую новую версию Minecraft, доступную для ключевых модов в вашей сборке
Используйте Fabric вместо Forge для проектов на minecraft 1.16.5 и выше
Используйте Sodiumоткрыть в новом окне и Irisоткрыть в новом окне вместо Optifine начиная с Minecraft 1.16.5
Избегайте использования Optifabric - он создает в корне клиента скрытую папку с .jar внутри, которая не будет проверяться лаунчером
Избегайте использования модов из непроверенных источников. Скачивайте моды с Curseforgeоткрыть в новом окне или напрямую с GitHub разработчика
Скачивание ассетов
Есть два варианта расположения ассетов в папке updates:
Для скачивания ассетов в общую папку выполните команду downloadasset ВЕРСИЯ assets
ПРИМЕР: downloadasset 1.19.2 assets
При скачивании нескольких версий ассетов в одну папку будут скачаны только недостающие
Скачивание клиента с зеркала
Список клиентов, доступных на нашем зеркале можно посмотреть тут: Клиенты
Выполните команду downloadclient ВЕРСИЯ НАЗВАНИЕ для скачки клиента
ПРИМЕР: downloadclient 1.7.10-forge 1.7.10-forge
Примечания:
Для скачивания версии c Forge/Fabric допишите в конец версии -forge/-fabric, например 1.16.5-fabric
Для скачки клиента с стороннего зеркала вместе с профилем вам нужно использовать такую команду: downloadclient ВЕРСИЯ НАЗВАНИЕ mirror
Название папки ассетов как правило записывается в виде assetВЕРСИЯ, например: asset1.7.10, asset1.17.1
По умолчанию все клиенты содержат в себе пропатченую AuthLib
Сборка Authlib
Для сборки AuthLib следуйте инструкции на офф вики. Она обновляется и имеет актуальную информацию.
Ссылка
! Данный метод нужен в случае, если вы собираете свой клиент с 0. Клиент установленный с офф зеркала уже имеет патч для AuthLib.
Настройка профиля
Список параметров профиля с пояснениями:
{
"title": "Vanilla1.17", // Заголовок профиля
"uuid": "fa9c1a52-6fa9-4da6-a488-9fc80250095c", // UUID профиля (profileUUID)
"version": "1.17", // Версия майнкрафта
"info": "Информация о сервере", // Информация о сервере в окне выбора серверов
"dir": "Vanilla1.17", // Папка клиента в updates
"sortIndex": 0, // Порядковый номер в окне выбора серверов
"assetIndex": "1.17", // Название используемого индекса в ассетах
"assetDir": "asset1.17", // Папка с ассетами
"update": [ // Список файлов и папок, которые будут перекачиваться при старте клиента
"servers.dat"
],
"updateExclusions": [], // Список файлов и папок, которые не надо проверять
"updateVerify": [ // Список файлов и папок, которые будут перекачиваться при старте клиента и во время работы
"libraries",
"natives",
"minecraft.jar",
"forge.jar",
"liteloader.jar",
"mods"
],
"updateOptional": [], // Список опциональных модов и дополнительных аргументов
"jvmArgs": [ // Аргументы JVM
"-XX:+DisableAttachMechanism",
"-XX:+UseG1GC",
"-XX:+UnlockExperimentalVMOptions",
"-XX:G1NewSizePercent\u003d20",
"-XX:MaxGCPauseMillis\u003d50",
"-XX:G1HeapRegionSize\u003d32M",
"-Djava.library.path\u003dnatives",
"-Dfml.ignorePatchDiscrepancies\u003dtrue",
"-Dfml.ignoreInvalidMinecraftCertificates\u003dtrue"
],
"classPath": [ // Список файлов и библиотек, загружаемых при запуске выбранным загрузчиком классов
"libraries",
"minecraft.jar",
"forge.jar",
"liteloader.jar"
],
"altClassPath": [], // Список файлов и библиотек, загружаемых при запуске системным загрузчиком классов
"clientArgs": [], // Дополнительные аргументы клиента
"compatClasses": [], // Список дополнительных MainClass, которые будут запущены перед основным
"properties": {}, // Кастомная информация о профиле
"servers": [ // Список серверов
{
"name": "Vanilla1.17", // Название (serverName)
"serverAddress": "localhost", // Адрес сервера
"serverPort": 25535, // Порт сервера
"isDefault": true, // По умолчанию
"socketPing": true // Прямой пинг для получения онлайна
}
],
"classLoaderConfig": "LAUNCHER", // Тип загрузчика классов (LAUNCHER, AGENT, SYSTEM_ARGS)
"runtimeInClientConfig": "NONE", // Запуск GUI рантайма при старте клиента (NONE, BASIC, FULL)
"recommendJavaVersion": 16, // Рекомендуемая версия Java
"minJavaVersion": 16, // Минимальная версия Java
"maxJavaVersion": 999, // Максимальная версия Java
"warnMissJavaVersion": true, // Предупреждение о несоответствии Java требованиям для запуска
"settings": { // Настройки по умолчанию
"ram": 0, // Количество ОЗУ (в мегабайтах), 0 - автоматически
"autoEnter": false, //Авто—вход, может крашиться
"fullScreen": false // Полноэкранный режим
},
"updateFastCheck": true, // Быстрая проверка файлов
"limited": false, // Ограничен permissions
"mainClass": "net.minecraft.client.main.Main" // MainClass клиента
}
Описание настроек профиля
title - заголовок профиля
uuid - UUID профиля
version - версия майнкрафта
info - информация о сервере в окне выбора серверов
dir - папка клиента в updates
sortIndex - порядковый номер в окне выбора серверов
assetIndex - название используемого индекса в ассетах
assetDir - папка с ассетами
update - список файлов и папок, которые будут перекачиваться при старте клиента
updateExclusions - список файлов и папок, которые не надо проверять
updateVerify - список файлов и папок, которые будут перекачиваться при старте клиента и во время работы
updateOptional - список опциональных модов и дополнительных аргументов более подробнее смотрите ниже
jvmArgs - аргументы JVM
classPath - список файлов и библиотек, загружаемых при запуске выбранным загрузчиком классов
altClassPath - список файлов и библиотек, загружаемых при запуске системным загрузчиком классов
clientArgs - дополнительные аргументы клиента
compatClasses - список дополнительных MainClass, которые будут запущены перед основным
properties - кастомная информация о профиле
servers - список серверов
name - название сервера
serverAddress - адрес сервера
serverPort - порт сервера
isDefault - по умолчанию
socketPing - Прямой пинг для получения онлайна
classLoaderConfig - тип загрузчика классов (LAUNCHER, AGENT, SYSTEM_ARGS)
runtimeInClientConfig - запуск GUI рантайма при старте клиента (NONE, BASIC, FULL)
recommendJavaVersion - рекомендуемая версия Java
minJavaVersion - минимальная версия Java
maxJavaVersion - максимальная версия Java
warnMissJavaVersion - предупреждение о несоответствии Java требованиям для запуска
settings - настройки по умолчанию
ram - количество ОЗУ (в мегабайтах), 0 - автоматически
autoEnter - авто—вход, может крашиться
fullScreen - полноэкранный режим
updateFastCheck - быстрая проверка файлов
limited - ограничен permissions
mainClass - главный класс клиента
Примечание:
limited так-же должен быть true, для работы profileWhitelist
Опциональные моды
"updateOptional": [
{
"actions": [ //Список действий опционального мода
{ //Первое действие
"files": {
"mods/1.7.10/NotEnoughItems-1.7.10-1.0.5.118-universal.jar": "", //Простое добавление файла без переименований
"mods/SuperStrangeMod0.jar": "mods/SuperStrangeMod.jar", //Добавление файла с перемещением. на стороне лаунчсервера файл находится по пути "mods/SuperStrangeMod0.jar", а в клиент он попадет сюда "mods/SuperStrangeMod.jar"
"mods2/LowStrangeMod.jar": "mods/LowStrangeMod.jar", //Между папками перемещение тоже работает
"config2/ic2": "config/ic2" //Перемещение папок тоже работает
},
"type": "file" //Тип действия - обработка файлов
}
],
"info": "Мод, показывающий рецепты", //Описание
"visible": true, //Видимость
"mark": true, //Включен по умолчанию
"limited": false, //Ограничен permissions
"permissions": 0, //Маска привилегий. 0 - мод для всех, 1 - только для админов.
"name": "NotEnoughItems" //Имя
},
{
"actions": [
{
"files": {
"mods/Waila_1.5.10_1.7.10.jar": ""
},
"type": "file"
}
],
"info": "Мод, показывающий дополнительную информацию при наведении на блок",
"name": "Walia",
"permissions": 0,
"visible": true,
"dependenciesFile": [{"name":"NotEnoughItems"/* Имя зависимого мода */}],
"conflictFile": [{"name":"ClientFixer"/* Имя конфликтующего мода */}],
"subTreeLevel": 2 //Смещение относительно первого мода. Используется для создания визуального отображения дерева зависимостей
},
{
"actions": [
{
"args": [
"--add-modules",
"jdk.unsupported"
],
"type": "jvmArgs"
}
],
"triggers": [], //Триггеры, о них ниже
"info": "Аргументы Java 9+",
"visible": false,
"permissions": 0,
"name": "Java9Args"
},
{
"actions": [
{
"files": {
"mods/1.7.10/OptiFine_1.7.10_HD_U_E7.jar": ""
},
"type": "file"
}
],
"info": "Улучшение производительности",
"permissions": 0,
"visible": true,
"name": "OptiFine HD"
}
],
Триггеры - возможность включать опциональный мод при выполнении некоторых условий
Тип os:
"triggersList": [
{
"os": "MACOSX", // ОС: LINUX, MUSTDIE (Это Windows), MACOSX
"required": false,
"inverted": false,
"type": "os"
}
],
Тип java
"triggersList": [
{
"type": "java",
"minVersion": 8, //Минимальная версия Java для срабатывания триггера
"maxVersion": 11, //Максимальная версия Java для срабатывания триггера
"required": true, //Показывает, что без этого триггера включение опционального мода не имеет смысла
"inverted": false //Инвертировать триггер
}
],
Синхронизация директорий
Для обеспечения высокой производительности, лаунчсервер кэширует содержимое директорий updates и profiles. При внесении изменений в эти директории, лаунчсервер о них не осведомлён, и при следующем обновлении скорее всего будет ошибка. Для того чтобы синхронизировать содержимое этих директорий, существует две команды - syncupdates и syncprofiles:
syncupdates # Синхронизирует содержимое директории updates
syncprofiles # Синхронизирует содержимое директории profiles
syncup # Синхронизировать обе директории
Страница на официальном wiki