The C4 does get raycasted by the client and uses a remote that will be connected with the server. The parameters for the remote include the raycast the client did.
This is part of the server:
local BV = Instance.new("BodyVelocity",C4)
BV.MaxForce = Vector3.new(100000000,100000000,100000000)
BV.Velocity = (Hit - C4.Position).Unit*100
game:GetService("Debris"):AddItem(BV,.2)
Trail.Enabled = true
C4.CanCollide = true
Conn = C4.Touched:Connect(function(x)
if CantDetect then return end
if x:IsDescendantOf(LP.Character) or x.Parent == LP.Character or x:IsDescendantOf(game.Workspace.Players) then return end
C4.Plant:Play()
C4.Rotation = x.Rotation
C4.Anchored = true
Conn:Disconnect()
end)