Make is_node_loaded() checks also for mesecon interactions and digiline_send(), move on_updated_from_nodedb to advtrains table

This commit is contained in:
orwell96 2021-02-04 12:35:24 +01:00
parent 8ae405f00f
commit e935136d58
4 changed files with 32 additions and 15 deletions

View File

@ -294,11 +294,12 @@ ndb.run_lbm = function(pos, node)
ndb.update(pos, node)
else
if (nodeid~=node.name or param2~=node.param2) then
atprint("nodedb: lbm replaced", pos, "with nodeid", nodeid, "param2", param2, "cid is", cid)
minetest.swap_node(pos, {name=nodeid, param2 = param2})
--atprint("nodedb: lbm replaced", pos, "with nodeid", nodeid, "param2", param2, "cid is", cid)
local newnode = {name=nodeid, param2 = param2}
minetest.swap_node(pos, newnode)
local ndef=minetest.registered_nodes[nodeid]
if ndef and ndef.on_updated_from_nodedb then
ndef.on_updated_from_nodedb(pos, node)
if ndef and ndef.advtrains and ndef.advtrains.on_updated_from_nodedb then
ndef.advtrains.on_updated_from_nodedb(pos, newnode)
end
return true
end

View File

@ -13,16 +13,18 @@ minetest.override_item("mesecons_switch:mesecon_switch_off", {
mesecon.receptor_on(pos)
minetest.sound_play("mesecons_switch", {pos=pos})
end,
on_updated_from_nodedb = function(pos, node)
mesecon.receptor_off(pos)
end,
advtrains = {
getstate = "off",
setstate = function(pos, node, newstate)
if newstate=="on" then
advtrains.ndb.swap_node(pos, {name="mesecons_switch:mesecon_switch_on", param2=node.param2})
if advtrains.is_node_loaded(pos) then
mesecon.receptor_on(pos)
end
end
end,
on_updated_from_nodedb = function(pos, node)
mesecon.receptor_off(pos)
end,
},
})
@ -38,17 +40,19 @@ minetest.override_item("mesecons_switch:mesecon_switch_on", {
mesecon.receptor_off(pos)
minetest.sound_play("mesecons_switch", {pos=pos})
end,
on_updated_from_nodedb = function(pos, node)
mesecon.receptor_on(pos)
end,
advtrains = {
getstate = "on",
setstate = function(pos, node, newstate)
if newstate=="off" then
advtrains.ndb.swap_node(pos, {name="mesecons_switch:mesecon_switch_off", param2=node.param2})
if advtrains.is_node_loaded(pos) then
mesecon.receptor_off(pos)
end
end
end,
fallback_state = "off",
on_updated_from_nodedb = function(pos, node)
mesecon.receptor_on(pos)
end,
},
})

View File

@ -125,9 +125,11 @@ function ac.run_in_env(pos, evtdata, customfct_p)
if minetest.global_exists("digiline") then
customfct.digiline_send=function(channel, msg)
assertt(channel, "string")
if advtrains.is_node_loaded(pos) then
digiline:receptor_send(pos, digiline.rules.default, channel, msg)
end
end
end
-- add lines scheduler if enabled
if advtrains.lines and advtrains.lines.sched then
customfct.schedule = function(rwtime, msg)

View File

@ -318,10 +318,15 @@ if mesecon then
}
},
advtrains = {
on_updated_from_nodedb = function(pos, node)
mesecon.receptor_off(pos, advtrains.meseconrules)
end,
on_train_enter=function(pos, train_id)
advtrains.ndb.swap_node(pos, {name="advtrains:dtrack_detector_on".."_"..suffix..rotation, param2=advtrains.ndb.get_node(pos).param2})
if advtrains.is_node_loaded(pos) then
mesecon.receptor_on(pos, advtrains.meseconrules)
end
end
}
}
end
@ -343,10 +348,15 @@ if mesecon then
}
},
advtrains = {
on_updated_from_nodedb = function(pos, node)
mesecon.receptor_on(pos, advtrains.meseconrules)
end,
on_train_leave=function(pos, train_id)
advtrains.ndb.swap_node(pos, {name="advtrains:dtrack_detector_off".."_"..suffix..rotation, param2=advtrains.ndb.get_node(pos).param2})
if advtrains.is_node_loaded(pos) then
mesecon.receptor_off(pos, advtrains.meseconrules)
end
end
}
}
end