Fix crash on sign created by mech.

I tested wall signs, not plain style signs. Tested with exit
lobby signs to make sure those still work.
This commit is contained in:
Auke Kok 2019-01-24 20:30:54 -08:00
parent a5962a296a
commit 05d24a6c24

View File

@ -245,30 +245,33 @@ minetest.register_node("signs:sign", {
end,
after_box_construct = function(pos, box_id, player, moredata)
clean_sign_entities(pos)
local name = player:get_player_name()
local meta = minetest.get_meta(pos)
if boxes.players_in_boxes[name] then
local box = boxes.players_in_boxes[name].box_id
local bmeta = db.box_get_meta(box).meta
local text = meta:get_string("text")
local ntext = string.gsub(text, "%$%((.-)%)", function(s)
if s == "box_name" then
return bmeta.box_name
elseif s == "builder" then
return bmeta.builder
elseif s == "build_time" then
return format_time(bmeta.build_time)
elseif moredata and moredata[s] then
if moredata[s].format == "time" then
return format_time(moredata[s].data)
else
return moredata[s].data
if player then
-- this is reached in exit lobbies, elswhere player = nil (mech creation of sign)
local name = player:get_player_name()
if boxes.players_in_boxes[name] then
local box = boxes.players_in_boxes[name].box_id
local bmeta = db.box_get_meta(box).meta
local text = meta:get_string("text")
local ntext = string.gsub(text, "%$%((.-)%)", function(s)
if s == "box_name" then
return bmeta.box_name
elseif s == "builder" then
return bmeta.builder
elseif s == "build_time" then
return format_time(bmeta.build_time)
elseif moredata and moredata[s] then
if moredata[s].format == "time" then
return format_time(moredata[s].data)
else
return moredata[s].data
end
end
end
return "[" .. s .. " ???]"
end)
meta:set_string("dtext", ntext)
meta:mark_as_private("dtext")
return "[" .. s .. " ???]"
end)
meta:set_string("dtext", ntext)
meta:mark_as_private("dtext")
end
end
if meta:get_string("text") ~= "" then
minetest.add_entity(pos, "signs:sign")