--[[ function creative_regions:is_areas_mod(area_id) assert(type(area_id) == "string") local is_areas_id = string.sub(id, 1, 2) == "a" local a_id = tonumber( string.sub(id, 2) ) return is_areas_id, a_id end --]] function creative_regions:get_areas_area_size(areas_area) local pos1 = areas_area.pos1 local pos2 = areas_area.pos2 local x = math.abs( pos2.x - pos1.x ) local z = math.abs( pos2.z - pos1.z ) local y = math.abs( pos2.y - pos1.y ) return x*z*y end if minetest.get_modpath("areas") then -- remove protector blocks on area removal areas:registerOnRemove(function(id) local area = areas.areas[id] local area_id = "a"..tostring(id) creative_regions.set_region_privs(area_id, nil) creative_regions.save_regions() if creative_regions:get_areas_area_size(area) > 4096000 then minetest.log("warning", "[creative_regions] area " .. area_id .. " too big. Can't search for Protector Blocks") return end local protectors_in_area = minetest.find_nodes_in_area(area.pos1, area.pos2, {"creative_regions:protector_nofly", "creative_regions:protector_arena"}) for _, pos in ipairs(protectors_in_area) do local meta = minetest.get_meta(pos) local stored_id = meta:get_string("area_id") local privstring = meta:get_string("privstring") local owner = meta:get_string("owner") if stored_id == area_id then minetest.remove_node(pos) minetest.chat_send_player(owner, "[creative_regions] Protector Blocks removed for removed area " .. area_id) end end end) -- areas mod hud local function areas_hud_handler(pos, areas) local current_regions = creative_regions.astore:get_areas_for_pos(pos, false, true) for astore_id, astore_area in pairs( current_regions ) do if astore_id then table.insert(areas, { id = "region:"..astore_id, name = astore_area.data, --owner = "", }) end end end areas:registerHudHandler(areas_hud_handler) end