13
0
geforkt von Mirrors/Velocity
Commit graph

675 Commits

Autor SHA1 Nachricht Datum
Andrew Steinborn
d1473ed938 Move registration to be performed earlier. 2018-11-17 00:04:44 -05:00
Andrew Steinborn
866067bbed Further cleanup. 2018-11-15 20:49:30 -05:00
Andrew Steinborn
480f87a760 API breakage: Revamped some login stuff.
I have cleaned up some logic in the client login session handler and
revamped the GameProfile class somewhat. The most notable breaking
change is that Velocity now returns an UUID for getId() instead of an
undashed UUID, which was moved to a getUndashedId() method.
2018-11-15 19:54:55 -05:00
Andrew Steinborn
868976e09c Add Javadoc and remove all Checkstyle issues from API and natives. 2018-11-15 19:04:39 -05:00
Andrew Steinborn
a4cdc4884a
Merge pull request #132 from Yeregorix/master
Optimize GameProfile
2018-11-15 18:34:58 -05:00
Yeregorix
3cba196ba7 Remove Identifiable 2018-11-15 17:02:26 +01:00
Andrew Steinborn
17a5afcc9a Fix up some checkstyle stuff and include vendor in brand. 2018-11-15 02:36:48 -05:00
Andrew Steinborn
66f47ecff1 Filter out subcommands in /velocity that users can't access. 2018-11-15 02:17:59 -05:00
Andrew Steinborn
2b0daa2122 Explicitly exit the proxy if required. 2018-11-14 01:07:34 -05:00
Andrew Steinborn
5e0b9d09e7 Fix ServerPreConnectEvent not allowing overriding of servers. 2018-11-14 00:55:20 -05:00
Andrew Steinborn
6354f10874 Correct technical typo. 2018-11-14 00:29:51 -05:00
Yeregorix
da259951c7 Change 'set' prefixes to 'with' and add javadoc 2018-11-12 21:34:57 +01:00
Yeregorix
b6bb4ad1a1 Optimize GameProfile and add Identifiable interface 2018-11-12 19:50:52 +01:00
Andrew Steinborn
c94794a845 Properly register client channels. 2018-11-10 23:20:33 -05:00
Andrew Steinborn
762d9a3efb Fix plugin message forwarding from server to client. 2018-11-07 01:28:24 -05:00
Andrew Steinborn
73e3e1752a Plural. 2018-11-04 10:45:55 -05:00
Andrew Steinborn
70726bd07b Add /velocity plugins command. 2018-11-04 03:44:07 -05:00
Andrew Steinborn
a378ccdee0 Refactored rate-limiting.
If rate-limiting is disabled, we now use a simple stub implementation
that is simpler to reason with.
2018-11-03 17:36:00 -04:00
Andrew Steinborn
89e51bbcb9 Fix up some more code style issues. 2018-11-03 01:54:26 -04:00
Andrew Steinborn
e2389d96e9 Include implementation in the user-agent. 2018-11-03 01:39:28 -04:00
Andrew Steinborn
f423169449 Fix issues with server connections. 2018-10-29 19:25:51 -04:00
Andrew Steinborn
2b53d14461 Simplify and fix bug in setConnectedServer()
Also, while I'm here, fix a typo from a recent PR.
2018-10-29 02:58:29 -04:00
Andrew Steinborn
826eddc754 Disconnect obsolete server connections as quickly as possible. 2018-10-28 23:00:26 -04:00
Mark Vainomaa
e0330e9f27
Move and rename key escaping methods while I'm here 2018-10-28 18:18:44 +02:00
Mark Vainomaa
0c86f02c49
Save configuration after loading to ensure new options being present in file
For example if you had `[forced-hosts]` section missing, and `[servers]`
section not having entries similar to default forced hosts ones, then
new configuration would fail at validation and new options wouldn't be
saved to file at all.
2018-10-28 18:15:34 +02:00
Andrew Steinborn
070631902a Fix some suboptimal behavior in invoking KickedFromServerEvent.
Previously, the event would only fire when a player was kicked from the
current server they were on. Now, under certain cases, it can be fired
even if the player was already connected to a server.

