13
0
geforkt von Mirrors/Velocity
Commit graph

1055 Commits

Autor SHA1 Nachricht Datum
Andrew Steinborn
75ddeb062f Confine preconnect validation/setup logic to event loop. 2020-05-25 09:38:22 -04:00
Andrew Steinborn
a98a7dd67e Merge branch 'dev/1.1.0' into decode-multiple 2020-05-24 11:41:17 -04:00
Andrew Steinborn
793e938dd1 Drop macOS native support
This served a good purpose when I used macOS as a primary development system, but those days are gone (I use Linux now). The spirit of multiple variants is preserved by our special Java 11+ optimized compression.
2020-05-24 10:58:28 -04:00
Andrew Steinborn
b3bd773fea Switch out Cloudflare zlib for libdeflate.
libdeflate is significantly faster than vanilla zlib, zlib-ng, and Cloudflare zlib. It is also MIT-licensed (so no licensing concerns). In addition, it simplifies a lot of the native code (something that's been tricky to get right).

While we're at it, I have also taken the time to fine-time compression in Velocity in general. Thanks to this work, native compression only requires one JNI call, an improvement from the more than 2 (sometimes up to 5) that were possible before. This optimization also extends to the existing Java compressors, though they require potentially two JNI calls.
2020-05-24 10:56:26 -04:00
Andrew Steinborn
742b8d98cb Fix noexecstack for natives. 2020-05-20 04:55:55 -04:00
Andrew Steinborn
91e9769c5a Cap /server list to 50 servers.
Any more, and the server list is arguably useless. Thanks to BXBW for finding this particular issue!
2020-05-17 00:24:00 -04:00
Andrew Steinborn
feb7c2f893 Reject invalid tab complete command requests. 2020-05-08 18:22:21 -04:00
Andrew Steinborn
b42045c050 Reject invalid tab complete command requests. 2020-05-08 18:17:02 -04:00
Andrew Steinborn
2418cc271a
Merge pull request #307 from mikroskeem/feature/prevent-proxy-connections
Add prevent-proxy-connections option
2020-05-08 14:57:20 -04:00
Mark Vainomaa
21f03d5d50
Add prevent-proxy-connections option to make sending client IP to Mojang toggleable 2020-05-08 21:16:12 +03:00
Andrew Steinborn
4d62d61485 We're well into 2020, just saying. 2020-05-08 14:04:07 -04:00
Andrew Steinborn
3bc8323ed5 We're well into 2020, just saying. 2020-05-08 14:03:35 -04:00
Andrew Steinborn
5424c55f09
Merge pull request #301 from Leymooo/command-event
fix build
2020-04-30 01:13:30 -04:00
Leymooo
4b4ed02e8d fix build 2020-04-30 01:00:12 +03:00
Andrew Steinborn
42ad7594ae
Merge pull request #300 from Leymooo/command-event
fix command forwarding to server
2020-04-29 15:26:29 -04:00
Leymooo
d096eb3429 update class javadoc 2020-04-29 22:15:33 +03:00
Leymooo
aa55af8eb7 fix command forwarding 2020-04-29 22:13:16 +03:00
Andrew Steinborn
e759668f53
Merge pull request #299 from Leymooo/command-event
Add event for commands
2020-04-29 12:51:47 -04:00
Andrew Steinborn
37a1a49fda Allow disabling BungeeCord plugin message channel. 2020-04-28 14:10:54 -04:00
Leymooo
9d6689f64a forgot annotation 2020-04-27 13:12:03 +03:00
Leymooo
26bf94f08f fix typos, update javadocs 2020-04-27 13:09:04 +03:00
Leymooo
c0b8e9d646 add async methods, also add separate methods which will call event and which will not call event 2020-04-27 01:05:57 +03:00
Leymooo
fb64333813 pass eventLoop to thenApplyAsync 2020-04-27 00:11:49 +03:00
Leymooo
1fb382e0f6 fix logic 2020-04-27 00:09:25 +03:00
Leymooo
6555e0e337 Add CommandExecuteEvent 2020-04-27 00:04:12 +03:00
Andrew Steinborn
1441dec367 Implement brigadier:long argument type, fixes #295 2020-04-23 16:21:44 -04:00
Andrew Steinborn
957c0dd307 Implement brigadier:long argument type, fixes #295 2020-04-23 16:21:22 -04:00
Andrew Steinborn
81a0cbe3b9 Fix rare race condition with transitioning
If the player unexpectedly disconnects after ServerConnectEvent is
fired, but before the connection transitions to the new player, Velocity
would throw an exception thinking the connection was not present. This
is the correct behavior, but the behavior is very surprising. Instead we
will double-check to ensure the connection has not been lost before we
continue with transitioning to the new server.
2020-04-22 10:31:05 -04:00
Andrew Steinborn
20eb14143d Bump Netty to 4.1.49.Final
This is intended to fix netty/netty#10165 directly, and supersede our current workaround.
2020-04-22 10:28:41 -04:00
Andrew Steinborn
e6ea191c92 Bump Netty to 4.1.49.Final
This is intended to fix netty/netty#10165 directly, and supersede our current workaround.
2020-04-22 10:28:17 -04:00
Andrew Steinborn
2b84d35798 Fix bug in ConnectOther message
Credits to @Jay113355 for spotting this
2020-04-21 06:23:04 -04:00
Andrew Steinborn
24c9fc0ef1 Relax GameProfileRequestEvent#setGameProfile to allow faking even in online-mode 2020-04-19 09:20:03 -04:00
Andrew Steinborn
d0cbcf65e9 Fix some tab-complete regressions 2020-04-19 09:07:17 -04:00
Andrew Steinborn
413578f979 Fix rare race condition with transitioning
If the player unexpectedly disconnects after ServerConnectEvent is
fired, but before the connection transitions to the new player, Velocity
would throw an exception thinking the connection was not present. This
is the correct behavior, but the behavior is very surprising. Instead we
will double-check to ensure the connection has not been lost before we
continue with transitioning to the new server.
2020-04-19 03:39:15 -04:00
Andrew Steinborn
5c93fd3866
Merge pull request #294 from creeper123123321/backend-initializer
(Implementation) Allow injecting into backend connection
2020-04-14 01:43:24 -04:00
creeper123123321
9f6d7c2e82 fix name 2020-04-13 11:57:12 -03:00
creeper123123321
e93a510b0f (Implementation) Allow injecting into backend connection 2020-04-13 10:35:26 -03:00
Andrew Steinborn
aae151e3d9 No need to register multiple times 2020-04-12 17:21:00 -04:00
Andrew Steinborn
4ddc55a5b7 No need to register multiple times 2020-04-12 17:20:54 -04:00
Andrew Steinborn
49ab2764c4 Close one last "proxy crasher" loophole 2020-04-12 17:18:53 -04:00
Andrew Steinborn
f49d36b719 Close one last "proxy crasher" loophole 2020-04-12 17:05:36 -04:00
Andrew Steinborn
b04b43954f Merge branch 'dev/1.1.0' into decode-multiple 2020-04-11 22:05:43 -04:00
Andrew Steinborn
6ed61848e9 Upon connection exception, discard all incoming packets instead 2020-04-11 21:19:54 -04:00
Hugo Manrique
2c2eca3548 Only finish non-repeating tasks 2020-04-11 21:09:15 -04:00
Hugo Manrique
55818ce5eb Remove tasks from lookup map upon completion 2020-04-11 21:09:02 -04:00
Crypnotic
d4e51e2d07 Add cleanServerName to VelocityConfiguration to remove quotes and other unforeseen characters from server names before registration 2020-04-11 21:08:47 -04:00
Andrew Steinborn
98b03376e5
Merge pull request #281 from Gabik21/tablist-improvement
Don't send ping update twice (1.7)
2020-04-07 13:35:18 -04:00
Andrew Steinborn
4374f1e4d6
Merge pull request #288 from Gabik21/fix-1.7-weirdness
Fix tablist behaving wrong with colors (1.7) (Fixes #282)
2020-04-07 11:51:21 -04:00
Gabik21
2217e8a5c9
Fix 1.7 tablist behaving weird with colored names
The 1.7 tablist packet only contains three types of information:

 - Name of the tablist entry (limited to 16 characters including colors)
 - Ping of the entry
 - If this entry needs to be added or removed (client accepts duplicates
 as 'ping update')

The previous logic was trying to preserve parity with
GameProfile#getName returning a stripped down name to have a 'real'
username.
That is fundamentally broken, because entries with duplicate content,
but different colors are very common, especially with custom tablists.

For packets coming from a native 1.7 server we just won't define the
displayname anymore, as there is no such thing as a 'displayname',
because tablist entries are not bound to any player.

Using the Velocity Tablist API to modify existing entries will work, though
the backend server will completely loose control over the entry. Custom
entries added over the Velocity Tablist API will work, but are cut off
by the 16 character limitation.

This commit only fixes the bug, where entries are incorrectly handled
with their stripped name, a lot of the things explained above were
already implemented correctly.
2020-04-07 12:17:02 +02:00
Gabik21
5089da07fc
Don't send ping update twice
VelocityTabListEntry#setLatency calls the update method, which
constructs a new packet and sends it to the client.
The backend packet we are processing also reaches the client, therefore
we are sending the same packet twice.
VelocityTabListEntry#setLatencyInternal is the correct method here.
2020-04-02 17:46:24 +02:00