I Have a problem with my digging tool

i had a digging system working but i have infinate generation but now i cant dig and i need help with recreating another digging tool it does not work now because the generation is getting deleted and recreated over and over again

generation script:

while true do
	game.Workspace.Terrain:Clear()
	for _,i in pairs(game.Players:GetPlayers()) do
		if i.Character ~= nil and i.Character:FindFirstChild("Head") then
			game.Workspace.Terrain:FillBlock(
				CFrame.new(Vector3.new(i.Character:FindFirstChild("Head").Position.X,1,i.Character:FindFirstChild("Head").Position.Z)),
				Vector3.new(200,1,200),
			   Enum.Material.Grass)
			game.Workspace.Terrain:FillBlock(
				CFrame.new(Vector3.new(i.Character:FindFirstChild("Head").Position.X,-5,i.Character:FindFirstChild("Head").Position.Z)),
				Vector3.new(200,6,200),
				Enum.Material.Mud)
			game.Workspace.Terrain:FillBlock(
				CFrame.new(Vector3.new(i.Character:FindFirstChild("Head").Position.X,-20,i.Character:FindFirstChild("Head").Position.Z)),
				Vector3.new(200,20,200),
				Enum.Material.Rock)
			game.Workspace.Terrain:FillBlock(
				CFrame.new(Vector3.new(i.Character:FindFirstChild("Head").Position.X,-35,i.Character:FindFirstChild("Head").Position.Z)),
				Vector3.new(200,35,200),
				Enum.Material.Basalt)
		end
	end
	wait(0.5)
end

dig

mouse = game.Players.LocalPlayer:GetMouse()
down = false
mouse.Button1Down:connect(function ()
	down = true
	mouse.Button1Up:connect(function ()
		down = false
	end)
	local recordedPosition = game.Workspace.Terrain:WorldToCellPreferSolid(mouse.Hit.p)
	for i = 1,2 do
		if game.Workspace.Terrain:WorldToCellPreferSolid(mouse.Hit.p) ~= recordedPosition then
			return 
		end
		if down == false then
			return 
		end
		wait()
	end
	game.Workspace.Terrain:SetCell(recordedPosition.X,recordedPosition.Y,recordedPosition.Z,0,0,0)
end)