50 lines
1.4 KiB
Lua
50 lines
1.4 KiB
Lua
local NAME = minetest.get_current_modname()
|
|
local MAX_ENERGY = 50
|
|
|
|
minetest.register_node(NAME .. ":solar", {
|
|
description = "Solar Cell",
|
|
tiles = {
|
|
"solar_top.png",
|
|
"solar_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{0.5, -0.2, 0.5, -0.5, 0.2, -0.5},
|
|
{-0.2, -0.5, -0.2, 0.2, -0.2, 0.2}
|
|
}
|
|
},
|
|
groups = {
|
|
sparktech_techy = WRENCHABLE,
|
|
sparktech_energy_type = ENERGY_PRODUCER,
|
|
sparktech_net_trigger = TRUE,
|
|
sparktech_energy_max = MAX_ENERGY
|
|
}
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {minetest.get_current_modname() .. ":solar"},
|
|
interval = 1.0,
|
|
chance = 1,
|
|
catch_up = true,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_int("energy", meta:get_int("energy") + 2 * ( minetest.get_node_light(pos) / 15 ) ) -- this needs to be sunlight only... api missing
|
|
local emax = minetest.get_item_group(node.name, "sparktech_energy_max")
|
|
if meta:get_int("energy") > emax then
|
|
meta:set_int("energy", emax)
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = NAME .. ":solar",
|
|
recipe = {
|
|
{ "default:glass", "default:glass", "default:glass" },
|
|
{ "group:silicon", "default:copper_ingot", "group:silicon" },
|
|
{ "group:steel_plate", "group:steel_plate", "group:steel_plate"},
|
|
}
|
|
})
|