Skip to content

Commit

Permalink
Add tool callback
Browse files Browse the repository at this point in the history
  • Loading branch information
Ekdohibs authored and proller committed Oct 16, 2013
1 parent 4e5760a commit 34e0a0c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
19 changes: 12 additions & 7 deletions builtin/item.lua
Expand Up @@ -383,14 +383,19 @@ function minetest.node_dig(pos, node, digger)

local wielded = digger:get_wielded_item()
local drops = minetest.get_node_drops(node.name, wielded:get_name())

-- Wear out tool
if not minetest.setting_getbool("creative_mode") then
local tp = wielded:get_tool_capabilities()
local dp = minetest.get_dig_params(def.groups, tp)
wielded:add_wear(dp.wear)
digger:set_wielded_item(wielded)

local wdef = wielded:get_definition()
local tp = wielded:get_tool_capabilities()
local dp = minetest.get_dig_params(def.groups, tp)
if wdef and wdef.after_use then
wielded = wdef.after_use(wielded, digger, node, dp) or wielded
else
-- Wear out tool
if not minetest.setting_getbool("creative_mode") then
wielded:add_wear(dp.wear)
end
end
digger:set_wielded_item(wielded)

-- Handle drops
minetest.handle_node_drops(pos, drops, digger)
Expand Down
9 changes: 9 additions & 0 deletions doc/lua_api.txt
Expand Up @@ -1980,6 +1980,15 @@ Item definition (register_node, register_craftitem, register_tool)
eg. itemstack:take_item(); return itemstack
^ Otherwise, the function is free to do what it wants.
^ The default functions handle regular use cases.
after_use = func(itemstack, user, node, digparams),
^ default: nil
^ If defined, should return an itemstack and will be called instead of
wearing out the tool. If returns nil, does nothing.
If after_use doesn't exist, it is the same as:
function(itemstack, user, node, digparams)
itemstack:add_wear(digparams.wear)
return itemstack
end
}

Tile definition:
Expand Down

0 comments on commit 34e0a0c

Please sign in to comment.