Landing effects can show when mounting something from the water due to the following scenario:
- Player is moved to the new mounted position via a ForcePositionTo RPC from the server.
- ClientInput sees that they're now grounded and changes IsGrounded to true.
- FootstepEffects' Update tick sees the grounded change and plays DoLandingEffect().
- Separately, Client gets a Load with the updated mount data and sets isMounted to true, too late to stop the landing effect.
ForcePositionTo is called after SendNetworkUpdate on the server, but sometimes arrives before.
I couldn't work out an elegant fix for this. Instead I've added a RecentlyTeleported bool that goes true for one second after teleporting, and set FootstepEffects to not show a landing effect if RecentlyTeleported is true, which covers the gap between being teleported and being mounted.