Commit Graph
100 Commits
Author SHA1 Message Date
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
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 fc9e2d576d Update for Minecraft 1.14.1 2019-05-13 12:12:08 -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
Andrew SteinbornandGitHub 2bba87e8da Merge pull request #201 from VelocityPowered/text3
Bump text to 3.0.0
2019-05-06 23:20:29 -04: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 dc6613a328 Update Gradle Shadow to fix build 2019-04-25 23:05:16 -04:00
Andrew Steinborn e9950da0c5 Enable multi-release flag to improve Java 9+ compatibility 2019-04-25 19:12:22 -04:00
Andrew Steinborn 5d10b16145 Velocity is 1.0.0-SNAPSHOT 2019-04-25 00:47:02 -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 SteinbornandGitHub 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
Andrew Steinborn 545966a4e7 Minecraft 1.14 2019-04-23 13:46:49 -04:00
Andrew Steinborn 7472392ce2 Update Netty to 4.1.35.Final 2019-04-21 03:37:29 -04:00
Andrew Steinborn edcd13b532 Fix Checkstyle issues 2019-04-21 02:56:29 -04:00
Andrew Steinborn dea7c215d7 Allow empty channel names (but not namespaces). 2019-04-21 02:52:52 -04:00
Andrew SteinbornandGitHub 7a5d8d424a Update README.md 2019-04-13 22:34:06 -04: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 2c5a6d0f67 Merge branch 'creeper123123321-master' 2019-03-24 14:00:12 -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
Andrew Steinborn 45574ce952 Remove connection pool for HTTP connections for now.
The upstream feature this relies on will be gone in Netty 5.x and there
is probably more benefit in using the connection's event loop to connect
to Mojang's authentication servers.
2019-03-10 23:40:18 -04:00
Andrew Steinborn 432d570474 Allow fallback to other server connections in the event of an exception.
Also removes some debugging code.
2019-03-10 14:11:24 -04:00
Andrew Steinborn f16e67cfad Update Netty to 4.1.34.Final 2019-03-10 04:48:22 -04:00
Andrew Steinborn c7a379ebb8 Include server that we attempted to connect to in the result. 2019-03-08 23:51:47 -05:00
Andrew Steinborn fa9d5f6499 Fire ProxyShutdownEvent _after_ the event manager thread pool shuts down
Fixes #177
2019-03-06 22:51:39 -05:00
Andrew Steinborn 5ccf22c5c4 Relax (i.e. remove all checks) on the hostname.
While validating this is a good idea, it causes too many issues in
practice. We will still clean the server address but no validation is
performed on the address.
2019-03-06 17:45:38 -05:00
Andrew Steinborn c8e3e7ff94 Initializing the handshake registry explicitly is redundant. 2019-02-20 21:19:04 -05:00
Andrew Steinborn 3c8055019e Actually use the correct time units for read timeouts. Fixes #174 2019-02-20 21:05:32 -05:00
Andrew Steinborn c6dcba36c3 Fix another case where an in-flight connection would be retained. 2019-02-20 13:55:27 -05:00
Andrew Steinborn 1ec070069f Fix misplaced connection in flight reset. Fixes #173 2019-02-19 15:09:58 -05:00
Andrew Steinborn 6a8345e045 Forgot to include equals/hashCode on the object key 2019-02-16 16:20:50 -05:00
Andrew Steinborn b3c87ef756 Remove an errant semicolon 2019-02-16 16:17:33 -05:00
Andrew Steinborn f4a10e64e0 More proper host/SSL setup. See #172 2019-02-16 16:16:28 -05:00
Andrew Steinborn 332f931534 More accurate length setting 2019-02-15 17:48:36 -05:00
Andrew Steinborn f042d214d3 Update copyright year in /velocity version 2019-02-15 16:09:37 -05:00
Andrew Steinborn a0e1359557 Fix build 2019-02-15 16:07:19 -05:00
Andrew Steinborn 02a725035c Another round of improvements to tab complete. Fix fallback servers. 2019-02-15 16:03:15 -05:00
Andrew Steinborn 12f5bdfc48 Properly implement fallback support. 2019-02-15 15:07:38 -05:00
Andrew Steinborn 7d4d81fff1 Improve HandshakeSessionHandler#cleanVhost() 2019-01-28 00:34:51 -05:00
Andrew Steinborn 6eb6c99fa7 Simplify MinecraftConnection release logic. 2019-01-27 22:57:40 -05:00
Andrew Steinborn 56873712ec Use the player's event loop for their server connections.
This approach reduces context switching, giving us that much extra boost
in throughput.
2019-01-19 03:21:46 -05:00
Andrew Steinborn 865f9e5ef9 Bump the pool buffer size to 4MiB temporarily 2019-01-19 03:02:50 -05:00
Andrew Steinborn e2f93c6ac6 Set Netty pooled buffer size to 2MiB 2019-01-19 02:48:11 -05:00
Andrew Steinborn 0b0fa0a352 Substantially-improved ancient server list ping support.
Velocity now flawlessly supports 1.6 and below server list pings along
with a notice to reconnect with a more modern version of Minecraft if
possible.
2019-01-19 01:07:30 -05:00
Andrew Steinborn 078d0ebc96 Fix bad Respawn packet ID, which broke 1.12.1 2019-01-19 00:09:18 -05:00
Andrew Steinborn 027fcf3825 Gradle doesn't like JDK 11 2019-01-12 11:02:24 -05:00
Andrew Steinborn aac42d1184 Configure Travis-CI 2019-01-12 10:58:42 -05:00
Andrew Steinborn c7b6afe5b8 Fix merge checkstyle issues 2019-01-12 10:52:02 -05:00
Andrew Steinborn 564b87de1d Avoid ByteBuf#slice(). We can simply reset the reader index. 2019-01-12 00:25:11 -05:00
Andrew Steinborn 1a2b162353 Cleaner and more correct to use ByteBufs directly. 2019-01-11 18:32:03 -05:00
Andrew Steinborn 1e041963f0 Use just one byte array in the varint frame decoder. 2019-01-11 18:04:51 -05:00
Andrew Steinborn f77384d32e Ensure that Velocity will always resolve DNS names for HTTP async. 2019-01-11 17:51:29 -05:00
Andrew Steinborn 2b7b33bd42 Reduce object allocations in MinecraftVarintFrameDecoder. 2019-01-11 17:46:57 -05:00
Andrew Steinborn 5dbe6aa808 Rename connection field in ConnectedPlayer.
This sounds stupid, but YourKit really casts its net wide when it tries
to instrument usages of JDBC. Velocity doesn't use JDBC, and yet if you
run Velocity with YourKit (even without profiling active) you pay a
significant cost.
2019-01-11 17:46:33 -05:00
Andrew Steinborn d8e7f87506 Forgot to update the JNI compile script for Linux. 2019-01-11 14:15:07 -05:00
Andrew Steinborn 9daa6c3a64 Prettify JNI stuff. 2019-01-11 14:13:13 -05:00
Andrew Steinborn 1ddeb85f60 Try to reduce JNI calls into compressor.
Comparatively speaking, JNI calls are very expensive, so we want to
reduce them as much as possible.
2019-01-10 21:10:00 -05:00
Andrew Steinborn e240dac55b No need to bring in Gson instance, when toString() does the same thing. 2019-01-06 08:47:29 -05:00
Andrew Steinborn c30974a148 Clarifications in ProtocolUtils. 2019-01-05 14:55:01 -05:00
Andrew Steinborn 221ee510ff Minor cleanup. 2019-01-01 04:34:31 -05:00
Andrew Steinborn 0906a436e3 Fix bug with tab-completing names on 1.12 and lower. 2019-01-01 04:34:13 -05:00
Andrew Steinborn 696b6549e5 Stronger TLS settings.
Velocity will now validate the hostname and use TLSv1.2 only.
2018-12-30 11:13:58 -05:00
Andrew Steinborn 466d06216d Fix minor bug in JavaVelocityCipher 2018-12-30 11:08:13 -05:00
Andrew Steinborn 25773cd366 Fix typo, clarification, pre-size buffer in ensureCompatible(). 2018-12-30 07:18:19 -05:00
Andrew Steinborn ae850443ad Fix build due to checkstyle 2018-12-30 06:50:44 -05:00
Andrew Steinborn 8588e7f1fe Optimize native handling further.
We now try to work within the boundaries given by the native. In the
case of Java natives, we work with byte arrays. With natives, always use
direct buffers.

