mekanism / Mekanism

A mod for Minecraft
MIT License
1.36k stars 522 forks source link

Personal chest unopenable #7130

Open Draxial opened 3 years ago

Draxial commented 3 years ago

Issue description:

Personal chest unusable, right clicking to open it generates a error log on the server, "[Server thread/FATAL] [minecraft/ThreadTaskExecutor]: Error executing task on Server java.lang.IllegalArgumentException: Invalid PacketBuffer for openGui, found 37823 bytes"

Unsure if was the items I added on it. Had a bunch of stuff on it, then shift clicked Refined Storage patterns on it.

I am guessing that the lag made me shift one or a few items too many and that made the chest have more items than it should. Either that or somehow the items I was adding had too much nbtdata on it and it might be breaking the packets, just like in the past when if you had too many applied energistics drives on your inventory and put them inside bags, it'd overflow the player storage and you'd be unable to open it at all.

Steps to reproduce(This is what I did):

  1. Had my inventory completely full of different patterns, with lots more patterns on the floor.
  2. Shift clicked the items to the chest(open the gui with right click and shift click drag on the items)
  3. Close chest and try to reopen, you'll not be able to.

I think it might be possible to reproduce with having non-stackable items lying around and shift-clicking them towards the chest inventory. if doesn't occurs, try adding a few NBT information on the items.

Version (make sure you are on the latest version before reporting):

Forge: forge-1.16.5-36.1.0 Mekanism: 1.16.5-10.0.21.448 Other relevant version: refinedstorage-1.9.12, refinedstorageaddons-0.7.2

Log:

https://pastebin.com/Rpexmrux

EDIT: Left clicking it(aka picking it to move to another inventory('sophisticated backpacks' backpack)) kicks the player from the server: [19:28:34] [Server thread/INFO] [minecraft/ServerPlayNetHandler]: Draxiall lost connection: Internal Exception: io.netty.handler.codec.DecoderException: java.io.IOException: Payload may not be larger than 32767 bytes

pupnewfster commented 3 years ago

The secondary issue related to putting it inside of the backpack I don't think there is anything we really can do as it has to do with NBT limits and there just being way too many things in it (though I may discuss with them among others some common "anti-nesting" tag for items that we could all check for purposes of if an item can go inside or not). A workaround would be to load up the world/your player file in singleplayer (where there are no limits on NBT for stack size) and then extract things there.

In regards to the first issue I will need to review it further, but I think in theory I may be able to at least partially fix that issue for 10.1/improve our handling a bit. As a workaround to that you may be able to sneak right click to place the chest on the ground and then open it to try and remove some of the items from it as I think it may be almost overflowing in item form (which is why you don't crash just by having the item but when you try to open it and we also add in hand information to the packet it has issues).

Draxial commented 3 years ago

Thanks, that worked, putting the chest on the floor, it lagged a bit but I was able to retrieve the contents afterwards; no log error either; Couldn't see anything overflowing though, so I'm assuming either the extra item got deleted, or all the stuff I've put in the chest had too much nbtdata.