Browse Source

make smallest area win

main
Hendrik Langer 4 years ago
parent
commit
e600c8ddcc
  1. 19
      init.lua

19
init.lua

@ -142,6 +142,14 @@ function switch_creative:get_area_size(astore_area)
return x*z
end
function switch_creative: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.x )
return x*z
end
function switch_creative:initial_stuff()
local stuff_string = minetest.settings:get("initial_stuff") or
"default:pick_steel,default:axe_steel,default:shovel_steel," ..
@ -243,6 +251,7 @@ function switch_creative:update_player(player)
local areas_open = false
local new_area = nil
local smallest_area = {}
local smallest_areas_area = {}
if minetest.check_player_privs(name, { protection_bypass=true }) then
--minetest.chat_send_player(name, "Changed area. You have protection_bypass priv")
@ -267,6 +276,11 @@ function switch_creative:update_player(player)
if minetest.get_modpath("areas") then
a_current_areas = areas:getAreasAtPos(pos)
for a_id, a_area in pairs( a_current_areas ) do
local areasize = switch_creative:get_areas_area_size(a_area)
if not smallest_areas_area.size or areasize < smallest_areas_area.size then
smallest_areas_area.id = a_id
smallest_areas_area.size = areasize
end
player_active_areas = player_active_areas .. ", a"..a_id
if a_area.owner == name then
areas_owner = true
@ -297,6 +311,11 @@ function switch_creative:update_player(player)
end
end
end
if smallest_areas_area.size and smallest_area.size then
if smallest_area.size <= smallest_areas_area.size then
privstring = privstring .. ", " .. switch_creative.area_privs[smallest_area.id]
end
end
end
if player_active_areas ~= player_last_active_areas then

Loading…
Cancel
Save