summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZefram <zefram@fysh.org>2014-04-30 10:49:54 +0100
committerZefram <zefram@fysh.org>2014-04-30 10:49:54 +0100
commit00d7c9bdead4d77f0ca88036eda44b8cce6cca34 (patch)
treec49a78b012819580d2c786b0ffc7058fb6a9e6e7
parent0294fc8f3a9772ab292c7e40d489e760b666516e (diff)
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.
-rw-r--r--technic/helpers.lua11
-rw-r--r--technic/items.lua3
-rw-r--r--technic/machines/register/battery_box.lua1
-rw-r--r--technic/tools/cans.lua10
-rw-r--r--technic/tools/chainsaw.lua1
-rw-r--r--technic/tools/flashlight.lua1
-rw-r--r--technic/tools/mining_drill.lua5
-rw-r--r--technic/tools/mining_lasers.lua1
-rw-r--r--technic/tools/sonic_screwdriver.lua1
9 files changed, 34 insertions, 0 deletions
diff --git a/technic/helpers.lua b/technic/helpers.lua
index 663a66a..624a8a7 100644
--- a/technic/helpers.lua
+++ b/technic/helpers.lua
@@ -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
diff --git a/technic/items.lua b/technic/items.lua
index 9149460..d62642c 100644
--- a/technic/items.lua
+++ b/technic/items.lua
@@ -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 = {
diff --git a/technic/machines/register/battery_box.lua b/technic/machines/register/battery_box.lua
index 8efcb15..3b5728b 100644
--- a/technic/machines/register/battery_box.lua
+++ b/technic/machines/register/battery_box.lua
@@ -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,
diff --git a/technic/tools/cans.lua b/technic/tools/cans.lua
index ab92811..737443e 100644
--- a/technic/tools/cans.lua
+++ b/technic/tools/cans.lua
@@ -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,
})
diff --git a/technic/tools/chainsaw.lua b/technic/tools/chainsaw.lua
index 273e36d..c8f6d37 100644
--- a/technic/tools/chainsaw.lua
+++ b/technic/tools/chainsaw.lua
@@ -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
diff --git a/technic/tools/flashlight.lua b/technic/tools/flashlight.lua
index 7beac5e..ff49c0a 100644
--- a/technic/tools/flashlight.lua
+++ b/technic/tools/flashlight.lua
@@ -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({
diff --git a/technic/tools/mining_drill.lua b/technic/tools/mining_drill.lua
index 2a7cfe7..202123d 100644
--- a/technic/tools/mining_drill.lua
+++ b/technic/tools/mining_drill.lua
@@ -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)
diff --git a/technic/tools/mining_lasers.lua b/technic/tools/mining_lasers.lua
index c6ba57f..50df526 100644
--- a/technic/tools/mining_lasers.lua
+++ b/technic/tools/mining_lasers.lua
@@ -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
diff --git a/technic/tools/sonic_screwdriver.lua b/technic/tools/sonic_screwdriver.lua
index cc4edab..0a9b3a9 100644
--- a/technic/tools/sonic_screwdriver.lua
+++ b/technic/tools/sonic_screwdriver.lua
@@ -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