started energy distrib code
This commit is contained in:
parent
b24f36efad
commit
b9f1c6688e
@ -1,3 +1,8 @@
|
||||
-- internal var net_master stores all slave nodes
|
||||
-- sparktech_net_passive = are used to follow nets, do not count towards energy
|
||||
-- sparktech_net_trigger = trigger updates
|
||||
-- Updates blocks every seconds
|
||||
|
||||
local function compare_vec(va, vb)
|
||||
if va == nil or vb == nil then
|
||||
return false
|
||||
@ -15,18 +20,6 @@ local function add_node_to_net(pos, master) -- stores node in master meta
|
||||
slavem:set_string("net_master", "")
|
||||
end
|
||||
|
||||
local function net_get_slaves(master)
|
||||
local slaves = {}
|
||||
local meta = minetest.get_meta(master)
|
||||
local slave_s = meta:get_string("net_master")
|
||||
local slave_s_dict = string.split(slave_s, "|")
|
||||
for _, val in pairs(slave_s_dict) do
|
||||
local cor = string.split(val, ":")
|
||||
slaves[#slaves + 1] = {tonumber(cor[1]), tonumber(cor[2]), tonumber(cor[3])}
|
||||
end
|
||||
return slaves
|
||||
end
|
||||
|
||||
local function net_build(pos, master, callerpos)
|
||||
-- LOGIC to check only x sides, can be done eventually lol
|
||||
-- e.g furnace only allows from below , or solar panels
|
||||
@ -67,37 +60,6 @@ local function net_build(pos, master, callerpos)
|
||||
return -- at this point all nodes have been processed, so we can return to the calling node
|
||||
end
|
||||
|
||||
local function net_distribute(pos) -- function is called severall times, only run if this is a master node
|
||||
-- if called for a node that does not contain netdata, rerun for the node that does.
|
||||
local meta = minetest.get_meta(pos)
|
||||
local net_master = meta:get_string("net_master")
|
||||
if (net_master == nil) then -- if it is not set this is NOT a master node, so we can ignore it eh
|
||||
return
|
||||
else
|
||||
-- actual distrib code
|
||||
end
|
||||
end
|
||||
|
||||
-- internal var net_master stores all slave nodes
|
||||
-- sparktech_net_passive = are used to follow nets, do not count towards energy
|
||||
-- sparktech_net_trigger = trigger updates
|
||||
-- Updates blocks every seconds
|
||||
minetest.register_abm({
|
||||
nodenames = {"group:sparktech_net_trigger"},
|
||||
interval = 1.0,
|
||||
chance = 1,
|
||||
catch_up = true,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
net_distribute(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
|
||||
if minetest.get_item_group(itemstack:get_name(), "sparktech_energy_storeonbreak") > 0 then
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("energy", itemstack:get_metadata() or 0)
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
|
||||
if (minetest.get_item_group(itemstack:get_name(), "sparktech_net_passive") == 1 ) then
|
||||
@ -106,3 +68,5 @@ minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack
|
||||
net_build(pos, pos)
|
||||
end
|
||||
end)
|
||||
|
||||
-- require: when node is destroyed
|
6
sparkcore/util.lua
Normal file
6
sparkcore/util.lua
Normal file
@ -0,0 +1,6 @@
|
||||
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
|
||||
if minetest.get_item_group(itemstack:get_name(), "sparktech_energy_storeonbreak") > 0 then
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("energy", itemstack:get_metadata() or 0)
|
||||
end
|
||||
end)
|
Loading…
x
Reference in New Issue
Block a user