diff options
Diffstat (limited to 'src/script/lua_api/l_nodemeta.cpp')
-rw-r--r-- | src/script/lua_api/l_nodemeta.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/script/lua_api/l_nodemeta.cpp b/src/script/lua_api/l_nodemeta.cpp index 6cdbe5c68..c8bc7d558 100644 --- a/src/script/lua_api/l_nodemeta.cpp +++ b/src/script/lua_api/l_nodemeta.cpp @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_content.h" #include "environment.h" #include "map.h" +#include "gamedef.h" #include "nodemetadata.h" @@ -43,7 +44,7 @@ NodeMetadata* NodeMetaRef::getmeta(NodeMetaRef *ref, bool auto_create) { NodeMetadata *meta = ref->m_env->getMap().getNodeMetadata(ref->m_p); if(meta == NULL && auto_create) { - meta = new NodeMetadata(ref->m_env->getGameDef()); + meta = new NodeMetadata(ref->m_env->getGameDef()->idef()); if(!ref->m_env->getMap().setNodeMetadata(ref->m_p, meta)) { delete meta; return NULL; @@ -81,6 +82,8 @@ int NodeMetaRef::gc_object(lua_State *L) { // get_string(self, name) int NodeMetaRef::l_get_string(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); std::string name = luaL_checkstring(L, 2); @@ -97,6 +100,8 @@ int NodeMetaRef::l_get_string(lua_State *L) // set_string(self, name, var) int NodeMetaRef::l_set_string(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); std::string name = luaL_checkstring(L, 2); size_t len = 0; @@ -114,6 +119,8 @@ int NodeMetaRef::l_set_string(lua_State *L) // get_int(self, name) int NodeMetaRef::l_get_int(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); std::string name = lua_tostring(L, 2); @@ -130,6 +137,8 @@ int NodeMetaRef::l_get_int(lua_State *L) // set_int(self, name, var) int NodeMetaRef::l_set_int(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); std::string name = lua_tostring(L, 2); int a = lua_tointeger(L, 3); @@ -146,6 +155,8 @@ int NodeMetaRef::l_set_int(lua_State *L) // get_float(self, name) int NodeMetaRef::l_get_float(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); std::string name = lua_tostring(L, 2); @@ -162,6 +173,8 @@ int NodeMetaRef::l_get_float(lua_State *L) // set_float(self, name, var) int NodeMetaRef::l_set_float(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); std::string name = lua_tostring(L, 2); float a = lua_tonumber(L, 3); @@ -178,6 +191,8 @@ int NodeMetaRef::l_set_float(lua_State *L) // get_inventory(self) int NodeMetaRef::l_get_inventory(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); getmeta(ref, true); // try to ensure the metadata exists InvRef::createNodeMeta(L, ref->m_p); @@ -187,6 +202,8 @@ int NodeMetaRef::l_get_inventory(lua_State *L) // to_table(self) int NodeMetaRef::l_to_table(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); NodeMetadata *meta = getmeta(ref, true); @@ -229,6 +246,8 @@ int NodeMetaRef::l_to_table(lua_State *L) // from_table(self, table) int NodeMetaRef::l_from_table(lua_State *L) { + MAP_LOCK_REQUIRED; + NodeMetaRef *ref = checkobject(L, 1); int base = 2; |