Velocity 1.1.0 Status Update

We started work on Velocity 1.1.0 not long after the 1.0.0 release. We’re happy to begin iterating and start work on the next version of Velocity.

Velocity 1.1.0 aims to add features to Velocity to reach parity with BungeeCord, along with optimizing the proxy further so that we can support more players. In addition, we also intend for Velocity 1.1.0 to catch up on the latest features in Minecraft.

Here’s the current notable list of features currently in 1.1.0.

New Features

The new features in Velocity break down into “parity with BungeeCord” and “general new features”.

Parity with BungeeCord

  • A new kick-existing-players option has been added to velocity.toml to handle duplicate login attempts for online mode users by kicking the old connection, compared to the existing behavior which never allowed this. (This option emulates similar behavior in BungeeCord, the Minecraft server, and the Velocity JoinKick plugin).
  • Ping passthrough is now supported. The behavior in Velocity has been improved by pinging all servers concurrently.

General New Features

For Users

  • Velocity now supports Minecraft 1.7.x and Forge for 1.7.
  • Ping passthrough supports forwarding a backend Forge mod list to the client to improve the display in the player’s server list.

For Developers

  • As an additional option, Velocity now includes Configurate with the API, with YAML, JSON, and HOCON support.
  • Enforce at least one alias for the old command API. (A new command system is intended to replace it.)
  • A new RawCommand interface has been introduced for the old command API. It passes arguments directly to the command without further processing by Velocity.
  • The TabCompleteEvent has been added to allow for arbitrary tab complete.
  • A new method has been added to determine whether a player connected in online mode or not.

Performance Enhancements

  • Velocity is now using the FastThreadLocals from Netty. They bring a small gain in performance with them.
  • Although the plugin messaging API has not changed, in most cases where plugin messages are sent, Velocity realizes it doesn’t need to handle them and averts a memory copy. This is a good win for Forge servers.
  • Switched Velocity to the Async HTTP Client library to gain connection pooling and a more robust HTTP client. This shaves time off the login process.
  • Support for TCP_FASTOPEN has been added to Velocity, for people using the epoll transport (specifically, Linux users).
  • The handshake and server login packets have been batched for connecting to other Minecraft servers, allowing the login process to begin as soon as possible.
  • Switched native (Linux amd64) compression library from the system zlib to zlib-ng which contains performance improvements for (de)compression.

Want a Taste of the Future?

We provide builds of Velocity 1.1.0 on Jenkins. Note that you run these builds at your own risk - we do run these in production at a decently-sized network, but your mileage may vary. If you find issues, please file issues on GitHub.