So I want to weld a model from ServerScriptService to the player's Right Hand(R15) using a script that's also in ServerScriptService but for some reason it doesn't work. There are no errors in the Output. Any ideas why? Script:

local Players = game:GetService("Players")

local function onCharacterAdded(character)
	local g = script.Parent.rhand:Clone()
	g.Parent = character.Parent
	local C = g:GetChildren()
	for i=1, #C do
		if C[i].className == "Part" or C[i].className == "CornerWedgePart" or C[i].className == "WedgePart" or C[i].className == "MeshPart" or C[i].className == "UnionOperation" then
			local W = Instance.new("Weld")
				W.Part0 = g.Middle
				W.Part1 = C[i]
				local CJ = CFrame.new(g.Middle.Position)
				local C0 = g.Middle.CFrame:inverse()*CJ
				local C1 = C[i].CFrame:inverse()*CJ
				W.C0 = C0
				W.C1 = C1
				W.Parent = g.Middle
		end
				local Y = Instance.new("Weld")
				Y.Part0 = character.RightHand
				Y.Part1 = g.Middle
				Y.C0 = CFrame.new(0, 0, 0)
				Y.Parent = Y.Part0
	end
	
	local h = g:GetChildren()
	for i = 1, # h do
		if h[i].className == "Part" or C[i].className == "CornerWedgePart" or C[i].className == "WedgePart" or C[i].className == "MeshPart" or C[i].className == "UnionOperation" then
			h[i].Anchored = false
					h[i].CanCollide = false
		end
	end
end

local function onPlayerAdded(player)
	player.CharacterAdded:Connect(onCharacterAdded)
end

Players.PlayerAdded:Connect(onPlayerAdded)