Parts appear in a different place for the client?

The issue with levitation is likely due to touched being fired early. Perhaps try a different collision detection method? When it comes to relying on Touched for critical game functionality, I’d advise against it for a number of factors.

Two possible ways I can suggest is manually moving thrown objects through stepped raycasts, or alternatively try to pick up touched objects using spatial queries.

Edit: Alternatively you could try and fire a raycast of some sort after touched is fired to find a surface to attach to.