From d99c17d0716c3fc616ac318531879248860b5d56 Mon Sep 17 00:00:00 2001 From: Luke aka SwissalpS <161979+SwissalpS@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:47:44 +0200 Subject: [PATCH] respect areas setting (#75) * respect [areas] setting * de duplicate code --- areas.lua | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/areas.lua b/areas.lua index 1349dbe..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 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)