Update neighbor teleports on place

master
Wuzzy 2020-09-08 19:56:37 +02:00
parent 4c99a34881
commit f7fad2e16d
1 changed files with 17 additions and 4 deletions

View File

@ -102,14 +102,15 @@ function teleports.do_teleporting(pos1, pos2, playername)
teleports.animate(pos1, playername)
minetest.after(3.0, teleports.teleportate, {pos1, pos2, playername})
end
teleports.set_formspec = function(pos)
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)
local buttons = "";
local x = 1
local y = 1
for i, EachTeleport in ipairs( teleports:find_nearby(pos, 6) ) do
for i, EachTeleport in ipairs( shown_teleports ) do
if i == 4 then
x = x + 3.5
y = 1
@ -162,7 +163,7 @@ teleports.on_receive_fields = function(pos, formname, fields, player)
end
end
teleports.set_formspec(pos)
teleports.set_formspec(pos, available)
end
end
end
@ -196,7 +197,11 @@ minetest.register_node("teleports:teleport", {
inv:set_size("price", 1)
local initialcharge = {name="default:mossycobble", count=30, wear=0, metadata=""}
inv:add_item("price", initialcharge)
teleports.set_formspec(pos)
-- Add formspec to self
local near_teleports = teleports:find_nearby(pos, 6)
teleports.set_formspec(pos, near_teleports)
local sign_pos = minetest.find_node_near(pos, 1, {"default:sign_wall_wood", "default:sign_wall_steel"})
if sign_pos then
local sign_meta = minetest.env:get_meta(sign_pos)
@ -206,6 +211,14 @@ minetest.register_node("teleports:teleport", {
else
table.insert(teleports.teleports, {pos=vector.round(pos)})
end
-- Update formspec of target 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
teleports:save()
end
end,