Winged

Winged

2M Downloads

java.lang.IllegalArgumentException when attempting to connect to a server via Velocity proxy

TheEssem opened this issue ยท 3 comments

commented

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.

commented

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.

commented

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.

commented

I went ahead and compiled the latest version of the mod to test, and the mod works just fine:
image

So we can consider this fixed.