Commit Graph
100 Commits
Author SHA1 Message Date
Andrew Steinborn d7e18b2cb1 Make channels case-insensitive because NuVotifier uses a mixed-case name 2018-08-31 15:27:11 -04:00
Andrew Steinborn d3a14721bc Fix typo that forced modern forwarding on. 2018-08-31 15:26:44 -04:00
Andrew Steinborn b7725a7764 More sane shutdown code. 2018-08-28 21:27:03 -04:00
Andrew Steinborn 5773fe240b Use a HashSet here as it is more appropriate for the situation. 2018-08-28 21:24:49 -04:00
Andrew Steinborn 6f8dae3a7e Removed all references to the static VelocityServer instance. 2018-08-27 00:45:00 -04:00
Andrew Steinborn fead4783af Another misc cleanup for bossbars. 2018-08-27 00:25:39 -04:00
Andrew Steinborn c2fa5d3ff1 Make sure to deny 1.12.2 and below clients in "modern" IP forwarding. 2018-08-27 00:25:30 -04:00
Andrew Steinborn b5ebb4541f Clean ups around the codebase. 2018-08-27 00:24:58 -04:00
Andrew Steinborn c7469ec13c Removed all entity ID rewriting logic.
This was all a no-op anyway, and should the need for this arise again,
it is trivial to re-add. However, Velocity does not need this, and
probably will never need it. Let's have the complexity go away.
2018-08-26 23:58:35 -04:00
Andrew Steinborn f27b7e4e2f Fix improper packet mapping for chat messages.
This fixes the statistics display on the client.
2018-08-26 23:47:23 -04:00
Andrew Steinborn 42f0dbf646 Expand README 2018-08-26 23:42:01 -04:00
Andrew Steinborn db3f2b86e1 Remove unused client settings field from ConnectedPlayer 2018-08-26 23:23:13 -04:00
Andrew Steinborn 8e0ca2033e Explicitly cover unexpected disconnects during login 2018-08-26 22:43:18 -04:00
Andrew Steinborn d482dc7f4f Clean this up 2018-08-26 19:44:15 -04:00
Andrew Steinborn 79f4abcf90 Expand /server command.
The command now supports displaying the server you are currently on and
takes full advantage of the JSON-based text component system to prettify
its output.
2018-08-26 19:41:18 -04:00
Andrew Steinborn 01c1002249 Make sure to schedule on the thread pool and not on the scheduler. 2018-08-26 18:43:55 -04:00
Andrew Steinborn 1e178cfe2a Properly block connecting to Velocity with legacy forwarding.
I also took the opportunity to improve the disconnect handling for
Disconnect messages from the server.
2018-08-26 18:18:02 -04:00
Andrew Steinborn 44c4221e19 Add /end alias for /shutdown. 2018-08-26 18:02:55 -04:00
Andrew Steinborn ef556afbf3 Rewrote scheduler to use ScheduledExecutorService for delay/repeat tasks 2018-08-26 17:56:43 -04:00
Andrew Steinborn ffd6217170 Broaden a catch clause so Java Errors while loading plugins don't halt the proxy. 2018-08-26 14:40:07 -04:00
Andrew Steinborn 27288685ff Register 1.13+ channels on legacy clients too.
Prior to this commit, Velocity registered 1.13 and "legacy" channels
differently. This commit unifies both for legacy clients to make
compatibility easier. It also fixes a related issue in the new LuckPerms
port to Velocity.
2018-08-26 14:39:31 -04:00
Andrew Steinborn 2f6642dcd8 Make the c/v/api/proxy/player package more general. 2018-08-25 21:44:53 -04:00
Andrew Steinborn f273c046ec Add javadoc and reorganize the player settings stuff. 2018-08-25 12:54:30 -04:00
Andrew Steinborn 2b3503e2df Fix compile. 2018-08-25 11:02:20 -04:00
Andrew Steinborn d0ecc2b623 Allow making the "players" response null. 2018-08-25 10:59:42 -04:00
Andrew Steinborn c1b1e71075 Fix a typo. 2018-08-25 10:56:32 -04:00
Andrew Steinborn ebb1810392 Merge remote-tracking branch 'origin/master' 2018-08-25 01:15:00 -04:00
Andrew Steinborn 168c36facf Bring to latest master 2018-08-25 01:13:00 -04:00
Andrew Steinborn a37a0d6665 Merge branch 'master' into native-crypto
# Conflicts:
#	native/src/main/java/com/velocitypowered/natives/util/Natives.java
2018-08-25 01:12:26 -04:00
Andrew Steinborn 1acf9e1bbb Make sure to clean up old stuff 2018-08-25 00:44:32 -04:00
Andrew Steinborn 9033b1c051 Prepare Javadoc deployment 2018-08-25 00:42:54 -04:00
Andrew Steinborn 7ee56d9f5f Massively improved Javadoc coverage to prepare for Javadoc site. 2018-08-25 00:29:22 -04:00
Andrew Steinborn 4fb415c845 A little cleanup on the GameProfileRequestEvent. 2018-08-24 21:51:31 -04:00
Andrew Steinborn 87ffb1ac2f Add even more Javadoc. 2018-08-24 21:50:56 -04:00
Andrew Steinborn bc2f3a7288 Clean up ConnectedPlayer initialization. 2018-08-24 21:30:58 -04:00
Andrew Steinborn 5389ec1baf Fix compile. 2018-08-24 21:16:48 -04:00
Andrew Steinborn afb6e69388 Improve Javadoc and the GameProfileRequestEvent. 2018-08-24 21:09:56 -04:00
Andrew Steinborn e6e3ccaa95 Fix minor bug with shutdown messages. 2018-08-23 21:57:10 -04:00
Andrew Steinborn 91265b12a3 Fix repeat 2018-08-23 21:51:15 -04:00
Andrew Steinborn 8fd026e025 Totally removed all uses of jsr305. Fixes #38 2018-08-22 21:46:17 -04:00
Andrew Steinborn 27760f5a97 Limit scope of "attempted server connections" to just initial log ons. 2018-08-22 21:10:14 -04:00
Andrew Steinborn 2d21c01f8a Fix boss bar handling on Minecraft 1.13+. 2018-08-22 21:08:47 -04:00
Andrew Steinborn ccb904eeb1 Update for Minecraft 1.13.1 support 2018-08-22 20:53:53 -04:00
Andrew Steinborn d9c35a680a Plugins can get plugin messages now. 2018-08-22 18:59:10 -04:00
Andrew Steinborn c36f417b1e Add support for sending plugin messages over the wire 2018-08-22 00:53:02 -04:00
Andrew Steinborn 8352f7fa70 Add disconnect API call 2018-08-22 00:47:29 -04:00
Andrew Steinborn db9f668290 Merge branch 'plugin-messages' 2018-08-22 00:27:29 -04:00
Andrew Steinborn d94b58e45e One last try, this ought to work. 2018-08-22 00:03:06 -04:00
Andrew Steinborn 8ea1aef173 I'm crazy 2018-08-21 23:58:42 -04:00
Andrew Steinborn f6f48e9b2d This should do it 2018-08-21 23:58:17 -04:00
Andrew Steinborn 13215f132e Debugging Jenkins here... 2018-08-21 23:47:29 -04:00
Andrew Steinborn 7263c1046f Attempt 2 at Maven repo, now with modified Docker base image 2018-08-21 23:42:31 -04:00
Andrew Steinborn fd65887f1f Attempt 1 at Maven repo! 2018-08-21 23:35:09 -04:00
Andrew Steinborn 6bb7bc7081 Merge branch 'master' into plugin-messages 2018-08-21 23:29:05 -04:00
Andrew Steinborn 55041aa1b1 Add basic implementation. 2018-08-21 23:03:09 -04:00
Andrew Steinborn 3ed499c7c0 Note that these classes are immutable. 2018-08-21 22:45:55 -04:00
Andrew Steinborn 2b6786e1fa Started work on plugin messaging API. 2018-08-21 22:41:30 -04:00
Andrew Steinborn 7b84da2fa7 Cleaning up some stuff in the proxy implementation. 2018-08-21 22:29:01 -04:00
Andrew Steinborn 2d0c826ec9 Introduce ServerConnection interface
This will become very useful for plugin messaging support.
2018-08-21 21:51:31 -04:00
Andrew Steinborn 718f615d3f Simplify and improve the startup timer. 2018-08-13 07:23:49 -04:00
Andrew Steinborn 671df77c1f Forward the keep-alive packet directly onto the client.
This improves anti-cheat compatibility.
2018-08-12 08:06:50 -04:00
Andrew Steinborn 21e72556c9 Correctly handle rapid disconnects. Fixes #31 2018-08-11 06:46:40 -04:00
Andrew Steinborn 8068f72729 Fix up player info forwarding. 2018-08-11 00:22:24 -04:00
Andrew Steinborn 95bd152fee More protocol sanity. 2018-08-10 23:44:52 -04:00
Andrew Steinborn 8bf3b99b10 Make sure the client has time to respond to the player info packet.
Apparently, Minecraft 1.13 can take a little too long to respond to
Velocity's player info forwarding packet. This especially noticeable in
offline mode: by the time the client does respond, Velocity has already
completed the login process and tried connecting to the server (it is
very quick under offline mode).

