@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 выбрасывается ошибка.
Метрики
Get-Process). На Linux данные читаются из /proc/<pid>/stat и /proc/<pid>/status.
Консоль
Состояние
Остановка всех серверов
Скачивание ядер
Модуль экспортирует функции для получения доступных версий и сборок ядер:ensureServerJar скачивает указанное ядро в целевую папку.
Ping сервера
Анализ JAR
Детектор состояний
Модуль экспортирует константы и функции для определения состояния по строкам консоли:Кодировка
Консоль сервера декодируется сначала как UTF-8. При обнаружении replacement characters (U+FFFD) происходит fallback на CP1251 (типичная кодировка русскоязычных серверов на Windows).
Пример: полный цикл
Типы
Основные типы импортируются из@xnlc/types:
McServerInfo,McServerState,McServerMetricsMcPlayerEntry,McFsEntry,ResolvedPluginServerStatusResultXnConnectState,XnConnectUsageMcServerDownloadProgress