However, the numbers do favor the natives, since they work with direct
byte buffers, without any copying. For the most part, this commit is
intended to improve the lives of Velocity users on Windows.
2018-12-30 06:16:04 -05:00
Andrew Steinborn 095a478440 Always ensure we don't pass a heap ByteBuf to the natives. 2018-12-30 04:53:47 -05:00
Andrew Steinborn 1c50922cba Make sure we can get memory addresses before we think about natives. 2018-12-30 04:33:10 -05:00
Andrew Steinborn 977d29ffa0 Fix Checkstyle errors 2018-12-30 03:58:50 -05:00
Andrew Steinborn 5bf936d1b9 Add unit tests 2018-12-30 03:57:05 -05:00
Andrew Steinborn 9ce4294e6e Fix forced hosts with SRV records. 2018-12-30 03:52:50 -05:00
Andrew Steinborn 4167b79553 Update CONTRIBUTING.md since we now enforce Checkstyle. 2018-12-30 03:31:32 -05:00
Andrew Steinborn abc5ef7f5e Full Checkstyle compliance at last. 2018-12-30 03:28:45 -05:00
Andrew Steinborn 20c3966f6f Make PluginDependencyUtils test more consistent. 2018-12-30 03:05:26 -05:00
Andrew Steinborn 89bcc9a100 Grab most of the low-hanging fruit. 2018-12-29 17:22:36 -05:00
Andrew Steinborn f898b766f1 Fix resource pack sending on <= Minecraft 1.9.4 2018-12-29 16:41:58 -05:00
Andrew Steinborn c8f73ea0ab Add Javadoc to resource pack API 2018-12-29 15:37:56 -05:00
Andrew Steinborn 0ca0c2a297 Resource pack API 2018-12-29 15:21:47 -05:00
Andrew Steinborn 280563ffa0 Clarifications around plugin message API. 2018-12-29 14:25:06 -05:00