From 55bdf5441fefa21bb02bed836db40c24bcc1c1a5 Mon Sep 17 00:00:00 2001 From: Jeija Date: Mon, 13 Aug 2012 14:26:00 +0200 Subject: [PATCH] Code improvement, Bugfix for solar panel --- mesecons_hydroturbine/init.lua | 2 -- mesecons_solarpanel/init.lua | 56 +++++++++++++++++++++++++++++----- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/mesecons_hydroturbine/init.lua b/mesecons_hydroturbine/init.lua index 0a662bc..03e1ccb 100644 --- a/mesecons_hydroturbine/init.lua +++ b/mesecons_hydroturbine/init.lua @@ -53,7 +53,6 @@ nodenames = {"mesecons_hydroturbine:hydro_turbine_off"}, action = function(pos, node, active_object_count, active_object_count_wider) local waterpos={x=pos.x, y=pos.y+1, z=pos.z} if minetest.env:get_node(waterpos).name=="default:water_flowing" then - --minetest.env:remove_node(pos) minetest.env:add_node(pos, {name="mesecons_hydroturbine:hydro_turbine_on"}) nodeupdate(pos) mesecon:receptor_on(pos) @@ -68,7 +67,6 @@ nodenames = {"mesecons_hydroturbine:hydro_turbine_on"}, action = function(pos, node, active_object_count, active_object_count_wider) local waterpos={x=pos.x, y=pos.y+1, z=pos.z} if minetest.env:get_node(waterpos).name~="default:water_flowing" then - --minetest.env:remove_node(pos) minetest.env:add_node(pos, {name="mesecons_hydroturbine:hydro_turbine_off"}) nodeupdate(pos) mesecon:receptor_off(pos) diff --git a/mesecons_solarpanel/init.lua b/mesecons_solarpanel/init.lua index 42abf55..343dee1 100644 --- a/mesecons_solarpanel/init.lua +++ b/mesecons_solarpanel/init.lua @@ -1,5 +1,32 @@ -- Solar Panel -minetest.register_node("mesecons_solarpanel: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, mesecon = 2, not_in_creative_inventory = 1}, + description="Solar Panel", +}) + +-- Solar Panel +minetest.register_node("mesecons_solarpanel:solar_panel_off", { drawtype = "nodebox", tiles = { "jeija_solar_panel.png", }, inventory_image = "jeija_solar_panel.png", @@ -20,13 +47,12 @@ minetest.register_node("mesecons_solarpanel:solar_panel", { 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 }, }, - furnace_burntime = 5, groups = {dig_immediate=3, mesecon = 2}, description="Solar Panel", }) minetest.register_craft({ - output = '"mesecons_solarpanel:solar_panel" 1', + output = '"mesecons_solarpanel:solar_panel_off" 1', recipe = { {'"mesecons_materials:silicon"', '"mesecons_materials:silicon"'}, {'"mesecons_materials:silicon"', '"mesecons_materials:silicon"'}, @@ -34,16 +60,32 @@ minetest.register_craft({ }) minetest.register_abm( - {nodenames = {"mesecons_solarpanel:solar_panel"}, - interval = 0.1, + {nodenames = {"mesecons_solarpanel:solar_panel_off"}, + interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.env:get_node_light(pos, nil) - if light == nil then light = 0 end + if light >= 12 then + minetest.env:set_node(pos, {name="mesecons_solarpanel:solar_panel_on", param2=node.param2}) mesecon:receptor_on(pos) - else + 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.env:get_node_light(pos, nil) + + if light < 12 then + minetest.env:set_node(pos, {name="mesecons_solarpanel:solar_panel_off", param2=node.param2}) mesecon:receptor_off(pos) end end, }) + +mesecon:add_receptor_node("mesecons_solarpanel:solar_panel_on") +mesecon:add_receptor_node_off("mesecons_solarpanel:solar_panel_off")