bedrock-protocol icon indicating copy to clipboard operation
bedrock-protocol copied to clipboard

The packet formatting "inventory_transaction" or "mob_equpment" is incorrect for the shield

Open Akill8412 opened this issue 5 months ago • 3 comments

When trying to interact with the shield (take it to inventory, take it in hands, etc.) an error occurs on the server, for example, such an error is taken from a server using Nukkit-MOT as a core. Below is the log of the error that occurred on the server. (Translated automatically!) [ERROR] Unable to decode packet java.lang.IndexOutOfBoundsException: readerIndex(10) + length(8) exceeds writerIndex(10): UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf(ridx: 10, widx: 10, cap: 10) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1442) ~[Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.buffer.AbstractByteBuf.readLongLE(AbstractByteBuf.java:843) ~[Nukkit-MOT-SNAPSHOT.jar:?] at cn.nukkit.network.LittleEndianByteBufInputStream.readLong(LittleEndianByteBufInputStream.java:44) ~[Nukkit-MOT-SNAPSHOT.jar:?] at cn.nukkit.utils.BinaryStream.getSlotNew(BinaryStream.java:813) ~[Nukkit-MOT-SNAPSHOT.jar:?] at cn.nukkit.utils.BinaryStream.getSlot(BinaryStream.java:521) ~[Nukkit-MOT-SNAPSHOT.jar:?] at cn.nukkit.network.protocol.types.NetworkInventoryAction.read(NetworkInventoryAction.java:114) ~[Nukkit-MOT-SNAPSHOT.jar:?] at cn.nukkit.network.protocol.InventoryTransactionPacket.decode(InventoryTransactionPacket.java:149) ~[Nukkit-MOT-SNAPSHOT.jar:?] at cn.nukkit.network.Network.processBatch(Network.java:267) [Nukkit-MOT-SNAPSHOT.jar:?] at cn.nukkit.network.session.RakNetPlayerSession.channelRead0(RakNetPlayerSession.java:151) [Nukkit-MOT-SNAPSHOT.jar:?] at cn.nukkit.network.session.RakNetPlayerSession.channelRead0(RakNetPlayerSession.java:43) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [Nukkit-MOT-SNAPSHOT.jar:?] at org.cloudburstmc.netty.channel.raknet.RakChannelPipeline.lambda$onUnhandledInboundMessage$0(RakChannelPipeline.java:60) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [Nukkit-MOT-SNAPSHOT.jar:?] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [Nukkit-MOT-SNAPSHOT.jar:?] at java.lang.Thread.run(Thread.java:1447) [?:?]

Akill8412 avatar Jul 20 '25 11:07 Akill8412

Please provide code and steps to reproduce

extremeheat avatar Aug 04 '25 00:08 extremeheat

A standard example with a proxy server via relay can be used to reproduce. To reproduce, it is enough to somehow interact with the shield, for example step 1: Open the creative inventory step 2: Open the "equipment" tab step 3: aim at the shield and click the mouse button.

Akill8412 avatar Aug 07 '25 19:08 Akill8412

Seems fine for me

dump.txt

TSL534 avatar Aug 07 '25 21:08 TSL534