> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xneon.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Обзор модулей XNLC: библиотеки для Minecraft-лаунчеров

> XNLC (Xneon Launcher Core): набор TypeScript-модулей для запуска Minecraft, работы с модами, серверами, скинами и NBT. Состав пакетов и установка.

XNLC (Xneon Launcher Core) это набор TypeScript-модулей, на которых построен Xneon Launcher. Каждый пакет отвечает за свою задачу: запуск игры, поиск модов, работу с NBT, серверами, скинами и типизацию.

Все модули публикуются в реестр [git.xneon.org](https://git.xneon.org) и доступны для установки через npm/pnpm. Исходный код открыт (GPL-3.0).

## Возможности

* Запуск Minecraft с любыми загрузчиками (Vanilla, Fabric, Quilt, Forge, NeoForge, LiteLoader, OptiFine)
* Установка и обновление загрузчиков автоматически
* Работа с активами, библиотеками и нативными компонентами
* Поиск и установка модов из Modrinth, CurseForge и FTB
* Создание и управление локальными Minecraft-серверами
* Работа со скинами из каталога Laby.net
* Чтение и запись NBT-файлов Minecraft
* Единая типизация для всех модулей

## Состав экосистемы

<CardGroup cols={2}>
  <Card title="@xnlc/core" icon="rocket" href="/core/core">
    Запуск Minecraft, установка загрузчиков, управление версиями и активами. Главный фасад: класс `Xnlc`.
  </Card>

  <Card title="@xnlc/mods" icon="puzzle" href="/core/mods">
    Клиенты Modrinth, CurseForge и FTB. Поиск, фильтрация, загрузка и проверка обновлений модов.
  </Card>

  <Card title="@xnlc/servers" icon="server" href="/core/servers">
    Управление локальными серверами: запуск, остановка, консоль, игроки, метрики, плагины.
  </Card>

  <Card title="@xnlc/skins" icon="palette" href="/core/skins">
    Система скинов: локальная библиотека, каталог Laby.net, поиск по тегам, плащи, превью.
  </Card>

  <Card title="@xnlc/nbt" icon="file-code" href="/core/nbt">
    Чтение и запись NBT-файлов Minecraft. Замена prismarine-nbt с автовыводом типов тегов.
  </Card>

  <Card title="@xnlc/types" icon="circles" href="/core/types">
    Единый источник типов: доменные сущности, IPC-контракты, типы запуска, серверные типы.
  </Card>
</CardGroup>

## Граф зависимостей

```text theme={null}
@xnlc/types
    ^
    |
@xnlc/core  @xnlc/mods  @xnlc/servers  @xnlc/skins  @xnlc/nbt
    |            |            |             |           |
    +------------+------------+-------------+-----------+
                              |
                     Xneon Launcher
                              |
                         Electron + React
```

* `@xnlc/types`: единственный модуль без зависимостей. Все остальные модули зависят от него напрямую или косвенно.
* `@xnlc/core` зависит от `@xnlc/types` и `adm-zip`.
* `@xnlc/mods`, `@xnlc/servers`, `@xnlc/skins`, `@xnlc/nbt` не имеют внешних зависимостей (кроме `@xnlc/types` где указано).

## Установка

Все пакеты публикуются в приватный реестр [git.xneon.org](https://git.xneon.org/api/packages/MAINER4IK/npm/). Добавьте его в `.npmrc`:

```ini theme={null}
@xnlc:registry=https://git.xneon.org/api/packages/MAINER4IK/npm/
```

<CodeGroup>
  ```bash npm theme={null}
  npm install @xnlc/core @xnlc/mods @xnlc/types
  ```

  ```bash pnpm theme={null}
  pnpm add @xnlc/core @xnlc/mods @xnlc/types
  ```
</CodeGroup>

## Быстрый старт

Самый простой способ запустить Minecraft:

```ts theme={null}
import { Xnlc } from "@xnlc/core";

const xnlc = new Xnlc({ gameDir: "/path/to/.minecraft" });

// Получить список версий
const versions = await xnlc.getMojangVersions();

// Установить NeoForge
await xnlc.installLoader("1.20.4", "neoforge", "21.0.167");

// Запустить игру
const auth = xnlc.createOfflineAuth("PlayerName");
await xnlc.launch(
  { mcVersion: "1.20.4", loaderType: "neoforge", loaderVersion: "21.0.167" },
  auth,
  { javaPath: "/usr/bin/java", memoryMax: "4G" }
);
```

## Разработка в монорепозитории

Если вы работаете в монорепозитории Xneon Launcher, используйте команду `sync:xnlc` для синхронизации локальных пакетов:

```bash theme={null}
pnpm sync:xnlc
```

Эта команда связывает локальные пакеты из `packages/` с приложением без необходимости публикации в реестр.

<Tip>
  При разработке в Electron-окружении учитывайте особенность: если запущен процесс Electron, может возникнуть ошибка `EPERM` на файл `dxil.dll`. Закройте Electron перед сборкой.
</Tip>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.