Bullets pause for a second and then firing

Exactly as the title says, when the bullet is fired, it pauses for a split second, and then fires.

Bullet:SetNetworkOwner(nil) does nothing, and Bullet:SetNetworkOwner(Player) only works for the client, the bullets still lag for other players.

				local Bullet = Instance.new("Part", Folder)
				Bullet:SetNetworkOwner(nil)
				Bullet.Color = BulletColor
				Bullet.Material = Enum.Material.Neon
				Bullet.CanCollide = false
				Bullet.Massless = true
				Bullet.Size = Vector3.new(0.25,0.25,2.5)
				Bullet.Transparency = 1

				local Spread = CFrame.Angles(math.rad(math.random(MinSpread, MaxSpread)), math.rad(math.random(MinSpread, MaxSpread)), math.rad(math.random(MinSpread, MaxSpread)))

				Bullet.CFrame = CFrame.new(Gun.Barrel.Position, MousePosition)
				Bullet.CFrame *= Spread

				local Velocity = Instance.new("BodyVelocity")
				Velocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
				Velocity.Velocity = Bullet.CFrame.LookVector * BulletSpeed
				Velocity.Parent = Bullet

There’s more code to this, but this is the important part.
I don’t want to use RayCast or FastCast, is there anyway to fix this?

Use a RemoteEvent, and Fire for All Clients

What am I supposed to be firing?