summaryrefslogtreecommitdiff
path: root/solar_panel.lua
diff options
context:
space:
mode:
authorMaciej Kasatkin <mk@realbadangel.pl>2012-09-02 03:12:24 +0200
committerMaciej Kasatkin <mk@realbadangel.pl>2012-09-02 03:12:24 +0200
commit54529cbf542aa226976b758382762f45a03130b4 (patch)
tree2c5fe473b922f8733767f397460d5e93733b6f30 /solar_panel.lua
parent77007b37464f8bce6f4c2476c834194d11b19f55 (diff)
fixes to solar panel and battery boxes
not possible any longer to load many batboxes at the same time solar panels now have energy buffers too, so 1st batbox will be loaded, then the next one etc
Diffstat (limited to 'solar_panel.lua')
-rw-r--r--solar_panel.lua74
1 files changed, 74 insertions, 0 deletions
diff --git a/solar_panel.lua b/solar_panel.lua
new file mode 100644
index 0000000..9a3a873
--- /dev/null
+++ b/solar_panel.lua
@@ -0,0 +1,74 @@
+minetest.register_node("technic:solar_panel", {
+ tiles = {"technic_solar_panel_top.png", "technic_solar_panel_side.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},
+ sounds = default.node_sound_wood_defaults(),
+ description="Solar Panel",
+ active = false,
+ technic_power_machine=1,
+ internal_EU_buffer=0;
+ internal_EU_buffer_size=1000;
+ drawtype = "nodebox",
+ paramtype = "light",
+ is_ground_content = true,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ on_construct = function(pos)
+ local meta = minetest.env:get_meta(pos)
+ meta:set_float("technic_power_machine", 1)
+ meta:set_float("internal_EU_buffer", 0)
+ meta:set_float("internal_EU_buffer_size", 1000)
+
+ meta:set_string("infotext", "Solar Panel")
+ meta:set_float("active", false)
+ end,
+})
+
+minetest.register_craft({
+ output = 'technic:solar_panel 1',
+ recipe = {
+ {'default:sand', 'default:sand','default:sand'},
+ {'default:sand', 'moreores:copper_ingot','default:sand'},
+ {'default:sand', 'default:sand','default:sand'},
+
+ }
+})
+
+minetest.register_abm(
+ {nodenames = {"technic:solar_panel"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+
+ local pos1={}
+ pos1.y=pos.y+1
+ pos1.x=pos.x
+ pos1.z=pos.z
+
+ local light = minetest.env:get_node_light(pos1, nil)
+ local meta = minetest.env:get_meta(pos)
+ if light == nil then light = 0 end
+ if light >= 12 then
+ meta:set_string("infotext", "Solar Panel is active ")
+ meta:set_float("active",1)
+ local internal_EU_buffer=meta:get_float("internal_EU_buffer")
+ local internal_EU_buffer_size=meta:get_float("internal_EU_buffer_size")
+ local charge_to_give=80
+ if internal_EU_buffer+charge_to_give>internal_EU_buffer_size then
+ charge_to_give=internal_EU_buffer_size-internal_EU_buffer
+ end
+ internal_EU_buffer=internal_EU_buffer+charge_to_give
+ meta:set_float("internal_EU_buffer",internal_EU_buffer)
+
+ else
+ meta:set_string("infotext", "Solar Panel is inactive");
+ meta:set_float("active",0)
+ end
+ end,
+}) \ No newline at end of file