Commit Graph
100 Commits
Author SHA1 Message Date
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
Andrew Steinborn 8c39d9a1e4 Document every event Velocity will await on. 2021-12-23 02:52:56 -05:00
Andrew Steinborn ea3341d710 Another day, another Log4j CVE
Happy holidays, y'all.
2021-12-18 16:15:32 -05:00
Andrew Steinborn d7195060f5 Too many people are complaining about this 2021-12-16 22:08:39 -05:00
Andrew Steinborn fd842c4364 Exclude org/apache/logging/log4j/core/lookup/JndiLookup.class entirely
It's the one sure-fire way to prevent further exploits using JNDI through Log4j.
2021-12-14 19:37:37 -05:00
Andrew Steinborn f3d0b75797 Drop SpotBugs for now 2021-12-10 21:40:30 -05:00
Andrew Steinborn d3b3ef231b Update forwarding documentation link(!) 2021-11-07 13:00:58 -05:00
Andrew Steinborn 7c858424b5 Fix shading issues introduced with cb8781b3 2021-11-01 09:47:57 -04:00
Andrew Steinborn c89fff34c1 We're past the point where this is a bug-fix release. Bump to Velocity 3.1.0. 2021-10-31 23:24:57 -04:00
Andrew Steinborn 6b2b28796b Clean up and clarify plugin loader logic. 2021-10-31 23:24:39 -04:00
Andrew Steinborn 0b0c36dcfc Correct command meta alias removal behavior and add appropriate unit tests.
Apparently @hugmanrique caught the issue but suggested the wrong fix. This is the correct fix, and respects the Javadoc.
2021-10-31 19:05:21 -04:00
Andrew Steinborn 895eb1a424 Clean up and comment PluginDependencyUtils#sortCandidates 2021-10-31 18:56:13 -04:00
Andrew SteinbornandGitHub cb8781b3c9 Add support for sending and receiving login plugin messages from players and servers (#587) 2021-10-31 16:27:03 -04:00
Andrew Steinborn ac4b4a34ca Adventure 4.9.3 2021-10-31 08:58:37 -04:00
Andrew Steinborn 64b7769edb Netty 4.1.69.Final 2021-10-27 09:15:13 -04:00
Andrew Steinborn 41f66c7c04 Also guard sendTitlePart behind a protocol version check. 2021-10-15 10:16:34 -04:00
Andrew Steinborn d5047b6665 Fix copy-paste error 2021-10-15 08:30:11 -04:00
Andrew Steinborn 3f647e4eb2 Implement sendTitlePart for Players 2021-10-15 08:28:05 -04:00
Andrew Steinborn 20914ca134 Bump Adventure 2021-10-15 08:18:11 -04:00
Andrew Steinborn 0b088590a0 Fix license text 2021-10-10 16:39:59 -04:00
Andrew Steinborn 1aaecfff08 Add tests for EventTask#resumeWhenComplete and clarify Javadoc. 2021-10-10 16:37:22 -04:00
Andrew Steinborn 340e1b23d6 Fix none vhost forwarding with legacy Forge. 2021-09-27 00:37:58 -04:00
Andrew Steinborn effca0da82 Preserve virtual host the player connected to for modern/none forwarding
This makes these modes in-line with legacy forwarding
2021-09-25 17:51:58 -04:00
Andrew Steinborn d1135bd190 Allow the BungeeCord plugin messaging channel to be used by the server at transition time 2021-09-07 07:38:30 -04:00
Andrew Steinborn 4ca1798994 Update to Adventure 4.9.1 2021-09-07 07:33:43 -04:00
Andrew Steinborn 1b390c3eff Velocity 3.0.2-SNAPSHOT 2021-09-01 07:21:38 -04:00
Andrew Steinborn c8f7d6c632 Velocity 3.0.1 2021-09-01 07:18:09 -04:00
Andrew Steinborn 849e416c8d Fix IPv6 scope issue in legacy forwarding too 2021-09-01 07:14:38 -04:00
Andrew Steinborn 955f6b87e2 Assorted dependency updates 2021-09-01 06:36:00 -04:00
Andrew Steinborn 9a15c7e170 Fix Brigadier command node redirect serialization (#565) 2021-08-24 13:58:13 -04:00