Pretty Pipes

Pretty Pipes

9M Downloads

NBT tag too Big

Howman opened this issue ยท 7 comments

commented

I keep getting this error when using pretty pipes well i be leave this is but not 100 % sure tho "Internal Exception: io.netty.handler.codec.DecoderException: java.lang.RuntimeException: Tried to read NBT tag that was too big; tried to allocate: 2097175bytes where max allowed: 2097152"

I am using prettypipes with minecolonies to move items into a sorter so it could be a minecolonies item going into pipes triggering error.

and I am playing through lan server so if you need any log files i would need to get them off the other computer since it hosts minecraft

commented

Hi, I also get this problem, i have to replace the capabilities.dat file with an older one, when looking inside it has a few hundred 'items' in the pretty pipes section which i think is the issue, so just too many items being transferred in the pipe network

commented

Hi, can you share both the client and server log files in full from a session where this issue occurred? You can remove any personal information like folder paths etc. if you want, of course.

commented

I'd like to join in on this problem, I have encountered a capabilities.dat file that has 1678 prettypipe:network items in it that reaches the packet size limit.

I've attached a parsed file with the error from the server:
error.txt
and the capabilities.dat file (Replaced the file extension to .txt since GitHub doesn't allow .dat files):
capabilities.txt

Most data seems to be spent on path, isn't there a way to allow the client to calculate the path for itself?
If not, perhaps a collection of cardinal vectors would be a more compact way to define the path of items are supposed to take?
Something like this:

{
  "path": [
   {"axis":"y", "value":5}, 
   {"axis":"x", "value":-4},
   {"axis":"z", "value":1},
  ]
}
commented

Hi! I'll need a bit more context for the error you posted, @aofekiko.

It seems like a big packet is being sent here that features forge capabilities for the world from multiple mods? By default (at least when I first made the mod), Forge's Level capabilities aren't ever sent to the client automatically, and Pretty Pipes doesn't do so or require them to be either.

Can you try to reproduce this issue with just Pretty Pipes installed? There might be a mod that sends all capability data to the client, no matter what mods it comes from.

It might also be that I'm misunderstanding what specific packet this is, and so the full stack trace would be very useful!

commented

I am running the FTB Inferno modpack.
Sadly there is no stack trace other than the packet dump that I sent and the line [00:55:09] [Netty Epoll Server IO #6/ERROR]: Attempted to send packet over maximum protocol size: 2119699 > 2097152 that comes before it.

I will work on trying to reproduce this.
Right now I cant seem to populate items with any entries

commented

Thanks for investigating! This looks like it'll help a lot :)

commented

I managed to reproduce the issue.
image
Server stack trace:

[20:38:06] [Netty Server IO #6/ERROR] [minecraft/PacketEncoder]: Error receiving packet 34
java.lang.IllegalArgumentException: Packet too big (is 10053572, should be less than 8388608): net.minecraft.network.protocol.game.ClientboundLevelChunkWithLightPacket@2fe9c4fc
	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:48) ~[server-1.18.2-20220404.173914-srg.jar%2342!/:?]
	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:14) ~[server-1.18.2-20220404.173914-srg.jar%2342!/:?]
	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:110) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:808) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at net.minecraft.network.Connection.m_178303_(Connection.java:214) ~[server-1.18.2-20220404.173914-srg.jar%2342!/:?]
	at net.minecraft.network.Connection.lambda$sendPacket$8(Connection.java:203) ~[server-1.18.2-20220404.173914-srg.jar%2342!/:?]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at java.lang.Thread.run(Thread.java:833) [?:?]

Client logs show no error.

capabilities.dat file:
capabilities.txt

World file used for reproduction:
world.zip

Minecraft verison: 1.18.2
Forge verion: 40.2.7
Mod version: 1.12.8