diff options
author | kwolekr <kwolekr@minetest.net> | 2015-05-05 14:30:46 -0400 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2015-05-05 16:21:59 -0400 |
commit | b785577f03d00c83236782876def4c900edbba4e (patch) | |
tree | 389f3baa9e4b3d6abcab1d752a248bcdc933b52d /src/script/lua_api | |
parent | b45df9d6a73d97671cbdd38d77e9b153a80fb458 (diff) | |
download | minetest-b785577f03d00c83236782876def4c900edbba4e.tar.gz minetest-b785577f03d00c83236782876def4c900edbba4e.tar.bz2 minetest-b785577f03d00c83236782876def4c900edbba4e.zip |
Add core.find_nodes_with_meta() script API
Diffstat (limited to 'src/script/lua_api')
-rw-r--r-- | src/script/lua_api/l_env.cpp | 17 | ||||
-rw-r--r-- | src/script/lua_api/l_env.h | 4 |
2 files changed, 20 insertions, 1 deletions
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<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); 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); |