Skip to content

Commit 34e0a0c

Browse files
Ekdohibsproller
authored andcommittedOct 16, 2013
Add tool callback
1 parent 4e5760a commit 34e0a0c

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed
 

‎builtin/item.lua

+12-7
Original file line numberDiff line numberDiff line change
@@ -383,14 +383,19 @@ function minetest.node_dig(pos, node, digger)
383383

384384
local wielded = digger:get_wielded_item()
385385
local drops = minetest.get_node_drops(node.name, wielded:get_name())
386-
387-
-- Wear out tool
388-
if not minetest.setting_getbool("creative_mode") then
389-
local tp = wielded:get_tool_capabilities()
390-
local dp = minetest.get_dig_params(def.groups, tp)
391-
wielded:add_wear(dp.wear)
392-
digger:set_wielded_item(wielded)
386+
387+
local wdef = wielded:get_definition()
388+
local tp = wielded:get_tool_capabilities()
389+
local dp = minetest.get_dig_params(def.groups, tp)
390+
if wdef and wdef.after_use then
391+
wielded = wdef.after_use(wielded, digger, node, dp) or wielded
392+
else
393+
-- Wear out tool
394+
if not minetest.setting_getbool("creative_mode") then
395+
wielded:add_wear(dp.wear)
396+
end
393397
end
398+
digger:set_wielded_item(wielded)
394399

395400
-- Handle drops
396401
minetest.handle_node_drops(pos, drops, digger)

‎doc/lua_api.txt

+9
Original file line numberDiff line numberDiff line change
@@ -1980,6 +1980,15 @@ Item definition (register_node, register_craftitem, register_tool)
19801980
eg. itemstack:take_item(); return itemstack
19811981
^ Otherwise, the function is free to do what it wants.
19821982
^ The default functions handle regular use cases.
1983+
after_use = func(itemstack, user, node, digparams),
1984+
^ default: nil
1985+
^ If defined, should return an itemstack and will be called instead of
1986+
wearing out the tool. If returns nil, does nothing.
1987+
If after_use doesn't exist, it is the same as:
1988+
function(itemstack, user, node, digparams)
1989+
itemstack:add_wear(digparams.wear)
1990+
return itemstack
1991+
end
19831992
}
19841993

19851994
Tile definition:

0 commit comments

Comments
 (0)
Please sign in to comment.