Noticed by Leymooo.
2018-08-10 23:40:51 -04:00
Andrew Steinborn 8998bc7c8f Presize the maps.
TODO: Replace that ugly autoboxed primitive without excessively blowing
up the size of the JAR
2018-08-10 20:56:22 -04:00
Andrew Steinborn 9af6829688 Fix sending commands to remote server. 2018-08-10 03:05:59 -04:00
Andrew Steinborn 58e072ab94 Bumped to kyoripowered/text 1.12-1.6.2 2018-08-09 20:56:12 -04:00
Andrew Steinborn 0834bec997 Merge branch 'tab-complete' 2018-08-09 10:15:22 -04:00
Andrew Steinborn b78ddf7b85 Fix scoreboard teams on Minecraft 1.8. 2018-08-09 10:15:19 -04:00
Andrew Steinborn 2e1de306fb Complete tab-complete support back to Minecraft 1.8. 2018-08-09 10:14:44 -04:00
Andrew Steinborn 9a36bd6cae Merge branch 'master' into tab-complete 2018-08-09 09:47:30 -04:00
Andrew Steinborn 1f0a4a8228 Add support for HMACed player forwarding data.
This provides a small degree of security but also makes Velocity "secure
by default", especially on shared hosts.
2018-08-09 05:24:47 -04:00
Andrew Steinborn 254508a5cf Add connection attempt rate-limiting. 2018-08-09 03:23:27 -04:00
Andrew Steinborn db8b7c807c Add kqueue transport support 2018-08-08 10:10:11 -04:00
Andrew Steinborn 512b1c2403 Remove erroneously added getter 2018-08-08 09:45:38 -04:00
Andrew SteinbornandGitHub 84717a11da Update README.md 2018-08-08 09:22:47 -04:00
Andrew Steinborn 6bc5413038 Exclude all Gradle build folders 2018-08-08 05:59:26 -04:00
Andrew Steinborn a261823302 Add favicon support 2018-08-08 04:44:27 -04:00
Andrew Steinborn 54f9de04dc Add MC tab complete (incomplete, only 1.12.2 works) 2018-08-07 11:53:13 -04:00
Andrew Steinborn bb601dca4b Add console tab complete, shutdown command, gracefully kick players. 2018-08-07 11:02:35 -04:00
Andrew Steinborn a88d27af76 Ignore repeated shutdown requests. 2018-08-07 10:37:38 -04:00
Andrew Steinborn a7a227ed05 Add shutdown flag. 2018-08-07 10:14:34 -04:00
Andrew Steinborn 05693425bf Add a basic command handling framework inspired by Bukkit/BungeeCord.
This doesn't yet support tab complete, that will come later. Additionally,
a /server command (using your configuration) and /velocity (shows basic
copyright information about the proxy) have been added.
2018-08-07 09:34:31 -04:00
Andrew Steinborn 09eff5a2fb GS4 clients generally don't understand MC color codes (or JSON chat). 2018-08-07 07:56:28 -04:00
Andrew Steinborn b5fcc1b34a Fix GS4 issues. 2018-08-07 07:51:09 -04:00
Andrew Steinborn 3e0df79c98 Fix GS4 "can't bind to null" error. 2018-08-07 07:34:41 -04:00
Andrew Steinborn b983cdb7b3 Fix some spirous "connection closed" errors. 2018-08-07 07:18:54 -04:00
Andrew Steinborn a2b4291b36 Use Guava immutable integer arrays. 2018-08-07 07:18:21 -04:00
Andrew Steinborn abbdf70d5e [Experimental] Remove PacketWrapper objects
In both Velocity and BungeeCord, the most commonly created object is an
object that encapsulates a Minecraft packet and a its associated byte
data.

