diff options
author | Perttu Ahola <celeron55@gmail.com> | 2012-09-02 19:38:44 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-09-02 19:38:44 +0300 |
commit | d53a6cd8518edd025acdfc7878ede857867e507b (patch) | |
tree | 089ff99cd0e15b6da8ac73deb79b642b49615ebf | |
parent | b6c12d2aa3f7f3f0faca86a0b20904e309c15179 (diff) | |
download | minetest-d53a6cd8518edd025acdfc7878ede857867e507b.tar.gz minetest-d53a6cd8518edd025acdfc7878ede857867e507b.tar.bz2 minetest-d53a6cd8518edd025acdfc7878ede857867e507b.zip |
Add overridable function for handling dropped items from nodes
-rw-r--r-- | builtin/item.lua | 21 | ||||
-rw-r--r-- | doc/lua_api.txt | 6 |
2 files changed, 19 insertions, 8 deletions
diff --git a/builtin/item.lua b/builtin/item.lua index 4e3c74444..0f8dcff1f 100644 --- a/builtin/item.lua +++ b/builtin/item.lua @@ -260,6 +260,16 @@ function minetest.node_punch(pos, node, puncher) end end +function minetest.handle_node_drops(pos, drops, digger) + -- Add dropped items to object's inventory + if digger:get_inventory() then + local _, dropped_item + for _, dropped_item in ipairs(drops) do + digger:get_inventory():add_item("main", dropped_item) + end + end +end + function minetest.node_dig(pos, node, digger) minetest.debug("node_dig") @@ -284,14 +294,9 @@ function minetest.node_dig(pos, node, digger) local dp = minetest.get_dig_params(def.groups, tp) wielded:add_wear(dp.wear) digger:set_wielded_item(wielded) - - -- Add dropped items to object's inventory - if digger:get_inventory() then - local _, dropped_item - for _, dropped_item in ipairs(drops) do - digger:get_inventory():add_item("main", dropped_item) - end - end + + -- Handle drops + minetest.handle_node_drops(pos, drops, digger) local oldmetadata = nil if def.after_dig_node then diff --git a/doc/lua_api.txt b/doc/lua_api.txt index d3e254a2d..b71b6d62c 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -891,6 +891,12 @@ minetest.get_craft_recipe(output) -> input ^ input.items = for example { stack 1, stack 2, stack 3, stack 4, stack 5, stack 6, stack 7, stack 8, stack 9 } ^ input.items = nil if no recipe found +minetest.handle_node_drops(pos, drops, digger) +^ drops: list of itemstrings +^ Handles drops from nodes after digging: Default action is to put them into + digger's inventory +^ Can be overridden to get different functionality (eg. dropping items on + ground) Rollbacks: minetest.rollback_get_last_node_actor(p, range, seconds) -> actor, p, seconds |