From b001a679799bdc7d08eabcd1300271d0e1357b0a Mon Sep 17 00:00:00 2001
From: Zefram <zefram@fysh.org>
Date: Wed, 13 Aug 2014 20:07:53 +0200
Subject: [PATCH] Administrative world anchor

---
 technic/machines/LV/solar_panel.lua |   72 ++++++++++++++++-------------------
 1 files changed, 33 insertions(+), 39 deletions(-)

diff --git a/technic/machines/LV/solar_panel.lua b/technic/machines/LV/solar_panel.lua
index d49f609..959de52 100644
--- a/technic/machines/LV/solar_panel.lua
+++ b/technic/machines/LV/solar_panel.lua
@@ -4,12 +4,40 @@
 
 local S = technic.getter
 
+local run = function(pos, node)
+	-- The action here is to make the solar panel prodice power
+	-- Power is dependent on the light level and the height above ground
+	-- There are many ways to cheat by using other light sources like lamps.
+	-- As there is no way to determine if light is sunlight that is just a shame.
+	-- To take care of some of it solar panels do not work outside daylight hours or if
+	-- built below 0m
+	local pos1 = {x=pos.x, y=pos.y+1, z=pos.z}
+	local machine_name = S("Small Solar %s Generator"):format("LV")
+
+	local light = minetest.get_node_light(pos1, nil)
+	local time_of_day = minetest.get_timeofday()
+	local meta = minetest.get_meta(pos)
+	if light == nil then light = 0 end
+	-- turn on panel only during day time and if sufficient light
+        -- I know this is counter intuitive when cheating by using other light sources underground.
+	if light >= 12 and time_of_day >= 0.24 and time_of_day <= 0.76 and pos.y > -10 then
+		local charge_to_give = math.floor((light + pos1.y) * 3)
+		charge_to_give = math.max(charge_to_give, 0)
+		charge_to_give = math.min(charge_to_give, 200)
+		meta:set_string("infotext", S("%s Active"):format(machine_name).." ("..charge_to_give.."EU)")
+		meta:set_int("LV_EU_supply", charge_to_give)
+	else
+		meta:set_string("infotext", S("%s Idle"):format(machine_name))
+		meta:set_int("LV_EU_supply", 0)
+	end
+end
+
 minetest.register_node("technic:solar_panel", {
 	tiles = {"technic_solar_panel_top.png",  "technic_solar_panel_bottom.png", "technic_solar_panel_side.png",
 	         "technic_solar_panel_side.png", "technic_solar_panel_side.png",   "technic_solar_panel_side.png"},
-	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+	groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1},
 	sounds = default.node_sound_wood_defaults(),
-    	description = S("Solar Panel"),
+    	description = S("Small Solar %s Generator"):format("LV"),
 	active = false,
 	drawtype = "nodebox",
 	paramtype = "light",
@@ -21,53 +49,19 @@
 	on_construct = function(pos)
 		local meta = minetest.get_meta(pos)
 		meta:set_int("LV_EU_supply", 0)
-		meta:set_string("infotext", S("Solar Panel"))
+		meta:set_string("infotext", S("Small Solar %s Generator"):format("LV"))
 	end,
+	technic_run = run,
 })
 
 minetest.register_craft({
 	output = 'technic:solar_panel',
 	recipe = {
 		{'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer'},
-		{'default:steel_ingot',         'technic:lv_cable0',           'default:steel_ingot'},
+		{'technic:fine_silver_wire',    'technic:lv_cable0',           'mesecons_materials:glue'},
 
 	}
 })
-
-minetest.register_abm({
-	nodenames = {"technic:solar_panel"},
-	interval   = 1,
-	chance     = 1,
-	action = function(pos, node, active_object_count, active_object_count_wider)
-		-- The action here is to make the solar panel prodice power
-		-- Power is dependent on the light level and the height above ground
-		-- 130m and above is optimal as it would be above cloud level.
-		-- Height gives 1/4 of the effect, light 3/4. Max. effect is 26EU.
-		-- There are many ways to cheat by using other light sources like lamps.
-		-- As there is no way to determine if light is sunlight that is just a shame.
-		-- To take care of some of it solar panels do not work outside daylight hours or if
-		-- built below -10m
-		local pos1 = {x=pos.x, y=pos.y+1, z=pos.z}
-		local machine_name = S("Solar Panel")
-
-		local light = minetest.get_node_light(pos1, nil)
-		local time_of_day = minetest.get_timeofday()
-		local meta = minetest.get_meta(pos)
-		if light == nil then light = 0 end
-		-- turn on panel only during day time and if sufficient light
-                -- I know this is counter intuitive when cheating by using other light sources underground.
-		if light >= 12 and time_of_day >= 0.24 and time_of_day <= 0.76 and pos.y > -10 then
-			local charge_to_give = math.floor((light + pos1.y) * 3)
-			charge_to_give = math.max(charge_to_give, 0)
-			charge_to_give = math.min(charge_to_give, 200)
-			meta:set_string("infotext", S("%s Active"):format(machine_name).." ("..charge_to_give.."EU)")
-			meta:set_int("LV_EU_supply", charge_to_give)
-		else
-			meta:set_string("infotext", S("%s Idle"):format(machine_name))
-			meta:set_int("LV_EU_supply", 0)
-		end
-	end,
-}) 
 
 technic.register_machine("LV", "technic:solar_panel", technic.producer)
 

--
Gitblit v1.8.0