I'm trying to use network ownership to clone items and spawn them in front of players. I can get it to work on bricks but not models that use welds. Any help?

local spawnProp = game.ReplicatedStorage.Remotes.SpawnProp
local coolDown = 0.5

local deb = {}

function getPlrId(targetPlayer)
	local targetPlayer = game.Players:GetUserIdFromNameAsync(targetPlayer)
	 return targetPlayer
end

function recSet(plr,PropClone)
		if PropClone:IsA("BasePart") then
			PropClone:SetNetworkOwner(plr)
		elseif PropClone:IsA("Model") then
			for i,v in pairs(PropClone:children()) do
				recSet(plr,v)
			end
		end
end

spawnProp.OnServerEvent:Connect(function(plr, name, lookVector, args)
	print("Processing")
	if deb[plr.Name] ~= nil then
		return
	else
		deb[plr.Name] = 0
	end
	
	if args["2"] ~= nil then
		local PropClone = game.ServerStorage:FindFirstChild(name):Clone()
		PropClone.Parent = plr.Backpack
		
		wait(coolDown)
		deb[plr.Name] = nil
	
		return
	end
	
	if game.ServerStorage:FindFirstChild(name) ~= nil then
		local PropClone = game.ServerStorage:FindFirstChild(name):Clone()
		if PropClone:IsA("BasePart") then
			PropClone.Anchored = false
			PropClone:SetNetworkOwner(plr)
		elseif PropClone:IsA("Model") then
			for c,v in pairs(PropClone:GetChildren()) do
				if v:IsA("BasePart") then
					v.Anchored = false
				end
			end
		end
		local PlayerLookVector = lookVector
		local PropSize
		local head = plr.Character:WaitForChild("Head", 2)
		if not head then return end	
		if PropClone:IsA("BasePart") then
			PropSize = PropClone.Size
			PropClone.Position = head.Position + PlayerLookVector + Vector3.new(0,PropSize.Y,0) + Vector3.new(PlayerLookVector.X * PropSize.X,PlayerLookVector.Y * PropSize.Y,PlayerLookVector.Z * PropSize.Z)
		elseif PropClone:IsA("Model") then
			PropSize = PropClone:GetExtentsSize()
			PropClone.Parent = game.Workspace
			PropClone:MoveTo(head.Position + PlayerLookVector + Vector3.new(0,PropSize.Y,0) + Vector3.new(PlayerLookVector.X * PropSize.X,PlayerLookVector.Y * PropSize.Y,PlayerLookVector.Z * PropSize.Z))
		end
		print("Spawning "..PropClone.Name)
		PropClone.Parent = game.Workspace
		
		if args["1"] ~= nil then
			PropClone:MakeJoints()
		end
		
		if args["3"] ~= nil then
			local targetPlayer = args["4"]
			local bool,GetPlayer = pcall(getPlrId, targetPlayer)
			if bool then
				local CharAppearence = game.Players:GetCharacterAppearanceAsync(GetPlayer)
				for n,o in pairs(CharAppearence:GetChildren()) do
					if o.Name == "face" then
						o.Parent = PropClone.Head
					else
						o.Parent = PropClone
					end
				end
				
				PropClone:MoveTo(plr.Character.Head.Position + PlayerLookVector + Vector3.new(0,PropSize.Y,0) + Vector3.new(PlayerLookVector.X * PropSize.X,PlayerLookVector.Y * PropSize.Y,PlayerLookVector.Z * PropSize.Z))
			else
				PropClone:Destroy()
			end
		end
	else
		print(name.." wasn't found!")
	end
	
	wait(coolDown)
	deb[plr.Name] = nil
end)