Работа с игровым клиентом
Клиенты, ресурсы и другие файлы для загрузки лаунчером хранятся в виде субдиректорий в директории updates, а профили, в которых указываются имя директорий, адрес сервера для автозахода, исключения при обновлении и другие сведения, необходимые для запуска клиента хранятся в директории profiles
Уязвимость в Minecraft
ВНИМАНИЕ
В декабре 2021 была обнаружена критическая уязвимость в библиотеке apache log4j2, которую Minecraft использует для логгирования. С помощью найденного эксплоита можно не только убивать сервера, но и ВЫПОЛНЯТЬ ПРОИЗВОЛЬНЫЙ КОД (!!!) как на клиенте, так и на сервере.
Поддерживаемые версии
На данный момент лаунчер может запускать все версии с 1.7.10 по актуальную версию Minecraft, кроме Forge +1.17.1
Версия | Ванилла | Forge | Fabric |
---|---|---|---|
1.7.10 | ✔️ | ✔️ | ➖ |
1.8.9 | ✔️ | ✔️ | ➖ |
1.10.2 | ✔️ | ✔️ | ➖ |
1.11.2 | ✔️ | ✔️ | ➖ |
1.12.2 | ✔️ | ✔️ | ➖ |
1.13.2 | ✔️ | ✔️ | ➖ |
1.14.4 | ✔️ | ✔️ | ✔️ |
1.15.2 | ✔️ | ✔️ | ✔️ |
1.16.5 | ✔️ | ✔️ | ✔️ |
1.17.1 | ✔️ | ✔️ | ✔️ |
1.18.2 | ✔️ | ✔️ | ✔️ |
Установка клиента
Шаг 1: Добавте наше зеркало в конфиг лаунчсервера и перезапустите его
"mirrors": [
"https://mirror.gravit-launcher.ru/"
],
Шаг 2: Выполните следующую команду для скачивания клиента
downloadclient <version> <name>
version
- это версия Minecraft. В настоящее время мы разделяем версии на 3 типа:
1.16.5
- Ванильный Minecraft1.16.5-forge
- Minecraft модифицированный Forge1.16.5-fabric
- Minecraft модифицированный Fabric
name
- название клиента на ваш выбор
Шаг 3(Опционально): Выполните следующую команду для скачивание ассетов(тексутры, звуки и т.п) клиента
downloadclient <version> asset<version>
После данных действий клиент скачается в папку updates
и будет создан профиль в папке profiles
Настройка профиля клиента
Пример готовой конфигурации
После скачивания клиента лаунчсервер автоматически создаст профиль и заполнит его базовыми данными. Ниже приведён пример готовой конфигурации для Minecraft 1.17.1
{
"title": "Vanilla1.17",
"uuid": "fa9c1a52-6fa9-4da6-a488-9fc80250095c",
"version": "1.17",
"info": "Информация о сервере",
"dir": "Vanilla1.17",
"sortIndex": 0,
"assetIndex": "1.17",
"assetDir": "asset1.17",
"update": [
"servers.dat"
],
"updateExclusions": [],
"updateVerify": [
"libraries",
"natives",
"minecraft.jar",
"forge.jar",
"liteloader.jar",
"mods"
],
"updateOptional": [],
"jvmArgs": [
"-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": [],
"properties": {},
"servers": [
{
"name": "Vanilla1.17",
"serverAddress": "localhost",
"serverPort": 25535,
"isDefault": true,
"socketPing": true
}
],
"classLoaderConfig": "LAUNCHER",
"runtimeInClientConfig": "NONE",
"recommendJavaVersion": 16,
"minJavaVersion": 16,
"maxJavaVersion": 17,
"warnMissJavaVersion": true,
"settings": {
"ram": 0,
"autoEnter": false,
"fullScreen": false
},
"updateFastCheck": true,
"limited": false,
"mainClass": "net.minecraft.client.main.Main"
}
Описание настроек профиля
title
- заголовок профиляuuid
- UUID профиляversion
- версия майнкрафтаinfo
- информация о сервере в окне выбора серверовdir
- папка клиента в updatessortIndex
- порядковый номер в окне выбора серверовassetIndex
- название используемого индекса в ассетахassetDir
- папка с ассетамиupdate
- список файлов и папок, которые будут перекачиваться при старте клиентаupdateExclusions
- список файлов и папок, которые не надо проверятьupdateVerify
- список файлов и папок, которые будут перекачиваться при старте клиента и во время работыupdateOptional
- список опциональных модов и дополнительных аргументов более подробнее смотрите в Опциональные модыjvmArgs
- аргументы JVMclassPath
- список файлов и библиотек, загружаемых при запуске выбранным загрузчиком классовaltClassPath
- список файлов и библиотек, загружаемых при запуске системным загрузчиком классовclientArgs
- дополнительные аргументы клиентаcompatClasses
- список дополнительных MainClass, которые будут запущены перед основнымproperties
- кастомная информация о профилеservers
- список серверов
name
- название сервераserverAddress
- адрес сервераserverPort
- порт сервераisDefault
- по умолчаниюsocketPing
- Прямой пинг для получения онлайна
classLoaderConfig
- тип загрузчика классов (LAUNCHER, AGENT, SYSTEM_ARGS)runtimeInClientConfig
- запуск GUI рантайма при старте клиента (NONE, BASIC, FULL)recommendJavaVersion
- рекомендуемая версия JavaminJavaVersion
- минимальная версия JavamaxJavaVersion
- максимальная версия JavawarnMissJavaVersion
- предупреждение о несоответствии Java требованиям для запускаsettings
- настройки по умолчанию
ram
- количество ОЗУ (в мегабайтах), 0 - автоматическиautoEnter
- авто—вход, может крашитьсяfullScreen
- полноэкранный режим
updateFastCheck
- быстрая проверка файловlimited
- ограничен permissionsmainClass
- главный класс клиента
Опциональные моды
"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 # Синхронизировать обе директории