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
1 files added
2 files modified
2 files deleted
| | |
| | | local pos1={} |
| | | i=1 |
| | | repeat |
| | | if PR_nodes[i]==nil then break end |
| | | if PR_nodes[i]==nil then break end -- gettin power from all connected producers |
| | | pos1.x=PR_nodes[i].x |
| | | pos1.y=PR_nodes[i].y |
| | | pos1.z=PR_nodes[i].z |
| | | local meta1 = minetest.env:get_meta(pos1) |
| | | local active=meta1:get_float("active") |
| | | if active==1 then charge=charge+80 end |
| | | local internal_EU_buffer=meta1:get_float("internal_EU_buffer") |
| | | if charge<max_charge then |
| | | charge_to_take=200 |
| | | if internal_EU_buffer-charge_to_take<=0 then |
| | | charge_to_take=internal_EU_buffer |
| | | end |
| | | if charge_to_take>0 then |
| | | charge=charge+charge_to_take |
| | | internal_EU_buffer=internal_EU_buffer-charge_to_take |
| | | meta1:set_float("internal_EU_buffer",internal_EU_buffer) |
| | | end |
| | | end |
| | | i=i+1 |
| | | until false |
| | | |
| | |
| | | meta = minetest.env:get_meta(pos1) |
| | | if meta:get_float("cablelike")==1 then new_node_added=add_new_cable_node(LV_nodes,pos1) end |
| | | if minetest.env:get_node(pos1).name == "technic:solar_panel" then new_node_added=add_new_cable_node(PR_nodes,pos1) end |
| | | if minetest.env:get_node(pos1).name == "technic:generator" then new_node_added=add_new_cable_node(PR_nodes,pos1) end |
| | | if minetest.env:get_node(pos1).name == "technic:electric_furnace" then new_node_added=add_new_cable_node(RE_nodes,pos1) end |
| | | if minetest.env:get_node(pos1).name == "technic:electric_furnace_active" then new_node_added=add_new_cable_node(RE_nodes,pos1) end |
| | | if minetest.env:get_node(pos1).name == "technic:tool_workshop" then new_node_added=add_new_cable_node(RE_nodes,pos1) end |
| | |
| | | end |
| | | end |
| | | return charge |
| | | end |
| | | |
| | | 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, |
| | | 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_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) |
| | | else |
| | | meta:set_string("infotext", "Solar Panel is inactive"); |
| | | meta:set_float("active",0) |
| | | end |
| | | end, |
| | | }) |
| | | end |
| | |
| | | -- Minetest 0.4.1 mod: technic |
| | | -- Minetest 0.4.2 rc1: technic |
| | | |
| | | minetest.register_alias("rebar", "technic:rebar") |
| | | minetest.register_alias("concrete", "technic:concrete") |
| | |
| | | dofile(minetest.get_modpath("technic").."/music_player.lua") |
| | | dofile(minetest.get_modpath("technic").."/grinder.lua") |
| | | dofile(minetest.get_modpath("technic").."/mining_laser_mk1.lua") |
| | | --dofile(minetest.get_modpath("technic").."/project_table.lua") |
| | | --dofile(minetest.get_modpath("technic").."/injector.lua") |
| | | dofile(minetest.get_modpath("technic").."/generator.lua") |
| | | dofile(minetest.get_modpath("technic").."/solar_panel.lua") |
| | | |
| | | |
| | | function has_locked_chest_privilege(meta, player) |
New file |
| | |
| | | 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, |
| | | }) |