VelocityVersionBouncer
This is a plugin for the Velocity proxy, built for version 3.4.0. It enables automatic redirection upon client connection, routing users to the server that matches their game version.
Автор: Hallo50004721обновлён 28 сент. 2026 г.
УправлениеОптимизация
Описание
VelocityVersionBouncer
A simple and fully automated way to connect players to the correct server based on their game version.
VelocityVersionBouncer is a plugin for the Velocity proxy that automatically selects the most compatible backend server for a connecting player, based on their protocol version (Minecraft game version).
🔧 How It Works
- Every time a client connects to your proxy the plugin will check all the registered servers and compare their protocol versions (game versions).
- By default, the first server that matches will be selected (you can change that in the config).
- There is a config file located in the plugins folder (
plugins/velocityversionbouncer/config.toml). - The clients can be routed automatically or based on the explicit routings set in the config.
- Optional features include: a fallback functionality as well as comparing versions for server list pings.
- You can also change the plugin's language (currently
en_US,zh_CNandde_DEare available).
❓ Questions you may have:
- Is this also triggered when changing servers via
/server? No, the version checking is only triggered when connecting initially (from the multiplayer server list) or when using the fallback functionality. - What happens if no compatible server is found? The client will simply be disconnected with the according note/reason.
- Does this work with modded Minecraft servers? If you're using setups like Ambassador+ProxyCompatibleForge (more information) this plugin will route the client based on their protocol version (game version) and also checks whether the installed mods are accepted by the backend servers.
📦 Installation & 🛠️ Requirements
- Download the
.jarfile of the last stable release (here) or build it yourself (the Gradle files are included). - Put the file in your server's
plugins/folder (only the proxy!) and restart the server once to generate the config file atplugins/velocityversionbouncer/config.toml. - When you're finished editing the config restart the proxy once more and everything should be working.
Note: This plugin may not work properly if you are not running on
Java 25(or higher) andVelocity 4.2.1(or higher). - If you're having problems: make sure you're not using a snapshot (as these are expected to be unstable and this README is always explaining the latest release anyway), if there's still a problem feel free to open an issue on the plugin's GitHub repository.
Compatibility
- VelocityVersionBouncer is built for the Velocity proxy (other proxies or forks may work, but they are not officially supported).
- Before
v2.X.XVelocityVersionBouncer was compiled againstJava 21andVelocity 3.4.0, so to supportJava 21orVelocity 3.4.0 - 4.2.1you may need to downgrade VelocityVersionBouncer to1.6.0-releaseor1.6.1-SNAPSHOT. - You can of course also fork the project and compile against other versions. Most parts should work exactly the same.
Example Config:
# This config is used to determine how and if servers are checked for their protocol versions whenever a client tries to connect to a backend server (and optionally if they lost connection)
# en_US zh_CN de_DE
language = "en_US"
# 'whitelist' is a string array of server names to check for their protocol version when a client tries to connect.
# leaving this empty is equal to putting all registered servers in
# Example: ["server1", "server2"]
# Note: spaces outside the strings will be ignored.
whitelist = ["lobby1", "lobby2", "fun-minigame", "devServer", "best-modpack"]
# 'blacklist' is an array of strings to exclude from the temporary list of servers during version comparison.
# first the whitelist is added and then all servers contained in the blacklist are removed from that temporary list.
blacklist = ["devServer"]
# 'modded-servers' is an array of servers from the whitelist, which are tried before the unmodded servers to ensure,
# that modded clients don't end up on vanilla servers.
modded-servers = ["best-modpack"]
# If enabled this option ensures that joining players will be distributed evenly over all servers
# Options: (case-insensitive)
# "FIRST-MATCH" - players will be sent to the first matching server
# "BALANCED" - players will be evenly distributed over all matching servers
distribution = "FIRST-MATCH"
# This option if set to 'true' lets you override verlocity's way of determining the server list ping response by using the try-list of the config ('ping-passthrough')
# instead when a client sends a server ping it will use the same algorithm to determine a matching server as in the joining/fallback process
# be carefully when also using clientbrands in the explicit routings as these can't be used to match server pings
server-list-ping = false
# This option determines wether to use velocities ping-passthrough when no matching server was found for the ping response
# If set to true, things like the description will probably show but the client shows that the version doesn't match,
# otherwise the client will display "Can't connect to server"
# This option will also be ignored if 'server-list-ping' is set to false
default-to-ping-passthrough = true
# This defines how often all backend servers get pinged to refresh infos in the plugins ping cache
# in seconds
ping-intervall = 300
# If enabled this option ensures that whenever a client is kicked from a server (whether during login, via /kick, or for another reason),
# they will be automatically redirected (bounced) to another server instead of being disconnected. If a client disconnects explicitly via leaving the server they will not be redirected.
# The server the client was kicked from will be temporarily excluded from the fallback options.
# This prevents the client from being sent back there during fallback-bouncing and therefore also preventing a possible infinite loop.
enable-fallback-bouncing = true
# When there is a valid server name in 'explicit-fallback-server' the plugin won't search for a new server and instead only tries the specified server.
# Leave this empty, if you'd like to disable this option (also this is disabled when enable-fallback-bouncing is set to false).
# WARNING: this will not check whether the versions match or not
explicit-fallback-server = "lobby"
# ------ explicit routing ------
# Syntax
# vX_X_X - game version
# p000 - protocol version (Protocol version numbers for every release/snapshot can be found here: https://minecraft.wiki/w/Minecraft_Wiki:Projects/wiki.vg_merge/Protocol_version_numbers)
# cXYZ - Client brand (for example: vanilla, forge, fabric, Geyser (for player joining through GeyserMC), badlion, etc.
# either a game version (v) or a protocol version (p) is necessary but client brands (c) are completely optional
# when no client brand is defined the routing just takes every client joining with the defined game/protocol version
[explicit-routing]
# Example: v1_21_8cFORGE = "lobby-1"
# Example: p123 = "lobby-2"
# Example: cGeyser = "GeyserMC-server"
Последние версии
Все версии →release
VelocityVersionBouncer 2.1.0-release
2.1.0-release28 сент. 2026 г.94Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3velocity
Что нового
Added support for checking whether modded servers accept a client (letting a client bounce along the servers until a server accepts it).
release
VelocityVersionBouncer 2.0.0-release
2.0.0-release26 сент. 2026 г.8Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3velocity
Что нового
### Breaking Changes:
(further explanation in the updated `README` under `Compatibility`)
- updated Java version from `21` to `25`
- updated `velocity-api` (+`annotationProcessor`) from `3.4.0` to `4.2.1`
### Dependency Changes:
(Commit: [beedd9b](https://github.com/Hallo5000/VelocityVersionBouncer/commit/beedd9b53d9d0e43d63fb7dca58a2201dc13be48))
- removed the `netty` dependencies (not used)
- updated `toml4j` from 0.7.1 to 0.7.2
- updated `jakarta.json` (eclipse) from `1.1.7` to `1.1.9`
- added Google's `jsr305:3.0.2` for the nullability annotation
- updated Gradle wrapper version from `8.14` to `9.1.0`
### Small Changes:
- removed the 'exclude-previous-server' setting from the config (the use case was almost non-existent and it had a few problems which made a clean integration in both automatic and explicit fallback functionality hard) (Commit: [2fbeea3](https://github.com/Hallo5000/VelocityVersionBouncer/commit/2fbeea38e8d5f1063acb8db6f3a8299cec37f8c4))
### Bug fixes:
- silent ping failure on old forge modded servers ([PR: #3](https://github.com/Hallo5000/VelocityVersionBouncer/pull/3))
- loops and other bugs in the fallback functionality (Commit: [b20050f](https://github.com/Hallo5000/VelocityVersionBouncer/commit/b20050fe584b3bdc7e841aa0a63685092dc10372) and [PR: #2](https://github.com/Hallo5000/VelocityVersionBouncer/pull/2))
release
VelocityVersionBouncer 1.6.0-release
1.6.0-release20 июл. 2026 г.88Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2velocity
Что нового
- Language feature added (currently supports en_US, zh_CN and de_DE)
- explicit routings can now include the new versioning (e.g. 26.1)
release
VelocityVersionBouncer 1.5.0-release
1.5.0-release21 февр. 2026 г.62Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11velocity
beta
VelocityVersionBouncer 1.4.3-SNAPSHOT
1.4.3-SNAPSHOT15 февр. 2026 г.34Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11velocity
beta
VelocityVersionBouncer 1.4.2-SNAPSHOT
1.4.2-SNAPSHOT12 февр. 2026 г.22Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11velocity
Что нового
as KickedFromServerListener, ProxyPingListener and PlayerChooseInitialServerListener were extremely similar I put the code in Utils.findMatchingServer and just the code specific for the usecase was left in the listeners
- this version (1.4.2-SNAPSHOT) will be a collection of minor changes and improvements - the console will now display the plugins name instead of its id in log messages
beta
VelocityVersionBouncer 1.4.1-SNAPSHOT
1.4.1-SNAPSHOT8 февр. 2026 г.16Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11velocity
Что нового
- the backendPingService now also saves the modInfo field if present - an option to determine what happens when no ping response is found for a server list ping
release
VelocityVersionBouncer 1.4.0-release
1.4.0-release8 февр. 2026 г.23Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11velocity
Что нового
- explicit routing now also works with the server list ping (except for client brands as these aren't sent in the ping) - a lot of code cleanup and small fixes - updating the description of the modrinth project via the workflow should work now
beta
VelocityVersionBouncer 1.3.1-SNAPSHOT
1.3.1-SNAPSHOT8 февр. 2026 г.26Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11velocity
Что нового
- restructured the BackendPingService a bit (removed BackendPingResult.java) - started working on a solution for also checking ServerListPings for version matches - wrote a JsonReader class with a few helper methods (with the jakarta Streaming API) to fully parse ping responses (seems to work) - also made some changes to the hangar auto publishing
release
VelocityVersionBouncer 1.3.0-release
1.3.0-release31 янв. 2026 г.16Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11velocity
Что нового
completed the explicit routing, reworked a lot of background processes