Today we are extremely proud to announce the imminent release of Velocity 1.1.0, which is the cumulation of almost 15 months of work. Velocity 1.1.0 is itself a landmark release with many new features and performance improvements. Velocity 1.1.0 has been used in live production scenarios for a while now, and we are pleased to finally make it stable. We hope you will enjoy using Velocity 1.1.0 as much as we have been developing it and using it ourselves.
A Personal Announcement from Tux
It’s been a wild two years since Velocity got its humble start in July 2018. Back then I set out to solve a problem: how do you make the most efficient, yet fully-featured Minecraft server proxy possible? The question was born out of necessity: Mineteria at the time was hosted on Google Cloud (and as we all know, the cloud is not the best place to run a Minecraft server). At the time, we were using BungeeCord, but it proved to buckle under the load of just a few hundred players. It was a rough initial few months in the summer and fall of 2018 as we worked tirelessly to stabilize the server as a result of issues uncovered during our soft launch.
I had a bit of a pushback when I talked about it with Mineteria at the time:
Needless to say, Zach is now a true believer Mineteria switched to Velocity in November 2018, which was a big leap for me as Velocity had only gotten to a minimally functional state only a few months before.
Fast forward to this year. Now, if Mineteria needs to prepare for a big launch, we’re much more confident that we can do it. We have our own dedicated servers and Velocity now powers our Java Edition network. If there’s a problem, Velocity is unlikely to be the cause.
We’ve done some amazing work over the previous 15 months to make this release a reality. Velocity moves forward each day and I’m excited to be on this journey.
Velocity 1.1.0 supports Minecraft 1.7.2 through 1.16.4, and Velocity 1.1.0 is compatible with plugins that strictly code against the Velocity API as per our versioning policy. If there is a plugin that works on Velocity 1.0.x but does not work on Velocity 1.1.0 but only uses the API, then there is a bug in Velocity 1.1.0 and we encourage you to file an issue on GitHub.
As Velocity 1.1.0 is compatible with all Velocity 1.0.x plugins, we are also simultaneously announcing that Velocity 1.0.x will lose all support immediately. Our resources are limited so we need to cut off support for the 1.0.x series as soon as possible. There will be no more Velocity 1.0.x releases, so 1.0.11 will not be released nor will it get a 1.16.4 update.
That being said, we have a bunch of goodies in store for Velocity 1.1.0. Honestly, we would have wanted to get this out earlier, but there was always something else we wanted to add!
I’m sure this is the feature everyone’s here for: You can now have an RGB MOTD! Just use a 1.16-formatted JSON message or the new “legacy” color code
Configurable Kick Behavior
The new option
velocity.toml allows you to kick players online with the same name if the proxy is in online mode, which provides behavior similar to BungeeCord and the vanilla server.
Velocity 1.1.0 supports ping pass-through from your backend servers. You can pass everything along, just the server description, or just your mod list (for Forge 1.7-1.12.2 servers only).
Editing Proxy Messages
Starting with this release, select proxy messages can be changed in your
BungeeCord Plugin Messaging Channel Support
Velocity 1.1.0 now includes native support for the BungeeCord plugin messaging channel, which was formerly provided by the BungeeQuack plugin. When you upgrade to Velocity 1.1.0, make sure to remove BungeeQuack as it will no longer work on Velocity 1.1.0.
Changes for Plugin Developers
Velocity now bundles Configurate 3.7.1. Configurate has emerged as the de facto configuration library for Velocity so we’re excited to include it.
New Command API
Thanks to Hugmanrique, Velocity 1.1.0 now makes available the full power of Brigadier to your plugins. We’ve introduced support for Brigadier as well as support for raw arguments, whilst preserving compatibility with Velocity 1.0.x plugins.
Note that with this release, the old command execution APIs have been deprecated.
Adventure is the successor to
text, the chat component library included in Velocity 1.0.0. It covers many more user interface elements and reduces the amount of API surface we have to provide, along with improving cross-platform support.
Velocity 1.1.0 implements support for Adventure 4.1.1 with support for chat messages, action bar messages, titles, and boss bars.
Note that with this release, support for the
text APIs and dependent Velocity APIs is deprecated and it will be removed in a future major release (but read on for more!)
Netty DNS Resolver Removed
Due to not-frequent issues with the built-in Netty DNS resolver, it has been removed from Velocity 1.1.0. Instead, all DNS lookups are now resolved by Java’s own synchronous DNS resolver confined to a separate thread pool as to prevent locking up the event loop.
Consistent Plugin Loading Order
With the release of Velocity 1.1.0, we have finally fixed a bevy of issues around plugin load ordering. Dependency loading should be much more stable and consistent.
Velocity 1.1.0 contains further improvements to better resist denial-of-service attacks on the proxy. Note that we believe the proxy is the wrong layer to stop denial-of-service attacks at - protection at higher layers is always better.
Upgrade to Velocity 1.1.0 and enjoy an almost 2x decrease in CPU usage while serving the same number of players. Or, if you’d like, serve 2x the players with the same hardware. Now that’s a lot of efficiency in one release.
We have covered some of the performance improvements we’ve done, but we’d wager to say that Velocity 1.1.0 is one of the most efficient Minecraft: Java Edition proxies ever. Every part of the network stack has been carefully optimized to extract the most performance possible, from increasing our compression performance by 2x to various smaller micro-optimizations, measured to ensure that they provide real improvement, and further battle-hardened by deploying them in real production scenarios.
Here’s a few posts about performance improvements we’ve made, in case you’re curious:
Also being launched today is the new Velocity website. Beware, it is still under construction, but it is a marked improvement over our current presence. Of note includes a newly revamped documentation section and a new dark and light theme.
Upgrading to Velocity 1.1.0
A very good question to ask! We recommend reading our new wiki for how to upgrade to Velocity 1.1.0. Read the migration guide.
A Word About the Future
Our next planned release is Velocity 2.0.0. Velocity 2.0.0 will break API compatibility with the Velocity 1.x.x series, thus the major version bump.
We have learned a lot from the Velocity 1.0.x series and from the development of Velocity 1.1.0. We now want to apply those lessons to the next major release of Velocity. Velocity 2.0.0 is focused on:
- Making Velocity more modular.
- Fixing API usability pain points.
- Modernizing the proxy’s bundled dependencies.
- Evolving Velocity away from not just being a highly-efficient Java Edition proxy. Stay tuned for more details!
We are looking forward to working on Velocity 2.0.0, however we are only in the initial stages of how the release will turn out. Velocity 2.0.0 will not be ready for some time, and we will commit to providing support and improvements for the 1.x.x series while we develop 2.0.0. (This means we could provide a Velocity 1.2.0 with at least a subset of the changes made for Velocity 2.0.0 to assist in migrating to Velocity 2.0.0.)
Velocity 1.1.0 is a landmark release, and probably even more important than the very first release of Velocity, 1.0.0. There is much to look forward to as we continue to evolve the Velocity project and move towards a 2.0.0 release. Download it and try it out - we promise that it will be amazing and show how we’ve been shaping the next generation of Minecraft server proxies.