# Клиенты

Клиенты - json файлы с различными настройками, они должны находиться в папке, указанной в настройках сервера.

Базовая настройка
/начало-работы/settings/

# Пример файла клиента

{
    "name": "My cool minecraft client",
    "id": "mcmc",
    "metadata": {
        "ip": "127.0.0.1:25565",
        "short_desc": "Крутой клиент!",
        "description": "Это очень крутой клиент, тут можно поиграть в майнкрафт",
        "image": "https://icdn.lenta.ru/images/2021/01/29/17/20210129175240891/wide_16_9_dd8f04a48c081a15c9e7aaf441e38927.jpg",
        "version": "1.6.4",
        "links": [
            {
                "text": "Форум",
                "url": "https://forum.warmine.ru/"
            },
            {
                "text": "Магазин",
                "url": "https://funpay.com/"
            },
            {
                "text": "Правила",
                "url": "https://wtfpl.net/"
            },
            {
                "text": "Ещё что-то",
                "url": "https://natribu.org/"
            }
        ],
        "stats": [
            {
                "text": "Версия игры",
                "value": "1.6.4"
            }
        ]
    },
    "access": {
        "type": "whitelist",
        "whitelist": ["Name1", "Name2", "Name3"]
    },
    "indexes": ["jre64", "jre32", "mcmc"],
    "launcher_data": {
        "workingDir": "mcmc",
        "executable": "../jre/bin/java.exe",
        "executable_args": [
            ""
        ]
    }
}

# Настройки

Поле Тип Описание
name строка Название клиента, отображается в лаунчере
id строка Уникальный ID клиента
metadata объект Блок с мета-данными о клиенте, тут могут находиться любые данные, они будут переданы в лаунчер в неизменном виде. Этот параметр опциональный. Подробнее
access объект Настройки доступа к клиенту. Этот параметр опциональный. Подробнее
indexes Массив строк Список ID индексов, которые требуются для работы клиента. Подробнее
launcher_data объект Блок с параметрами запуска клиента Подробнее

# Мета-данные

Этот блок предназначен для передачи дополнительных данных лаунчеру. Он никак не ограничен в структуре и порядке полей, все данные из этого блока будут переданы лаунчеру, ими он сможет распоряжаться на свое усмотрение.

Основная задумка - передача фронтенду лаунчер дополнительных данных с сервера. Сейчас фронтенд распознояет несколько полей под разные задачи.

Поле Тип Описание
ip строка IP-адрес сервера, пишется в формате 127.0.0.1:1337, если порт не указан, будет использоваться 25565, IP нужен для получения информации о количестве игроков, а так же для автоматического входа на сервер. Если IP не указан, онлайн сервера показываться не будет, так же не будет работать функция автоматического входа.
short_desc строка Короткое описание клиента, отображается на карточке в лаунчере
description строка Полное описание клиента, отображается в вкладке "Подробнее" каждого клиента в лаунчере.
image строка Ссылка на картинку клиента, отображается на карточке а так же во вкладке "Подробнее". Формат можно использовать любой, но лучше использовать WebP или Progressive JPEG.
version строка Версия клиента, отображается на карточке и вкладке "подробнее"
links массив объектов Ссылки на различные ресурсы, отображаются на вкладке "подробнее", формат можно посмотреть в примере выше
stats массив объектов "Бэйджи" или "Карточки" с доп. информацией о клиенте, по стандарту лаунчер показывает там онлайн (при наличии IP) и DAU (Daily Active Users), в этом блоке можно добавить дополнительные карточки. Формат можно посмотреть в примере выше

# Доступ к клиенту

В лаунчере есть возможность ограничить доступ к определенным клиентам.

# Варианты ограничений

  • whitelist

# Белый список

Открывает доступ к клиенту только игрокам, чей ник указан в массиве whitelist.

Пример:

{
  "type": "whitelist",
  "whitelist": ["Admin"]
}

# Запуск клиента

Поле Тип Описание
workingDir строка Рабочая папка процесса клиента, обычно это корневая папка с файлами клиента, например "Novice"
executable строка Исполняемый файл, который запустит лаунчер с аргументами, можно использовать путь должен быть относительно рабочей папки, например, если мы должны запустить джаву, которая находится в папке jre, а клиент находится в папке Novice, путь будет таким: "../jre/bin/java.exe"
executable_args массив строк Список аргументов для запуска процесса, тут могут присутствовать плейсхолдеры, которые будут заменены на аргументы при запуске клиента

# Плейсхолдеры

Иногда для запуска клиента ему нужно передать доп. данные в аргументах, для этого есть "магические" аргументы, которые сервер заменит на нужные.

Плейсхолдеры выглядят так:

${login}
Аргумент Описание
login Будет заменен на ник игрока
session Будет заменен на уникальную сессию игрока