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.
This commit is contained in:
Zefram 2014-04-30 10:49:54 +01:00
parent 0294fc8f3a
commit 00d7c9bdea
9 changed files with 34 additions and 0 deletions

View File

@ -14,3 +14,14 @@ function technic.swap_node(pos, name)
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

View File

@ -33,6 +33,7 @@ minetest.register_tool("technic:blue_energy_crystal", {
"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 @@ minetest.register_tool("technic:green_energy_crystal", {
"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 @@ minetest.register_tool("technic:red_energy_crystal", {
"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 = {

View File

@ -19,6 +19,7 @@ minetest.register_tool("technic:battery", {
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,

View File

@ -81,6 +81,11 @@ minetest.register_tool("technic:water_can", {
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 @@ minetest.register_tool("technic:lava_can", {
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,
})

View File

@ -256,6 +256,7 @@ minetest.register_tool("technic:chainsaw", {
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

View File

@ -14,6 +14,7 @@ minetest.register_tool("technic:flashlight", {
inventory_image = "technic_flashlight.png",
stack_max = 1,
wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge,
})
minetest.register_craft({

View File

@ -327,6 +327,7 @@ minetest.register_tool("technic:mining_drill", {
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 @@ minetest.register_tool("technic:mining_drill_mk2", {
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 @@ for i = 1, 4 do
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 @@ minetest.register_tool("technic:mining_drill_mk3", {
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 @@ for i=1,5,1 do
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)

View File

@ -169,6 +169,7 @@ for _, m in pairs(mining_lasers_list) do
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

View File

@ -8,6 +8,7 @@ minetest.register_tool("technic:sonic_screwdriver", {
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