Skip to content
Snippets Groups Projects
Commit d6b6cb8b authored by Peter Nerlich's avatar Peter Nerlich
Browse files

refactor for after_place_node instead of on_construct, [NOT TESTED]

parent 84e5477e
No related branches found
No related tags found
No related merge requests found
......@@ -34,42 +34,16 @@ minetest.register_node("mapserver:train", {
groups = {cracky=3,oddly_breakable_by_hand=3},
sounds = moditems.sound_glass(),
can_dig = mapserver.can_interact,
after_place_node = mapserver.after_place_node,
on_construct = function(pos)
after_place_node = function(pos, placer, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local find_nearest_player = function(block_pos, radius)
-- adapted from https://forum.minetest.net/viewtopic.php?t=23319
local closest_d = radius+1
local closest_name
for i, obj in ipairs(minetest.get_objects_inside_radius(block_pos, radius)) do
-- 0.4.x compatibility:
--if obj:get_player_name() ~= "" then
-- 5.0.0+ method:
if minetest.is_player(obj) then
local distance = vector.distance(obj:get_pos(), block_pos)
if distance < closest_d then
closest_d = distance
closest_name = obj:get_player_name()
end
end
end
-- if 'closest_name' is nil, there's no player inside that radius
return closest_name
end
-- 10 should be the max possible interaction distance
local name = find_nearest_player(pos, 10)
local last_index = 0
local last_line = ""
local last_color = ""
if minetest.is_player(placer) then
local name = placer:get_player_name()
if name ~= nil then
name = string.lower(name)
if last_set_by[name] ~= nil then
......@@ -84,6 +58,7 @@ minetest.register_node("mapserver:train", {
last_set_by[name].line = last_line
last_set_by[name].color = last_color
end
end
meta:set_string("station", "")
meta:set_string("line", last_line)
......@@ -91,6 +66,9 @@ minetest.register_node("mapserver:train", {
meta:set_string("color", last_color)
update_formspec(meta)
return mapserver.after_place_node(pos, placer, itemstack, pointed_thing)
end,
on_receive_fields = function(pos, formname, fields, sender)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment