]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/script/lua_api/l_env.cpp
Add core.find_nodes_with_meta() script API
[dragonfireclient.git] / src / script / lua_api / l_env.cpp
index 0fe1ddec38592bf0a6991c9f7a8367145b7be0eb..9581d1ef39f6286cda5a2c12ffe88f6662b9bf2d 100644 (file)
@@ -334,6 +334,22 @@ int ModApiEnvMod::l_add_node_level(lua_State *L)
        return 1;
 }
 
+// find_nodes_with_meta(pos1, pos2)
+int ModApiEnvMod::l_find_nodes_with_meta(lua_State *L)
+{
+       GET_ENV_PTR;
+
+       std::vector<v3s16> positions = env->getMap().findNodesWithMetadata(
+               check_v3s16(L, 1), check_v3s16(L, 2));
+
+       lua_newtable(L);
+       for (size_t i = 0; i != positions.size(); i++) {
+               push_v3s16(L, positions[i]);
+               lua_rawseti(L, -2, i + 1);
+       }
+
+       return 1;
+}
 
 // get_meta(pos)
 int ModApiEnvMod::l_get_meta(lua_State *L)
@@ -912,6 +928,7 @@ void ModApiEnvMod::Initialize(lua_State *L, int top)
        API_FCT(set_node_level);
        API_FCT(add_node_level);
        API_FCT(add_entity);
+       API_FCT(find_nodes_with_meta);
        API_FCT(get_meta);
        API_FCT(get_node_timer);
        API_FCT(get_player_by_name);