I made a tool and when you click on the screen, a block will be thrown at that mouse position. For the projectile motion, I used SetNetworkOwner() to make it smooth and it worked, but the huge delay every time you click is inevitable (Local scripts will fire a RemoteEvent to the server scripts so that they knows the direction and location to launch the block)
Any methods to improve it?

6 comments
Use BodyVelocity
No, I'm talking about the delay every time you click, the motion is ok
generate block on client first and then server
How do you transfer a block from the client to the server? That sounds impossible
don’t transfer it, create a block on client for instant reaction visuals and then generate it on server for replication, then destroy it on client
Ok sound good, but what about damaging the player? Should the client detect when the block touch a player or the server?