Because the dummy is close to you, the engine gave you, the client, network ownership of the dummy, so physics is calculated on your client is sent over to the server. I would assume that the server didnât see the change because you, the client, still have network ownership of the dummy and its position was updated on the server. You should probably try giving the server network ownership of the dummy before teleporting and see the results:
Though, when it is far away from you, the network owner is set to the server and the physics will be updated on the server, but who knows, probably worth trying
You didnât mention that the HumanoidRootPart was anchored (why is it even anchored)? If you canât call SetNetworkOwner on a model, you can loop through itâs descendants, check to see if itâs a BasePart, then call the function
Try using ws:MoveTo() or ws:SetPrimaryPartCFrame() instead of ws.HumanoidRootPart.Position.
I think, since youâre just moving the primary part, a built-in localscript is automatically moving the rest of the model to the root. You can test this via the âClients and Serversâ section of the Test tab in Studio.