summaryrefslogtreecommitdiff
path: root/mesecons/mesecons_solarpanel/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mesecons/mesecons_solarpanel/init.lua')
-rw-r--r--mesecons/mesecons_solarpanel/init.lua95
1 files changed, 95 insertions, 0 deletions
diff --git a/mesecons/mesecons_solarpanel/init.lua b/mesecons/mesecons_solarpanel/init.lua
new file mode 100644
index 0000000..bc5a408
--- /dev/null
+++ b/mesecons/mesecons_solarpanel/init.lua
@@ -0,0 +1,95 @@
+-- Solar Panel
+minetest.register_node("mesecons_solarpanel:solar_panel_on", {
+ drawtype = "nodebox",
+ tiles = { "jeija_solar_panel.png", },
+ inventory_image = "jeija_solar_panel.png",
+ wield_image = "jeija_solar_panel.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ is_ground_content = true,
+ node_box = {
+ type = "wallmounted",
+ wall_bottom = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+ wall_top = { -7/16, 7/16, -7/16, 7/16, 8/16, 7/16 },
+ wall_side = { -8/16, -7/16, -7/16, -7/16, 7/16, 7/16 },
+ },
+ selection_box = {
+ type = "wallmounted",
+ wall_bottom = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+ wall_top = { -7/16, 7/16, -7/16, 7/16, 8/16, 7/16 },
+ wall_side = { -8/16, -7/16, -7/16, -7/16, 7/16, 7/16 },
+ },
+ drop = "mesecons_solarpanel:solar_panel_off",
+ groups = {dig_immediate=3, not_in_creative_inventory = 1},
+ sounds = default.node_sound_glass_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.on
+ }}
+})
+
+-- Solar Panel
+minetest.register_node("mesecons_solarpanel:solar_panel_off", {
+ drawtype = "nodebox",
+ tiles = { "jeija_solar_panel.png", },
+ inventory_image = "jeija_solar_panel.png",
+ wield_image = "jeija_solar_panel.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ is_ground_content = true,
+ node_box = {
+ type = "wallmounted",
+ wall_bottom = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+ wall_top = { -7/16, 7/16, -7/16, 7/16, 8/16, 7/16 },
+ wall_side = { -8/16, -7/16, -7/16, -7/16, 7/16, 7/16 },
+ },
+ selection_box = {
+ type = "wallmounted",
+ wall_bottom = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+ wall_top = { -7/16, 7/16, -7/16, 7/16, 8/16, 7/16 },
+ wall_side = { -8/16, -7/16, -7/16, -7/16, 7/16, 7/16 },
+ },
+ groups = {dig_immediate=3},
+ description="Solar Panel",
+ sounds = default.node_sound_glass_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.off
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_solarpanel:solar_panel_off 1",
+ recipe = {
+ {"mesecons_materials:silicon", "mesecons_materials:silicon"},
+ {"mesecons_materials:silicon", "mesecons_materials:silicon"},
+ }
+})
+
+minetest.register_abm(
+ {nodenames = {"mesecons_solarpanel:solar_panel_off"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local light = minetest.get_node_light(pos, nil)
+
+ if light >= 12 then
+ minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_on", param2=node.param2})
+ mesecon.receptor_on(pos)
+ end
+ end,
+})
+
+minetest.register_abm(
+ {nodenames = {"mesecons_solarpanel:solar_panel_on"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local light = minetest.get_node_light(pos, nil)
+
+ if light < 12 then
+ minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_off", param2=node.param2})
+ mesecon.receptor_off(pos)
+ end
+ end,
+})