-
Notifications
You must be signed in to change notification settings - Fork 1
Quick Start Guide

This guide gets two lobbies working first. Leave menus, authentication, Redis, and geo routing disabled until this basic route works.
Before you start, have these ready:
- one Velocity proxy;
- two backend servers already added to Velocity's
velocity.toml; - the exact Velocity server names for those backends;
- console access, because
/vnis an administrator command.
This guide uses lobby-1 and lobby-2. Replace those names everywhere if your servers are called something else.
- Download
VelocityNavigator-4.5.0.jarfrom the VelocityNavigator Modrinth page. - Place the JAR in your Velocity proxy's
plugins/folder. - Start or restart the proxy.
/vn reloadreloads configuration; it cannot replace a running JAR. - For now, install the JAR only on Velocity. Add it to Paper/Spigot/Folia later if you want inventory menus or NPCs.
plugins/
├── VelocityNavigator-4.5.0.jar
└── ...
On first start, look for:
VelocityNavigator universal JAR is running in VELOCITY PROXY mode.
The proxy creates plugins/velocitynavigator/ with navigator.toml, messages.toml, gui.toml, and the optional feature files.
Open Velocity's velocity.toml and find the [servers] table:
[servers]
lobby-1 = "127.0.0.1:25566"
lobby-2 = "127.0.0.1:25567"The names on the left—lobby-1 and lobby-2—are the names VelocityNavigator needs. Do not put IP addresses in default_lobbies.
Open plugins/velocitynavigator/navigator.toml and set your lobby server names:
[routing]
selection_mode = "least_players"
default_lobbies = ["lobby-1", "lobby-2", "lobby-3"]Important: server names in
default_lobbiesmust exactly match the server names defined invelocity.toml.
Save the file, then run /vn reload in the proxy console.
Now run:
/vn config validate
/vn health
Fix validation errors before testing with players. Both lobby names should appear in the health output.
To change the server-wide language, edit only the language line at the top of messages.toml:
language = "ru"Built-ins: en, ru, es, fr, de, pt_br, zh_cn, ja, it, ko, nl, pl, tr, ar, hi. Any other value creates a custom-language workflow and preserves text for manual editing. Locale detection is disabled.
Do not enable the inventory selector until normal /lobby routing works. When you are ready:
[routing]
use_menu_for_lobby = true
[routing.java_menu]
type = "inventory"
fallback_to_chat = trueInstall the same universal JAR on each lobby backend that should provide Java inventory, NPCs, YAML menus, or backend placeholders. Restart those backends, let a player visit each one, and check /vn bridge status. If a bridge is missing, the Java selector falls back to chat when fallback_to_chat = true; backend NPCs and YAML menus simply cannot run there.
Before enabling advanced systems, run /vn config validate. For managed servers, use /vn server dry-run game ... or /vn server dry-run lobby ... before the real add command.
Follow this decision tree to choose an algorithm:
How many lobby servers do you have?
│
├─ 1–3 servers ──── least_players (simple, always picks emptiest)
│
├─ 4–10 servers ─── power_of_two (fast, near-optimal distribution)
│
├─ 10+ servers ──── least_connections (EMA-based, handles bursty traffic)
│
└─ Need sticky sessions?
│
├─ Yes ──── consistent_hash (players return to "their" server)
│
└─ Need weighted distribution?
│
└─ Yes ──── weighted_round_robin (some servers get more traffic)
| Mode | Summary |
|---|---|
least_players |
Picks the server with the fewest players. Suited to small networks. |
power_of_two |
Picks two at random and chooses the emptier one. Good default for medium networks. |
round_robin |
Strict rotation. Useful for testing. |
random |
Each player gets a random server. Performs well at scale. |
weighted_round_robin |
Round-robin where some servers receive more traffic than others. |
least_connections |
Tracks connection rate over time. Good for bursty traffic. |
consistent_hash |
Same player maps to the same server. Useful for session affinity. |
latency |
Selects the healthy candidate with the lowest measured ping. Useful when latency differs meaningfully between backends. |
See Routing Algorithms for the full reference.
- Join through Velocity, not directly through a backend port.
- Type
/lobby. - Confirm that you reach one of the configured lobbies.
- Join with a second test player or switch loads, then run
/lobbyagain.
Check the routing decision:
/vn debug player YourName
Verify distribution across your servers:
/vn status
If it does not work, run /vn config validate, /vn health, and /vn servers in that order. The Troubleshooting Guide explains each failure state.
- Configuration Guide: customize every setting
- Routing Algorithms: how each algorithm works
- Operations Runbook: drain servers, check health, troubleshoot
At this point the basic router is ready. Add one optional system at a time and validate after each change.
v4.5 adds: database storage backends, GeoIP-based routing, maintenance mode, and authentication integration.
VelocityNavigator 4.5.0 provides native parties, full-pool queues, Redis multi-proxy synchronization, dynamic backend registration, MOTD lifecycle-state routing, database storage backends, GeoIP-based routing, maintenance mode, and authentication integration. Configure them using the Advanced Proxy Systems guide.
Home · Quick Start · Configuration · Operations · FAQ
Website · GitHub · Support / Discord · Report a Bug
VelocityNavigator v4.5.0 · by DemonZ Development
![]()
Getting Started
Routing
- Routing Algorithms
- Algorithm Visualizations
- Initial Join Balancing
- Contextual Routing Guide
- Player Affinity
- Health & Circuit Breakers
- Retries & Fallbacks
- Geo Routing
Player Experience
- Java & Bedrock Selectors
- Selector Customization
- Backend NPCs
- Backend YAML Menus
- Language Packs
- Party System
- Capacity Queue
Configuration
- Configuration Guide
- Modular Configuration
- MOTD Configuration
- Authentication & Security
- Backend Bridge Configuration
- Migration Guide v3 → v4
- Migration Guide v4.4 → 4.5
Network & Operations
- Advanced Proxy Systems
- Redis & Multi-Proxy
- Common Core Architecture
- NavigatorAPI
- Storage & Databases
- Server Management
- Backend Lifecycle States
- Maintenance Mode
- HTML Dashboard
- Operations Runbook
- Prometheus & Grafana Setup
- Troubleshooting Guide
- FAQ
VelocityNavigator 4.5.0