Some various fixes and changes in machine.lua and electric_machine.lua

This commit is contained in:
mrkubax10 2025-03-31 11:54:47 +02:00
parent 38b08bcb0d
commit b18b6e5a32
2 changed files with 26 additions and 19 deletions

View File

@ -29,7 +29,7 @@ function industrialtest.ElectricMachine.onConstruct(self,pos)
industrialtest.api.createNetworkMapForNode(conn) industrialtest.api.createNetworkMapForNode(conn)
local def=minetest.get_node(conn) local def=minetest.get_node(conn)
if def and def._industrialtest_self then if def and def._industrialtest_self then
def._industrialtest_self:requestPower(conn) def._industrialtest_self:flowPower(conn)
else else
-- Support for bare definitions that don't use industrialtest pseudo-OOP -- Support for bare definitions that don't use industrialtest pseudo-OOP
minetest.get_node_timer(conn):start(industrialtest.updateDelay) minetest.get_node_timer(conn):start(industrialtest.updateDelay)
@ -41,12 +41,12 @@ function industrialtest.ElectricMachine.onConstruct(self,pos)
if networks then if networks then
for _,network in ipairs(networks) do for _,network in ipairs(networks) do
industrialtest.api.createNetworkMapForNode(network) industrialtest.api.createNetworkMapForNode(network)
local def=minetest.get_node(network) local def=minetest.registered_nodes[minetest.get_node(network).name]
if def and def._industrialtest_self then if def and def._industrialtest_self then
def._industrialtest_self:requestPower(network) def._industrialtest_self:flowPower(network)
else else
-- Support for bare definitions that don't use industrialtest pseudo-OOP -- Support for bare definitions that don't use industrialtest pseudo-OOP
minetest.get_node_timer(conn):start(industrialtest.updateDelay) minetest.get_node_timer(network):start(industrialtest.updateDelay)
end end
end end
end end
@ -152,7 +152,7 @@ function industrialtest.ElectricMachine.onMetadataInventoryPut(self,pos,listname
industrialtest.Machine.onMetadataInventoryPut(self,pos,listname,index,stack) industrialtest.Machine.onMetadataInventoryPut(self,pos,listname,index,stack)
end end
function industrialtest.ElectricMachine.requestPower(self,pos) function industrialtest.ElectricMachine.flowPower(self,pos)
if not self.hasPowerOutput then if not self.hasPowerOutput then
return return
end end
@ -167,23 +167,28 @@ function industrialtest.ElectricMachine.requestPower(self,pos)
self:triggerIfNeeded(pos) self:triggerIfNeeded(pos)
end end
function industrialtest.ElectricMachine.requestPower(self,pos)
local meta=minetest.get_meta(pos)
local networks=industrialtest.api.isAttachedToNetwork(meta)
if networks then
for _,network in ipairs(networks) do
local def=minetest.registered_nodes[minetest.get_node(network).name]
if def and def._industrialtest_self then
def._industrialtest_self:flowPower(network)
else
-- Support for bare definitions that don't use industrialtest pseudo-OOP
minetest.get_node_timer(network):start(industrialtest.updateDelay)
end
end
end
end
function industrialtest.ElectricMachine.powerExchange(self,pos) function industrialtest.ElectricMachine.powerExchange(self,pos)
local meta=minetest.get_meta(pos) local meta=minetest.get_meta(pos)
local shouldRerunTimer=false local shouldRerunTimer=false
if self.hasPowerInput and not industrialtest.api.isFullyCharged(meta) then if self.hasPowerInput and not industrialtest.api.isFullyCharged(meta) then
local networks=industrialtest.api.isAttachedToNetwork(meta) self:requestPower(pos)
if networks then
for _,network in ipairs(networks) do
local def=minetest.registered_nodes[minetest.get_node(network).name]
if def and def._industrialtest_self then
def._industrialtest_self:requestPower(network)
else
-- Support for bare definitions that don't use industrialtest pseudo-OOP
minetest.get_node_timer(network):start(industrialtest.updateDelay)
end
end
end
shouldRerunTimer=shouldRerunTimer or not industrialtest.api.isFullyCharged(meta) shouldRerunTimer=shouldRerunTimer or not industrialtest.api.isFullyCharged(meta)
end end

View File

@ -18,8 +18,10 @@ industrialtest.Machine={}
function industrialtest.Machine.onConstruct(self,pos) function industrialtest.Machine.onConstruct(self,pos)
local meta=minetest.get_meta(pos) local meta=minetest.get_meta(pos)
meta:set_string("formspec",self:getFormspec(pos)) if not self.withoutFormspec then
minetest.get_node_timer(pos):start(industrialtest.updateDelay) meta:set_string("formspec",self:getFormspec(pos))
end
self:trigger(pos)
end end
function industrialtest.Machine.onDestruct(self) function industrialtest.Machine.onDestruct(self)