Network Ownership Resetting When Welding

Hey there, I am working on a basketball game, and our team has run into an issue with roblox’s network system.

Unfortunately, we have to set all the players’ network ownership to the server (nil) to have accurate positioning for stealing and passes. However, even after setting them to the server, it appears that they can regain their network ownership on their own. For example, when a player tries to pick up the ball, both the ball (which is set on the server as well) and the player go back to the player network.

We want everything to remain on the server, yet somehow this continues to occur. Setting the network ownership every frame (if it is not nil) causes a huge amount of lag when picking up the ball.

We are guessing this has something to do with the motor6d, since that should really be the only thing affecting anything in the real world space.

function basketball:Receive(character)
	
	-- get character class
	local characterClass = characterClasses.containers[character]

	if self.Owner or not characterClass then return end
	
	-- basketball elements
	local basketballInstance = self.Basketball
	local primaryPart = basketballInstance.PrimaryPart
	
	-- character elements
	local rightHand = character:FindFirstChild("RightHand")
	
	if not rightHand then return end

	-- assign owner
	self.Owner = character
	
	-- get character values
	local values = character:FindFirstChild("Values")

	if values then
		-- enable holding ball
		local holdingBall = values:FindFirstChild("HoldingBall")

		if holdingBall then
			holdingBall.Value = true
		end
	end
	
	-- weld basketball to character
	local motor6D = script.Motor6D:Clone()
	motor6D.Part0 = rightHand
	motor6D.Part1 = primaryPart
	motor6D.Parent = primaryPart
	motor6D.C1 = primaryPart.GripAttachment.CFrame
	
	-- change possession to character team
	possession.Value = gameManagerModule:GetTeam(character)
	
end

Anything you might know would greatly be appreciated.