Direct answer
Modern forwarding passes UUID, IP and skin information from Velocity using a shared secret. Configure one forwarding mode consistently on the proxy and every backend; do not mix modern with legacy forwarding.
Recommended procedure
- Set
player-info-forwarding-mode = "modern"in velocity.toml and keep the generated forwarding.secret secure. - On Paper backends set
online-mode=falsein server.properties andsettings.bungeecord=falsein spigot.yml. - In config/paper-global.yml enable proxies.velocity, copy the same secret into its secret setting and match proxies.velocity.online-mode to the proxy online-mode.
What to change
# velocity.toml
player-info-forwarding-mode = "modern"
# paper-global.yml (on backend)
proxies:
velocity:
enabled: true
online-mode: true # match proxy setting
secret: "COPY_SECRET_FROM_FORWARDING_FILE"- Keep backend ports inaccessible to public clients through host firewall rules or private interfaces.
- Restart proxy and backends and connect through Velocity; test that direct external backend connections are blocked.
How to verify the result
Confirm stable player UUIDs, correct skin/IP forwarding and that a direct backend login from outside the trusted proxy cannot succeed.
Version and compatibility notes
Modern forwarding supports Java 1.13+ in the official guide; older protocols and some modded backends need different handling. Never treat the shared secret as a replacement for network isolation.
Official references
Related guides
Help us improve this article
Tell us what is missing, unclear, outdated, or incorrect. You can also suggest something we should add.