From b785577f03d00c83236782876def4c900edbba4e Mon Sep 17 00:00:00 2001 From: kwolekr Date: Tue, 5 May 2015 14:30:46 -0400 Subject: Add core.find_nodes_with_meta() script API --- src/script/lua_api/l_env.cpp | 17 +++++++++++++++++ src/script/lua_api/l_env.h | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/script/lua_api') diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 0fe1ddec3..9581d1ef3 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -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 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); diff --git a/src/script/lua_api/l_env.h b/src/script/lua_api/l_env.h index 5c9afd2f1..0d4ca788e 100644 --- a/src/script/lua_api/l_env.h +++ b/src/script/lua_api/l_env.h @@ -64,7 +64,6 @@ private: // pos = {x=num, y=num, z=num} static int l_punch_node(lua_State *L); - // get_node_max_level(pos) // pos = {x=num, y=num, z=num} static int l_get_node_max_level(lua_State *L); @@ -81,6 +80,9 @@ private: // pos = {x=num, y=num, z=num} static int l_add_node_level(lua_State *L); + // find_nodes_with_meta(pos1, pos2) + static int l_find_nodes_with_meta(lua_State *L); + // get_meta(pos) static int l_get_meta(lua_State *L); -- cgit v1.2.3