Compare commits

...

4 Commits

5 changed files with 81 additions and 14 deletions

View File

@ -48,7 +48,8 @@ minetest.register_on_joinplayer(function(player)
local nodeOptionsText = player:hud_add({
hud_elem_type = "text",
position = { x = 0.5, y = 0.5 },
offset = { x = 0, y = -80 },
offset = { x = -150, y = 0 },
alignment = { x = 1, y = 0 },
text = "",
direction = 0,
number = tonumber ("0xFFFFFF", 16)
@ -85,6 +86,26 @@ minetest.register_globalstep(function(dtime)
hudString = hudString .. optionname .. "["..type(default) .. "]: "
hudString = hudString .. tostring(option) .. " (" .. tostring(default) .. ")\n"
end
hudString = hudString .. "\n\nValues\n"
if minetest.registered_nodes[node.name]._sparkoutput then
for outputname, outputfunc in pairs(minetest.registered_nodes[node.name]._sparkoutput) do
local output = sparktech.getoutput(i["pos"], outputname)
local outputType = sparktech.getoutputtype(i["pos"], outputname)
if outputType == "number" then
hudString = hudString .. outputname .. ": " .. tostring(output) .. " (number)\n"
elseif outputType == "string" then
hudString = hudString .. outputname .. ": " .. output .. " (string)\n"
elseif outputType == "ItemStack" then
if output:is_empty() then
hudString = hudString .. outputname .. ": No item\n"
else
hudString = hudString .. outputname .. ": " .. output:get_name() .. "[" .. output:get_count() .. "] (item)\n"
end
else
hudString = hudString .. outputType .. "?\n".. dump2(output)
end
end
end
player:hud_change(i["nodeOptionsText"], "text", hudString)
else
player:hud_change(i["nodeOptionsText"], "text", "")

View File

@ -142,13 +142,13 @@ minetest.register_node(NAME .. ":burnergenerator", {
},
_sparkoutput = {
burntime = function(nodepos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(nodepos)
local inventory = meta:get_inventory()
local item = inventory:get_stack("fuel", 1)
return item:get_meta():get_int("rem_energy_")
end,
item = function(nodepos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(nodepos)
local inventory = meta:get_inventory()
return inventory:get_stack("fuel", 1)
end

View File

@ -33,7 +33,7 @@ minetest.register_node(NAME .. ":solar", {
_sparkoutput = {
lightLevel = function(nodepos)
-- TODO: cap this at light that the sun /can/ generator for this time
return minetest.get_node_light(pos)
return minetest.get_node_light(nodepos)
end
},
})

View File

@ -5,7 +5,7 @@ local timer = function(pos, elapsed, light_level)
local meta = minetest.get_meta(pos)
local energy = meta:get_int("energy")
if energy >= light_level then
if energy >= light_level or not sparktech.getoption(pos, "enabled") then
energy = energy - light_level
meta:set_int("energy", energy)
else
@ -37,7 +37,18 @@ minetest.register_node(NAME .. ":light_off", {
sparktech_energy_type = ENERGY_CONSUMER,
sparktech_net_trigger = TRUE,
sparktech_energy_max = MAX_ENERGY,
sparktech_energy_wakeup = 10
sparktech_energy_wakeup = 10,
sparktech_io = TRUE
},
_sparkoption = {
enabled = true,
light_level = 0
},
_sparkoutput = {
brightness = function(node) return 0 end
},
_sparkoutputtype = {
brightness = type(0)
},
light_source = 0
})
@ -55,7 +66,18 @@ minetest.register_node(NAME .. ":light_lv1", {
sparktech_energy_type = ENERGY_CONSUMER,
sparktech_net_trigger = TRUE,
sparktech_energy_max = MAX_ENERGY,
sparktech_energy_wakeup = 10
sparktech_energy_wakeup = 10,
sparktech_io = TRUE
},
_sparkoption = {
enabled = true,
light_level = 0
},
_sparkoutput = {
brightness = function(node) return 1 end
},
_sparkoutputtype = {
brightness = type(1)
},
drop = NAME .. ":light_off",
light_source = minetest.LIGHT_MAX / 3
@ -74,7 +96,18 @@ minetest.register_node(NAME .. ":light_lv2", {
sparktech_energy_type = ENERGY_CONSUMER,
sparktech_net_trigger = TRUE,
sparktech_energy_max = MAX_ENERGY,
sparktech_energy_wakeup = 10
sparktech_energy_wakeup = 10,
sparktech_io = TRUE
},
_sparkoption = {
enabled = true,
light_level = 0
},
_sparkoutput = {
brightness = function(node) return 2 end
},
_sparkoutputtype = {
brightness = type(2)
},
drop = NAME .. ":light_off",
light_source = (2 *minetest.LIGHT_MAX /3)
@ -93,7 +126,18 @@ minetest.register_node(NAME .. ":light_lv3", {
sparktech_energy_type = ENERGY_CONSUMER,
sparktech_net_trigger = TRUE,
sparktech_energy_max = MAX_ENERGY,
sparktech_energy_wakeup = 10
sparktech_energy_wakeup = 10,
sparktech_io = TRUE
},
_sparkoption = {
enabled = true,
light_level = 0
},
_sparkoutput = {
brightness = function(node) return 3 end
},
_sparkoutputtype = {
brightness = type(3)
},
drop = NAME .. ":light_off",
light_source = minetest.LIGHT_MAX

View File

@ -119,20 +119,22 @@ minetest.register_node(NAME ..":charger", {
},
_sparkoutput = {
charge = function(nodepos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(nodepos)
local inventory = meta:get_inventory()
local item = inventory:get_stack("charge", 1)
return item:get_meta():get_int("energy")
local charge = item:get_meta():get_int("energy")
if charge == 0 then return 0 end
return charge / minetest.get_item_group(item:get_name(), "sparktech_chargable")
end,
item = function(nodepos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(nodepos)
local inventory = meta:get_inventory()
return inventory:get_stack("charge", 1)
end
},
_sparkoutputtype = {
charge = type(int),
item = type(ItemStack())
charge = type(1),
item = "ItemStack"
}
})