To faciliate this, a new result (Notify) was introduced. This result
will "do the right thing" if the player is kicked from the current
server or is trying to connect to a different server than the one they
were on.
2018-10-28 03:32:18 -04:00
Andrew Steinborn
1310cd2c53 Mix of Checkstyle and SonarLint. 2018-10-28 03:18:15 -04:00
Andrew Steinborn
9806d57a13 More Checkstyle. 2018-10-28 02:36:03 -04:00
Andrew Steinborn
64380de497 Fix startup. 2018-10-28 01:45:20 -04:00
Andrew Steinborn
65ff9ebb39 Tiny legacy player info forwarding forwarding micro-optimization. 2018-10-28 01:10:23 -04:00
Andrew Steinborn
8a9d1b1ac9 Fixed even more Checkstyle issues, this time in the proxy components. 2018-10-28 01:02:54 -04:00
Andrew Steinborn
25b5e00125 Reformat with Google code style and enforce Checkstyle.
Fixes #125
2018-10-27 23:45:36 -04:00
Andrew Steinborn
53aa92db92 Fix some low-hanging code smells using SonarLint. 2018-10-27 22:18:30 -04:00
Andrew Steinborn
32829c5637
Checker Framework integration (#126) 2018-10-27 21:45:42 -04:00
Mark Vainomaa
25f6ca410c
Make servers list option more readable 2018-10-27 22:54:10 +03:00
Mark Vainomaa
2b4b77ef95
Fix missing constructor parameter and not loading show-plugins option from configuration 2018-10-27 22:52:04 +03:00
Mark Vainomaa
b86622b849
Improve comments 2018-10-27 22:50:05 +03:00
Mark Vainomaa
1e0ec8ad66
Better description, make class abstract 2018-10-27 22:49:38 +03:00
Mark Vainomaa
85e43727cf
Improve code style, grammar and other fixes 2018-10-27 22:49:37 +03:00
Mark Vainomaa
fdc83261cb
Add missing constructor parameter 2018-10-27 22:48:18 +03:00
Mark Vainomaa
793477b898
Improve code style 2018-10-27 22:48:18 +03:00
Mark Vainomaa
ff6a6ad40b
Add native forced hosts support 2018-10-27 22:36:52 +03:00
Mark Vainomaa
447e7d1d50
Adapt to upcoming Checker framework related changes 2018-10-27 21:38:20 +03:00
Mark Vainomaa
ea43b8ff60
Add Query event 2018-10-27 19:57:48 +03:00
Andrew Steinborn
a0e24ca247 Remove redundant ternary here. 2018-10-25 02:09:35 -04:00
Andrew Steinborn
3f612fb5c2 Update /velocity version so implementation stuff can be changed. 2018-10-25 01:56:41 -04:00
Andrew Steinborn
c977ddec61 Introduce a "modular" /velocity command. 2018-10-25 01:43:11 -04:00
Andrew Steinborn
a98fcc28fe Fix up console tab-completion again. 2018-10-25 01:42:57 -04:00
creeper123123321
782a10f36d
Separate protocol version for new proxy <-> server connections 2018-10-23 16:07:42 -03:00
Andrew Steinborn
bcf7761380 Disable auto-read temporarily as well 2018-10-23 13:51:33 -04:00
Andrew Steinborn
174cd4659b Fire ServerConnectedEvent and delay setting the server.
For ViaVersion
2018-10-23 13:49:50 -04:00
Andrew Steinborn
fcef623847 Respect server protocol version when writing packets to the server.
Needed for ViaVersion.
2018-10-23 13:06:54 -04:00
Leymooo
35736d7a94 1.13.2 2018-10-22 17:22:28 +03:00
Andrew Steinborn
f6cac0f50a Relax registration checks for same servers somewhat.
If a server with the same ServerInfo is attempting to be re-registered,
we will return the existing registered server, which is less surprising
behavior than before.
2018-10-21 20:03:38 -04:00
Andrew Steinborn
3bd48dec99 Add convenience connectWithIndication() method. 2018-10-21 17:49:51 -04:00
Andrew Steinborn
8d97e98920 Fix forwarding secrets being reset to default 2018-10-20 13:47:37 -04:00
Andrew Steinborn
a6e57f89aa Fix #117 2018-10-18 21:16:20 -04:00
Andrew Steinborn
19956a2ed7 Include forwarding version in modern forwarding
This is currently version 1.
2018-10-18 14:42:10 -04:00
Andrew Steinborn
d3b1bc9e34 Remove debug code that accidentally slipped in. 2018-10-15 21:29:33 -04:00
Andrew Steinborn
8ec273050b Remove redundant obsolete connection-checking code. 2018-10-15 17:06:37 -04:00
Andrew Steinborn
8eb7ecba83 Actually populate ForgeConstants 2018-10-15 17:02:19 -04:00
Andrew Steinborn
51c402e3d3 Create a specific Forge-related package 2018-10-15 17:01:18 -04:00
Andrew Steinborn
b7d7e3cc89 Switch forwarding mode to none by default 2018-10-15 14:27:50 -04:00
kashike
dcef9e4803 Fix NPE from last commit 2018-10-13 01:17:20 -07:00
kashike
78abba56af Change player info action enum to int
Read & write server id
Fix javadocs
2018-10-13 00:18:21 -07:00
Andrew Steinborn
33f333d8cc Clean up FML/handshake stuff from virtual host. 2018-10-13 02:34:53 -04:00
Andrew Steinborn
2f0ba42fa0 Also make sure tab list completion doesn't crash the proxy 2018-10-12 22:12:15 -04:00
Alex Thomson
64682027a5 Prevent commands run from console crashing the entire instance 2018-10-13 14:40:00 +13:00
kashike
46a7b52a13 Extract channel initialiser and transport type out 2018-10-12 16:41:12 -07:00
Alex Thomson
245828e337 Make changes based on PR comments 2018-10-11 10:41:40 +13:00
Alex Thomson
c5a27bb135 Add Forge mod list support 2018-10-10 19:52:22 +13:00
Andrew Steinborn
7578aa27a9 More reliably tear down connections and fire DisconnectEvent. Fixes #111 2018-10-09 19:02:15 -04:00
Andrew Steinborn
222e90a9f0 Unbreak Forge logic. 2018-10-05 19:04:10 -04:00
Alex Thomson
6ed772ba14 Add PROXY protocol support (#108) 2018-10-04 14:33:26 -04:00
Andrew Steinborn
d6fb3a210e Shorten connection errors to a more reasonable length. Fixes #58 2018-10-04 10:09:14 -04:00
Crypnotic
aa34977f3e Added ProxyConfig interface and implemented in VelocityConfiguration 2018-09-30 23:56:53 -05:00
Andrew Steinborn
b6a9299f9f Do tab list clearing into one packet 2018-09-30 18:27:07 -04:00
Desetude
3e65000ab3 Clear tab list on server connect 2018-09-30 21:40:22 +01:00
Desetude
61bd178591 Initial tablist implementation 2018-09-30 21:01:01 +01:00
Andrew Steinborn
732caa2d40 Remove RecordingThreadFactory since it's actually a terrible idea 2018-09-30 00:05:48 -04:00
Andrew Steinborn
2d2258d667 Misc cleanup 2018-09-29 23:57:40 -04:00
Andrew Steinborn
eddf01fc32 Reduce duplication between annotation processor and proxy. 2018-09-29 23:28:44 -04:00
Andrew Steinborn
33a2cb7bad Less verbose version 2018-09-29 14:54:46 -04:00
Andrew Steinborn
5af09f906a Fix a bug where it would try to register legacy channels(!) on 1.13+ 2018-09-29 14:53:04 -04:00
Andrew Steinborn
a44bb3b048 Remove more junk 2018-09-29 14:37:42 -04:00
Andrew Steinborn
75c3bb5ee6 Clean up vestigal stuff 2018-09-29 03:32:44 -04:00
Andrew Steinborn
97d541d146 Warn if someone tries to register the plugin instance as a listener 2018-09-29 03:15:49 -04:00
Andrew Steinborn
79d566bcee Finished the port to new session handler stuff 2018-09-29 02:55:52 -04:00
Andrew Steinborn
c7bd0d100e Started refactoring session handlers 2018-09-29 02:16:34 -04:00
Andrew Steinborn
6cd0a6b148 Introduce Channel#eventLoop() shorthand
This is such a common call that it makes a lot of sense to go ahead
and expose this.
2018-09-29 01:38:30 -04:00
Andrew Steinborn
5ab346a02b Don't tediously hardcode the names of channels if we can help it 2018-09-29 01:34:45 -04:00
Andrew Steinborn
f04599ae68 Clean up some plugin message channel code 2018-09-29 01:28:07 -04:00
Andrew Steinborn
f569a07b2e Move channel registrar to util 2018-09-29 01:25:24 -04:00
Andrew Steinborn
e6c178aae7 Cleaned up Java plugin loader 2018-09-27 15:52:31 -04:00
Andrew Steinborn
8c98395d51 Remove redundant contains check 2018-09-27 15:20:24 -04:00
Andrew Steinborn
731186ca10 Redesigned the /velocity command somewhat 2018-09-27 02:44:45 -04:00
Andrew Steinborn
d4910d9edc Remove potentially high-frequency usages of streams 2018-09-27 02:37:53 -04:00
Andrew Steinborn
63f22dc2de Extra clarity for server/MinecraftConnection naming 2018-09-27 02:35:10 -04:00
Andrew Steinborn
403fec13d8 Move UuidUtils test to api module 2018-09-27 02:33:47 -04:00
Andrew Steinborn
d639e47fbf Fix a number of issues with dependency resolution and add unit tests 2018-09-27 00:51:33 -04:00
Thomas Vanmellaerts
6f4b2c83b2
Delete EventUtil 2018-09-26 19:56:47 +02:00
Thomas Vanmellaerts
3acc00de5e
Move ChatResult to PlayerChatEvent and don't call event on spoofChatInput() 2018-09-26 19:50:36 +02:00
Thomas Vanmellaerts
d71f863045
Fire Event on spoofChatInput 2018-09-26 18:25:32 +02:00
Thomas Vanmellaerts
7598918d93
Add chat event 2018-09-26 13:07:03 +02:00
Andrew Steinborn
db5645f80e
Merge pull request #74 from Leymooo/properties
Allow to edit GameProfile properties.
2018-09-25 01:53:15 -04:00
Leymooo
46c02c9895 merge upstream 2018-09-24 12:40:48 +03:00
DoNotSpamPls
8242353934 Add an option in the config to change the query map 2018-09-24 11:34:17 +03:00
Andrew Steinborn
c89f3ea468 Remove scoreboard packets
We don't use these any more, and to be frank, it's kind of scary to
update anyway.
2018-09-24 02:04:12 -04:00
Andrew Steinborn
6c61aa49f3 Sanity: reset ping ID after getting the right KeepAlive 2018-09-22 20:38:59 -04:00
Andrew Steinborn
9e999e1e5a Maintain keep alives on the server connection, not on the client. 2018-09-21 23:19:12 -04:00
Luck
ea42f47c7b
Properly initialise console permissions using the PermissionsSetupEvent 2018-09-21 21:24:54 +01:00
Andrew Steinborn
ef578ff69b
Merge pull request #99 from lucko/feature/command-permissions
Implement optional permission check method for commands
2018-09-21 16:06:50 -04:00
Andrew Steinborn
ee917682e0
Title API (#95) 2018-09-21 15:58:47 -04:00
Andrew Steinborn
284f90183f Add missing null check here 2018-09-20 22:44:26 -04:00
Andrew Steinborn
d06028e0f8 ProxyServer#broadcast() 2018-09-20 22:43:58 -04:00
Luck
b805891d1f
Implement Player#spoofChatInput method 2018-09-20 21:51:22 +01:00
Luck
97e4ff91e7
Implement optional permission check method for commands
This allows plugins to customize which players can use their commands. For players without permission, the command is effectively invisible, and the handling is passed through to the backend server.
2018-09-20 21:48:14 +01:00
Andrew Steinborn
8763573ae6 Major improvements to tab complete support.
- Removed half-baked 1.13 support that didn't even work anyway. Perhaps
  in the future we could restore it by rewriting the available commands
  packet.
- Proxy commands now show up in tab complete responses where possible.
2018-09-20 16:39:50 -04:00
Andrew Steinborn
e577d6b6f5 Fix typo from PR. 2018-09-20 16:09:46 -04:00
Andrew Steinborn
95c761479f Make connections more robust 2018-09-19 21:29:07 -04:00
Andrew Steinborn
5c3e1adee2 Fix this annoying wart 2018-09-19 14:57:53 -04:00
Andrew Steinborn
50c27066e2 Import cleanup 2018-09-19 14:56:49 -04:00
Andrew Steinborn
1be508ed5e Merge branch 'master' into merged 2018-09-19 14:54:44 -04:00
Andrew Steinborn
50316f2f1c Merge branch 'master' into merged 2018-09-19 14:54:03 -04:00
Andrew Steinborn
c29b92c1bf Merge branch 'plugin-message-event' into merged 2018-09-19 14:52:28 -04:00
Andrew Steinborn
6bd3c70015
Merge pull request #93 from VelocityPowered/remove-legacychatcolorutils
Remove LegacyChatColorUtils
2018-09-18 17:27:38 -04:00
Andrew Steinborn
9016162a49 Optimize and clarify GS4 query handler. 2018-09-18 17:24:28 -04:00
Andrew Steinborn
d796f079f0 I forgot this. 2018-09-18 17:01:26 -04:00
Andrew Steinborn
c38b73863a Fix more scheduler issues 2018-09-18 16:59:13 -04:00
Andrew Steinborn
717c2afeb3 Update for changes in master. 2018-09-18 16:50:33 -04:00
Andrew Steinborn
89b5da25be Merge branch 'master' into registered-server 2018-09-18 16:50:13 -04:00
Andrew Steinborn
2bfb7061ee Turn StatusRequest into a singleton. 2018-09-18 16:48:21 -04:00
Andrew Steinborn
44b1b82b09 Try to avoid locking, use an actual concurrent data structure 2018-09-18 16:40:51 -04:00
Andrew Steinborn
a60c55007a Remove LegacyChatColorUtils
In most cases, you should only work with legacy text to deserialize or
serialize it for backwards compatibility or user configurations only.
2018-09-17 16:11:23 -04:00
Andrew Steinborn
037dceb599 Fix potential race 2018-09-16 15:35:25 -04:00
Andrew Steinborn
2a842bffbe Add missing null check 2018-09-16 15:32:51 -04:00
Andrew Steinborn
291069af80 Implement RegisteredServer#ping() 2018-09-16 13:59:44 -04:00
Andrew Steinborn
1f8152c3a5 ProxyServer#getServerInfo -> ProxyServer#getServer 2018-09-16 13:16:16 -04:00
Andrew Steinborn
8b94fe6ed2 Readd missing check 2018-09-16 02:41:35 -04:00
Andrew Steinborn
5ff36f1ae7 Merge branch 'master' into plugin-message-event
# Conflicts:
#	proxy/src/main/java/com/velocitypowered/proxy/connection/backend/BackendPlaySessionHandler.java
#	proxy/src/main/java/com/velocitypowered/proxy/connection/client/ClientPlaySessionHandler.java
2018-09-16 02:35:38 -04:00
Andrew Steinborn
e1b2dc0d43 Introduce RegisteredServer API
This interface roughly maps the BungeeCord ServerInfo API. Accordingly,
this is a breaking API change, as many of the server-related events and
methods working with server info instances now provide/expect the
RegisteredServer interface instead.
2018-09-16 02:26:29 -04:00
Andrew Steinborn
88b7407aaf Fix rare NPE during server transition. Fixes #87 2018-09-15 13:37:30 -04:00
Andrew Steinborn
ab568405dd Cleaned up client plugin message logic. 2018-09-15 02:22:52 -04:00
Andrew Steinborn
84947564e4 Handle unexpected disconnects without a reason. 2018-09-15 01:46:28 -04:00
Andrew Steinborn
871319d679 Allow custom connection and read timeouts. 2018-09-15 01:26:54 -04:00
Andrew Steinborn
2b1d55a0fc Expose original server in ServerPreConnectEvent 2018-09-15 01:16:26 -04:00
Andrew Steinborn
e9568e1b6c Do not write plugin messages from the server if the player hasn't joined 2018-09-14 15:26:51 -04:00
Andrew Steinborn
9776675b70 Queue mod plugin messages instead. 2018-09-14 14:16:32 -04:00
Andrew Steinborn
496c579e46 Drop non-FML handshake packets if the game start process is not done. 2018-09-14 13:56:38 -04:00
Andrew Steinborn
0469aaa03a Fix several invalid connection closure issues. 2018-09-14 01:00:56 -04:00
PurpleIsEverything
cf46659d9e
Change to a 5 second connection timeout. 2018-09-13 22:53:23 -06:00
ShadowKitten
14590ca3ea
Add CONNECT_TIMEOUT_MILLIS to fix timeout errors. 2018-09-13 22:41:21 -06:00
Andrew Steinborn
d028c281c9
Merge pull request #76 from kashike/mrn
ServerPreConnectEvent#getInfo -> getServer
2018-09-14 00:17:25 -04:00
Andrew Steinborn
656987db03
Merge pull request #83 from dualspiral/fix/fml-plugin-messages
Only send FML/FML|MP plugin messages if the player has joined the server
2018-09-13 16:10:03 -04:00
Andrew Steinborn
6ca39e459e
Merge pull request #80 from dualspiral/fix/reset-on-first
Don't fire a FML reset packet on first login, set it as required for the second join after the first completes
2018-09-13 16:09:51 -04:00
Daniel Naylor
bcbf4cfd5f Only send FML/FML|MP plugin messages if the player has joined the server.
See #78
2018-09-13 10:33:27 +01:00
kashike
c3fd559ac2 ServerPreConnectEvent#getInfo -> getServer 2018-09-12 22:41:51 -07:00
Daniel Naylor
f10e9ac8e4 Don't fire a FML reset packet on first login, set it as required for the second join after the first.
Fixes #69
2018-09-12 10:21:28 +01:00
Leymooo
bc86a12c57 expand PreLoginComponentResult with force offline mode 2018-09-12 11:47:28 +03:00
Leymooo
d2b4b77134 Allow to edit GameProfile properties. 2018-09-11 19:00:34 +03:00
Leymooo
79bb43468f remove @NonNull, revert reindentation 2018-09-11 17:44:51 +03:00
Leymooo
74bf246c39 Add PostLoginEvent. Resolve #72 2018-09-11 16:15:54 +03:00
Daniel Naylor
df637cd598 Ensure the reset packet is not sent when Forge isn't expecting it.
Fixes #69
2018-09-10 18:15:13 +01:00
Andrew Steinborn
56a50c60b5 Add missing readable check 2018-09-09 15:05:27 -04:00
Andrew Steinborn
46aa8efb35 Improve reliability of varint decoder. 2018-09-09 14:37:43 -04:00
Andrew Steinborn
f2e3b5c7ec Increase plugin channels limit 2018-09-09 14:20:46 -04:00
Andrew Steinborn
0b1f95147a Implment simple backpressure support
In most cases this should only trigger on initial spawns and server
switches.
2018-09-08 01:00:21 -04:00
Andrew Steinborn
f75a51638c Enable TCP_NODELAY on Minecraft proxy connections too 2018-09-07 23:29:49 -04:00
Andrew Steinborn
a62238d073 Allow toggling announcing Forge support on and off 2018-09-07 18:18:38 -04:00
Andrew Steinborn
be9547612f Misc code cleanup 2018-09-07 17:54:59 -04:00
Andrew Steinborn
f8a3f24d6b Make sure to always forward on keep-alives from the client 2018-09-07 16:35:36 -04:00
Andrew Steinborn
30baee84bd Add the same check to ClientPlaySessionHandler 2018-09-06 16:11:44 -04:00
Andrew Steinborn
51a85d372b Add hasCompletedJoin() check as suggested 2018-09-06 16:09:13 -04:00
Daniel Naylor
e86968e899 Don't forward most packets while join is still in progress 2018-09-06 19:38:50 +01:00
Daniel Naylor
7a5857a0b2 Modded clients can connect to vanilla servers again. Modded to modded seems to need some work still... 2018-09-06 19:15:18 +01:00
Daniel Naylor
10da7daf1d Send the FML marker if we are not performing legacy forwarding. 2018-09-05 19:19:37 +01:00
Daniel Naylor
9888f6f6f0 First attempt at getting Forge working nicely with Velocity. 2018-09-05 19:08:29 +01:00
Andrew Steinborn
5a424f5cbb Include version in boot message 2018-09-04 01:39:51 -04:00
Andrew Steinborn
5e0b13edcd Enhance config checks. 2018-09-04 01:37:08 -04:00
Andrew Steinborn
108996fc1f Missed this 2018-09-04 01:13:06 -04:00
Andrew Steinborn
69e88ca6fd Adds KickedFromServerEvent. Fixes #49 2018-09-04 01:12:20 -04:00
Andrew Steinborn
c021eb2020 Don't output ProtocolVersion toString() in decode errors
This information is extremely technical in nature and the data is already
available for developer use by examining StateRegistry.
2018-09-04 00:50:24 -04:00
Andrew Steinborn
c5dcfb1ba6 Prettier, conciser, and more useful ProtocolVersion#toString() 2018-09-03 23:45:11 -04:00
Andrew Steinborn
c30cc66461 Test logic when exception is thrown in thread 2018-09-03 23:30:18 -04:00
Andrew Steinborn
3b5d20e62d Include git revision and build number 2018-09-03 21:02:11 -04:00
Andrew Steinborn
01be081bda Update link to Velocity repo 2018-09-03 15:01:18 -04:00
Andrew Steinborn
c520e04ac8 [BREAKING] PluginMessageEvent instead 2018-09-02 20:50:24 -04:00
Andrew Steinborn
db1b19dcd6 Remove unused scoreboard API 2018-09-02 18:07:31 -04:00
Andrew Steinborn
ff0f83b375 Add getBoundAddress() for NuVotifier 2018-09-02 16:34:25 -04:00
Andrew Steinborn
3791283860 Gracefully handle offline-mode login attempts on online-mode. 2018-09-01 14:18:30 -04:00
Andrew Steinborn
d3a14721bc Fix typo that forced modern forwarding on. 2018-08-31 15:26:44 -04:00
Leymooo
57ccb6eec2 Allow using a '\n' in config. Create a method to generate a random string. 2018-08-31 20:36:10 +03:00
Leymooo
b201d82a31 cleanup 2018-08-31 16:50:53 +03:00
Leymooo
d743c8b5a1 Merge branch 'master' of https://github.com/astei/velocity into config 2018-08-31 16:38:28 +03:00
Leymooo
182c117dc5 Shutdown logger to flush queue before call a System#exit 2018-08-30 14:34:30 +03:00
Leymooo
a9c4d1d88b Make the velocity generate a default config 2018-08-29 16:07:49 +03: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
Leymooo
7e215e3c4f CfgKey -> ConfigKey 2018-08-28 16:00:05 +03:00
Leymooo
64fadc436b Refactor VelocityConfiguration to better support for config upgrades 2018-08-28 15:59:55 +03:00
Leymooo
2c7dfaaaf9 Allow config upgrading. Add annotations with reflection 2018-08-27 20:03:51 +03: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
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
f273c046ec Add javadoc and reorganize the player settings stuff. 2018-08-25 12:54:30 -04:00
Andrew Steinborn
86461c2b60
Merge branch 'master' into ping 2018-08-25 12:45:07 -04:00
Andrew Steinborn
78a2bd313a
Merge pull request #57 from Leymooo/client-settings
Add PlayerSettings API
2018-08-25 12:44:35 -04:00
Andrew Steinborn
2b3503e2df Fix compile. 2018-08-25 11:02:20 -04:00
Leymooo
09153ae620 oops 2018-08-25 18:02:19 +03:00
Leymooo
1b4c537c81 Add PlayerSettings API 2018-08-25 15:52:05 +03:00
Leymooo
bf2dff7693 add method to get player ping 2018-08-25 14:44:44 +03: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
7ee56d9f5f Massively improved Javadoc coverage to prepare for Javadoc site. 2018-08-25 00:29:22 -04:00
Andrew Steinborn
6ccf16cee4
Merge pull request #52 from Leymooo/header-footer
Add Header and Footer. Resolves #50
2018-08-24 21:46:03 -04:00
Leymooo
d65e4ed296 add method to clear header and footer 2018-08-25 04:45:10 +03:00
Leymooo
1f8c8dcd94 Add Header and Footer. Resolves #50 2018-08-25 04:37:07 +03:00
Andrew Steinborn
bc2f3a7288 Clean up ConnectedPlayer initialization. 2018-08-24 21:30:58 -04:00
Andrew Steinborn
afb6e69388 Improve Javadoc and the GameProfileRequestEvent. 2018-08-24 21:09:56 -04:00
Slava Maspanov
a3c4522ca0 Allow to enable online mode for player connection (#51) 2018-08-24 20:55:15 -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
55041aa1b1 Add basic implementation. 2018-08-21 23:03:09 -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
9c4e43e1b0
Merge pull request #44 from Minecrell/meta-cleanup
Various improvements to plugin metadata
2018-08-21 17:34:41 -04:00
Minecrell
c43c6cbea2 Add plugin description 2018-08-21 23:13:25 +02:00
Jadon Fowler
65de126934
Fallback to next server on connection error
Closes #11

Co-authored-by: Dylan Keir <jinjaproductionz@gmail.com>
Signed-off-by: Jadon Fowler <jadonflower@gmail.com>
2018-08-21 11:45:07 -07:00
Minecrell
830b1d4798 Various improvements to plugin metadata
- Add plugin (display) name and plugin URL
 - Make everything except plugin ID optional (instead of empty string)
 - Exclude empty properties from generated velocity-plugin.json
 - Make plugin author list immutable
 - Other (minor) cleanup and refactoring
2018-08-21 20:37:10 +02:00
kashike
c4fdac9591 allow more than one author 2018-08-21 09:09:48 -07:00
Andrew Steinborn
a028467e66
Plugin API (#34)
The Velocity API has had a lot of community input (special thanks to @hugmanrique who started the work, @lucko who contributed permissions support, and @Minecrell for providing initial feedback and an initial version of ServerListPlus).

While the API is far from complete, there is enough available for people to start doing useful stuff with Velocity.
2018-08-20 19:30:32 -04:00
Leymooo
381b2033d5 Rename packetDecoding field to onlyEncode 2018-08-17 02:02:22 +03:00
Leymooo
9469065b3c Fix PacketMapping toString/equals/hashCode, do not handle Chat and TabCompleteResponse packets from backend 2018-08-15 20:52:50 +03:00
Andrew Steinborn
718f615d3f Simplify and improve the startup timer. 2018-08-13 07:23:49 -04:00
MatrixTunnel
dbe207d0c2 Add startup time to log messages 2018-08-13 00:44:55 -07: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
5787709ed3
Merge pull request #32 from Leymooo/no-scoreboards
Don't handle scoreboards from backend server
2018-08-12 07:31:11 -04:00
Leymooo
6a2b945ed6 Do not handle scoreboards from backend
Changes in StateRegistry will allow to us skip packets decode which we don't want handle in BackendPlaySessionHandler for a specific versions
Also do not handle respawn packet
2018-08-12 13:35:13 +03:00
kashike
6a3a5a0458 minor shuffle to log messages 2018-08-12 01:36:37 -07: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
7130942032
Merge pull request #28 from MatrixTunnel/feature/ratelime-config
Add login ratelimit configuration
2018-08-10 21:57:58 -04:00
MatrixTunnel
6e4f90dfae Add ratelimit tests 2018-08-10 18:57:10 -07:00
kashike
e9959f81fb use fastutil's Object2IntOpenHashMap 2018-08-10 18:35:54 -07: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
MatrixTunnel
479592c009 Fix invalid compression values not stopping proxy 2018-08-10 11:13:53 -07:00
MatrixTunnel
d752edc92d Add login ratelimit configuration 2018-08-10 11:08:55 -07:00
Andrew Steinborn
9af6829688 Fix sending commands to remote server. 2018-08-10 03:05:59 -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 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
beb947cc3e
Merge pull request #26 from Minecrell/tca
Add TerminalConsoleAppender for console prompts
2018-08-07 10:38:00 -04:00
Andrew Steinborn
a88d27af76 Ignore repeated shutdown requests. 2018-08-07 10:37:38 -04:00
Minecrell
a044ed72de Add TerminalConsoleAppender for console prompts 2018-08-07 16:32:32 +02: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
Mark Vainomaa
fe79c66171 GS4 Query handler (#20) 2018-08-07 07:32:22 -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
MatrixTunnel
ac378a8efa Update version strings + add constant 2018-08-06 16:06:57 -07:00
Andrew Steinborn
6a5c40ecdf
Merge pull request #16 from Desetude/feature/1.8
Add 1.8 support
2018-08-06 18:41:37 -04:00
Mark Vainomaa
9ca1707df3
Fix unregisterConnection using non-lowercase username
Fixes #18
2018-08-06 19:06:25 +03:00
Desetude
b4f1d64cb0 Add 1.8 support 2018-08-06 09:21:01 +01: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
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
Andrew Steinborn
fbdaae5ac7 Actually, this would be a better name... 2018-08-04 01:45:18 -04:00
Andrew Steinborn
9bcdc413d7 ProxiedPlayer interface 2018-08-04 01:40:37 -04:00
Andrew Steinborn
9438d087e2 Refactor cipher logic. 2018-08-04 00:09:25 -04:00
Andrew Steinborn
6f3397f76f Adjustments. 2018-08-03 17:49:35 -04:00
Andrew Steinborn
68ded7ca7f Allow tweaking compression. 2018-08-03 16:56:19 -04:00
Andrew Steinborn
0191b74840 Remove another memory copy with compression.
I considered using composite byte buffers but they would have added GC
overhead and would've been incompatible with any native code we added
unless special care was taken.
2018-08-03 05:21:35 -04:00
Andrew Steinborn
44932cfddb Nuke some debug output. 2018-08-03 02:27:18 -04:00
Andrew Steinborn
7eea1a3ac6 Introduce a connection pool for Mojang's session servers.
This has the potential to cut the time that players spend at the
"logging in..." (or "encrypting..." for 1.13+) screen by a fair
amount (gains of 200+ ms were noted for my own home connection).

While this sounds minor, I really do like to aim for all the details
and this is one of them.
2018-08-03 02:25:57 -04:00
Andrew Steinborn
0c481d828d Remove PluginMessage slicing for now.
This was causing leak issues and needs to be reimplemented. If anyone's
willing to undertake the work, I will gladly accept the PR!
2018-08-03 02:23:58 -04:00
Andrew Steinborn
d38c7467d9 Various Netty changes.
- Potentially fixed a reference count leak with plugin messages.
- Cleaned up plugin message handling.
- Optimized the pipeline for better throughput by eliminating copying
  in the varint encoder and reduced object churn elsewhere.
2018-08-03 00:48:19 -04:00
Andrew Steinborn
68d315d1d3 Improvements for natives. 2018-08-02 23:52:21 -04:00
Andrew Steinborn
12ad629d4d If the channel becomes inactive, the connection's closed, too. 2018-08-02 22:10:55 -04:00
Andrew Steinborn
4bc4a1ec6a Use singular plurals, clean up some stuff. 2018-08-02 14:07:32 -04:00
Andrew Steinborn
2e59138428 Cleaned up native code. 2018-08-02 00:43:38 -04:00
Andrew Steinborn
9815837472 Fix directory structure 2018-08-01 22:27:40 -04:00
Andrew Steinborn
fb4e6fd8f1 JNI native zlib compression 🔥 2018-08-01 22:22:09 -04:00
Andrew Steinborn
22dd4bbb99 Split natives. Add proper disposal for natives. 2018-08-01 00:20:51 -04:00
Andrew Steinborn
284a2a67a2 Remove unused entity remapper. 2018-08-01 00:20:51 -04:00
Andrew Steinborn
8b1e1f20cf A little more documentation. 2018-07-31 16:22:21 -04:00
Andrew Steinborn
bbf861d3bc Convert into a multi-module project.
For now, the API module only contains a few assorted utilities. More
will be added later.
2018-07-31 16:12:41 -04:00