-
Bug
-
Resolution: Fixed
-
1.19.2, 1.19.4, 1.20 Pre-release 6
-
None
-
Community Consensus
-
Networking
-
Normal
-
Platform
The Bug:
Players' positions are desynced after stopping movement while moving the camera.
This bug regularly causes position desyncs on the client for every single entity. Gameplay will often not be impacted, but it can be visually jarring/confusing for players. This desync occurs due to the incorrect handling of ClientboundMoveEntityPacket which overrides previous lerp values.
Steps to Reproduce:
- Get two players and label them "Player A" and "Player B".
- Get "Player A" to jump and move their camera as they're about to land, and have "Player B" watch them.
- After "Player A" has landed, have "Player B" watch and see if the position of "Player A" eventually updates and moves downwards slightly.
- Take note as to whether or not players' positions are desynced after stopping movement while moving the camera.
Observed Behavior:
Players' positions are desynced.
Expected Behavior:
Players' positions would not be desynced.
Potential Fix:
In the `hasRotation` branch of handleMoveEntity(ClientboundMoveEntityPacket), use the position tracked by the VecDeltaCodec instead of the entity's getX, getY and getZ methods.