diff options
author | rubenwardy <rubenwardy@gmail.com> | 2014-05-20 15:21:09 +0100 |
---|---|---|
committer | ShadowNinja <shadowninja@minetest.net> | 2014-05-26 18:41:58 -0400 |
commit | 832d7973c8028d743eb331cb3d499692cebdc724 (patch) | |
tree | c7f8fd191e5d981b3fc71c7ee726fe86dc158854 | |
parent | ab75b1b923db157a7d05c5498456a0fd1faee883 (diff) | |
download | minetest-832d7973c8028d743eb331cb3d499692cebdc724.tar.gz minetest-832d7973c8028d743eb331cb3d499692cebdc724.tar.bz2 minetest-832d7973c8028d743eb331cb3d499692cebdc724.zip |
Add item eat callback
-rw-r--r-- | builtin/game/item.lua | 6 | ||||
-rw-r--r-- | builtin/game/register.lua | 3 | ||||
-rw-r--r-- | doc/lua_api.txt | 3 |
3 files changed, 11 insertions, 1 deletions
diff --git a/builtin/game/item.lua b/builtin/game/item.lua index 8fd172aab..11a36bdc3 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -353,6 +353,12 @@ end function core.item_eat(hp_change, replace_with_item) return function(itemstack, user, pointed_thing) -- closure + for _, callback in pairs(core.registered_on_item_eats) do + local result = callback(hp_change, replace_with_item, itemstack, user, pointed_thing) + if result then + return result + end + end if itemstack:take_item() ~= nil then user:set_hp(user:get_hp() + hp_change) itemstack:add_item(replace_with_item) -- note: replace_with_item is optional diff --git a/builtin/game/register.lua b/builtin/game/register.lua index 8908f51f6..1c9e62422 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -8,7 +8,7 @@ local register_item_raw = core.register_item_raw core.register_item_raw = nil local register_alias_raw = core.register_alias_raw -core.register_item_raw = nil +core.register_alias_raw = nil -- -- Item / entity / ABM registration functions @@ -407,4 +407,5 @@ core.registered_on_cheats, core.register_on_cheat = make_registration() core.registered_on_crafts, core.register_on_craft = make_registration() core.registered_craft_predicts, core.register_craft_predict = make_registration() core.registered_on_protection_violation, core.register_on_protection_violation = make_registration() +core.registered_on_item_eats, core.register_on_item_eat = make_registration() diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 164aa393e..803314925 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1313,6 +1313,9 @@ minetest.register_on_protection_violation(func(pos, name)) ^ The provided function should check that the position is protected by the mod calling this function before it prints a message, if it does, to allow for multiple protection mods. +minetest.register_on_item_eat(func(hp_change, replace_with_item, itemstack, user, pointed_thing)) +^ Called when an item is eaten, by minetest.item_eat +^ Return true or itemstack to cancel the default item eat response (ie: hp increase) Other registration functions: minetest.register_chatcommand(cmd, chatcommand definition) |