I changed it to CFrame.lookAt and the problem still occurs. Gun.Barrel.Attachment.WorldCFrame = CFrame.lookAt(Gun.Barrel.Attachment.WorldPosition, MousePosition)
Seems like something wrong with the remote event then.
Perhaps a server-client difference with the attachment CFrame.
Perhaps you should switch between client and server view in studio to see if there are some differences such as animations and C0 and C1 stuff. I see that the hand of your character is twisted oddly perhaps a C0 and C1 edit which did not replicate.
Otherwise this local script should work tested with default settings and Instances, cannot upload atm keeps erroring for now.
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local attachment = script.Parent
local particleEmitter = script.Parent.ParticleEmitter
particleEmitter.EmissionDirection = Enum.NormalId.Front
while true do
task.wait()
attachment.WorldCFrame = CFrame.lookAt(attachment.WorldPosition, mouse.Hit.Position)
end