Maciej Kasatkin
2012-09-02 54529cbf542aa226976b758382762f45a03130b4
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
771 ■■■■ changed files
electric.lua 80 ●●●● patch | view | raw | blame | history
init.lua 6 ●●●● patch | view | raw | blame | history
solar.lua 23 ●●●●● patch | view | raw | blame | history
solar_panel.lua 74 ●●●●● patch | view | raw | blame | history
water.lua 588 ●●●●● patch | view | raw | blame | history
electric.lua
@@ -410,13 +410,23 @@
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
@@ -499,6 +509,7 @@
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        
@@ -524,65 +535,4 @@
        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
init.lua
@@ -1,4 +1,4 @@
-- Minetest 0.4.1 mod: technic
-- Minetest 0.4.2 rc1: technic
minetest.register_alias("rebar", "technic:rebar")
minetest.register_alias("concrete", "technic:concrete")
@@ -29,6 +29,10 @@
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)
solar.lua
File was deleted
solar_panel.lua
New file
@@ -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,
})
water.lua
File was deleted