Add in orphaned-area protection
parent
feefad51e2
commit
c3d22ea4d5
26
init.lua
26
init.lua
|
@ -4,12 +4,17 @@ local modstore = minetest.get_mod_storage()
|
|||
function maggems_landmark.is_protected(pos, name)
|
||||
local homes = maggems_landmark.homes
|
||||
for _, area in pairs(homes:get_areas_for_pos(pos, true, true)) do
|
||||
minetest.debug("found an area!", dump(area))
|
||||
local meta = minetest.get_meta(minetest.deserialize(area.data))
|
||||
if (meta:get_string("owner") ~= name) then
|
||||
minetest.chat_send_player(name, "Woah, buddy! That's "..meta:get_string("owner").."'s home!")
|
||||
minetest.chat_send_player(meta:get_string("owner"), "Hey! "..name.."'s trying to build at "..meta:get_string("maggems_landmark:name").."!")
|
||||
return true
|
||||
if (minetest.get_node(minetest.deserialize(area.data)) ~= "maggems_landmark:home") then
|
||||
homes:remove_area(id)
|
||||
minetest.debug("orphaned area quietly deleted...")
|
||||
else
|
||||
minetest.debug("found an area!", dump(area))
|
||||
local meta = minetest.get_meta(minetest.deserialize(area.data))
|
||||
if (meta:get_string("owner") ~= name) then
|
||||
minetest.chat_send_player(name, "Woah, buddy! That's "..meta:get_string("owner").."'s home!")
|
||||
minetest.chat_send_player(meta:get_string("owner"), "Hey! "..name.."'s trying to build at "..meta:get_string("maggems_landmark:name").."!")
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
|
@ -37,7 +42,7 @@ local function save_homes()
|
|||
end
|
||||
|
||||
local function update_formspec(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local formspec = "size[11,5.5]real_coordinates[true]"
|
||||
formspec = formspec .. "field[1,1;9,0.5;name;Home name;${maggems_landmark:name}]"
|
||||
local pos1 = minetest.deserialize(meta:get_string("maggems_landmark:pos1"))
|
||||
|
@ -78,16 +83,17 @@ minetest.register_node("maggems_landmark:home", {
|
|||
local pos2 = {x=pos.x+3,y=pos.y+3,z=pos.z+3}
|
||||
meta:set_string("maggems_landmark:pos1", minetest.serialize(pos1))
|
||||
meta:set_string("maggems_landmark:pos2", minetest.serialize(pos2))
|
||||
update_formspec(pos)
|
||||
update_formspec(pos)
|
||||
local homes = maggems_landmark.homes
|
||||
local id = homes:insert_area(pos1, pos2, minetest.serialize(pos))
|
||||
assert(id ~= nil)
|
||||
save_homes()
|
||||
meta:set_int("maggems_landmark:home_id", id)
|
||||
end,
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
local homes = maggems_landmark.homes
|
||||
homes:remove_area(oldmetadata.fields["maggems_landmark:home_id"])
|
||||
for id in pairs(homes:get_areas_for_pos(pos)) do
|
||||
homes:remove_area(id)
|
||||
end
|
||||
save_homes()
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
|
|
Loading…
Reference in New Issue