Applying minecraft:movement on player causes massive server/client desync
Partner Rank:
2
Partner Team Reporting:
Everbloom Games
Verification builds:
1.19.0.05_rc3
Summary:
Applying minecraft:movement on the player causes massive server/client desync. From the perspective of the client, the movement speed is accurate. However, from the server's perspective, it's as if the player has their default speed.
Impact:
Prevents us from carefully controlling player speed in scenarios where the position of the player really matters, without affecting FOV.
Speed and slowness affect FOV, so if we want to make the player unable to move without setting the FOV really low or locking their camera, the only option is to set minecraft:movement to 0 AND give the player slowness to overwrite the FOV.
Multiple upcoming maps of ours HEAVILY rely on the ability to achieve this, and it's being negatively impacted by the server being extremely off-sync. I suspect it looks ridiculous in multiplayer, too.
Repro Steps:
- Open the provided world.
- There's a lever that changes your movement speed. On the up state, your movement speed is set to fast (0.25). On the down state, your movement speed is set to 0. Particles are spawned at your feet every tick (or where the server thinks your feet are, anyway)
- Go onto third person, and try walking around on both states. Observe the particle trail on the ground.
Observed Results:
On the Fast setting, the line is broken up - it moves slower than your actual walking speed and resyncs every couple ticks.
On the Slow setting, the line moves away from you, even though you're not actually moving.
Expected Results:
On the Fast setting, the line is continuous and keeps up with you.
On the Slow setting, the particles stay at your feet and don't move without you.
Regression Build:
Never worked.
Screenshots/Videos attached:
Touchscreen controls are used in this video to show the inputs, but it's not required to reproduce this issue. It is only to show that I am trying to move in the slow setting, even if my player character doesn't actually move.
Note:
It's extremely important that the fix changes the behavior of the server to match that of the client, and NOT vice versa. It's also important that the Slowness FOV continues to overwrite that of the minecraft:movement component and the Speed effect (I believe the latter is used in the Sonic map). We rely on this behavior and there's no good alternative.