Zefram
2014-04-30 00d7c9bdead4d77f0ca88036eda44b8cce6cca34
Refill behaviour for power tools and cans

Supply the on_refill hook for power tools and cans, to perform appropriate
charging. This is to be used by unified_inventory's creative-mode
refill slot.
9 files modified
34 ■■■■■ changed files
technic/helpers.lua 11 ●●●●● patch | view | raw | blame | history
technic/items.lua 3 ●●●●● patch | view | raw | blame | history
technic/machines/register/battery_box.lua 1 ●●●● patch | view | raw | blame | history
technic/tools/cans.lua 10 ●●●●● patch | view | raw | blame | history
technic/tools/chainsaw.lua 1 ●●●● patch | view | raw | blame | history
technic/tools/flashlight.lua 1 ●●●● patch | view | raw | blame | history
technic/tools/mining_drill.lua 5 ●●●●● patch | view | raw | blame | history
technic/tools/mining_lasers.lua 1 ●●●● patch | view | raw | blame | history
technic/tools/sonic_screwdriver.lua 1 ●●●● patch | view | raw | blame | history
technic/helpers.lua
@@ -14,3 +14,14 @@
    return node.name
end
-- Fully charge RE chargeable item.
-- Must be defined early to reference in item definitions.
function technic.refill_RE_charge(stack)
    local max_charge = technic.power_tools[stack:get_name()]
    if not max_charge then return stack end
    technic.set_RE_wear(stack, max_charge, max_charge)
    local meta = minetest.deserialize(stack:get_metadata()) or {}
    meta.charge = max_charge
    stack:set_metadata(minetest.serialize(meta))
    return stack
end
technic/items.lua
@@ -33,6 +33,7 @@
        "technic_diamond_block_blue.png",
        "technic_diamond_block_blue.png"),
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    tool_capabilities = {
        max_drop_level = 0,
        groupcaps = {
@@ -48,6 +49,7 @@
        "technic_diamond_block_green.png",
        "technic_diamond_block_green.png"),
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    tool_capabilities = {
        max_drop_level = 0,
        groupcaps = {
@@ -63,6 +65,7 @@
        "technic_diamond_block_red.png",
        "technic_diamond_block_red.png"),
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    tool_capabilities = {
        max_drop_level = 0,
        groupcaps = {
technic/machines/register/battery_box.lua
@@ -19,6 +19,7 @@
    description = S("RE Battery"),
    inventory_image = "technic_battery.png",
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    tool_capabilities = {
        charge = 0,
        max_drop_level = 0,
technic/tools/cans.lua
@@ -81,6 +81,11 @@
            return itemstack
        end        
    end,
    on_refill = function(stack)
        stack:set_metadata(tostring(water_can_max_load))
        set_can_wear(stack, water_can_max_load, water_can_max_load)
        return stack
    end,
})
minetest.register_tool("technic:lava_can", {
@@ -131,5 +136,10 @@
            return itemstack
        end
    end,
    on_refill = function(stack)
        stack:set_metadata(tostring(lava_can_max_load))
        set_can_wear(stack, lava_can_max_load, lava_can_max_load)
        return stack
    end,
})
technic/tools/chainsaw.lua
@@ -256,6 +256,7 @@
    inventory_image = "technic_chainsaw.png",
    stack_max = 1,
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    on_use = function(itemstack, user, pointed_thing)
        if pointed_thing.type ~= "node" then
            return itemstack
technic/tools/flashlight.lua
@@ -14,6 +14,7 @@
    inventory_image = "technic_flashlight.png",
    stack_max = 1,
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
})
minetest.register_craft({
technic/tools/mining_drill.lua
@@ -327,6 +327,7 @@
    inventory_image = "technic_mining_drill.png",
    stack_max = 1,
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    on_use = function(itemstack, user, pointed_thing)
        if pointed_thing.type ~= "node" then
            return itemstack
@@ -351,6 +352,7 @@
    description = S("Mining Drill Mk%d"):format(2),
    inventory_image = "technic_mining_drill_mk2.png",
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    on_use = function(itemstack, user, pointed_thing)
        mining_drill_mk2_handler(itemstack, user, pointed_thing)
        return itemstack
@@ -366,6 +368,7 @@
        inventory_image = "technic_mining_drill_mk2.png^technic_tool_mode"..i..".png",
        wield_image = "technic_mining_drill_mk2.png",
        wear_represents = "technic_RE_charge",
        on_refill = technic.refill_RE_charge,
        groups = {not_in_creative_inventory=1},
        on_use = function(itemstack, user, pointed_thing)
            mining_drill_mk2_handler(itemstack, user, pointed_thing)
@@ -378,6 +381,7 @@
    description = S("Mining Drill Mk%d"):format(3),
    inventory_image = "technic_mining_drill_mk3.png",
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    on_use = function(itemstack, user, pointed_thing)
    mining_drill_mk3_handler(itemstack,user,pointed_thing)
    return itemstack
@@ -393,6 +397,7 @@
        inventory_image = "technic_mining_drill_mk3.png^technic_tool_mode"..i..".png",
        wield_image = "technic_mining_drill_mk3.png",
        wear_represents = "technic_RE_charge",
        on_refill = technic.refill_RE_charge,
        groups = {not_in_creative_inventory=1},
        on_use = function(itemstack, user, pointed_thing)
        mining_drill_mk3_handler(itemstack,user,pointed_thing)
technic/tools/mining_lasers.lua
@@ -169,6 +169,7 @@
        inventory_image = "technic_mining_laser_mk"..m[1]..".png",
        stack_max = 1,
        wear_represents = "technic_RE_charge",
        on_refill = technic.refill_RE_charge,
        on_use = function(itemstack, user)
            local meta = minetest.deserialize(itemstack:get_metadata())
            if not meta or not meta.charge then
technic/tools/sonic_screwdriver.lua
@@ -8,6 +8,7 @@
    description = S("Sonic Screwdriver"),
    inventory_image = "technic_sonic_screwdriver.png",
    wear_represents = "technic_RE_charge",
    on_refill = technic.refill_RE_charge,
    on_use = function(itemstack, user, pointed_thing)
        -- Must be pointing to facedir applicable node
        if pointed_thing.type ~= "node" then