java.lang.IllegalArgumentException when attempting to connect to a server via Velocity proxy
TheEssem opened this issue ยท 3 comments
I'm running a Fabric server with a Velocity proxy. Whenever I try to join the server with op permissions, it shows Your connection to fabric encountered an error. on the client and prints this log on the server:
Jul 01 15:50:01 esmServer start.sh[30924]: 2020-07-01 15:50:01,862 main WARN Disabling terminal, you're running in an unsupported environment.
Jul 01 15:50:02 esmServer start.sh[30924]: [15:50:02 INFO]: Booting up Velocity 1.0.8...
Jul 01 15:50:02 esmServer start.sh[30924]: [15:50:02 INFO]: Connections will use epoll channels, native (Linux amd64) compression, Java ciphers
Jul 01 15:50:02 esmServer start.sh[30924]: [15:50:02 INFO]: Loading plugins...
Jul 01 15:50:02 esmServer start.sh[30924]: [15:50:02 INFO]: Loaded 0 plugins
Jul 01 15:50:03 esmServer start.sh[30924]: [15:50:03 INFO]: Done (1.02s)!
Jul 01 15:50:03 esmServer start.sh[30924]: [15:50:03 INFO]: Listening on /0:0:0:0:0:0:0:0%0:25565
Jul 01 15:50:13 esmServer start.sh[30924]: [15:50:13 INFO]: [connected player] TheEssem (/<ip>:33578) has connected
Jul 01 15:50:13 esmServer start.sh[30924]: [15:50:13 INFO]: [server connection] TheEssem -> fabric has connected
Jul 01 15:50:14 esmServer start.sh[30924]: [15:50:14 ERROR]: [server connection] TheEssem -> fabric: exception encountered in com.velocitypowered.proxy.connection.backend.BackendPlaySessionHandler@3513cd99
Jul 01 15:50:14 esmServer start.sh[30924]: io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.AvailableCommands Direction CLIENTBOUND Protocol 1.16.1 State PLAY ID 11
Jul 01 15:50:14 esmServer start.sh[30924]: at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.handleDecodeFailure(MinecraftDecoder.java:77) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.decode(MinecraftDecoder.java:55) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.decode(MinecraftDecoder.java:15) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:191) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.flow.FlowControlHandler.channelRead(FlowControlHandler.java:153) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:425) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at java.lang.Thread.run(Unknown Source) [?:?]
Jul 01 15:50:14 esmServer start.sh[30924]: Caused by: java.lang.IllegalArgumentException: Argument type identifier winged:wing unknown.
Jul 01 15:50:14 esmServer start.sh[30924]: at com.velocitypowered.proxy.protocol.packet.brigadier.ArgumentPropertyRegistry.deserialize(ArgumentPropertyRegistry.java:52) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at com.velocitypowered.proxy.protocol.packet.AvailableCommands.deserializeNode(AvailableCommands.java:189) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at com.velocitypowered.proxy.protocol.packet.AvailableCommands.decode(AvailableCommands.java:66) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.decode(MinecraftDecoder.java:53) ~[velocity-proxy-1.0.8-all.jar:1.0.8]
Jul 01 15:50:14 esmServer start.sh[30924]: ... 35 more
Jul 01 15:50:14 esmServer start.sh[30924]: [15:50:14 INFO]: [connected player] TheEssem (/<ip>:33578) has disconnected: Your connection to fabric encountered an error.
Jul 01 15:50:14 esmServer start.sh[30924]: [15:50:14 INFO]: [server connection] TheEssem -> fabric has disconnected
I am using AdoptOpenJDK version 13 on the server and 14 on the client, both using the OpenJ9 VM.
This issue is on Velocity's end. Further versions will replace WingArgumentType with a IdentifierArgumentType, but I am not removing the suggestion providers because of a server proxy. That's not a Winged issue, that's a Velocity issue. Any mod that adds commands with custom completions will (also) error.
Velocity should pass the custom SuggestionProvider through as-is if you use the IdentifierArgumentType.
However, you are correct: it is difficult for the proxy to support custom Brigadier argument types. There is currently no good solution for this aside from adding every mod ever's argument type to the proxy itself.
