100 Commits
Author SHA1 Message Date
Andrew Steinborn 67b988e6d2 Update all localizations to use the current year 2025-10-18 18:58:21 -04:00
Andrew Steinborn d2c13c2a4c Provide encode buffer hint 2025-10-18 17:36:39 -04:00
Andrew Steinborn 498a38cf74 Re-enable adaptive allocator
Recent Netty versions have improved the adaptive allocator, and we shouldn't be seeing the OOM issues others were noticing before. Let's re-enable it.

As for the buffer resizing issue, the upstream issue netty/netty#14912 is long fixed. I think we *should* pre-allocate the buffers beforehand much more aggressively, but that has to be future work.
2025-10-18 16:40:54 -04:00
Andrew Steinborn 13a1c93ea6 Bump Netty to 4.2.7.Final 2025-10-18 16:22:32 -04:00
Andrew Steinborn 70c3eabdb1 Minor optimizations for MinecraftCompressorAndLengthEncoder and friends
No need to bounce around changing the writer index, we can just set the value directly.

Also pull out the handshake checks into a separate function, to improve inlining.
2025-10-18 16:15:22 -04:00
Andrew Steinborn 49e2988e37 Utilize ByteBuf.readString() 2025-08-08 21:47:49 -04:00
Andrew Steinborn db8d16fd6e Bump to Netty 4.2.3
Closes #1615
2025-08-08 21:44:05 -04:00
Andrew Steinborn ae312339a3 Disable io_uring transport by default 2025-04-11 00:35:49 -04:00
Andrew SteinbornandGitHub a549880df1 Bump to Netty 4.2.0 (#1380) 2025-04-09 01:21:08 -04:00
Andrew Steinborn 8f3dea5427 Bump Netty version 2025-02-28 22:21:32 -05:00
Andrew Steinborn d4ea40a4a2 Add support for SO_REUSEPORT 2025-02-27 23:42:39 -05:00
Andrew Steinborn af97ffffa5 A few small code cleanups for cryptography
* Remove some unused cryptographic code
* Add some notes about how Minecraft's cryptography choices have not quite survived the test of time
2024-12-21 03:45:17 -05:00
Andrew Steinborn 08a42b3723 Replace home-made legacy hover event serializer with Adventure's implementation
This technically can break backwards compatibility, but this seems to be very unlikely to be the practice in reality. (The Velocity implementation probably wasn't correct, anyway.)
2024-10-27 15:13:22 -04:00
Andrew Steinborn f2d6e143ae Update several dependencies 2024-10-27 14:10:33 -04:00
Andrew Steinborn b135148dfc fix a typo 2024-10-27 13:54:08 -04:00
Andrew Steinborn 2c8ce219f0 fix checkstyle, closes #1446 2024-10-20 20:20:42 -04:00
Andrew Steinborn b66aa3fb4e Bump to Velocity 3.4.0 2024-09-15 21:38:03 -04:00
Andrew Steinborn 2016d1482f Deprecate anonymous command registrations 2024-09-15 21:27:47 -04:00
Andrew Steinborn 4f227badc2 Reintroduce sync event execution to the Velocity event system
This required a not-insubstantial number of bug fixes, since the sync support had bit-rotted somewhat. This PR also corrects a number of bugs.

Finally. the per-plugin executor services are now used to execute all async event tasks.
2024-09-15 20:41:11 -04:00
Andrew Steinborn ffa78d2a92 Small clean-ups in event manager. 2024-09-15 17:00:15 -04:00
Andrew Steinborn 4eb02c8d38 Do not store the dimension registry for each connected server
This was unused and did little more than add unnecessary memory usage. The only time we need the dimension registry is during server switching - once that is done, we no longer need the registry.
2024-09-15 13:55:33 -04:00
Andrew Steinborn 3c23ee7576 Fix typo for musl crypto 2024-09-07 13:14:04 -04:00
Andrew Steinborn 525ac2712e Also provide musl libc builds of Velocity natives
Reference: PaperMC/Paper#11367
2024-09-07 12:56:38 -04:00
Andrew SteinbornandGitHub 784806848d Do more speculative VarInt reading optimizations (#1418) 2024-09-05 00:00:34 -04:00
Andrew Steinborn 46f29480bd Delete now-unused MinecraftVarintLengthCompositeEncoder 2024-09-03 00:40:31 -04:00
Andrew Steinborn f034c0277d Have one MinecraftVarintLengthEncoder, not two
Applies more to the margins (such as login phase and server list ping), but every bit does help.
2024-09-03 00:33:57 -04:00
Andrew Steinborn 52ae735ea3 Change LoginInboundConnection queue type to something that is actually thread-safe 2024-09-02 20:47:01 -04:00
Andrew Steinborn 862036d424 Fix a compile error. 2024-09-02 03:00:19 -04:00
Andrew Steinborn a7654af1a3 Do some minor natives housekeeping. 2024-09-02 02:57:03 -04:00
Andrew SteinbornandGitHub 55f9509c6e Add a MinecraftVarintLengthCompositeEncoder for backend connections (#1419)
This is an optimization that has been in BungeeCord for some time, but it's an idea that makes a lot of sense: avoid a memory copy when we don't need to do one. The OS will hopefully be smart enough to use `writev()` or similar for this.
2024-09-02 02:25:04 -04:00
Andrew Steinborn 956fca142c Readd accidentally removed macOS arm64 compression native 2024-08-31 22:26:16 -04:00
Andrew Steinborn f8c3a1a5cb update the native README with other OS instructions 2024-08-31 20:52:33 -04:00
Andrew Steinborn f67d85493e update the native README 2024-08-31 20:47:25 -04:00
Andrew SteinbornandGitHub af629cf000 Fall 2024 recompile of the natives (#1416)
This time around, instead of the very ad hoc approach I have historically taken, this time we actually have a convenient script that takes care of basically all the hard work necessary, including cross-compilation.

We compile natives for Ubuntu 20.04 LTS (OpenSSL 1.1.x native and libdeflate) and Ubuntu 22.04 LTS (OpenSSL 3.x.x native), for both x86_64 and aarch64.

The macOS natives have also been recompiled on macOS Sonoma.
2024-08-31 20:30:47 -04:00
Andrew Steinborn ebc418f6cc Do not use classes from io.netty.util.internal
In this case, we don't even need a concurrency-friendly MPSC queue, since this code only ever gets run in the event loop associated to the channel, so a simple `ArrayDeque` is enough for our needs.
2024-07-13 21:50:27 -04:00
Andrew Steinborn 5154f02910 Improved fix for #1372
Realized that the precondition that gets violated happens way too early, in `Maps.uniqueIndex()`.
2024-07-05 22:07:15 -04:00
Andrew Steinborn 6224adf70a Don't try to load a candidate plugin with the same ID more than once
Fixes #1372. Honestly, this was an oversight that I'm somewhat surprised that nobody caught until recently.
2024-07-05 22:01:31 -04:00
Andrew Steinborn c3583e182c Stop shipping the OpenSSL 1.0.x native
CentOS 7 is end of life in June 2024. Let's cut this loose.

I'll also recompiling all the natives soon.
2024-01-21 20:48:15 -05:00
Andrew SteinbornandGitHub 953ab6d8e7 Implement click callback provider (#1029) 2024-01-20 16:58:00 -05:00
Andrew Steinborn 8dcc7ee37e Fix 2023-10-29 15:29:43 -04:00
Andrew Steinborn 2ec830f874 Apply some changes from 5.0.0 2023-10-29 14:54:50 -04:00
Andrew Steinborn 67d5e77b1f Revert bad bug fix 2023-10-29 00:56:30 -04:00
Andrew Steinborn 7f8edf8c77 Fix typo in VelocityRegisteredServer#ping() 2023-10-28 19:53:49 -04:00
Andrew Steinborn 74033addbe Fix bug in VelocityRegisteredServer#ping() 2023-10-28 19:53:29 -04:00
Andrew Steinborn ae63da6836 Merge branch 'dev/3.0.0' of github.com:PaperMC/Velocity into dev/3.0.0 2023-10-27 21:57:44 -04:00
Andrew Steinborn c6cc6098a6 Make EventTypeTracker actually thread-safe
Although I don't think anyone has actually triggered this bug in practice, we should still fix this.
2023-10-27 21:57:34 -04:00
Andrew Steinborn 277be8f9a7 Bump SnakeYAML to the last 1.x version
Fixes #1047. We can't go any higher since that's an API-breaking change. In any event, this will likely disappear in 5.0.0 anyway, because Configurate 4.x now shades SnakeYAML internally.
2023-10-27 16:58:43 -04:00
Andrew Steinborn bbdeb3ec58 Revert "Modify MinecraftCompressorAndLengthEncoder to handle 8MiB outgoing packets like vanilla supports now"
This reverts commit 7e932eaad4.

Yikes, I broke something. Need to rethink this approach.
2023-10-27 16:10:39 -04:00
Andrew Steinborn 7e932eaad4 Modify MinecraftCompressorAndLengthEncoder to handle 8MiB outgoing packets like vanilla supports now 2023-10-27 15:35:04 -04:00
Andrew Steinborn 0b07456c89 Bump HARD_MAXIMUM_UNCOMPRESSED_SIZE to 128MiB 2023-10-27 15:17:32 -04:00
Andrew Steinborn 4b7950658b Remove legacy repository cruft
This dates from the dark days when I dared to operate my own Jenkins instance. Never again.
2023-10-27 01:50:27 -04:00
Andrew Steinborn 19abb9094e fix #1062 2023-08-20 02:13:55 -04:00
Andrew SteinbornandGitHub f62d759896 Do not track plugin channels registered per-player on the proxy (#591)
We don't need to track this information since Velocity uses the JoinGame packet, which is about as good of a server rejoin mechanism we're likely to get in vanilla Minecraft.
2023-08-17 23:51:34 -04:00
Andrew Steinborn 40b76c6332 Fix flaky obtainTasksFromPlugin() test 2023-05-15 01:21:30 -04:00
Andrew Steinborn 92ae25b8ac Also make sure to use the latest ping serializer as well 2023-05-15 01:20:45 -04:00
Andrew Steinborn 12a05f6d75 When pinging the server with protocol version -1, return the latest version supported by the proxy
This matches BungeeCord's behavior and is in line with what clients specifying this meta-version would expect.
2023-05-15 01:15:49 -04:00
Andrew Steinborn 673af65078 fix 2023-05-14 03:18:20 -04:00
Andrew SteinbornandGitHub a29c753e39 Give each plugin its own executor service (#1010)
This is part of preparatory work for Velocity 5.0.0's revamped event system, but this change is safe to bring into the 3.x.x series. This affects the scheduler for now, but command execution will also be moved into the per-plugin thread pool, along with invocations of `EventTask.async()`.
2023-05-14 02:51:25 -04:00
Andrew Steinborn 7f776abf55 Upgrade Adventure 2023-04-19 23:22:20 -04:00
Andrew Steinborn d438422d52 Get a bit more spotless 2023-04-09 12:19:50 -04:00
Andrew Steinborn 2fa9f37481 Delete copying temporary version of config.toml into temporary files
Fixes #999
2023-04-09 12:18:02 -04:00
Andrew SteinbornandGitHub 15cce53adf Revert "Handle exceptions in ConnectionRequestBuilderImpl#fireAndForget (#875)" (#978)
This reverts commit b4e04204a9.
2023-03-16 02:14:22 -04:00
Andrew Steinborn 7e9a25209c Update various dependencies 2023-03-15 22:52:12 -04:00
Andrew Steinborn b0988bc50a Add a hard cap of 200 threads to VelocityScheduler
This is a more realistic (generalized) solution for #943. Fundamentally, a plugin should not be spawning an unbounded number of asynchronous task execution units on demand from the user - an invariant Velocity itself enforces. However, since this practice is so commonplace, it makes sense that we would need to have some upper cap to at least make the practice safer than it currently is.
2023-02-18 16:20:12 -05:00
Andrew Steinborn f744b37ad5 Merge remote-tracking branch 'origin/dev/3.0.0' into dev/3.0.0 2023-01-21 18:22:04 -05:00
Andrew Steinborn d9ee34feac Ignore the locally-generated lang directory 2023-01-08 13:37:01 -05:00
Andrew Steinborn 586cd56c05 Fire PluginMessageEvent correctly if it's sent when a connection is established
Fixes #774
2023-01-08 13:34:44 -05:00
Andrew Steinborn 022ae0fc00 Instead of re-encoding the client-server registry, pass through the original 2023-01-08 13:18:14 -05:00
Andrew Steinborn 7ed422b4ed Switch all Guava Cache uses to Caffeine 2023-01-01 19:05:13 -05:00
Andrew Steinborn aaa24752ac Update various other dependencies 2023-01-01 18:58:27 -05:00
Andrew Steinborn 3768e66e86 Also use Spotless to remove unused imports 2023-01-01 18:52:11 -05:00
Andrew Steinborn b0862d2d16 Use Spotless for license formatting 2023-01-01 18:46:33 -05:00
Andrew Steinborn d715e17acb Bump copyright date to 2023 2023-01-01 17:56:00 -05:00
Andrew SteinbornandGitHub d72d707b1c Convert Velocity buildscripts to Kotlin DSL (#918)
Spiritually indebted to #518 and @alexstaeding.

There's a minor break - we're going up to 3.2.0-SNAPSHOT as the API now compiles against Java 11. But this is more academic in practice.
2023-01-01 17:53:37 -05:00
Andrew Steinborn ffa4c95435 Fix GS4 query reloading logic
Closes #915. This isn't a fatal error, but it's a clear papercut.
2023-01-01 13:07:31 -05:00
Andrew Steinborn f62768be9a Fix native compile as libdeflate moved to CMake
Fixes #890 correctly. Also rebuild the compression/encryption natives on macOS and Linux ARM64.
2023-01-01 11:45:47 -05:00
Andrew Steinborn ef7ad150c2 Add plugin logger name to file logger configuration
Closes #903
2023-01-01 11:33:37 -05:00
Andrew Steinborn edadaab948 Update Netty 2023-01-01 11:31:34 -05:00
Andrew Steinborn 4ef9a33f4c Add native info to dump 2023-01-01 11:30:39 -05:00
Andrew Steinborn 118c4b451c Save /velocity dump output into a local file instead.
dump.velocitypowered.com is going to go offline on January 15th.
2023-01-01 11:26:45 -05:00
Andrew Steinborn 1ec77eb123 Fix #887
Velocity always handled ALL as an alias of ONLINE, so handle ONLINE the same way.
2022-12-11 23:29:57 -05:00
Andrew SteinbornandGitHub 2d0721516f Netty 4.1.85.Final 2022-11-09 22:13:22 -08:00
Andrew Steinborn 7d77bfb53c Update select dependencies 2022-09-21 00:48:21 -04:00
Andrew Steinborn 57ca66de2e readd local linux aarch64 cipher def 2022-09-12 00:34:04 -04:00
Andrew Steinborn ece90dedfb Update natives to latest libdeflate and add OpenSSL 3 native compiled on Fedora 36 for ARM64 2022-09-11 23:54:33 -04:00
Andrew Steinborn 6496983ca3 Fix cancelling commands on <1.19 clients (#827) 2022-08-08 00:42:31 -04:00
Andrew SteinbornandGitHub 662fbc4e3c Implement the ServerData packet by firing ProxyPingEvent (#771)
* Implement the ServerData packet by firing ProxyPingEvent

Mojang introduced the enable-status server property with Minecraft 1.19, which if enabled causes servers to close the connection when a client tries to ping them. Mojang wants to show the MOTD and favicon on the server select screen for those who manage to log in, so we need to implement this packet as well.

The good news is that we can send this packet as many times as needed on the same connection

This matches the behavior of pinging the server. This is a minor, but completely backwards-compatible, API breakage: Player inherits from InboundConnection so we do not have to change ProxyPingEvent, however plugins not expecting a Player might get confused.

* typo
2022-06-23 23:59:13 -04:00
Andrew Steinborn 93df65fdfb Update Gson
Resolves #763
2022-06-22 22:25:30 -04:00
Andrew Steinborn 13b13eb351 fix typo 2022-06-08 09:58:15 -04:00
Andrew Steinborn 4b1cdbcb31 I have sinned but it feels good 2022-06-08 01:18:19 -04:00
Andrew Steinborn 01c6777948 Fix several issues with JNI compression
The libraries will require a recompile.
2022-06-08 00:53:15 -04:00
Andrew Steinborn c2b237f196 DRY - one function to create respawn packets from JoinGame packets 2022-06-07 23:35:43 -04:00
Andrew Steinborn aa38d3e561 Implement a proper login state machine for logins
Fixes #688 and probably a host of other potential problems.
2022-04-23 18:07:34 -04:00
Andrew Steinborn d59d4505cb Add stop command alias for ShutdownCommand
Fixes #678
2022-04-08 23:00:03 -04:00
Andrew Steinborn 95a32ad421 fix 2022-03-31 22:13:05 -04:00
Andrew Steinborn 05d1938476 Netty 4.1.75.Final 2022-03-19 19:04:29 -04:00
Andrew Steinborn b5dcaa2315 Provide a more descriptive error message if Velocity isn't able to authenticate with Mojang servers
Fixes #636
2022-03-09 02:23:22 -05:00
Andrew Steinborn 35a1456c5f Update Linux natives for latest libdeflate
x86_64 libdeflate was compiled with Fedora Linux 35. aarch64 binaries were compiled with Ubuntu 18.04.
2022-03-09 02:12:15 -05:00
Andrew Steinborn b2800087d8 Ensure Forward doesn't broadcast to the current server
Fixes #641
2022-02-07 23:43:40 -05:00
Andrew Steinborn 058014aa75 Better document how to use the login plugin message API 2021-12-23 15:44:19 -05:00