InvSeparate

Quick rating

InvSeparate

No reviews yet

InvSeparate is an open-source routing solution for Minecraft networks that host multiple modpacks behind a single proxy entrypoint.

Player Transport
Mod Loaders
NeoForge
Minecraft
26.2

Community voices

Reviews

Versions
Loading versionsโ€ฆ
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

Compatibility

Supported Environments

Dev Environment
Client Required
Server Unsupported

About

Project Details

Type
Mod
License
MIT License
Latest Version
SNAPSHOT-1.0.0
Authors

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

Modrinth ID

Resources

External Links

Source Issues Wiki Discord

About

Description

InvSeparate

InvSeparate is an open-source routing solution for Minecraft networks that host multiple modpacks behind a single proxy entrypoint.

It is made of two parts:

  • a Velocity plugin that decides which login server and destination backend a player should use
  • a client mod that appends a pack identifier to the Minecraft handshake before backend selection happens

This allows one Velocity proxy to serve vanilla clients, multiple modpack clients, and different login flows at the same time.

Features

  • Identifier-based initial routing
  • Two-stage routing from login server to final backend
  • Default fallback for clients without the mod or with unknown identifiers
  • Developed against Velocity 3.4.x with a target compatibility range through Velocity 4.x
  • Monorepo layout for shared protocol code, proxy plugin, and multiple loader implementations

How It Works

  1. The client mod reads the configured identifier
  2. The mod writes <hostname>\0<identifier> into the handshake host field
  3. The Velocity plugin reads the identifier from the raw handshake hostname
  4. The plugin selects the configured login server and post-login target
  5. If no identifier is present, normal default routing is used

Important: Velocity's getVirtualHost() discards any data after the null byte. The proxy plugin must therefore read the raw virtual host value to recover the identifier.

Repository Layout

  • common: shared protocol constants and helpers
  • velocity: Velocity plugin implementation
  • neoforged: NeoForge client mod
  • fabric: Fabric client mod
  • forge: reserved Forge module
  • bungeecord: reserved BungeeCord module

Example Configuration

Velocity config at 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"

Client config:

identifier = "endlessmc-hng"

Build Notes

Common and Velocity

The repository currently defaults to Gradle 9.x, so these modules can be built directly:

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

Loader Modules

Loader-specific modules such as neoforged, fabric, and forge live in the same repository, but they are not all enabled by default in settings.gradle.kts.

Follow the inline comments in the build files to switch the required Gradle version and enable the loader module you want to build.

Branch Strategy

  • 1.21.1 is the current primary branch
  • Other Minecraft versions should be maintained in dedicated branches when needed
  • The 1.21.8 branch is no longer in use

Use Cases

  • Vanilla clients join the default login server
  • Different modpack clients join different login servers
  • Players are forwarded to their target backend after authentication
  • Networks that need a stronger proxy-side routing layer than simple post-login forwarding plugins

License

The current source headers are organized around the MIT license.

InvSeparate

InvSeparate ๆ˜ฏไธ€ไธช้ขๅ‘ๅคšๆ•ดๅˆๅŒ… Minecraft ็ฝ‘็ปœ็š„ๅผ€ๆบ่ทฏ็”ฑๆ–นๆกˆใ€‚

ๅฎƒ็”ฑไธค้ƒจๅˆ†็ป„ๆˆ๏ผš

  • Velocity ๆ’ไปถ๏ผšๅœจไปฃ็†ๅฑ‚่ฏ†ๅˆซๅฎขๆˆท็ซฏๆ ‡่ฏ†๏ผŒๅนถๅ†ณๅฎš็Žฉๅฎถๅบ”่ฟ›ๅ…ฅๅ“ชไธช็™ปๅฝ•ๆœใ€่ฎค่ฏๅŽๅ†่ฟ›ๅ…ฅๅ“ชไธช็›ฎๆ ‡ๆœใ€‚
  • ๅฎขๆˆท็ซฏ Mod๏ผšๅœจ Minecraft ๆกๆ‰‹้˜ถๆฎตๆŠŠๆ•ดๅˆๅŒ…ๆ ‡่ฏ†้™„ๅŠ ๅˆฐๆกๆ‰‹ไธปๆœบๅไธญ๏ผŒ่ฎฉไปฃ็†ๅœจ็œŸๆญฃ่ฟ›ๅ…ฅๅŽ็ซฏๅ‰ๅฐฑ่ƒฝๅฎŒๆˆๅˆ†ๆตใ€‚

