Gennotify: Add 'minetest.get_decoration_id' API
authorparamat <paramat@users.noreply.github.com>
Fri, 2 Mar 2018 21:27:59 +0000 (21:27 +0000)
committerparamat <mat.gregory@virginmedia.com>
Sat, 3 Mar 2018 23:00:08 +0000 (23:00 +0000)
Returns the decoration ID for the provided decoration name string.
For use with gennotify, to know the decoration IDs for use in
'minetest.set_gen_notify'.

doc/lua_api.txt
src/script/lua_api/l_mapgen.cpp
src/script/lua_api/l_mapgen.h

index 29be2a98ccfb92c83855b26d6d6a7bcbbc134589..ccc30a2a16b5e2339862b36cbe34f704ec71b138 100644 (file)
@@ -2842,8 +2842,11 @@ and `minetest.auth_reload` call the authentication handler.
         * decoration
     * The second parameter is a list of IDS of decorations which notification
       is requested for.
-* `get_gen_notify()`
+* `minetest.get_gen_notify()`
     * Returns a flagstring and a table with the `deco_id`s.
+* `minetest.get_decoration_id(decoration_name)
+    * Returns the decoration ID number for the provided decoration name string,
+      or `nil` on failure.
 * `minetest.get_mapgen_object(objectname)`
     * Return requested mapgen object if available (see "Mapgen objects")
 * `minetest.get_heat(pos)`
index ccbe9a4b02c6c95ffa2a4eaf959ad22c72eff14e..5bd49e386ad4b79346523a7f73794638b9431715 100644 (file)
@@ -1006,6 +1006,32 @@ int ModApiMapgen::l_get_gen_notify(lua_State *L)
 }
 
 
+// get_decoration_id(decoration_name)
+// returns the decoration ID as used in gennotify
+int ModApiMapgen::l_get_decoration_id(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+
+       const char *deco_str = luaL_checkstring(L, 1);
+       if (!deco_str)
+               return 0;
+
+       DecorationManager *dmgr = getServer(L)->getEmergeManager()->decomgr;
+
+       if (!dmgr)
+               return 0;
+
+       Decoration *deco = (Decoration *)dmgr->getByName(deco_str);
+
+       if (!deco)
+               return 0;
+
+       lua_pushinteger(L, deco->index);
+
+       return 1;
+}
+
+
 // register_biome({lots of stuff})
 int ModApiMapgen::l_register_biome(lua_State *L)
 {
@@ -1696,6 +1722,7 @@ void ModApiMapgen::Initialize(lua_State *L, int top)
        API_FCT(get_noiseparams);
        API_FCT(set_gen_notify);
        API_FCT(get_gen_notify);
+       API_FCT(get_decoration_id);
 
        API_FCT(register_biome);
        API_FCT(register_decoration);
index 44073620ba20fd1851c0b87ccc1db34aed5c44a7..713069633b1831f1be1abc72c9aa5f990d38ff7a 100644 (file)
@@ -76,6 +76,10 @@ private:
        // get_gen_notify()
        static int l_get_gen_notify(lua_State *L);
 
+       // get_decoration_id(decoration_name)
+       // returns the decoration ID as used in gennotify
+       static int l_get_decoration_id(lua_State *L);
+
        // register_biome({lots of stuff})
        static int l_register_biome(lua_State *L);