Skip to main content
Модуль @xnlc/servers управляет серверными процессами Minecraft напрямую через Node.js. Он запускает JAR-файлы, парсит консоль, собирает метрики CPU/RAM, поддерживает graceful-остановку и скачивание популярных ядер. Не зависит от Electron: подходит для панелей, ботов и headless-скриптов.

Версия 1.0.6

Лицензия: GPL-3.0 (как и лаунчер)

Установка

Возможности

  • Запуск сервера через ChildProcess с stdin/stdout/stderr
  • Graceful-остановка командой stop, принудительное завершение по таймауту
  • Сбор метрик: CPU%, RAM (МБ), аптайм (с нормализацией на ядра)
  • Буфер консоли до 2000 строк с детектом готовности
  • Распознавание ядер: Vanilla, Forge, Fabric, Quilt, NeoForge, Paper, Spigot, Bukkit, Purpur, Folia, Sponge, BungeeCord, Velocity, Waterfall, свой JAR
  • Скачивание ядер: Paper, Purpur, Folia, Velocity, Waterfall, Sponge
  • Ping сервера по протоколу SLP (Server List Ping)
  • Распознавание EULA и маркеров запуска/остановки

ServerManager

Главный класс для управления серверными процессами. Доступен как синглтон serverManager.

Запуск

McServerInfo
required
Состояния сервера (McServerState): Маркер готовности определяется по строке вида Done (5.123s)! For help, type "help". Если маркер не появился за 180 секунд, сервер автоматически переводится в running (страховка от нестандартных ядер).

Остановка

Повторные вызовы stop() ждут текущую остановку, а не отправляют команду снова. Если сервер еще в фазе starting, команда stop не отправляется: процесс убивается сразу.

Команды

Команда отправляется только если сервер в статусе running. В фазе starting выбрасывается ошибка.

Метрики

CPU считается по дельте между двумя замерами и нормализуется на число ядер. На Windows для сбора метрик используется PowerShell (Get-Process). На Linux данные читаются из /proc/<pid>/stat и /proc/<pid>/status.

Консоль

Буфер склеивает логи установки ядра (BuildTools, инсталлер Forge) и живой вывод процесса. Установочные логи очищаются перед стартом, чтобы в консоли оставался только вывод самого сервера.

Состояние

Остановка всех серверов

Скачивание ядер

Модуль экспортирует функции для получения доступных версий и сборок ядер:
ensureServerJar скачивает указанное ядро в целевую папку.

Ping сервера

Анализ JAR

Детектор состояний

Модуль экспортирует константы и функции для определения состояния по строкам консоли:

Кодировка

Консоль сервера декодируется сначала как UTF-8. При обнаружении replacement characters (U+FFFD) происходит fallback на CP1251 (типичная кодировка русскоязычных серверов на Windows).

Пример: полный цикл

Типы

Основные типы импортируются из @xnlc/types:
  • McServerInfo, McServerState, McServerMetrics
  • McPlayerEntry, McFsEntry, ResolvedPlugin
  • ServerStatusResult
  • XnConnectState, XnConnectUsage
  • McServerDownloadProgress