]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/script/lua_api/l_item.cpp
Better snow fall, finite liquid transform, leveled nodes api
[dragonfireclient.git] / src / script / lua_api / l_item.cpp
index 730dfd49b0007d9de0f2c32f0c3e820aaa240f02..6182c037b848c7b15dcbe56c59d58bcc4d5dd0e8 100644 (file)
@@ -432,10 +432,15 @@ int ModApiItemMod::l_register_item_raw(lua_State *L)
        idef->registerItem(def);
 
        // Read the node definition (content features) and register it
-       if(def.type == ITEM_NODE)
-       {
+       if(def.type == ITEM_NODE){
                ContentFeatures f = read_content_features(L, table);
-               ndef->set(f.name, f);
+               content_t id = ndef->set(f.name, f);
+
+               if(id > MAX_REGISTERED_CONTENT){
+                       throw LuaError(L, "Number of registerable nodes ("
+                                       + itos(MAX_REGISTERED_CONTENT+1)
+                                       + ") exceeded (" + name + ")");
+               }
        }
 
        return 0; /* number of results */
@@ -457,12 +462,40 @@ int ModApiItemMod::l_register_alias_raw(lua_State *L)
        return 0; /* number of results */
 }
 
+// get_content_id(name)
+int ModApiItemMod::l_get_content_id(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+       std::string name = luaL_checkstring(L, 1);
+
+       INodeDefManager *ndef = STACK_TO_SERVER(L)->getNodeDefManager();
+       content_t c = ndef->getId(name);
+       
+       lua_pushinteger(L, c);
+       return 1; /* number of results */
+}
+
+// get_name_from_content_id(name)
+int ModApiItemMod::l_get_name_from_content_id(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+       content_t c = luaL_checkint(L, 1);
+
+       INodeDefManager *ndef = STACK_TO_SERVER(L)->getNodeDefManager();
+       const char *name = ndef->get(c).name.c_str();
+       
+       lua_pushstring(L, name);
+       return 1; /* number of results */
+}
+
 bool ModApiItemMod::Initialize(lua_State *L,int top) {
 
        bool retval = true;
 
        retval &= API_FCT(register_item_raw);
        retval &= API_FCT(register_alias_raw);
+       retval &= API_FCT(get_content_id);
+       retval &= API_FCT(get_name_from_content_id);
 
        LuaItemStack::Register(L);