From bd51f1d18f6bd1bb09df77762853f0f88143c2d8 Mon Sep 17 00:00:00 2001 From: mrkubax10 Date: Thu, 16 Nov 2023 17:33:36 +0100 Subject: [PATCH] Trigger network master if endpoint is not fully charged --- api.lua | 7 ++++--- machines/common.lua | 10 ++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/api.lua b/api.lua index 4f6183d..9f6f569 100644 --- a/api.lua +++ b/api.lua @@ -473,10 +473,11 @@ industrialtest.api.getConnections=function(pos,direction) for key,conn in ipairs(neighbourPositions) do local meta=minetest.get_meta(conn) local def=minetest.registered_nodes[minetest.get_node(conn).name] - local powerOutput=(sourceDef.groups._industrialtest_cable or industrialtest.api.isPowerOutput(sourceMeta,key)) - local powerInput=(sourceDef.groups._industrialtest_cable or industrialtest.api.isPowerInput(sourceMeta,key)) + local normalizedKey=industrialtest.api.normalizeSide(pos,key) + local powerOutput=(sourceDef.groups._industrialtest_cable or industrialtest.api.isPowerOutput(sourceMeta,normalizedKey)) + local powerInput=(sourceDef.groups._industrialtest_cable or industrialtest.api.isPowerInput(sourceMeta,normalizedKey)) if def.groups._industrialtest_cable or industrialtest.api.hasPowerStorage(meta) then - local side=industrialtest.api.getOppositeSide(key) + local side=industrialtest.api.getOppositeSide(normalizedKey) if (powerOutput and directionInput and (def.groups._industrialtest_cable or industrialtest.api.isPowerInput(meta,side))) or ((def.groups._industrialtest_cable or industrialtest.api.isPowerOutput(meta,side)) and powerInput and directionOutput) then table.insert(result,conn) end diff --git a/machines/common.lua b/machines/common.lua index a282629..0cc2f59 100644 --- a/machines/common.lua +++ b/machines/common.lua @@ -134,6 +134,16 @@ machine.onTimer=function(pos,elapsed,config) shouldRerunTimer,shouldUpdateFormspec=config.onTimer(pos,elapsed,meta,inv) end + local def=minetest.registered_nodes[minetest.get_node(pos).name] + if def.groups and def.groups._industrialtest_hasPowerInput and not industrialtest.api.isFullyCharged(meta) then + local networks=industrialtest.api.isAttachedToNetwork(meta) + if networks then + for _,network in ipairs(networks) do + minetest.get_node_timer(network):start(industrialtest.updateDelay) + end + end + end + if shouldUpdateFormspec then machine.updateFormspec(pos,config) end