Motor6D destroys the tool automatically

Hello! So I made this tool but whenever I equip it, it stays but not for other people in game. I don’t know why it won’t weld to the UpperTorso for other players but only me. The parts are unanchored and their cancollide is off as well as the requirehandle. Is it something with the script? I tried using remote event and it still don’t work. Althought after some fixes, it stays on the player but was then quickly destroyed. It is a replicating issue that I’m dealing with? Thanks for the help.

Server:

game.Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
		
		local M6D = Instance.new("Motor6D")
		M6D.Name = "ToolGrip"
		M6D.Parent = char.UpperTorso
	end)
end)

game.ReplicatedStorage.ConnectMotor6D.OnServerEvent:Connect(function(plr, location)
	local char = workspace:WaitForChild(plr.Name)
	char.UpperTorso.ToolGrip.Part0 = char.UpperTorso
	char.UpperTorso.ToolGrip.Part1 = location
end)

game.ReplicatedStorage.DisconnectMotor6D.OnServerEvent:Connect(function(plr)
	plr.Character.UpperTorso.ToolGrip.Part1 = nil
end)

Client inside tool:

wait()
local char = game.Players.LocalPlayer.Character or game.Players.LocalPlayer.CharacterAdded:Wait()
wait()
local tool = script.Parent
local Track1 = tool.Anims:WaitForChild("Plush1")
local Track2 = tool.Anims:WaitForChild("Plush2")
--creates 3 animation tracks (put ur own ID)
local Load1,Load2 = char:WaitForChild("Humanoid"):LoadAnimation(Track1),char:WaitForChild("Humanoid"):LoadAnimation(Track2)
--loads the 3 animations
local AnimTable = {Load1,Load2}
--puts the animations in a table to use for later

local Tool = script.Parent

local Debounce = false
Tool.Equipped:Connect(function()	
	game.ReplicatedStorage.ConnectMotor6D:FireServer(tool.BodyAttach)
	local M6D = Instance.new("Motor6D") -- or the part that you have decieded
	M6D.Parent = char.UpperTorso
			M6D.Name = "ToolGrip"
			M6D.Part0 = char.UpperTorso
			M6D.Part1 = tool.BodyAttach
        AnimTable[math.random(1,#AnimTable)]:Play()
end)

Tool.Unequipped:Connect(function()
	game.ReplicatedStorage.DisconnectMotor6D:FireServer()
	for _, v in pairs(AnimTable) do
		v:Stop()
	end
end)

Please let me know if you need anymore resources.