Introduce default.do_with_area

This commit is contained in:
Lars Mueller 2025-05-31 03:54:32 +02:00
parent 0351c66915
commit 23415c7e16
3 changed files with 157 additions and 198 deletions

View file

@ -835,3 +835,17 @@ function default.can_interact_with_node(player, pos)
return false
end
function default.do_with_area(p1, p2, func)
local vm = VoxelManip()
local minp, maxp = vm:read_from_map(p1, p2)
local va = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
local data = vm:get_data()
func(va, data)
vm:set_data(data)
vm:write_to_map()
vm:update_liquids()
if vm.close ~= nil then
vm:close()
end
end