Touched Event Not Detecting Player After Rejoining Same Server

Hey, I have an issue where the module script code below works perfectly fine in play solo, until I rejoin the same server where the touched event stops detecting the player. I’ve tried many different solutions to the point I had to ask on here. Any solutions?

function CollectionHandler.collecting(player, tower)
-- player is player object, tower is individual tower
	local leaderstats = player:FindFirstChild("leaderstats")
	local coins = leaderstats:FindFirstChild("Coins")
	local coinsMulti = player:FindFirstChild("CoinsMulti")
	local dropletMulti = player:FindFirstChild("DropletMulti")

	local deposit = tower.Buttons.Deposit
	local storage = deposit:FindFirstChild("Storage")

	local bucket = tower.Tower.Bucket
	local collecter = tower.Tower:FindFirstChild("AutoCollector", true)
	local inventory = player:FindFirstChild(player.Name.."'s Inventory")
	
	bucket.ChildAdded:Connect(function(droplet)
		
		local dropletInventory = inventory:FindFirstChild(droplet.Name)
		
		droplet.Touched:Connect(function(hit)
-- detects hit but doesn't detect any player limbs
			game.ReplicatedStorage.Test:FireClient(player, hit.Name)
			local humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid")
			if hit and hit.Parent then
					
					if humanoid and humanoid.Parent.Name == player.Name then
						
						activateTouch(dropletInventory, droplet)
						
					end

				end
			end
			
		end)

	end)

Are there any errors in the output? I’m not sure when I’ll get back to this, but in the meantime, I think your issue may have to do with other lines of code. This script looks pretty fine to me.

end

function CollectionHandler.depositing(player, tower)
local playerName = player.Name
local towerName = tower.Name

local deposit = tower.Buttons.Deposit
local storage = deposit:FindFirstChild("Storage")

local bucket = tower.Tower.Bucket
local collecter = tower.Tower:FindFirstChild("AutoCollector", true)

deposit.Touched:Connect(function(hit)
	local humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid")
	if hit and hit.Parent then
			
			if humanoid and humanoid.Parent.Name == playerName then
				
				activateTouch(storage, deposit)
				
				if bucket.Bin.Name == "Empty" then
					
					if collecter then
						
						collecter:Destroy()
						
					end
					
					if not bucket.Bin:FindFirstChildWhichIsA("Script") then
						
						local binScript = script.BinScript:Clone()
						binScript.Disabled = false
						binScript.Parent = bucket.Bin
						
					end
					
				end

			end

		end
	end)
end

end

So, I think the problem is that the function to detect player touches is only being run once, when the droplet is added to the bucket, not every time the droplet is touched. If you move the functions around in your code, I think it should work.
Here is what your code should look like:
–[[
This is the player’s collection module. This module is responsible for all
player collection