]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/script/lua_api/l_itemstackmeta.cpp
Add ItemStack:get_description() to get tooltip (#8847)
[dragonfireclient.git] / src / script / lua_api / l_itemstackmeta.cpp
index 304a7cdf3bef2a6e66e53c2526f997d8673d4304..d1ba1bda41aae985ded2a7d91708088d1666be50 100644 (file)
@@ -1,6 +1,8 @@
 /*
 Minetest
 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
+Copyright (C) 2017-8 rubenwardy <rw@rubenwardy.com>
+Copyright (C) 2017 raymoo
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
@@ -44,12 +46,26 @@ void ItemStackMetaRef::clearMeta()
        istack->metadata.clear();
 }
 
-void ItemStackMetaRef::reportMetadataChange()
+void ItemStackMetaRef::reportMetadataChange(const std::string *name)
 {
        // TODO
 }
 
 // Exported functions
+int ItemStackMetaRef::l_set_tool_capabilities(lua_State *L)
+{
+       ItemStackMetaRef *metaref = checkobject(L, 1);
+       if (lua_isnoneornil(L, 2)) {
+               metaref->clearToolCapabilities();
+       } else if (lua_istable(L, 2)) {
+               ToolCapabilities caps = read_tool_capabilities(L, 2);
+               metaref->setToolCapabilities(caps);
+       } else {
+               luaL_typerror(L, 2, "table or nil");
+       }
+
+       return 0;
+}
 
 // garbage collector
 int ItemStackMetaRef::gc_object(lua_State *L) {
@@ -92,6 +108,10 @@ void ItemStackMetaRef::Register(lua_State *L)
        lua_pushcfunction(L, gc_object);
        lua_settable(L, metatable);
 
+       lua_pushliteral(L, "__eq");
+       lua_pushcfunction(L, l_equals);
+       lua_settable(L, metatable);
+
        lua_pop(L, 1);  // drop metatable
 
        luaL_openlib(L, 0, methods, 0);  // fill methodtable
@@ -102,7 +122,9 @@ void ItemStackMetaRef::Register(lua_State *L)
 }
 
 const char ItemStackMetaRef::className[] = "ItemStackMetaRef";
-const luaL_reg ItemStackMetaRef::methods[] = {
+const luaL_Reg ItemStackMetaRef::methods[] = {
+       luamethod(MetaDataRef, contains),
+       luamethod(MetaDataRef, get),
        luamethod(MetaDataRef, get_string),
        luamethod(MetaDataRef, set_string),
        luamethod(MetaDataRef, get_int),
@@ -111,5 +133,7 @@ const luaL_reg ItemStackMetaRef::methods[] = {
        luamethod(MetaDataRef, set_float),
        luamethod(MetaDataRef, to_table),
        luamethod(MetaDataRef, from_table),
+       luamethod(MetaDataRef, equals),
+       luamethod(ItemStackMetaRef, set_tool_capabilities),
        {0,0}
 };