clear_area() is clearly deleting even invalid entities on purpose. What you need to do is make sure that you don't log entity.name
and entity.type
when entity is invalid. e.g:
for _, entity in pairs(surface.find_entities_filtered({area = area, type = {"resource"}, invert = true})) do
if debug_log then log(string.format("[clear_area]: entity.valid='%s'", entity.valid)) end
if debug_log and entity.valid then log(string.format("[clear_area]: entity.type='%s',entity.name='%s'", entity.type, entity.name)) end
if (entity.valid and entity.type ~= "tree") or math.random() < (half_size / 14) then
if debug_log then
if entity.valid then
log(string.format("[clear_area]: Destroying entity.name='%s' ...", entity.name))
else
log("[clear_area]: Destroying invalid entity")
end
end
entity.destroy({do_cliff_correction = true, raise_destroy = true})
end
end