Sending chat messages while the Chat Delay option is set to any value other than None can, at times, cause you to be kicked from the game, with the error message "Chat message validation failure". This can happen both in Singleplayer worlds and Multiplayer servers. This causes this option to be quite unreliable.
This seems to happen specifically when sending a message just as the amount of pending lines were to decrease, thus keeping the amount the same, twice in a row.
The game log reports the following:
Failed to validate message acknowledgements from minecraft120
net.minecraft.network.chat.LastSeenMessagesValidator$ValidationException: Checksum mismatch on last seen update: the client and server must have desynced
at net.minecraft.network.chat.LastSeenMessagesValidator.applyUpdate(LastSeenMessagesValidator.java:76)
at net.minecraft.server.network.ServerGamePacketListenerImpl.unpackAndApplyLastSeen(ServerGamePacketListenerImpl.java:1760)
at net.minecraft.server.network.ServerGamePacketListenerImpl.handleChat(ServerGamePacketListenerImpl.java:1605)
at net.minecraft.network.protocol.game.ServerboundChatPacket.handle(ServerboundChatPacket.java:42)
at net.minecraft.network.protocol.game.ServerboundChatPacket.handle(ServerboundChatPacket.java:14)
at net.minecraft.network.Connection.genericsFtw(Connection.java:180)
at net.minecraft.network.Connection.channelRead0(Connection.java:165)
at net.minecraft.network.Connection.channelRead0(Connection.java:58)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:361)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:325)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:235)
at io.netty.handler.flow.FlowControlHandler.dequeueAll(FlowControlHandler.java:212)
at io.netty.handler.flow.FlowControlHandler.channelRead(FlowControlHandler.java:187)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355)
at net.minecraft.network.LocalFrameDecoder.channelRead(LocalFrameDecoder.java:9)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1429)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
at io.netty.channel.local.LocalChannel.readInbound(LocalChannel.java:324)
at io.netty.channel.local.LocalChannel.finishPeerRead0(LocalChannel.java:468)
at io.netty.channel.local.LocalChannel.access$100(LocalChannel.java:54)
at io.netty.channel.local.LocalChannel$2.run(LocalChannel.java:80)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535)
at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1195)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.lang.Thread.run(Thread.java:1474)Steps to reproduce:
Have Chat Delay set to any value other than None (it's easiest to recreate on 1-2 seconds).
Start sending messages in chat.
Getting the timing just right will cause you to be kicked from the current world or server you were in.
Expected behavior:
Sending chat messages with Chat Delay works normally.
Actual behavior:
Sending chat messages with Chat Delay can kick you from the game.
Thank you for helping us improve Minecraft! We saved your files: