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"}, } })