The serialization of ClientboundSectionBlocksUpdatePacket
works only for first 2^19 (524288) registered block states. Currently it mostly effects heavily modded game instances, however once vanilla achieves that blockstate count (for 1.19.3-pre2, it's 23232) it will be also affected.
The cause of the issue is code bitshifting on an int type instead of a long, likely an mistake caused by implicit casting to log.
Decompiler output. The bitshift operations are performed on int returned by getId
, then casted to long as a method parameter. Code for deserializing data is correct.
Please, make sure it is fixed in all places for all packets. For example, I'm getting also the same issue with "ClientboundBlockChangedAckPacket".