I suggest implementing a debounce mechanism to prevent multiple cloning of the tree when the BasePart.Touched event is triggered multiple times. For a more comprehensive understanding of debounces, I recommend referring to this informative article.
I added debounce for you and simplified your script, hopefully this will help you
local TweenService = game:GetService("TweenService")
local tree1 = game.ServerStorage.Trees["Tree 1"]
local log1 = game.ServerStorage.Logs["Tree Log 1 Folder"]["Tree Log 1"]
local db = {}
script.Parent.Touched:Connect(function(hit)
if hit.Name ~= "Tree 1" then return end
local tree = hit:FindFirstAncestorOfClass("Model")
if not tree or db[tree] then return end
db[tree] = true
local pos = tree:GetPivot()
for _, part in tree:GetDescendants() do
if part:IsA("BasePart") then
part.Anchored = false
TweenService:Create(part, TweenInfo.new(1), {Transparency = 1}):Play()
end
end
task.wait(1)
tree:Destroy()
local log = log1:Clone()
log:PivotTo(pos)
log.Parent = workspace
task.wait(23)
local newTree = tree1:Clone()
newTree:PivotTo(pos)
newTree.Parent = workspace
end)