]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/script/lua_api/l_itemstackmeta.cpp
Async-related script cleanups
[dragonfireclient.git] / src / script / lua_api / l_itemstackmeta.cpp
index c37a82116d83bac99a0e7a193021afd83c8bd6eb..739fb92211a3359831f5c84c9ab604c6342def16 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) {
@@ -98,7 +114,7 @@ void ItemStackMetaRef::Register(lua_State *L)
 
        lua_pop(L, 1);  // drop metatable
 
-       luaL_openlib(L, 0, methods, 0);  // fill methodtable
+       luaL_register(L, nullptr, methods);  // fill methodtable
        lua_pop(L, 1);  // drop methodtable
 
        // Cannot be created from Lua
@@ -107,6 +123,8 @@ void ItemStackMetaRef::Register(lua_State *L)
 
 const char ItemStackMetaRef::className[] = "ItemStackMetaRef";
 const luaL_Reg ItemStackMetaRef::methods[] = {
+       luamethod(MetaDataRef, contains),
+       luamethod(MetaDataRef, get),
        luamethod(MetaDataRef, get_string),
        luamethod(MetaDataRef, set_string),
        luamethod(MetaDataRef, get_int),
@@ -116,5 +134,6 @@ const luaL_Reg ItemStackMetaRef::methods[] = {
        luamethod(MetaDataRef, to_table),
        luamethod(MetaDataRef, from_table),
        luamethod(MetaDataRef, equals),
+       luamethod(ItemStackMetaRef, set_tool_capabilities),
        {0,0}
 };