- Загрузчики
- NeoForgeVelocity
- Скачиваний на Modrinth
- 780
- Подписчиков на Modrinth
- 0
- версии
- 2
- Обновлён
- 27 июля 202627 июл.
- Опубликован
- в 2026
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
InvSeparate
InvSeparate — это открытое решение для маршрутизации сетей Minecraft, обслуживающих несколько модпаков через единую точку входа прокси.
Оно состоит из двух частей:
- плагин для
Velocity, который решает, какой логин-сервер и конечный бэкенд должен использовать игрок - клиентский мод, который добавляет идентификатор пака в handshake Minecraft до выбора бэкенда
Это позволяет одному прокси Velocity одновременно обслуживать ванильных клиентов, несколько клиентов с модпаками и разные сценарии входа.
Возможности
- Начальная маршрутизация на основе идентификатора
- Двухэтапная маршрутизация от логин-сервера к конечному бэкенду
- Стандартный откат для клиентов без мода или с неизвестными идентификаторами
- Разработка ведётся на
Velocity 3.4.xс целевым диапазоном совместимости доVelocity 4.x - Монорепозиторий для общего кода протокола, плагина прокси и нескольких реализаций под загрузчики
Как это работает
- Клиентский мод читает настроенный
identifier - Мод записывает `\0` в поле хоста handshake
- Плагин Velocity читает идентификатор из сырого имени хоста handshake
- Плагин выбирает настроенный логин-сервер и цель после входа
- Если идентификатор отсутствует, используется обычная маршрутизация по умолчанию
Важно: getVirtualHost() в Velocity отбрасывает все данные после нулевого байта. Поэтому плагин прокси должен читать сырое значение виртуального хоста, чтобы восстановить идентификатор.
Структура репозитория
common: общие константы и вспомогательные функции протоколаvelocity: реализация плагина Velocityneoforged: клиентский мод для NeoForgefabric: клиентский мод для Fabricforge: зарезервированный модуль Forgebungeecord: зарезервированный модуль 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 客户端 Modfabric:Fabric 客户端 Modforge:预留 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:buildLoader 模块
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 на сервере?
Ставится только в игру; на сервер ставить не нужно