PGM icon indicating copy to clipboard operation
PGM copied to clipboard

/list command kicks client if teams too large

Open willocn opened this issue 1 year ago • 3 comments

On 1.8, running /list can send too large of a chat message if one of the teams is very large. Message needs to be split to stop the client from being kicked.

Here's the relevant portion of my chat logs from a match when there were 80+ players on observers:

19:09:35] [Client thread/INFO]: [CHAT] Teams:
[19:09:35] [Client thread/INFO]: [CHAT] Death: 2/2
[19:09:35] [Client thread/INFO]: [CHAT] §e+§c*Jusst_ and §2*§c*Dawthon
[19:09:35] [Client thread/INFO]: [CHAT] Runners: 1/80
[19:09:35] [Client thread/INFO]: [CHAT] abejita23
[19:09:35] [Client thread/INFO]: [CHAT] Observers: 84
[19:09:35] [Netty Epoll Client IO #1/ERROR] [FML]: NetworkDispatcher exception
io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException: readerIndex(1) + length(1) exceeds writerIndex(1): UnpooledHeapByteBuf(ridx: 1, widx: 1, cap: 1)
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:280) ~[ByteToMessageDecoder.class:4.0.23.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:149) ~[ByteToMessageDecoder.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:150) [ReadTimeoutHandler.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
	at io.netty.channel.epoll.EpollSocketChannel$EpollSocketUnsafe.epollInReady(EpollSocketChannel.java:722) [EpollSocketChannel$EpollSocketUnsafe.class:4.0.23.Final]
	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:326) [EpollEventLoop.class:4.0.23.Final]
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:264) [EpollEventLoop.class:4.0.23.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:4.0.23.Final]
	at java.lang.Thread.run(Thread.java:750) [?:1.8.0_362]
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(1) + length(1) exceeds writerIndex(1): UnpooledHeapByteBuf(ridx: 1, widx: 1, cap: 1)
	at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1175) ~[AbstractByteBuf.class:4.0.23.Final]
	at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:570) ~[AbstractByteBuf.class:4.0.23.Final]
	at net.minecraft.network.PacketBuffer.readByte(SourceFile:609) ~[em.class:?]
	at net.minecraft.network.PacketBuffer.func_150792_a(SourceFile:109) ~[em.class:?]
	at net.minecraft.network.PacketBuffer.func_150789_c(SourceFile:235) ~[em.class:?]
	at net.minecraft.network.PacketBuffer.func_179258_d(SourceFile:89) ~[em.class:?]
	at net.minecraft.network.play.server.S02PacketChat.func_148837_a(SourceFile:32) ~[fy.class:?]
	at net.minecraft.util.MessageDeserializer.decode(SourceFile:40) ~[en.class:?]
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:249) ~[ByteToMessageDecoder.class:4.0.23.Final]
	... 21 more

willocn avatar Mar 18 '23 00:03 willocn

The /list command is not actually part of PGM, i believe it may be part of community

Pablete1234 avatar Mar 18 '23 01:03 Pablete1234

Believe it is handled in PGM, unless there is something in community that I missed that takes precedence https://github.com/PGMDev/PGM/blob/8506bebac5e7231e9ea260124fcb97625493c1cc/core/src/main/java/tc/oc/pgm/command/ListCommand.java#L25-L60

willocn avatar Mar 18 '23 02:03 willocn

nvm, it seems like it was introduced in pgm during the community-two PR

Pablete1234 avatar Mar 18 '23 15:03 Pablete1234