Personally I used an update speed to control how often client jump was sent.
I used a Updated X/Y value which I only updated every time I sent a client jump packet. I then used a client update speed as well as checking updated x/y vs server x/y. If the two did not match and enough time had passed then I updated the client.
That way I could have the client be updated say every... 500 ms... 1000ms... 100000 ms, etc.
Made controlling updates much simpler and I felt no need to display every single movement (pointless and can crash your client if you send too many updates)
I used a Updated X/Y value which I only updated every time I sent a client jump packet. I then used a client update speed as well as checking updated x/y vs server x/y. If the two did not match and enough time had passed then I updated the client.
That way I could have the client be updated say every... 500 ms... 1000ms... 100000 ms, etc.
Made controlling updates much simpler and I felt no need to display every single movement (pointless and can crash your client if you send too many updates)