Fix power monitor instability (#654)

This fixes the power monitor instability where it was switching between having and not having network infotext. The cause was that the power monitor is LV MV and HV machine at the same time, and each tier has a countdown. If any of these countdowns were 0 it treated the machine as having no network. This was changed so that it only treats a machine as having no network if it is timed out in all tiers that it is a part of.
This commit is contained in:
Tóth Kornél 2024-11-22 21:19:49 +01:00 committed by GitHub
parent 18df2813a0
commit 87e512ff24
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -468,22 +468,29 @@ minetest.register_abm({
interval = 1, interval = 1,
chance = 1, chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
local has_network = false
local technic_machine = false
for tier, machines in pairs(technic.machines) do for tier, machines in pairs(technic.machines) do
if machines[node.name] and switching_station_timeout_count(pos, tier) then if machines[node.name] then
technic_machine = true
if not switching_station_timeout_count(pos, tier) then
has_network = true
end
end
end
if technic_machine and not has_network then
local nodedef = minetest.registered_nodes[node.name] local nodedef = minetest.registered_nodes[node.name]
if nodedef then
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("%s Has No Network"):format(nodedef.description)) meta:set_string("infotext", S("%s Has No Network"):format(nodedef.description))
end if nodedef.technic_disabled_machine_name then
if nodedef and nodedef.technic_disabled_machine_name then
node.name = nodedef.technic_disabled_machine_name node.name = nodedef.technic_disabled_machine_name
minetest.swap_node(pos, node) minetest.swap_node(pos, node)
end end
if nodedef and nodedef.technic_on_disable then if nodedef.technic_on_disable then
nodedef.technic_on_disable(pos, node) nodedef.technic_on_disable(pos, node)
end end
end end
end
end, end,
}) })