[Bug] Connection Issues with BCLib mod and Velocity Proxy Server
Opened this issue · 6 comments
What happened?
I've encountered a problem when trying to connect to my Minecraft server via the Velocity proxy server. I have the BCLib mod installed, which is a dependency for another mod that I use. Without this mod, the connection works fine, but as soon as I install it, an error occurs and the connection drops.
The errors I see in the Velocity console point to a problem with packet decoding. Here are snippets from the error logs:
[21:28:07 ERROR]: [server connection] Lamer13 -> survival: exception encountered in com.velocitypowered.proxy.connection.backend.BackendPlaySessionHandler@139a8a9a
com.velocitypowered.proxy.util.except.QuietRuntimeException: A packet did not decode successfully (invalid data). If you are a developer, launch Velocity with -Dvelocity.packet-decode-logging=true to see more.
[21:32:55 ERROR]: [server connection] Lamer13 -> survival: exception encountered in com.velocitypowered.proxy.connection.backend.BackendPlaySessionHandler@7f7e6735
io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.AvailableCommands Direction CLIENTBOUND Protocol 1.20 State PLAY ID 10
Caused by: java.lang.IllegalArgumentException: Argument type identifier null unknown.
at com.velocitypowered.proxy.protocol.packet.brigadier.ArgumentPropertyRegistry.deserialize(ArgumentPropertyRegistry.java:87) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
The Minecraft server logs show the following messages:
[21:28:07] [Server thread/INFO]: Lamer13 joined the game
[21:28:08] [Server thread/INFO]: Lamer13 lost connection: Disconnected
[21:28:08] [Server thread/INFO]: Lamer13 left the game
I am using Fabric as the mod-loader and have installed the FabricProxy-Lite mod on the server for Velocity support.
Any help in resolving this issue would be greatly appreciated. If further information is required, I'd be glad to provide it.
Thank you.
BCLib
3.0.12
Fabric API
0.84.0
Fabric Loader
0.14.21
Minecraft
1.20.1
Relevant log output
C:\Users\mangu\Documents\test\velocity>java -Xms2G -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -Dvelocity.packet-decode-logging=true -XX:G1HeapRegionSize=32M -Dfile.encoding=UTF-8 -jar velocity.jar
[21:55:51 INFO]: Booting up Velocity 3.2.0-SNAPSHOT (git-37fedf50-b260)...
[21:55:51 INFO]: Loading localizations...
[21:55:51 INFO]: Connections will use NIO channels, Java compression, Java ciphers
[21:55:51 WARN]: The proxy is running in offline mode! This is a security risk and you will NOT receive any support!
[21:55:51 INFO]: Loading plugins...
[21:55:51 INFO]: Loaded 0 plugins
[21:55:51 INFO]: Listening on /[0:0:0:0:0:0:0:0]:25565
[21:55:51 INFO]: Done (0,64s)!
[21:55:53 INFO]: [connected player] Lamer13 (/127.0.0.1:50118) has connected
[21:55:53 INFO]: [server connection] Lamer13 -> survival has connected
[21:55:53 ERROR]: [server connection] Lamer13 -> survival: exception encountered in com.velocitypowered.proxy.connection.backend.BackendPlaySessionHandler@26a92a19
io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.AvailableCommands Direction CLIENTBOUND Protocol 1.20 State PLAY ID 10
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.handleDecodeFailure(MinecraftDecoder.java:131) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:86) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:61) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:454) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.IllegalArgumentException: Argument type identifier null unknown.
at com.velocitypowered.proxy.protocol.packet.brigadier.ArgumentPropertyRegistry.deserialize(ArgumentPropertyRegistry.java:87) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at com.velocitypowered.proxy.protocol.packet.AvailableCommands.deserializeNode(AvailableCommands.java:210) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at com.velocitypowered.proxy.protocol.packet.AvailableCommands.decode(AvailableCommands.java:88) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:84) ~[velocity.jar:3.2.0-SNAPSHOT (git-37fedf50-b260)]
... 32 more
[21:55:53 INFO]: [connected player] Lamer13 (/127.0.0.1:50118) has disconnected: С вашим подключением к серверу survival возникла проблема.
[21:55:53 INFO]: [server connection] Lamer13 -> survival has disconnected
Other Mods
blossom-lib-2.5.1+1.20.jar
blossom-tpa-2.1.1+1.20.jar
cloth-config-11.0.99-forge.jar
CyanSetHome-0.1.2+1.20.1.jar
easyauth-mc1.20-3.0.0-17.jar
fabric-api-0.84.0+1.20.1.jar
fabric-language-kotlin-1.9.6+kotlin.1.8.22.jar
FabricProxy-Lite-2.6.0.jar
fabric-tab-2.0.0.jar
FallingTree-1.20.1-4.1.1.jar
ForgeConfigAPIPort-v8.0.0-1.20.1-Fabric.jar
forgottengraves-1.20.1-3.1.0.jar
ledger-1.2.8.jar
Xaeros_Minimap_23.5.0_Fabric_1.20.jar
yawp-1.20-0.0.2.9-beta2-fabric.jar
+1
4 months passed, is there a way to solve it?🥲
I couldn't find any solution, so I decided to write my own solution that fits my needs.
I created a simple proxy server that stores IP:port pairs and their corresponding domains.
My goal was to make it possible to connect to different domain addresses for game servers located on the same physical server. If needed, I can provide a link to the source code.
Thank you, but my friends and I have decided to give up adding these mods to the server😂
I couldn't find any solution, so I decided to write my own solution that fits my needs.
I created a simple proxy server that stores IP:port pairs and their corresponding domains. My goal was to make it possible to connect to different domain addresses for game servers located on the same physical server. If needed, I can provide a link to the source code.
Can I take a look?
Is this a problem with velocity or with BClib? Either way, I'm having the same issue.