Immersive Engineering

Immersive Engineering

134M Downloads

Chemical Thrower causes players to disconnect.

NotDracon opened this issue ยท 3 comments

commented

Minecraft Version

1.18

Immersive Engineering Version

1.18.2-8.0.2-149

Expected Behavior

Chemical Thrower will spray the loaded chemical at an enemy and... not cause the player using it to disconnect.

Actual Behavior

Chemical Thrower will cause the player using it and any adjacent players to disconnect (not crash) when any fluid is sprayed, whether with pilot light on or off. Players can then reconnect as normal after a period of around 2 minutes. Disconnect message is as follows:

Connection Lost
Internal Exception: io.netty.handler.codec.DecoderException: Unknown serializer type 108

Steps to reproduce

  1. Join a non-singleplayer server
  2. Obtain Chemical Thrower
  3. Load Chemical Thrower with any fluid that it can shoot
  4. Right click to fire Thrower and disconnect

Pack used is the "Craft Down Under" modpack https://www.curseforge.com/minecraft/modpacks/craft-down-under

Debug Crash Log

https://gist.github.com/NotDracon/7ce9850d6973b2d5ee626ad50188ffb7

commented

@malte0811
My suspicion is that our EntityDataSerializer for FluidStacks is not properly registered, but I'm not entirely sure why.

Should we maybe move it to a DeferredRegister?

commented

Have you managed to reproduce this? I wasn't able to when I tried, but I also didn't do anything beyond a basic test.

It isn't a registry, so we can't use DeferredRegister. My guess is that the code runs during parallel mod setup, which causes ENTITY_ID_POOL to loose a value under some race condition. So my suggestion would be to move the SynchedEntityData::defineId call to IEContent::onThreadCommonSetup.

commented

Server isn't disconnecting people for this anymore and it was unreproducible outside of that server so I guess this is closed.