VelocityUUIDRouter is a Velocity plugin for mixed Java/offline authentication setups.
It lets Java premium players authenticate through Mojang and receive their online UUID, while non-premium Java players can still join with offline UUIDs. Bedrock players connecting through Geyser/Floodgate are detected and left untouched so Floodgate can handle their login flow.
- Detects premium Java usernames with Minecraft Services.
- Forces premium Java players into Velocity online authentication.
- Allows non-premium Java players with offline UUIDs.
- Keeps UUID mode session-wide, matching how Velocity handles player identity.
- Logs UUID mode decisions for configured premium servers.
- Provides admin commands to reload config, inspect status, and view connected player UUID modes.
- Avoids modifying Bedrock/Geyser/Floodgate login handling.
- Velocity 3.x, built against
3.5.0-SNAPSHOT - Velocity should be configured with:
online-mode = false- Java 21 for building
- Optional: Geyser/Floodgate for Bedrock support
The plugin creates this file on first startup:
plugins/velocityuuidrouter/config.yml
Default config:
# WIP: premiumServers is currently used for logging only.
# Non-premium players are not blocked or redirected.
premiumServers: []
lookupCacheMinutes: 60
lookupFailureMode: offline
logPremiumDecisions: trueExample:
# WIP: premiumServers is currently used for logging only.
# Non-premium players are not blocked or redirected.
premiumServers:
- lobby
- survival
lookupCacheMinutes: 60
lookupFailureMode: offline
logPremiumDecisions: truepremiumServers must use server names from velocity.toml. Matching is case-insensitive.
Main command:
/velocityuuidrouter
Alias:
/vur
Subcommands:
/vur status
/vur players
/vur reload
Permissions:
velocityuuidrouter.status
velocityuuidrouter.players
velocityuuidrouter.reload
Clone the project, then run:
./gradlew buildThe jar will be created at:
build/libs/VelocityUUIDRouter-1.0.0.jar
To run tests only:
./gradlew testTo build only the jar:
./gradlew jarGradle is configured to use a Java 21 toolchain.
- Per server UUID management
- More configurable premium-server behavior
- Better runtime diagnostics for Geyser/Floodgate edge cases
Velocity establishes a player UUID during login. Clean per-server UUID switching after login is not currently supported by Velocity, so UUID mode is session-wide.
This project is intended to be forkable and redistributable with credit to the original creator, RealDoc06.