At first, I considered trying to recycle these objects, but then I
discovered that this object has no reason to exist, and actually somewhat
complicates the implementation. Thus, this commit removes these objects,
making Velocity more more GC-friendly by not allocating frequently-created
objects.

This is still an experimental change, but it's a fairly safe one to make.
2018-08-07 04:28:07 -04:00
Andrew Steinborn fdf5f27da6 Improve server list ping, especially for legacy MC versions. 2018-08-07 01:02:39 -04:00
Andrew Steinborn 48822fe55c Better case-insensitivity. 2018-08-05 17:14:39 -04:00
Andrew Steinborn a778825152 Add server registration API. 2018-08-05 17:10:18 -04:00
Andrew Steinborn 23a6488a39 Add default config again. Closes #12 2018-08-05 16:12:16 -04:00
Andrew Steinborn 4e64b04464 Avoid duplicate logins. 2018-08-05 01:30:40 -04:00
Andrew Steinborn 22d1398f73 Extend the API with a ProxyServer type. 2018-08-05 01:26:07 -04:00
Andrew Steinborn 0c7815b6e9 Disable the natives test for now 2018-08-04 23:48:31 -04:00
Andrew Steinborn 8aa1fe524e Native cryptography support using mbed TLS 2018-08-04 23:46:41 -04:00
Andrew Steinborn 06a6493605 Cleaned up connection code. 2018-08-04 03:18:57 -04:00
Andrew Steinborn 0ba85fe83f Introduce a fluent connection request API. 2018-08-04 03:13:17 -04:00