Compare commits
3 Commits
c35e11d4b5
...
a865692a64
Author | SHA1 | Date |
---|---|---|
Pascal Abresch | a865692a64 | |
Pascal Abresch | 4f94a568ec | |
Pascal Abresch | 218e13fd1c |
|
@ -4,6 +4,7 @@ sparktech.getoption = function(nodepos, optionname)
|
|||
local node = minetest.get_node(nodepos)
|
||||
local meta = minetest.get_meta(nodepos)
|
||||
local optionsdef = minetest.registered_nodes[node.name]._sparkoption
|
||||
if iodebug and not optionsdef then error("Getoption called on node that shouldn't have options!") end
|
||||
if iodebug and not optionsdef[optionname] then
|
||||
error("optioname " ..optionname .. " for " .. node.name .." is not defined!")
|
||||
end
|
||||
|
@ -23,5 +24,18 @@ sparktech.setoption = function(nodepos, optionname, optionvalue)
|
|||
error("optioname " .. optionname .. " for " .. node.name .." is not defined!")
|
||||
end
|
||||
meta:set(optionname, minetest:serialize(optionvalue))
|
||||
nodeminetest.registered_nodes[node.name]._sparkoptionchanged(nodepos, optionname)
|
||||
end
|
||||
|
||||
|
||||
sparktech.getoutput = function(nodepos, outputname)
|
||||
assert(nodepos, "No position passed to getoutput!")
|
||||
assert(outputname, "No name passed to getoutput!")
|
||||
local sparkfunction = minetest.registered_nodes[minetest.get_node(nodepos).name]._sparkoutput[outputname]
|
||||
return sparkfunction(nodepos)
|
||||
end
|
||||
|
||||
|
||||
sparktech.getoutputtype = function(nodepos, outputname)
|
||||
return minetest.registered_nodes[minetest.get_node(nodepos).name]._sparkoutputtype[outputname]
|
||||
end
|
||||
|
||||
|
|
|
@ -101,6 +101,8 @@ minetest.register_globalstep(function(dtime)
|
|||
else
|
||||
hudString = hudString .. outputname .. ": " .. output:get_name() .. "[" .. output:get_count() .. "] (item)\n"
|
||||
end
|
||||
elseif outputType == "Inventory" then
|
||||
hudString = hudString .. outputname .. ": Inventory (viewing not implemented)"
|
||||
else
|
||||
hudString = hudString .. outputType .. "?\n".. dump2(output)
|
||||
end
|
||||
|
|
|
@ -36,6 +36,9 @@ minetest.register_node(NAME .. ":solar", {
|
|||
return minetest.get_node_light(nodepos)
|
||||
end
|
||||
},
|
||||
_sparkoutputtype = {
|
||||
lightLevel = type(1)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -397,7 +397,39 @@ minetest.register_node( NAME .. ":quarry", {
|
|||
|
||||
--on_destruct = function(pos, player) player:get_meta():set_string(NAME .. ":quarry_pos" , "") end,
|
||||
allow_metadata_inventory_put = function(_,_,_, stack) return stack:get_count() end,
|
||||
allow_metadata_inventory_take = function(_, _, _, stack) return stack:get_count() end
|
||||
allow_metadata_inventory_take = function(_, _, _, stack) return stack:get_count() end,
|
||||
_sparkoptionchanged = function(pos, name)
|
||||
if name == "enabled" then
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
if sparktech.getoption(pos, name) then
|
||||
timer:start(0.1)
|
||||
else
|
||||
timer:stop()
|
||||
end
|
||||
elseif name == "depth" then
|
||||
if sparktech.getoption(pos, name) > MAX_DEPTH then
|
||||
local meta = minetest.get_meta(nodepos)
|
||||
meta:set_int("depth", MAX_DEPTH)
|
||||
end
|
||||
end
|
||||
end,
|
||||
_sparkoption = {
|
||||
enabled = true,
|
||||
depth = MAX_DEPTH,
|
||||
},
|
||||
_sparkoutput = {
|
||||
items = function(nodepos)
|
||||
local meta = minetest.get_meta(nodepos)
|
||||
return meta:get_inventory()
|
||||
end,
|
||||
reachedDepth = function(nodepos)
|
||||
return 0
|
||||
end
|
||||
},
|
||||
_sparkoutputtype = {
|
||||
items = "Inventory",
|
||||
reachedDepth = type(0)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue