]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/script/lua_api/l_item.h
Add helper functions to make tool usable n times (#12047)
[dragonfireclient.git] / src / script / lua_api / l_item.h
index 7f5a1130de6254c8d3dc62ffcbeba592b374bc46..a392555d2c4beae7b0bda7a7eb9ed9d416f65a23 100644 (file)
@@ -17,8 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef L_ITEM_H_
-#define L_ITEM_H_
+#pragma once
 
 #include "lua_api/l_base.h"
 #include "inventory.h"  // ItemStack
@@ -28,13 +27,16 @@ class LuaItemStack : public ModApiBase {
        ItemStack m_stack;
 
        static const char className[];
-       static const luaL_reg methods[];
+       static const luaL_Reg methods[];
 
        // Exported functions
 
        // garbage collector
        static int gc_object(lua_State *L);
 
+       // __tostring metamethod
+       static int mt_tostring(lua_State *L);
+
        // is_empty(self) -> true/false
        static int l_is_empty(lua_State *L);
 
@@ -56,12 +58,23 @@ class LuaItemStack : public ModApiBase {
        // set_wear(self, number)
        static int l_set_wear(lua_State *L);
 
+       // get_meta(self) -> string
+       static int l_get_meta(lua_State *L);
+
+       // DEPRECATED
        // get_metadata(self) -> string
        static int l_get_metadata(lua_State *L);
 
+       // DEPRECATED
        // set_metadata(self, string)
        static int l_set_metadata(lua_State *L);
 
+       // get_description(self)
+       static int l_get_description(lua_State *L);
+
+       // get_short_description(self)
+       static int l_get_short_description(lua_State *L);
+
        // clear(self) -> true
        static int l_clear(lua_State *L);
 
@@ -85,7 +98,7 @@ class LuaItemStack : public ModApiBase {
        static int l_is_known(lua_State *L);
 
        // get_definition(self) -> table
-       // Returns the item definition table from minetest.registered_items,
+       // Returns the item definition table from core.registered_items,
        // or a fallback one (name="unknown")
        static int l_get_definition(lua_State *L);
 
@@ -95,11 +108,20 @@ class LuaItemStack : public ModApiBase {
        static int l_get_tool_capabilities(lua_State *L);
 
        // add_wear(self, amount) -> true/false
-       // The range for "amount" is [0,65535]. Wear is only added if the item
+       // The range for "amount" is [0,65536]. Wear is only added if the item
        // is a tool. Adding wear might destroy the item.
        // Returns true if the item is (or was) a tool.
        static int l_add_wear(lua_State *L);
 
+       // add_wear_by_uses(self, max_uses) -> true/false
+       // The range for "max_uses" is [0,65536].
+       // Adds wear to the item in such a way that, if
+       // only this function is called to add wear, the item
+       // will be destroyed exactly after `max_uses` times of calling it.
+       // No-op if `max_uses` is 0 or item is not a tool.
+       // Returns true if the item is (or was) a tool.
+       static int l_add_wear_by_uses(lua_State *L);
+
        // add_item(self, itemstack or itemstring or table or nil) -> itemstack
        // Returns leftover item stack
        static int l_add_item(lua_State *L);
@@ -117,7 +139,7 @@ class LuaItemStack : public ModApiBase {
 
 public:
        LuaItemStack(const ItemStack &item);
-       ~LuaItemStack();
+       ~LuaItemStack() = default;
 
        const ItemStack& getItem() const;
        ItemStack& getItem();
@@ -128,20 +150,22 @@ class LuaItemStack : public ModApiBase {
        // Not callable from Lua
        static int create(lua_State *L, const ItemStack &item);
        static LuaItemStack* checkobject(lua_State *L, int narg);
-       static void Register(lua_State *L);
 
+       static void *packIn(lua_State *L, int idx);
+       static void packOut(lua_State *L, void *ptr);
+
+       static void Register(lua_State *L);
 };
 
 class ModApiItemMod : public ModApiBase {
 private:
        static int l_register_item_raw(lua_State *L);
+       static int l_unregister_item_raw(lua_State *L);
        static int l_register_alias_raw(lua_State *L);
        static int l_get_content_id(lua_State *L);
        static int l_get_name_from_content_id(lua_State *L);
+
 public:
        static void Initialize(lua_State *L, int top);
+       static void InitializeAsync(lua_State *L, int top);
 };
-
-
-
-#endif /* L_ITEM_H_ */