diff --git a/init.lua b/init.lua index cff0b7a..b01160f 100644 --- a/init.lua +++ b/init.lua @@ -103,7 +103,6 @@ function teleports.do_teleporting(pos1, pos2, playername) minetest.after(3.0, teleports.teleportate, {pos1, pos2, playername}) end teleports.set_formspec = function(pos, shown_teleports) - minetest.log("error", tostring(dump(pos))) local meta = minetest.get_meta(pos) local node = minetest.get_node(pos) @@ -223,12 +222,22 @@ minetest.register_node("teleports:teleport", { end end, on_destruct = function(pos) + -- Update list of teleports on destruction + local near_teleports = teleports:find_nearby(pos, 6) + for i, EachTeleport in ipairs(teleports.teleports) do if vector.equals(EachTeleport.pos, pos) then table.remove(teleports.teleports, i) - teleports:save() end end + teleports:save() + + -- Update formspecs of affected teleports + for n=1, #near_teleports do + local pos2 = near_teleports[n].pos + local near_teleports2 = teleports:find_nearby(pos2, 6) + teleports.set_formspec(pos2, near_teleports2) + end end, on_receive_fields = teleports.on_receive_fields, allow_metadata_inventory_put = teleports.allow_metadata_inventory_put,