I'm currently having trouble with making this script that has the purpose of putting a model on top of the players head. I tried to do it but I got the error called "Badcast" can anyone tell me what that is and where it is in my code? Also if you can point out any other major flaws in the script it would be a huge help. I am new to scripting so apologies if it is obvious.

game.Players.PlayerAdded:Connect(function(Player)
if Player:GetRankInGroup(3617016) == 255 then
	
end
end)
local hit = game.ServerStorage.Pickelhaube

	
local g = game.ServerStorage.Pickelhaube:clone()
		g.Parent = hit.Parent
		local C = g:GetChildren()
		for i=1, #C do
			if C[i].className == "Part" or "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
				g.Middle.Transparency = 1
			end
				local Y = Instance.new("Weld")
				Y.Part0 = hit.Parent.Head
				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
			h[i].Anchored = false
			h[i].CanCollide = false
			
			
end