่ฟ™่ฎฉๅŒไธ€ไธช Velocity ๅ…ฅๅฃๅฏไปฅๅŒๆ—ถๆœๅŠกๅŽŸ็‰ˆๅฎขๆˆท็ซฏใ€ๅคšไธชๆ•ดๅˆๅŒ…ๅฎขๆˆท็ซฏ๏ผŒไปฅๅŠๅ„่‡ชไธๅŒ็š„็™ปๅฝ•ไธŽ่ฝๅœฐๆต็จ‹ใ€‚

็‰นๆ€ง

  • ๆ”ฏๆŒๅŸบไบŽๅฎขๆˆท็ซฏๆ ‡่ฏ†็š„ๅˆๅง‹่ทฏ็”ฑ
  • ๆ”ฏๆŒโ€œ็™ปๅฝ•ๆœ -> ็›ฎๆ ‡ๆœโ€็š„ไบŒๆฎต่ฝฌๅ‘
  • ๆœชๅฎ‰่ฃ… Mod ๆˆ–ๆ ‡่ฏ†ๆœช็Ÿฅๆ—ถๅ›ž้€€ๅˆฐ้ป˜่ฎคๆœๅŠกๅ™จ
  • ๅฝ“ๅ‰ไปฅ Velocity 3.4.x ไธบๅŸบ็บฟๅผ€ๅ‘๏ผŒ็›ฎๆ ‡ๅ…ผๅฎน Velocity 4.x
  • ไป“ๅบ“ๅ†…ๆŒ‰ๆจกๅ—็ป„็ป‡ๅ…ฌๅ…ฑๅ่ฎฎใ€ไปฃ็†ๆ’ไปถๅ’ŒไธๅŒๅŠ ่ฝฝๅ™จๅฎž็Žฐ

ๅทฅไฝœๅŽŸ็†

  1. ๅฎขๆˆท็ซฏ Mod ๅœจ่ฟžๆŽฅๆœๅŠกๅ™จๆ—ถ่ฏปๅ–ๆœฌๅœฐ้…็ฝฎไธญ็š„ identifier
  2. Mod ๅฐ† <hostname>\0<identifier> ๅ†™ๅ…ฅๆกๆ‰‹ๅœฐๅ€
  3. Velocity ๆ’ไปถไปŽๅŽŸๅง‹ๆกๆ‰‹ไธปๆœบๅไธญๆๅ–ๆ ‡่ฏ†
  4. ๆ’ไปถๆ นๆฎ config.yml ไธญ็š„่ง„ๅˆ™้€‰ๆ‹ฉ็™ปๅฝ•ๆœไธŽ็™ปๅฝ•ๅŽ็›ฎๆ ‡ๆœ
  5. ่‹ฅๆ— ๆ ‡่ฏ†ๆˆ–ๆ ‡่ฏ†ๆœช็Ÿฅ๏ผŒๅˆ™ๆŒ‰้ป˜่ฎค่ง„ๅˆ™ๅค„็†

ๆณจๆ„๏ผš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 ่ฎธๅฏ็บฆๅฎš็ป„็ป‡ใ€‚

Screenshots

Gallery

This project has no gallery images yet.

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

<1,000
Downloads
Last Updated
CurseForge
Created
Last synced
When ModDex last fetched this project from CurseForge or Modrinth. Every project is re-checked on a schedule, and any project that ships a new file is synced automatically within hours of the release.
New file updates sync automatically
How syncing works