diff --git a/areas.lua b/areas.lua index 0c91c77..56af8ae 100644 --- a/areas.lua +++ b/areas.lua @@ -9,9 +9,16 @@ end -- protection check local old_is_protected = minetest.is_protected function minetest.is_protected(pos, name) - if areas.getSmallestAreaAtPos and areas.config.use_smallest_area_precedence then + local area_list + if areas.config.use_smallest_area_precedence then local _, id = areas:getSmallestAreaAtPos(pos) - local xp_area = id and xp_areas[id] + area_list = id and { [id] = true } or {} + else + area_list = areas:getAreasAtPos(pos) + end + for id in pairs(area_list) do + local xp_area = xp_areas[id] + if xp_area then local xp = xp_redo.get_xp(name) if xp_area.min and xp < xp_area.min then @@ -20,20 +27,6 @@ function minetest.is_protected(pos, name) return true end end - else - local area_list = areas:getAreasAtPos(pos) - for id in pairs(area_list) do - local xp_area = xp_areas[id] - - if xp_area then - local xp = xp_redo.get_xp(name) - if xp_area.min and xp < xp_area.min then - return true - elseif xp_area.max and xp > xp_area.max then - return true - end - end - end end return old_is_protected(pos, name)