Commit Graph
100 Commits
Author SHA1 Message Date
Andrew Steinborn dbfbd1e2a9 Rename ConnectedPlayer#minecraftConnection -> ConnectedPlayer#connection
This is consistent with VelocityServerConnection
2019-08-17 20:17:12 -04:00
Andrew Steinborn d68cbbd906 Remove inaccurate "Status" section
I'm just one person, I can't keep this stuff updated everywhere.
2019-08-17 20:12:09 -04:00
Andrew Steinborn 7f3e7a82c4 Update text 3.0.2
cc @lucko
2019-08-11 20:36:00 -04:00
Andrew Steinborn b3ca066a17 Lower write water mark to 1MB 2019-08-10 14:08:45 -04:00
Andrew Steinborn 661ec3103a Bump to Guice 4.2.2 for Java 11 plugin support 2019-08-09 15:39:46 -04:00
Andrew Steinborn 648c149872 Fix bug where connect() wouldn't reset in-flight connections 2019-08-08 17:22:38 -04:00
Andrew Steinborn e476ee815a Revert "Merge branch 'feature/flush-consolidation' into dev/1.1.0"
This reverts commit f72f50819d, reversing
changes made to 3b9db94ce9.
2019-08-08 08:22:37 -04:00
Andrew Steinborn f72f50819d Merge branch 'feature/flush-consolidation' into dev/1.1.0 2019-08-07 21:17:52 -04:00
Andrew Steinborn 3b9db94ce9 Explicitly parse IP addresses before using an unresolved address
This allows plugins to more correctly use InetSocketAddress#getAddress(),
however "gotchas" remain.
2019-08-07 16:22:07 -04:00
Andrew Steinborn 32ef77f954 Flush consolidation tweaks 2019-08-07 16:04:34 -04:00
Andrew Steinborn 195a506117 Flush consolidation 2019-08-07 15:02:48 -04:00
Andrew SteinbornandGitHub 2c3b30fff2 Merge pull request #240 from VelocityPowered/feature/ping-passthrough
Ping passthrough
2019-08-07 12:21:50 -04:00
Andrew Steinborn e3c75a7fcc Silence TCP_FASTOPEN warnings when not using epoll and fast open enabled 2019-08-06 06:43:27 -04:00
Andrew Steinborn 62c6adb204 Consider forced hosts in ping passthrough 2019-08-06 03:26:55 -04:00
Andrew Steinborn d8fb7c11e7 Clean up slightly, don't use streams 2019-08-06 03:16:24 -04:00
Andrew Steinborn ca9a4492c4 Add support for ping pass-through
By default, ping pass-through is not enabled. However, you can use
ping passthrough to pass through just mods (great for modded servers)
or everything.
2019-08-06 02:06:53 -04:00
Andrew Steinborn 9f3d1a2390 Fix Checkstyle, again 2019-08-05 11:01:18 -04:00
Andrew Steinborn 2d9227ccf0 Fix Checkstyle 2019-08-05 10:51:45 -04:00
Andrew Steinborn b4e62443c9 Add arbitrary chat tab complete event. Fixes #236 2019-08-05 10:30:55 -04:00
Andrew Steinborn 19cec571d0 Clean up some junk 2019-08-05 09:53:18 -04:00
Andrew Steinborn 7db757cd04 Allow certain mangled large packets to pass through 2019-07-30 17:10:10 -04:00
Andrew Steinborn 162bb8e191 Update to Netty 4.1.38.Final 2019-07-30 13:05:26 -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 8d5f5e48f2 Fix Travis build matrix 2019-07-26 01:36:28 -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
Andrew SteinbornandGitHub 7fde18c9f8 Merge pull request #237 from Minecrell/tca-1.2.0
Update TerminalConsoleAppender to 1.2.0
2019-07-21 12:59:43 -04: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
Andrew Steinborn 2671590ad2 Clean up LoginPluginResponse and use DeferredByteBufHolder too 2019-07-05 12:53:17 -04:00
Andrew Steinborn 8bf9e0e829 Improve backwards-compatibility with 1.0.x due to RawCommand changes 2019-07-04 23:53:04 -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 6784df91c7 Update Netty to 4.1.37.Final 2019-07-02 02:32:25 -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
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 a8684ddec5 Bump to 1.0.2-SNAPSHOT for continued development 2019-06-24 21:38:06 -04:00
Andrew Steinborn 904e39b73a Velocity 1.0.1 2019-06-24 21:37:45 -04:00
Andrew SteinbornandGitHub ed4a431297 Merge pull request #222 from Leymooo/1.14.3
1.14.3
2019-06-24 13:32:26 -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 ed8209cfd1 Merge branch 'master' into dev/1.1.0 2019-06-22 21:01:46 -04:00
Andrew Steinborn 5a209a098c Fix memory leak in NativeVelocityCipher 2019-06-22 16:03:55 -04:00
Andrew SteinbornandGitHub a3ce20914f Merge pull request #221 from Leymooo/1.14.3
1.14.3-pre4
2019-06-22 13:00:53 -04:00
Andrew Steinborn c55ab2c908 Make sure to include the right repo 2019-06-18 07:48:03 -04:00
Andrew Steinborn 8a45074eb2 Include Configurate 2019-06-18 07:45:45 -04:00
Andrew Steinborn 04a23e3622 Introduce raw String-based command API 2019-06-18 00:13:49 -04:00
Andrew Steinborn 42df0fd2ad Mark 1.1.0 as in development 2019-06-17 23:51:17 -04:00
Andrew Steinborn 1fd2bd9ee4 Avoid sending duplicate set latency/gamemode/display name packets 2019-06-15 17:08:05 -04:00
Andrew Steinborn 57c8c07c9d Bump to 1.0.1-SNAPSHOT for continued development 2019-06-12 18:14:44 -04:00
Andrew Steinborn d7e4e20c76 This is Velocity 1.0.0 2019-06-12 18:10:33 -04:00
Andrew Steinborn b0736548a9 Strengthen check in JavaVelocityCompressor 2019-06-09 04:43:24 -04:00
Andrew Steinborn b19d36e939 Strictly enforce packet size limits for incoming compressed packets 2019-06-09 04:25:13 -04:00
Andrew Steinborn 8d61e7ffd0 Removed redundant (non-)nullable annotations from boss bar. 2019-06-02 17:57:31 -04:00
Andrew Steinborn dfe210707f Replace uses of deprecated LegacyComponentSerializer.INSTANCE 2019-05-31 15:50:46 -04:00
Andrew Steinborn a77fee9ad1 Bump Velocity to text 3.0.1 2019-05-31 15:45:24 -04:00
Andrew SteinbornandGitHub 70242d54a0 Because someone asked, update the README 2019-05-31 15:02:14 -04:00
Andrew Steinborn 4e71788aba Work around kqueue transport bug with fallback connections. 2019-05-27 14:00:20 -04:00
Andrew SteinbornandGitHub 5baf3c8236 Merge pull request #210 from Leymooo/1.14.2-protocol
1.14.2 support
2019-05-27 13:46:01 -04: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 b881e9cf04 Do a small sanity check, however 2019-05-21 00:58:52 -04:00
Andrew Steinborn 821a7a45bc Small optimization for NativeVelocityCipher
Instead of going through the general process function, which does extra
checks to ensure that its arguments are sane, move "closer" to the action
by stripping down to the actual implementation.
2019-05-21 00:56:14 -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
Andrew SteinbornandGitHub 586be46bba Merge pull request #207 from lucko/fix/event-unregister
EventManager fixes
2019-05-17 06:06:03 -04: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 b0b445c044 Fix Javadoc link for text API 2019-05-15 19:20:51 -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 SteinbornandGitHub 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