X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fscript%2Flua_api%2Fl_itemstackmeta.cpp;h=d1ba1bda41aae985ded2a7d91708088d1666be50;hb=60bab8b2d7b61383188c10f5d931dc7b5522d042;hp=304a7cdf3bef2a6e66e53c2526f997d8673d4304;hpb=f2aa2c6a986dec47856c49ae5f54fbf3c688e027;p=dragonfireclient.git diff --git a/src/script/lua_api/l_itemstackmeta.cpp b/src/script/lua_api/l_itemstackmeta.cpp index 304a7cdf3..d1ba1bda4 100644 --- a/src/script/lua_api/l_itemstackmeta.cpp +++ b/src/script/lua_api/l_itemstackmeta.cpp @@ -1,6 +1,8 @@ /* Minetest Copyright (C) 2013 celeron55, Perttu Ahola +Copyright (C) 2017-8 rubenwardy +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} };