Why equipping tools from the client isn't working (works on server)

I have a simple fishing rod (it’s just a part) and when I parent it to the character on the client, it doesnt connect it to my character, and thus the rod just falls through the world. However when I do this on the server it works perfectly fine.

local function StartFishing(character)	
	local FishingRodClone = FishingRod:Clone()
	FishingRodClone.Parent = character
end

for _, v in pairs(FishingSpots:GetChildren()) do
	if v:IsA('Model') and v.PrimaryPart then
		v.PrimaryPart.Touched:Connect(function(hit)
			local Character = hit.Parent
			if not Character then return end
			
			local Player = Players:GetPlayerFromCharacter(Character)
			if not Player then return end
			
			local PlayerGui = Player:FindFirstChild('PlayerGui')
			if not PlayerGui then return end
			
			if PlayerGui:FindFirstChild('Fishing') then return end
			
			StartFishing(Character)
		end)
	end
end

This is because of client/server replication, and how objects loaded in on the client won’t be registered on the server. You will need to parent the tool via the server. If you want to do so from a client script, you can just send a remote to the server to actually handle giving the tool.

1 Like