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)
|
local function compare_vec(va, vb)
|
||||||
if va == nil or vb == nil then
|
if va == nil or vb == nil then
|
||||||
return false
|
return false
|
||||||
@ -15,18 +20,6 @@ local function add_node_to_net(pos, master) -- stores node in master meta
|
|||||||
slavem:set_string("net_master", "")
|
slavem:set_string("net_master", "")
|
||||||
end
|
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)
|
local function net_build(pos, master, callerpos)
|
||||||
-- LOGIC to check only x sides, can be done eventually lol
|
-- LOGIC to check only x sides, can be done eventually lol
|
||||||
-- e.g furnace only allows from below , or solar panels
|
-- 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
|
return -- at this point all nodes have been processed, so we can return to the calling node
|
||||||
end
|
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)
|
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
|
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)
|
net_build(pos, pos)
|
||||||
end
|
end
|
||||||
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