VelocityNavigator
4.6.0Smart lobby routing and failover for Velocity networks. Nine load-balancing modes, circuit breakers, sticky sessions, Java + Bedrock server selectors, parties and queues. One jar for proxy and backend
4.6.0latestVelocityNavigator 4.6.0last week Added
- Native Java dialogs for lobby selectors, party management, authentication, and backend YAML menus, including NPC menu entry points. New configurations select dialogs on supported clients and Paper backends, with inventory, sign, and chat or command fallbacks. - Configurable Java UI modes per feature and per YAML menu. Existing selector choices survive migration; Bedrock forms retain their existing behavior. - Expiring, single-use dialog actions bound to the player and backend, private authentication input forwarding, and visible-password warnings. - Cross-proxy language propagation across the UI bridge protocol, dynamically synchronizing proxy player locales to backend native Java dialogs and chest menus without requiring duplicate backend localization configuration. - Dynamic multi-language localization for native Java dialog controls (Previous,Next,Refresh,Close) supporting all 15 built-in locales and custom language packs. - Inline{lang:key}placeholder token resolution in backend custom menu YAML configuration for titles, item display names, and lore lines. - Configurable empty slot filler decoration (fill_empty_slotsandfiller_material) for backend chest menus. - Tests for UI protocol validation, callback/session binding, configuration migration, and pagination independent of chest dimensions; an optional Paper runtime dialog probe.Fixed
- Reopening an authentication prompt no longer resets the authentication deadline.4.5.2VelocityNavigator 4.5.22 weeks ago Added
- Added Halloween easter egg.Fixed
- Enforce authentication on every proxy backend transfer, including requests initiated by other commands or plugins. Pending players can enter only the configured holding server; an unavailable authentication service blocks admission. - Preserve account login failures and lockouts across disconnects. Successful authentication and expiry still clear them. - Read the[settings]layout emitted by the authentication file writer and shown in the setup guide. Authentication enablement, hashing, holding-server selection, and session settings now override main-file values correctly; legacy[auth]and flat layouts remain supported. - Keep repeated Redis circuit snapshots from restarting cooldowns or resetting half-open probes. Transition timestamps reject stale state after recovery, including transitions within the same clock millisecond. - Include contextual fallback-chain lobbies in health inspection so routing can select healthy static backups. - Verify legacy SHA-256 credentials with their original algorithm and upgrade them to Argon2id after a successful login when Argon2id is configured.Improved
- Verify Argon2id records using their encoded version and cost parameters, with limits on memory, iterations, parallelism, salt length, and hash length. Reject malformed credential records without opening a session. - Preserve the existing Redis circuit state fields for older peers and add transition timestamps for upgraded peers. - Correct descriptions of hashing costs, account lockouts, proxy-local sessions, and the player-load scoring used byleast_connections.4.5.1VelocityNavigator 4.5.1Sep 18, 2026 [4.5.1] - 2026-09-18
Small patch release fixing server routing for backend NPCs and menus, plus compatibility updates for Paper 26.3+.Fixed
- NPC & Menu Routing: Resolved an issue where clicking a backend NPC or YAML menu targeting a server (likeserver:survival) failed with “Selection unavailable” if that server wasn't listed indefault_lobbies. You can now route players directly to any server registered in Velocity'svelocity.tomlfrom backend NPCs and menus. - Documentation: Fixed a typo in the command reference tables where/lobby menuwas incorrectly listed as/menu.Added / Improved
- Paper & Folia 26.3+ Compatibility: Updated internal packet handling (NPC entity spawning, head rotation packets, and Netty channel interception) to support Paper, Spigot, and Folia 26.3+ runtimes.4.5.0VelocityNavigator 4.5.0Sep 6, 2026 VelocityNavigator v4.5.0
VelocityNavigator v4.5.0 is our most comprehensive release to date, introducing a unified universal JAR architecture, a zero-dependency packet NPC engine, global GeoIP distance routing, dynamic MOTD rotations, cross-server party synchronization, expanded PlaceholderAPI support, Argon2id authentication, multi-engine storage, and native Folia support.New: Universal Single-JAR Architecture
• Dual-Descriptor Deployment: VelocityNavigator now compiles as a single universal fat JAR containing bothvelocity-plugin.jsonfor Velocity andplugin.ymlfor Paper, Spigot, and Folia backends. • Automatic Runtime Adaptation: When installed on Velocity, the JAR boots the proxy routing core. When installed on Paper, Spigot, or Folia, it automatically loads backend NPCs, YAML menus, and PlaceholderAPI integrations. • Zero Version Desyncs: Internal bridge protocol packets throughMenuBridgeProtocoland Redis payload serializers remain binary-compatible across the entire network. • Multi-Platform Support: Formally tested with Velocity 3.4.x, 3.5.x, and Velocity 4.0.0 running on Java 17, 21, and 25.New: Native Packet-Level NPC Server Selectors
A completely new in-game NPC server selector engine has been added directly into the backend bridge with zero external dependencies. • Real Player-Model NPCs on 1.20.5+: Spawns genuine player models using direct packet transmission on Paper, Spigot, and Folia 1.20.5 through 1.21.x. • Supports Mojang skins, full-size interaction hitboxes, held items, and smooth head rotation. • No Citizens, ProtocolLib, or version-locked NMS dependency is required. • Billboarded TextDisplay Holograms: Multi-line floating labels automatically face nearby players for cleaner visibility from every direction. • Scoreboard Team Glowing: NPC glow colors can be configured through/vnavnpc glow <id> <on|off> [color]without interfering with existing player scoreboard teams. • Packet-Level Netty Click Interception: Direct Netty handlers detect interactions with fake players while enforcing a configurable 6-block interaction range. • Smart Click Actions & Conditional Routing: NPCs can connect players to servers, open custom menus, run commands, or execute permission-based routing. • Example:action:cond(perm=velocitynavigator.vip?server:vip-lobby|server:lobby)• Dynamic Proximity Head Tracking: NPCs smoothly rotate toward the nearest player within 64 blocks. • Paper 26.2 Mannequin & Folia Safety: Native support has been added for Paper mannequin entities and Folia's regionized scheduler system. • Automatic Legacy Fallback: Servers older than 1.20.5 automatically fall back to optimized armor-stand mannequins with Interaction hitboxes. • Full In-Game Management:/vnavnpcnow supportscreate,action,skin,glow,hand,offhand,status,respawn,tp,remove,list, andreload.New: GeoIP Distance Routing Engine
VelocityNavigator can now route players to geographically closer lobby clusters using physical distance calculations. • Geo-Distance Mode (`geo_distance`): Uses the Haversine formula to calculate Great-Circle distance between a player location and configured datacenter coordinates. • Multiple GeoIP Providers: Native support for MaxMind GeoLite2 databases,ip-api.com, and GeoRestrict integration. • VPN & ASN Detection: GeoRestrict can act as a primary lookup source for VPN, proxy, and autonomous system detection. • Country & Continent Affinity Overrides: Specific countries or continents can be mapped directly to selected lobby pools. • Thread-Safe Subnet Matching: High-performance in-memory IP caching and CIDR subnet matching provide fast routing decisions without blocking the main thread. • Initial Join Affinity: Regional routing is applied immediately during the first connection handshake as well as through/lobby.New: Dynamic MOTD System
A standalone server-list MOTD engine has been added throughmotd.toml. • Dynamic MOTD Rotation: SupportsROTATING,RANDOM, andSEQUENTIALdisplay modes. • Readable TOML Formatting: MOTDs can use clean multiline TOML strings while preserving comments and configuration structure. • Maintenance Overrides: Dedicated maintenance MOTDs automatically replace standard MOTDs when global maintenance is enabled. • MiniMessage Styling: Supports gradients, hex colors, font tags, and legacy color code translation. • Real-Time Placeholders: Available placeholders include{online},{max},{maintenance_reason}, and{version}. • Live Administration: MOTDs can be managed using/vn motd reload,/vn motd list,/vn motd add,/vn motd remove, and/vn motd setmode.New: Authentication & Defensive Security
The authentication system has been substantially expanded with stronger hashing, quarantine handling, and native Java and Bedrock interfaces. • Argon2id Password Hashing: Powered by BouncyCastle with configurable memory cost, iterations, and parallelism. • Legacy SHA-256 Support: Existing password databases can still authenticate users and automatically upgrade stored credentials. • Interactive Sign GUI for Java: Java players can enter passwords privately through an in-game sign interface instead of public chat. • Native Floodgate Forms: Bedrock players receive modal login and registration forms through Floodgate. • Holding Lobby Quarantine: Unauthenticated players can be restricted to a holding server with movement, interaction, building, item usage, and chat locked until authentication succeeds. • Brute-Force Protection: Global and per-account limits trigger a five-minute lockout after repeated failed attempts. • Bridge-Authenticated Sign Sessions: Authentication submissions pass through validated internal bridge sessions to prevent spoofing. • Reload-Persistent Sessions: Active authentication sessions survive proxy reloads without forcing connected users to log in again.New: Cross-Server Party & Team Engine
VelocityNavigator now includes complete proxy-wide party management with Java and Bedrock interfaces. • Party Roles: SupportsLEADER,OFFICER, andMEMBER. • Promotion & Demotion: Players can be promoted or demoted through/party promoteand/party demote. • Custom Party Names: Party names support MiniMessage formatting and colors. • Leader Follow: Members can automatically follow the party leader during server transfers. • Public & Private Parties: Parties can be opened or closed using/party openand/party close. • Dual Platform GUIs: Bedrock players receive native Cumulus forms while Java players receive inventory-based menus.PlaceholderAPI Support
•%velocitynavigator_party_in_party%•%velocitynavigator_party_name%•%velocitynavigator_party_leader%•%velocitynavigator_party_size%•%velocitynavigator_party_max_size%•%velocitynavigator_party_is_leader%•%velocitynavigator_party_role%•%velocitynavigator_party_is_open%•%velocitynavigator_party_members%•%velocitynavigator_ping%•%velocitynavigator_lobby%• EssentialsX integration placeholders are also supported.New: Custom Backend Menu System
VelocityNavigator now includes fully customizable YAML-based menus for Paper and Spigot servers. • Create unlimited menus insidemenus/*.yml• Configure slots, materials, CustomModelData, skull owners, and sounds • Link menus together using nested menu actions such asmenu:games• Execute proxy or backend commands directly from menu items • Route players to individual servers or lobby clusters • Use live refresh through@refresh:N• Use pagination through@page:N• Disable unavailable items with@disabled• Defaultmain,games, andlobbiesmenus are generated automatically •/vnavmenuincludesopen,add,remove,title,rows4.4.0VelocityNavigator 4.4.0Jul 20, 2026 [4.4.0] - 2026-07-20
Added
- Added verified Velocity 4.0.0 support while retaining the Java 17 bytecode and Velocity 3.4 API baseline used by Velocity 3.4.x and 3.5.x installations. A Java 25/API 4/Adventure 5 compatibility build and a Velocity 4.0.0 startup smoke test now guard the same JAR in CI. - Added optional per-serverdisplay_namevalues ingui.toml. A name such aslobby1invelocity.tomlcan now appear asMain Lobby 1in the Java inventory, Java chat selector, and Bedrock form. - Added optional per-serverdescription,menu_order, andshow_in_menuvalues. Descriptions are available through{description}, explicit menu order is shared by all selectors, and hidden entries remain eligible for automatic routing. - Added selector placeholders for presentation and diagnostics:{server}and{display_name}resolve to the configured alias,{server_id}exposes the raw Velocity server ID, and{description}resolves to the shared menu description. - Added/vn menu validateto audit selector server IDs, duplicate display names, slots, material-identifier syntax, and curly-brace placeholders before players open a menu. - Added global Java inventory styles for[states.full],[states.draining],[states.offline], and[states.in_game], each with optionalmaterial,name, andloreoverrides.Changed
- Inventory navigation controls are now kept in the reserved bottom row for every supportedlayout.rowsvalue. This prevents an automatic server item from occupying a custom control slot and silently hiding that control. - Bedrocksort_mode = "name"now sorts by the displayed alias instead of the raw server ID. - Explicit nonnegativemenu_ordervalues are the primary order in Java inventory, Java chat, and Bedrock selectors. Unset values keep the existing candidate order; Bedrock uses its configuredsort_modeto resolve equal ordering values. -show_in_menu = falseremoves a server from all three selectors without draining it or removing it from automatic routing. - Blank or missing aliases fall back to the raw server ID. Selector changes are applied by/vn reload; no proxy restart ornavigator.tomlschema migration is required. - Display aliases are presentation-only. Inventory targets, one-time token allowlists, chat callbacks, Bedrock response mapping, health lookups, and connection requests continue to use the raw registered server ID. - Java inventory state styles are applied after availability is resolved. A per-servernameorloreremains final; otherwise the matching state template is used before the localized default. For unavailable entries, a per-serverunavailable_materialremains final, followed by the state material and global unavailable fallback. Healthy entries keep their per-server/global normal material. -gui.tomlnow usesconfig_version = 2;navigator.tomlremains at config version 8.Not included
- Localized per-language display names are not part of 4.4.0. Existing language packs still control shared selector templates and status text. ---4.3.0VelocityNavigator 4.3.0Jul 13, 2026 [4.3.0] - 2026-07-14
Advanced proxy systems
- Added native parties with/party invite,accept,deny,kick,leave, anddisband, private/pchat, and leader-follow synchronization onServerConnectedEvent. - Added a virtual lobby-capacity queue with action-bar position updates, asynchronous slot polling, automatic connection,/queue leave, and optional initial-joinholding_serversupport. - Added a dependency-free Redis RESP client forvn:servers:registerdynamic registration and cross-proxy circuit-breaker, health-cache, backend-state, and affinity synchronization. - Added backend MOTD lifecycle parsing for markers such as[STATE:IN_GAME]; routing only uses configured allowed states. - Geographic-routing integrations and BungeeCord/Waterfall compatibility remain deferred and are not part of v4.3.0. - Added optional server management:/vn server add gamewrites only tovelocity.toml, while/vn server add lobbyalso persists lobby metadata inservers.tomland activates it immediately without reload. - Added/vn server removeand/vn server list, overwrite protection, custom Velocity-config paths, IPv4/hostname/IPv6 parsing, and atomic configuration writes. - Expandedgui.tomlBedrock controls with enable/fallback switches, sorting, button limits, visibility toggles, and title/content/button overrides with color conversion. - Added backendconfig.ymlswitches for the bridge, inventory channel, handshake, refresh, delay, title length, and fallback material.Added
- Configurable language packs — expliciten,ru,es,fr,de,pt_br, andzh_cnselection plus arbitrary custom codes. Built-in changes rewrite active text; player locale is never auto-detected. - Separate `gui.toml` — rows, materials, fillers, refresh interval, navigation slots, and per-server fixed slot/material/name/lore overrides. - Universal Java inventory selector — the same 4.3.0 JAR runs in Velocity proxy or Paper/Spigot bridge mode and announces its mode at startup. - Pagination, live refresh, and unavailable indicators for Java inventory menus. -/vn bridge statusreports detected backend bridge versions and last-seen times. - Universal bridge integration tests cover proxy-open, backend-click, navigation, handshake, and proxy-selection flows. - Exponential backoff with jitter for connection retries — each retry waits progressively longer with a small random jitter to avoid thundering-herd reconnects. - Player affinity persistence — unexpired sticky-session mappings are now saved to disk and restored across proxy restarts. -/vn healthcommand — consolidated one-shot diagnostics: routing mode, lobby count, circuit-breaker states, drained servers, cache sizes, and affinity entry count in a single screen. - HTML operations dashboard — a separate HTTP server on its own port serving a live lobby table, routing distribution chart, affinity map, config summary, recent routing events, and joins/leaves-since-start counters. Disabled by default and authenticated via a bearer-token login flow. -velocity-plugin.jsondescriptor — modern Velocity plugin metadata alongside the existing@Pluginannotation. - New reproducible marketplace brand system with a plugin icon, hero banner, social card, nine feature panels, platform-specific listing copy, meaningful alt text, and a visual feature overview in the wiki. - Built the backend bridge against the Spigot API 1.16.5 baseline without version-specific NMS.Changed
- Dashboard documentation now distinguishes the universal127.0.0.1loopback example from provider addresses and explains allocated ports, container binds, and browser URLs. - The official wiki URL is now built in.startup.wiki_urlis no longer written or accepted as a custom documentation target, and legacy entries are removed during configuration normalization. - Language documentation now explains structural test coverage, custom packs, and how native speakers can contribute new or improved translations. -routing.use_menu_for_lobbyreplacesuse_chat_menu_for_lobby; the old key remains a compatible alias. - Selector mode/fallback lives innavigator.toml, language inmessages.toml, GUI presentation ingui.toml, and managed lobby metadata inservers.toml. The plugin/config versions are 4.3.0/v8. - MiniMessage, classic&/§,&#RRGGBB, and Bungee-style hex colors are accepted in configurable text. - Server health cache keys are now normalized to lowercase. Mixed-case server names no longer produce duplicate cache entries. - Consistent hash ring uses a thread-localMessageDigestinstead of allocating one per lookup. Throughput onconsistent_hashmode improves by roughly 3–4× under load. -RoutePlannernow builds aMap<String, LobbyEntry>once per planning call instead of scanning the lobby list linearly per candidate. - Config reload now uses a dedicatedReentrantLockinstead ofsynchronized(this). Admin commands and event subscribers no longer contend on the same monitor during a reload. - Bedrock form text stripping now matches legacy color codes case-insensitively.&Cand&Lare now stripped alongside&cand&l. - Update checks are now silent by default — no startup log line, no periodic console message./vn updatecheckstill works for manual checks. Setupdate_checker.silent = falseinnavigator.tomlto restore the old behavior. - Config version bumped to 8. Adds the final 4.3.0 advanced-system, managed-server, selector, dashboard, and Redis settings. Older configs are auto-migrated and backed up; network-facing systems remain disabled by default.Fixed
- Party commands now expose explicit/party statusand/party chat <message>paths, while/p <message>and multiword messages use Velocity raw-command parsing. - Escaped MiniMessage entities such as<player>are no longer mistaken for the legacy&lbold color code. - Dashboard API version data now comes from the plugin metadata instead of a hardcoded prerelease string. - Redis RESP parsing on the Velocity proxy now enforces line, bulk, array, total-frame, and nesting limits before allocation or recursion. - Backend Redis lifecycle registration now rejects oversized response lines instead of allowing peer-controlled heap growth. - Dashboard bearer credentials are accepted only through theAuthorizationheader. The browser login keeps the token in memory and never places it in URLs or persistent browser storage. -MetricsService.active()andstatusLine()are nowvolatile. Reader threads (Prometheus exporter,/vn status) no longer risk seeing stale values after a config reload. -PrometheusExporter.start()now clears theserverreference ifstart()throws. Previously the nextstop()call would operate on an unstarted server. -UpdateCheckernow uses the non-deprecatedJsonParser.parseString(...)and thenextAllowedCheckread-modify-write is guarded by asynchronizedblock to prevent duplicate 429 retries under concurrency. -ConfigManager's generatednavigator.tomlheader box no longer overflows on the bStats URL line. - Emptyifbranch inapplyLoadedConfigurationremoved — round-robin reset logic is now a single positive check.4.2.0VelocityNavigator 4.2.0May 30, 2026 Added
- Embedded Prometheus Exporter & Admin Panel — Built-in HTTP server exposing real-time metrics (/metrics) on routing distributions, pings, CB statuses, and connection events. - Grafana Dashboard Setup Command —/vn setup grafanaauto-generates a premium, pre-configured Grafana telemetry dashboard configuration JSON file. - Interactive Selector Menus — Native Bedrock Form GUI (via Geyser/Floodgate integration) and clickable Java Chat Selector Menu with hover tooltips displaying health and latencies. - Ping-Based Routing Strategy (`latency`) — Dynamically select the server with the lowest ping latency to optimize player connections.Fixed
- Hardened Java and Bedrock lobby menu selections so stale or manually forged choices cannot bypass drain mode, circuit breakers, capacity checks, or configured lobby pools. - Started the Prometheus exporter during initial proxy boot when enabled, not only after/vn reload. - Restored true consecutive-failure behavior for the circuit breaker. - Preserved update notification settings during config rewrites and aligned admin join notifications with[update_checker].notify_admins. - Accepted the documentedlatencyrouting mode in config validation and migration normalization. - Normalized contextual group names consistently so mixed-case mappings continue to route. - Aligned Maven artifact version, Velocity plugin metadata, and user-facing docs for the 4.2.0 release.Changed
- Config version bumped to 6. The generatednavigator.tomlhas been completely redesigned with section banners, grouped documentation, and a friendlier layout. Existing configs are auto-migrated and backed up.4.1.0VelocityNavigator 4.1.0May 26, 2026 [4.1.0] — 2026-05-26
Added
- Bedrock/Geyser Player Support — Soft-dependency integration with Geyser and Floodgate. Strips advanced Kyori Component formatting (gradients, hover, click actions) to display beautifully on Bedrock clients, and maps authentic Java UUIDs for player affinity tracking. - First-Run Experience Polish — Beautiful console-printed welcome dashboard on fresh installs. Detects plugin upgrades and showcases a clean release notes changelog digest. - `/vn servers` Diagnostics Command — Elegant paginated status dashboard for all configured lobbies, complete with player count/max capacity limits, circuit breaker state tracking, and drain statuses. - Configurable Dashboard Colors — Customizable status tags/colors for/vn serverssupporting full hex, RGB, and MiniMessage styling innavigator.toml. - Typo Auto-Correction & Levenshtein Validation — Dynamic typo detection on config reload/load using Levenshtein distance metrics (e.g., suggesting"least_players"for"leadt_players"). - Self-Documenting Configuration Keys — The entirenavigator.tomlfile comments are dynamically populated on generation/migration, pointing users to the exact section anchor of the official Wiki page. - Automatic Legacy Color Code Converter — Seamlessly matches and converts all 22 standard&and§legacy formatting codes to MiniMessage syntax on load (supports"auto"with one-time warnings,"minimessage", or"legacy"modes). - Periodic Update Checker with Backoff — Recurring scheduled task loop to check for updates with exponential backoff on HTTP 429 errors (scales dynamically up to 4 hours). - Empty Lobby Routing Fallbacks — Customizable degradation strategies ("disconnect"or"fallback_server") when all primary lobby options are offline or circuit-broken. - Permission Default Change — Standardized/lobbydefault command permission changed to"none"for immediate out-of-the-box adoption. Existing migration preserves existing admin-defined configurations safely.4.0.0VelocityNavigator 4.0.0May 21, 2026 [4.0.0] — 2026-05-01
Added
- Power of Two selection algorithm (power_of_two) — picks two random candidates, selects the one with fewer players. Near-optimal distribution at O(1) cost. - Weighted Round Robin selection algorithm (weighted_round_robin) — interleaved WRR that distributes traffic proportionally to server weights. - Least Connections selection algorithm (least_connections) — selects the server with the lowest exponential moving average (EMA) of connection load and rate. - Consistent Hash selection algorithm (consistent_hash) — deterministic player-to-server mapping using a consistent hash ring with 150 virtual nodes and SHA-256 hashing. Provides session affinity. - LobbyEntry format — servers can be configured as plain strings or inline tables withmax_playersandweightfields. Backward compatible with plain strings. - Per-lobby max-player cap — servers at theirmax_playerscapacity are automatically excluded from routing. - Circuit Breaker — automatic server failure detection with CLOSED → OPEN → HALF_OPEN state machine. Unhealthy servers are excluded from routing until they recover. - Server Drain Mode —/vn drain <server>,/vn undrain <server>,/vn drain statuscommands for graceful server maintenance. - Connection Retry with Fallback — automatic retry on connection failure with configurablemax_retries. Shows retry message with<attempt>/<max>placeholders. - Per-Group Selection Mode Override — contextual routing groups can specify their ownmode, overriding the globalselection_mode. - Fallback Priority Chain — ordered fallback groups when a contextual group's servers are all unavailable. - Player Affinity Routing — sticky sessions with configurablestickinessprobability (0.0–1.0). Players tend to return to their previous lobby. - Graceful Degradation — when all health checks fail, fall back to a configured degradation mode (default:random) instead of showing "No lobby found". - Geo-Based Routing (experimental) — stub implementation for geo-based lobby routing using MaxMind GeoLite2 Country database. - Routing Metrics API — newNavigatorAPImethods:getRoutingDistribution(),getHealthCheckLatencies(),getCircuitBreakerStatuses(). - Connection Rate Tracking — sliding window (60-second) connection rate tracker used byleast_connectionsmode. - Server Load Tracking — EMA-based server load tracker used byleast_connectionsmode. - Routing Stats — per-server connection counts with 60-second reset, shown in/vn status. - Enhanced /vn status dashboard — now shows circuit breaker status, drained servers, and routing distribution. - `/vn updatecheck` command — manually check for updates (replaces recurring auto-update check). - Startup update notification — one-time update check 5 seconds after proxy start. - Admin join update notification — players withvelocitynavigator.adminpermission are notified in-game when they join if an update is available. Controlled bynotify_admins_on_joinconfig. - `<player>` placeholder — new placeholder available in all message templates. - `<attempt>` and `<max>` placeholders — available inmessages.retrying. - `messages.retrying` config — new message template for connection retry notifications. - `notify_on_startup` config — suppress startup update notification. - `notify_admins_on_join` config — enable/disable in-game admin update notification on join. - Health check cache purge — expired cache entries are automatically purged every 60 seconds. - `getCachedOnlineServers()` method — synchronous cached player count access for initial join balancing (replaces blocking.join()call). - Config version field —CURRENT_VERSIONset to 4. Auto-migration from v3 configs with.bakbackup.Changed
- Removed `.join()` blocking call inonPlayerChooseInitialServer— replaced with synchronous cache lookup. Falls through to Velocity's built-in try list on cold start. - Round-robin state only resets when lobby topology changes —applyLoadedConfiguration()now compares previous and current lobby lists before resetting. - Contextual groups — changed fromMap<String, List<LobbyEntry>>toMap<String, GroupConfig>where GroupConfig containsserversand optionalmode. - UpdateChecker — removed recurring schedule; now runs a single check on startup. Removedenabled,notifyConsole,startupDelaySecondsfields. - ConfigManager — reads both plain strings and inline tables for lobby entries (backward compatible). Writes inline tables whenmax_playersorweightis non-default. - MessageFormatter — addedplayer,attempt,maxto allowed placeholders. - `noLobbyFound` message — now includes(<reason>)placeholder by default. - `ServerCandidate` record — now includeseffectiveWeightandemaLoadfields. - `RouteDecision` — provides ordered candidate list for retry fallback.Fixed
- Blocking `.join()` in event handler —onPlayerChooseInitialServerno longer blocks the event loop with.join()calls. Uses cached data synchronously instead. - Round-robin reset on every reload — round-robin counter is now only reset when the lobby topology actually changes, preventing unnecessary redistribution on config reload. - Health check cache memory leak — expired cache entries are now purged every 60 seconds. - Permission node inconsistency —velocitynavigator.bypasscooldownnow also checksvelocitynavigator.bypass.cooldownfor consistency.Deprecated
- `velocitynavigator.bypasscooldown` permission — usevelocitynavigator.bypass.cooldowninstead. The legacy name still works as a fallback.Removed
- `update_checker.enabled` config field — the update checker now always runs on startup. - `update_checker.notifyConsole` config field — update notifications are always logged to console. - `update_checker.startupDelaySeconds` config field — startup delay is fixed at 5 seconds. - Recurring update check schedule — replaced by one-time startup check and/vn updatecheck. ---3.0.0VelocityNavigator 3.0.0Apr 9, 2026 [3.0.0] — 2026-04-10
- Initial Join Balancing — Players are now load-balanced the moment they connect to the proxy, not just when they runNew Features
/lobby. Configurable viabalance_initial_joininnavigator.toml. - Developer API — Third-party plugins can now hook into VelocityNavigator viaNavigatorAPIandNavigatorAPIProvider. Preview routes, inspect server health, and read routing config programmatically. - Three Routing Modes — Choose betweenleast_players,round_robin, andrandomselection algorithms. - Contextual Routing — Route players to game-specific lobbies (e.g., BedWars lobby) based on which server they are leaving. - Self-Documenting Config — The generatednavigator.tomlnow includes rich inline comments explaining every setting and routing mode, with links to full documentation.
- Async Health Checks — Ping candidate lobbies before routing to ensure they are alive. Configurable timeout and caching. - Ping Coalescing — Multiple simultaneousReliability
/lobbyrequests share the sameCompletableFutureping, preventing network storms on high-traffic proxies. - Pre-Execution Cooldown Locking — The anti-spam cooldown is applied before command execution begins, preventing macro-based abuse from bypassing the lock. - Graceful Failover — If all contextual lobbies are offline, the plugin falls back to the default lobby pool instead of showing an error (configurable).
- bStats Integration — Anonymous usage telemetry via [bStats](https://bstats.org/plugin/velocity/Velocity%20Navigator/2… (plugin ID: 28341). - Modrinth Update Checker — Automatic version checking during startup with configurable release channel (Telemetry & Updates
release,beta,alpha).
-Admin Tools
/vn reload— Hot-reloadnavigator.tomlwithout restarting the proxy. -/vn status— View runtime status (version, routing mode, health checks, bStats, update checker). -/vn version— Check installed vs. latest version. -/vn debug player <name>— Preview the routing decision for a specific player. -/vn debug server <name>— Inspect a server's real-time health snapshot. - Full tab-completion for all admin commands.
- Automatic Migration — Seamless migration from v1/v2 configs with backup generation. - Field-Level Validation — Invalid config values are corrected with warnings, never crashes. - MiniMessage Support — All player-facing messages support MiniMessage rich text formatting.Configuration
2.2.0-STABLEVelocityNavigator 2.2.0-STABLEDec 10, 2025
This is a major milestone release. We have completely refactored the codebase to meet enterprise standards, focusing on stability, speed, and user experience.VelocityNavigator v2.0.0-Stable is here!
🔄 Modrinth Native:* The update checker now queries the Modrinth API directly. 🛡️ Crash-Proof Config:* We added strict type-safety checks. A typo in your config file will no longer crash the plugin. ⚡ Smart Timeouts: Server pings now timeout after 2.5 seconds*, preventing a single laggy server from freezing your command usage. 📢 Better Feedback:* Players now receive specific error messages (e.g., "Server Full", "Whitelisted") instead of the command just doing nothing. 🐛 Bug Squashing:* Fixed constructor initialization errors and improved debug logging.What's New?
1. Stop your proxy. 2. Delete your oldHow to Update
VelocityNavigator.jar. 3. Upload the new v2.0.0-Stable JAR. 4. (Recommended) Backup and delete your oldnavigator.tomlto let the new crash-proof version generate. 5. Start the proxy!1.1-RELEASEVelocityNavigator 1.1-RELEASESep 11, 2025
The plugin now uses a more organized, nested navigator.toml file with a custom header.Highly Customizable Config:
The plugin will automatically detect and upgrade old configuration files to the new format, preserving user settings.Automatic Config Updater:
Server owners can now define which command aliases (like /hub or /spawn) they want to use in the config file.Optional Command Aliases:
If a player uses a lobby command while already in a lobby, they are now re-connected to that lobby's spawn instead of just seeing a message. For the next update, you can focus on the suggestions we just discussed: - Permission Support. - Fully Customizable Messages. - Smart Server Selection.Reconnect to Spawn:
1.0-RELEASEVelocityNavigator 1.0-RELEASESep 1, 2025 Hey everyone, here's the first release of VelocityNavigator! This is a simple plugin that lets you use / lobby, /hub, or /spawn to send players to your lobby server. You can even set up multiple lobbies in the config for it to choose from!
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta