Fix node database ATC rail bug

After successfully registering newly-placed ATC rails in the nodedb, the rail's after_place_node() callback
(local apn_func()) immediately cleared it again by passing a "node" object that was actually a player object
and thus had no "name" or "param2" to ndb.update(), which it handled how it should not in this situation.
Since those ndb.update calls were unnecessary anyways, I removed them completely.
master
orwell96 2018-10-17 21:02:43 +02:00
parent 267ce6fe6d
commit fe4b4a695a
3 changed files with 7 additions and 5 deletions

View File

@ -78,8 +78,8 @@ end
--nodes
local idxtrans={static=1, mesecon=2, digiline=3}
local apn_func=function(pos, node)
advtrains.ndb.update(pos, node)
local apn_func=function(pos)
-- FIX for long-persisting ndb bug: there's no node in parameter 2 of this function!
local meta=minetest.get_meta(pos)
if meta then
meta:set_string("infotext", attrans("ATC controller, unconfigured."))

View File

@ -153,10 +153,13 @@ function ndb.update(pos, pnode)
nid=#ndb_nodeids+1
ndb_nodeids[nid]=node.name
end
ndbset(pos.x, pos.y, pos.z, (nid * 4) + (l2b(node.param2 or 0)) )
--atprint("nodedb: updating node", pos, "stored nid",nid,"assigned",ndb_nodeids[nid],"resulting cid",ndb_nodes[hash])
local resid = (nid * 4) + (l2b(node.param2 or 0))
ndbset(pos.x, pos.y, pos.z, resid )
--atdebug("nodedb: updating node", pos, "stored nid",nid,"assigned",ndb_nodeids[nid],"resulting cid",resid)
advtrains.invalidate_all_paths(pos)
else
--at this position there is no longer a node that needs to be tracked.
--atdebug("nodedb: updating node", pos, "cleared")
ndbset(pos.x, pos.y, pos.z, nil)
end
end

View File

@ -12,7 +12,6 @@ function ac.save()
end
function ac.after_place_node(pos, player)
advtrains.ndb.update(pos)
local meta=minetest.get_meta(pos)
meta:set_string("formspec", ac.getform(pos, meta))
meta:set_string("infotext", "LuaAutomation component, unconfigured.")