Conflict Between Vivecraft and Carpet Mod
Description
When using Vivecraft alongside the Carpet mod, players are unable to join the server. During the login process, the server throws a ClassCastException related to encoding a clientbound/minecraft:custom_payload packet. This results in the player being immediately disconnected with an Internal Exception.
Steps to Reproduce
- Install Vivecraft and the Carpet mod on the same server.
- Attempt to join the server.
- You will be kicked off regardless of if you have vivecraft installed on the client or not.
Expected Behavior
Players should be able to join and play on the server without being disconnected due to a packet encoding error.
Actual Behavior
Players are kicked off during the login process. The server logs show an error related to encoding a clientbound/minecraft:custom_payload packet.
Environment
- Minecraft Version: 1.21.4
- Vivecraft Version: 1.21.4-1.2.5
- Carpet Mod Version: 1.4.161+v241203
- Fabric Loader Version: 0.16.9
- Java Version: 21
- Operating System: Debian Bookworm
Full Stacktrace
Mar 11 10:58:17 Ares java[85705]: [10:58:17] [User Authenticator #3/INFO]: UUID of player *redacted* is *redacted*
Mar 11 10:58:18 Ares java[85705]: [10:58:18] [Server thread/INFO]: *redacted*[/*redacted*:49480] logged in with entity id 60 at (1385.9012609256174, 68.0, 2785.1144013010967)
Mar 11 10:58:18 Ares java[85705]: [10:58:18] [Server thread/INFO]: Player [*redacted*] joined.
Mar 11 10:58:18 Ares java[85705]: [10:58:18] [Server thread/INFO]: *redacted* joined the game
Mar 11 10:58:18 Ares java[85705]: [10:58:18] [Netty Epoll Server Play IO #2/ERROR]: Error sending packet clientbound/minecraft:custom_payload
Mar 11 10:58:18 Ares java[85705]: io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:custom_payload' (carpet:hello)
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_9136.handler$bia000$fabric-networking-api-v1$encode(class_9136.java:547) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_9136.method_56426(class_9136.java:55) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_9136.encode(class_9136.java:14) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_2545.method_10838(class_2545.java:26) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_2545.encode(class_2545.java:12) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113) ~[netty-codec-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:113) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_2535$2.write(class_2535.java:530) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:956) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:974) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:305) ~[netty-transport-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_2535.method_36942(class_2535.java:350) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_2535.method_52917(class_2535.java:345) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[netty-common-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) ~[netty-common-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[netty-common-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405) ~[netty-transport-classes-epoll-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.115.Final.jar:?]
Mar 11 10:58:18 Ares java[85705]: at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Mar 11 10:58:18 Ares java[85705]: Caused by: java.lang.ClassCastException: class carpet.network.CarpetClient$CarpetPayload cannot be cast to class net.minecraft.class_8711 (carpet.network.CarpetClient$CarpetPayload and net.minecraft.class_8711 are in unnamed module of loader 'knot' @5cc7c2a6)
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_9139$8.encode(class_9139.java:44) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_8710$1.method_56489(class_8710.java:52) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_8710$1.method_56490(class_8710.java:57) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_8710$1.encode(class_8710.java:39) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_9139$10.encode(class_9139.java:83) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_9139$11.method_56442(class_9139.java:99) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_9139$11.encode(class_9139.java:89) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: at knot/net.minecraft.class_9136.method_56426(class_9136.java:53) ~[server-intermediary.jar:?]
Mar 11 10:58:18 Ares java[85705]: ... 32 more
Mar 11 10:58:18 Ares java[85705]: [10:58:18] [Netty Epoll Server Play IO #2/INFO]: Player [*redacted*] disconnected.
Mar 11 10:58:18 Ares java[85705]: [10:58:18] [Server thread/INFO]: *redacted* lost connection: Internal Exception: io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:custom_payload' (carpet:hello)
Mar 11 10:58:18 Ares java[85705]: [10:58:18] [Server thread/INFO]: *redacted* left the game
Mar 11 10:58:18 Ares java[85705]: [10:58:18] [Server thread/INFO]: [voicechat] Disconnecting client *redacted*
Mar 11 10:59:17 Ares java[85705]: [10:59:17] [Server thread/INFO]: Server empty for 60 seconds, pausing
Additional Information
- The error occurs consistently when Vivecraft and Carpet are used together.
- Disabling either mod resolves the issue.
that is an issue on carpet mods end, we don't really do anything wrong, we just use the fabric api to register our packets, which somehow breaks carpet mod. see https://github.com/gnembon/fabric-carpet/issues/2021