К содержанию

Архитектура

Крейты, JNI-мост и граница между Rust и JVM.

Открыть на GitHubОбновлено 2026-11-11

Верхний уровень

client 26.3  ←→  net (Rust, tokio)
                    │
                    ├── world, worldgen, redstone, mobs
                    │
                    └── JNI bridge  ←→  JVM (paper-api + api-impl)
                                              │
                                              └── plugins/*.jar

Сеть, мир и генерация живут в Rust. JVM не управляет тиком: она получает события и запросы через мост. Если слушателей нет, событие остаётся в Rust.

Крейты

КрейтЗадача
protocolПакеты 26.3, VarInt, NBT, текстовые компоненты
netСоединения, игра, команды, механики, события
worldgenШум, биомы, поверхности, карверы, структуры
worldЧанки, палитры, Anvil, свет
dataВстроенные данные игры
bridgeJVM через JNI и встроенный API
serverБинарник, CLI, мастер настройки, консоль, бэкапы
metricsМетрики и дашборд
labСравнение с ванилью и бенчмарки
botsБоты-пробы для сверки пакетов

Паритет с ванилью

  • Механики реализуются по байткоду server.jar и Paper, а не по вики.
  • Дерево команд сверяется с reports/commands.json, пакеты — с reports/packets.json.
  • Рельеф и хеш мира сверяются с ванилью.
  • chunkwake-lab запускает сценарии на обоих серверах и собирает отчёт с отличиями.

Планы

То, чего пока нет в релизе, но описано в ARCHITECTURE.md:

  • STM-тик: Paper-семантика для плагинов при параллельном исполнении;
  • динамические острова вместо фиксированных регионов Folia;
  • мир как журнал событий с откатом и повтором;
  • мост на Panama FFM с общей памятью вместо JNI.

Подробности: ARCHITECTURE.md.

На этой странице