Перейти к содержимому

InvSeparate

InvSeparate — это открытое решение для маршрутизации в сетях Minecraft, где несколько модпаков работают через единую точку входа прокси.

NeoForgeVelocity
Загрузчики
NeoForgeVelocity
Скачиваний на Modrinth
780
Подписчиков на Modrinth
0
версии
2
Обновлён
27 июля 202627 июл.
Опубликован
в 2026

Коротко о моде

Работает на NeoForge и Velocity
Для Minecraft 1.7.2–26.2
Ставится только в игру; на сервер ставить не нужно
Последняя версия — SNAPSHOT-1.0.0 от 27 июля 2026
Лицензия MIT — бесплатно
Где нужен
В игреобязателенНа серверене нужен

Ставится только в игру; на сервер ставить не нужно

Версии игры1.7.2–26.2
Описание переведено автоматическиПоказать оригинал (EN)

InvSeparate

InvSeparate — это открытое решение для маршрутизации сетей Minecraft, обслуживающих несколько модпаков через единую точку входа прокси.

Оно состоит из двух частей:

  • плагин для Velocity, который решает, какой логин-сервер и конечный бэкенд должен использовать игрок
  • клиентский мод, который добавляет идентификатор пака в handshake Minecraft до выбора бэкенда

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

Возможности

  • Начальная маршрутизация на основе идентификатора
  • Двухэтапная маршрутизация от логин-сервера к конечному бэкенду
  • Стандартный откат для клиентов без мода или с неизвестными идентификаторами
  • Разработка ведётся на Velocity 3.4.x с целевым диапазоном совместимости до Velocity 4.x
  • Монорепозиторий для общего кода протокола, плагина прокси и нескольких реализаций под загрузчики

Как это работает

  1. Клиентский мод читает настроенный identifier
  2. Мод записывает `\0` в поле хоста handshake
  3. Плагин Velocity читает идентификатор из сырого имени хоста handshake
  4. Плагин выбирает настроенный логин-сервер и цель после входа
  5. Если идентификатор отсутствует, используется обычная маршрутизация по умолчанию

Важно: getVirtualHost() в Velocity отбрасывает все данные после нулевого байта. Поэтому плагин прокси должен читать сырое значение виртуального хоста, чтобы восстановить идентификатор.

Структура репозитория

  • common: общие константы и вспомогательные функции протокола
  • velocity: реализация плагина Velocity
  • neoforged: клиентский мод для NeoForge
  • fabric: клиентский мод для Fabric
  • forge: зарезервированный модуль Forge
  • bungeecord: зарезервированный модуль BungeeCord

Пример конфигурации

Конфиг Velocity в plugins/invseparate/config.yml:

default-server: "login"
default-post-login-server: "lobby"
post-login-delay-seconds: 5

identifiers:
  endlessmc-hng:
    login-server: "hng_login"
    post-login-server: "hng"

Конфиг клиента:

identifier = "endlessmc-hng"

Заметки по сборке

Common и Velocity

Репозиторий сейчас по умолчанию использует Gradle 9.x, поэтому эти модули можно собирать напрямую:

./gradlew.bat :common:build :velocity:build

Модули загрузчиков

Модули под конкретные загрузчики, такие как neoforged, fabric и forge, находятся в том же репозитории, но не все включены по умолчанию в settings.gradle.kts.

Следуйте комментариям в файлах сборки, чтобы переключить нужную версию Gradle и включить модуль загрузчика, который хотите собрать.

Стратегия веток

  • 1.21.1 — текущая основная ветка
  • Другие версии Minecraft следует поддерживать в отдельных ветках при необходимости
  • Ветка 1.21.8 больше не используется

Сценарии использования

  • Ванильные клиенты подключаются к логин-серверу по умолчанию
  • Разные клиенты с модпаками подключаются к разным логин-серверам
  • После аутентификации игроки перенаправляются на свой целевой бэкенд
  • Сети, которым нужен более мощный слой маршрутизации на стороне прокси, чем простые плагины пост-логин переадресации

Лицензия

Текущие заголовки исходников организованы вокруг лицензии MIT.

注意:Velocity 的 getVirtualHost() 会丢弃 null byte 之后的数据,因此服务端必须读取原始主机名而不是处理后的虚拟主机值。

仓库结构

  • common:公共协议常量与工具
  • velocity:Velocity 插件实现
  • neoforged:NeoForge 客户端 Mod
  • fabric:Fabric 客户端 Mod
  • forge:预留 Forge 模块
  • bungeecord:预留 BungeeCord 模块

配置示例

Velocity 配置文件位于 plugins/invseparate/config.yml:

default-server: "login"
default-post-login-server: "lobby"
post-login-delay-seconds: 5

identifiers:
  endlessmc-hng:
    login-server: "hng_login"
    post-login-server: "hng"

NeoForge/Fabric 客户端配置核心项:

identifier = "endlessmc-hng"

构建说明

公共模块与 Velocity

当前仓库默认使用 Gradle 9.x,可直接构建:

./gradlew.bat :common:build :velocity:build

Loader 模块

neoforged、fabric、forge 等加载器模块保留在同一仓库中,但当前 settings.gradle.kts 默认未启用全部模块。

按仓库内注释切换对应模块与 Gradle 版本后,可分别构建对应 Loader 产物。

分支策略

  • 当前主线版本为 1.21.1
  • 其他 Minecraft 版本建议使用独立分支维护
  • 1.21.8 分支已停止使用

适用场景

  • 原版客户端进入默认登录服
  • 不同整合包客户端进入各自的登录服
  • 登录认证完成后自动进入各自目标后端
  • 需要替代或补强现有“只负责转发、不负责识别客户端”的代理路由方案

许可证

本项目当前源码头部按 MIT 许可约定组织。

Частые вопросы

Как установить InvSeparate?

Установите NeoForge под свою версию Minecraft, скачайте InvSeparate под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть InvSeparate?

У InvSeparate есть сборки для Minecraft 1.7.2–26.2.

Нужен ли InvSeparate на сервере?

Ставится только в игру; на сервер ставить не нужно

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее