Andrew Steinborn
7db757cd04
Allow certain mangled large packets to pass through
2019-07-30 17:10:10 -04:00
Andrew Steinborn
121ab41d96
Introduce TCP_FASTOPEN support
...
For best results, use Linux 4.11+ and a server modified to set the
TCP_FASTOPEN flag.
This should in particular benefit users of legacy forwarding.
2019-07-29 17:32:56 -04:00
Andrew Steinborn
0acb1ed7d4
Send disconnect message on getting kicked from the server
2019-07-29 14:27:40 -04:00
Andrew Steinborn
03c9729e63
Don't disconnect the player if the connection unexpectedly closes
2019-07-29 14:19:21 -04:00
Andrew Steinborn
04efd16a83
Avoid a memory copy in creating modern-style forwarding data
2019-07-29 06:04:37 -04:00
Andrew Steinborn
1da51b8ffb
Batch handshake and server login/ping packets
2019-07-29 05:25:29 -04:00
Andrew Steinborn
d65e371038
Fix up the Travis build...
2019-07-29 00:24:57 -04:00
Andrew Steinborn
ead8a21362
Most proper clean way of using a DnsAddressResolverGroup with AHC
...
Let us never speak of this again.
2019-07-29 00:19:15 -04:00
Andrew Steinborn
bf035bce73
Properly use non-blocking DNS in AsyncHttpClient
2019-07-28 23:40:23 -04:00
Andrew Steinborn
454b3c9bee
Add flag to disable native transports
2019-07-26 01:34:21 -04:00
Andrew Steinborn
d1736bf94c
Move from custom HTTP client to Async HTTP Client
...
The most significant advantage is that Velocity gets a well-tested
HTTP client implementation which also includes a connection pool,
allowing us to avoid the overhead of TCP and TLS handshakes upon each
login.
Unfortunately, Async HTTP Client does not work with the kqueue transport.
Since almost nobody runs a production Velocity server on macOS, we have
decided to remove kqueue support. The benefits that Async HTTP Client
provides outweigh the disadvantages of not having a macOS native transport.
macOS is adequately supported by the normal NIO transport.
2019-07-26 01:29:51 -04:00
Minecrell
fde5ec36e7
Update TerminalConsoleAppender to 1.2.0
...
Add log4j.skipJansi to prevent Log4j from initializing a Jansi
terminal. It is redundant because this is handled by TCA and it
will be only active for a few seconds until TCA is loaded.
2019-07-21 16:51:08 +02:00
Andrew Steinborn
2b5b14e4ec
Switch to new TCA version and jansi
2019-07-20 14:25:47 -04:00
Andrew Steinborn
6d5bacb262
Minor Netty cleanup
2019-07-20 00:30:44 -04:00
Andrew Steinborn
85e5fb4827
Allow existing players to be kicked from server if in online-mode
...
Fixes #226
2019-07-19 13:25:04 -04:00
Andrew Steinborn
40c8343494
Help smoke out some internal concurrency issues
2019-07-08 21:28:18 -04:00
Gabik21
3a1b5099c9
Merge branch 'dev/1.1.0' of github.com:VelocityPowered/Velocity
2019-07-06 01:08:21 +02:00
Andrew Steinborn
2671590ad2
Clean up LoginPluginResponse and use DeferredByteBufHolder too
2019-07-05 12:53:17 -04:00
Gabik21
d0ad0fac36
Merge branch 'dev/1.1.0' of github.com:VelocityPowered/Velocity
2019-07-05 10:59:29 +02:00
Andrew Steinborn
8bf9e0e829
Improve backwards-compatibility with 1.0.x due to RawCommand changes
2019-07-04 23:53:04 -04:00
Seppe Volkaerts
6d2e1bf379
Wait for player disconnect events on shutdown. ( #229 )
2019-07-04 23:49:40 -04:00
Andrew Steinborn
a053ab6c34
Remove resource leak detection level setting
2019-07-03 22:46:47 -04:00
Andrew Steinborn
fba3bfb0be
Forge is confirmed working
2019-07-03 22:45:25 -04:00
Andrew Steinborn
11a86e9bb9
Convert Velocity to use ByteBuf-derived plugin message packets
...
Only tested with 1.12.2, not 1.13 or Forge
2019-07-03 09:20:32 -04:00
Andrew Steinborn
39c505f6fd
Readd missing null check. Fixes #228
2019-07-02 13:25:17 -04:00
Andrew Steinborn
a63e905edf
Use custom ThreadFactory that does FastThreadLocal wrapping for us
...
This primarily has the benefit of not giving threads strange names
2019-07-02 09:10:00 -04:00
Andrew Steinborn
190f2fee75
Remove kqueue bug workaround since the issue is now fixed upstream
...
See https://github.com/netty/netty/pull/9149
2019-07-02 02:36:46 -04:00
Andrew Steinborn
dab9c9a382
Use Netty thread factory to take advantage of FastThreadLocal
...
This should reduce CPU usage slightly.
2019-07-02 02:19:52 -04:00
Andrew Steinborn
c0becce276
Remove debug code
2019-07-02 00:33:25 -04:00
Andrew Steinborn
7834acd67f
Reduce duplicated code used to support RawCommand. Fixes #227
2019-07-02 00:25:43 -04:00
Gabik21
5c314c9068
Add 1.7 Protocol Support
2019-07-01 08:56:22 +02:00
Andrew Steinborn
f0ba7e1eea
Add method to check if an entry already exists in the tab list.
2019-07-01 00:07:20 -04:00
Andrew Steinborn
275685f45f
Merge branch 'master' into dev/1.1.0
...
# Conflicts:
# build.gradle
2019-06-30 23:52:22 -04:00
Andrew Steinborn
226074a0df
Add suggestion for reconnecting for "not online-mode" message
2019-06-29 14:35:28 -04:00
Andrew Steinborn
81840abc86
Enforce at least one parameter in CommandManager#register()
...
The old register method has been deprecated.
2019-06-22 21:13:20 -04:00
Andrew Steinborn
04a23e3622
Introduce raw String-based command API
2019-06-18 00:13:49 -04:00
Andrew Steinborn
1fd2bd9ee4
Avoid sending duplicate set latency/gamemode/display name packets
2019-06-15 17:08:05 -04:00
kashike
335c34a679
Explicity bind the main plugin class in the singleton scope
2019-06-14 01:06:08 -07:00
Andrew Steinborn
d7e4e20c76
This is Velocity 1.0.0
2019-06-12 18:10:33 -04:00
Andrew Steinborn
cc6d060fc5
Clarify error message
2019-06-12 00:43:30 -04:00
Andrew Steinborn
b19d36e939
Strictly enforce packet size limits for incoming compressed packets
2019-06-09 04:25:13 -04:00
Vjatšeslav Maspanov
f64b44ec21
Remove protocol linking ( #212 )
2019-06-02 19:44:23 -04:00
Andrew Steinborn
8d61e7ffd0
Removed redundant (non-)nullable annotations from boss bar.
2019-06-02 17:57:31 -04:00
kashike
0a53343547
Rename some bossbar-related fields and methods
2019-06-02 14:47:41 -07:00
MrIvanPlays
20b34447f8
Add BossBar API ( #213 )
2019-06-02 15:02:43 -04:00
Andrew Steinborn
dfe210707f
Replace uses of deprecated LegacyComponentSerializer.INSTANCE
2019-05-31 15:50:46 -04:00
Andrew Steinborn
4e71788aba
Work around kqueue transport bug with fallback connections.
2019-05-27 14:00:20 -04:00
Leymooo
85c6238d68
1.14.2 support
2019-05-27 17:20:42 +03:00
Andrew Steinborn
b5f099824d
Remove debug.
2019-05-26 18:37:33 -04:00
Andrew Steinborn
4d6e836890
Fix Checkstyle
2019-05-26 18:14:54 -04:00
Andrew Steinborn
deeb068825
Merge branch 'metrics'
2019-05-26 18:10:56 -04:00
Andrew Steinborn
9d14af5a8b
Add Metrics to Velocity
...
Velocity will send metrics to bStats.org. These statistics are
publicly viewable at https://bstats.org/plugin/server-implementation/Velocity
You can always opt-out by disabling metrics in your velocity.toml.
There is no obligation to allow us to collect metrics, but you can
show your support by leaving metrics on.
2019-05-26 18:10:44 -04:00
Andrew Steinborn
df9883cc6c
Reduce unnecessary memory copies in StatusSessionHandler
...
Take advantage of the fact that Java has mutable strings when writing
out server ping responses, which Netty can work with when writing out
UTF-8 character sequences. This reduces the memory allocation impact of
server list ping responses by ~31%.
2019-05-24 06:55:19 -04:00
Andrew Steinborn
3cee15a9cb
Move proxy shutdown to take place in a new thread.
2019-05-23 15:09:11 -04:00
Andrew Steinborn
df7eb4ade0
Ensure the proxy doesn't shut down too early if stdin is EOF.
2019-05-23 14:50:58 -04:00
Andrew Steinborn
b09331b79b
Small optimization for writing packets to the client from the server
...
The layers of indirection to get to the MinecraftConnection causes a
small, but not insignificant hit to performance.
2019-05-21 00:33:35 -04:00
Andrew Steinborn
a684aaa325
Make sure to complete the result too
2019-05-19 21:56:09 -04:00
Andrew Steinborn
321b42d225
Add some exception logging to the transition session handler.
2019-05-19 21:55:38 -04:00
Andrew Steinborn
5524f3b720
Ensure empty (un)register packets are never sent.
...
Bukkit 1.13+, in particular, doesn't seem to like it very much. This was
also a bug in ViaVersion.
2019-05-17 18:16:28 -04:00
Andrew Steinborn
40b2c9993b
Clean up some connection checks
2019-05-17 06:27:19 -04:00
Luck
72c668c048
Only unregister event handlers/listeners if the correct matching plugin is given
...
Currently, unregister will succeed & unregister a handler/listener if any valid plugin is given, not necessarily the one the handler was registered with.
2019-05-17 10:59:35 +01:00
Luck
21a79d8142
Correctly register Event handlers in the registeredHandlersByPlugin map
2019-05-17 10:58:11 +01:00
Andrew Steinborn
3ec67a7d4d
Optimize VelocityEventManager#fireAndForget()
...
There isn't a need to create a CompletableFuture when firing an event
and we do not want to know when it is completed.
2019-05-16 17:29:55 -04:00
Andrew Steinborn
9e6e1856e6
Add /glist command.
...
A much-needed base command, this is now available in Velocity directly.
It is partially inspired by the RedisBungee /glist command, which I also
created.
By default, /glist only provides the player count of the proxy. You can
view the player list for an individual server with /glist <server>, or
you can view the information for all players with /glist all.
2019-05-16 01:46:54 -04:00
Andrew Steinborn
4ab02cb636
Clean this up a bit
2019-05-15 19:02:31 -04:00
Andrew Steinborn
a21eaa085a
Do a better job of passing channel (un)registration to the client.
...
Also fixes a regression related to WDLCompanion.
2019-05-15 18:59:28 -04:00
Andrew Steinborn
552f02ed60
Fix Checkstyle
2019-05-15 17:10:07 -04:00
Andrew Steinborn
6d42a3c37c
Explicitly rewrite legacy plugin message channels for 1.13+ clients.
2019-05-15 17:04:45 -04:00
Andrew Steinborn
d805f79d9b
Try to unbreak ViaVersion a little bit.
2019-05-15 15:52:07 -04:00
Andrew Steinborn
742865bf0a
Merge pull request #204 from VelocityPowered/plugin-message-cleanups
...
Plugin message handling cleanup and fixes
2019-05-15 06:31:18 -04:00
Andrew Steinborn
6eabf82513
Fix inaccurate comment.
2019-05-14 04:26:16 -04:00
Andrew Steinborn
d7136150fd
Get rid of the Guava Subscribe annotation check
...
I think we can trust that if you're working with Velocity, you can find
the right Velocity subscribe annotation.
2019-05-14 04:18:18 -04:00
Andrew Steinborn
5bd9f0a96f
CappedSet.newCappedSet() -> CappedSet.create()
2019-05-14 04:11:49 -04:00
Andrew Steinborn
57085feb42
Better document what plugin channels we need to forward onto clients.
2019-05-12 11:09:50 -04:00
Andrew Steinborn
3c9cc2c4a8
Remove unrelated change
2019-05-12 10:48:47 -04:00
Andrew Steinborn
16d557a109
Fix checkstyle
2019-05-12 10:46:11 -04:00
Andrew Steinborn
b5fcf685be
Kill debug
2019-05-12 10:06:01 -04:00
Andrew Steinborn
adfb33ad21
Fix server-sent plugin message channels, fixing WDLCompanion and similar
...
Closes #203
2019-05-12 10:05:22 -04:00
Andrew Steinborn
5f0470fb0b
Checkstyle, CappedCollection -> CappedSet
2019-05-10 07:42:47 -04:00
Andrew Steinborn
74afcee9ba
Suspect this is the fix to #203 , but I'm unsure
2019-05-10 04:53:57 -04:00
Andrew Steinborn
c26dc75c44
More robust check
2019-05-10 04:44:01 -04:00
Andrew Steinborn
01be943c3f
Initial work on cleaning up plugin message handling in Velocity
2019-05-10 04:32:29 -04:00
Andrew Steinborn
37999ed32e
Support 1.14-pre2
2019-05-10 02:51:00 -04:00
kashike
3800610f66
Bump text to 3.0.0
2019-05-06 19:34:53 -07:00
Andrew Steinborn
472f45df08
Don't resolve IP addresses in the config except for the bind one.
2019-04-29 01:59:55 -04:00
Andrew Steinborn
de51ea18cc
Forward other client-known plugin messages during the transition as well
...
Fixes #197
2019-04-29 00:52:06 -04:00
Andrew Steinborn
8517d58673
Reduce erroneous DNS lookups for Velocity in Kubernetes.
2019-04-27 20:37:31 -04:00
Andrew Steinborn
e9950da0c5
Enable multi-release flag to improve Java 9+ compatibility
2019-04-25 19:12:22 -04:00
Andrew Steinborn
cbd922764e
Fix Checkstyle (again)
2019-04-24 21:39:15 -04:00
Andrew Steinborn
632d0b6ba8
Handle plugin channel registrations during initial connect as well.
...
Fixes #193
2019-04-24 21:28:43 -04:00
Andrew Steinborn
1661cece2d
An Easter basket bearing gifts! ( #191 )
...
* Delay switch to new server until after JoinGame is sent.
Unfortunately, in some cases (especially vanilla Minecraft) some login
disconnects are sent after ServerLoginSuccess but before JoinGame.
We've been using ServerLoginSuccess but it has caused too many problems.
Now Velocity will switch to a stripped-down version of the play session
handler until JoinGame is received. This handler does very little by
itself: it simply forwards plugin messages (for Forge) and waits for the
JoinGame packet from the server.
This is an initial version: only vanilla Minecraft 1.12.2 was tested.
However this is the way Waterfall without entity rewriting does server
switches (which, in turn, is inherited from BungeeCord).
* Move to Gradle 5 and Error Prone.
2019-04-24 14:36:49 -04:00
Andrew Steinborn
c8e33eef60
Properly compare against MIN/MAX_VALUE
2019-04-23 13:52:03 -04:00
Leymooo
877532d3b8
fix brigadier on 1.14
2019-04-23 16:26:32 +03:00
Leymooo
ac192c281c
1.14-pre5
2019-04-18 22:45:17 +03:00
Andrew Steinborn
564cb99861
Add Player#getGameProfile() to make tab list plugins easier to make.
2019-03-29 15:01:52 -04:00
Andrew Steinborn
118574e535
Updated log4j and Checker Framework
...
Updating Checker Framework flagged numerous warnings, which have been
corrected. These probably involve type declarations lacking a nullness
annotation that appeared elsewhere.
2019-03-28 22:27:51 -04:00
Andrew Steinborn
9491f948f8
Upgraded Gradle Shadow plugin to 4.0.4 (last Gradle 4.x version)
2019-03-28 22:01:33 -04:00
Andrew Steinborn
611a31b7bb
Attempt to allow Eclipse to import the Gradle project.
2019-03-28 21:46:45 -04:00
Andrew Steinborn
b369256400
Merge branch 'master' of https://github.com/creeper123123321/Velocity into creeper123123321-master
2019-03-24 13:57:26 -04:00
Andrew Steinborn
07b775d892
Notify on read-timeout instead of emitting exception
2019-03-17 19:44:22 -04:00