1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

[CSM] Add get_node and get_node_or_nil

This commit is contained in:
red-001 2017-01-30 19:10:37 +00:00 committed by Loïc Blot
parent 073f5cf03d
commit 37df9cb7d7
6 changed files with 67 additions and 2 deletions

View file

@ -23,6 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "util/string.h"
#include "cpp_api/s_base.h"
#include "gettext.h"
#include "common/c_converter.h"
#include "common/c_content.h"
int ModApiClient::l_get_current_modname(lua_State *L)
{
@ -97,6 +99,39 @@ int ModApiClient::l_gettext(lua_State *L)
return 1;
}
// get_node(pos)
// pos = {x=num, y=num, z=num}
int ModApiClient::l_get_node(lua_State *L)
{
// pos
v3s16 pos = read_v3s16(L, 1);
// Do it
bool pos_ok;
MapNode n = getClient(L)->getNode(pos, &pos_ok);
// Return node
pushnode(L, n, getClient(L)->ndef());
return 1;
}
// get_node_or_nil(pos)
// pos = {x=num, y=num, z=num}
int ModApiClient::l_get_node_or_nil(lua_State *L)
{
// pos
v3s16 pos = read_v3s16(L, 1);
// Do it
bool pos_ok;
MapNode n = getClient(L)->getNode(pos, &pos_ok);
if (pos_ok) {
// Return node
pushnode(L, n, getClient(L)->ndef());
}
else {
lua_pushnil(L);
}
return 1;
}
void ModApiClient::Initialize(lua_State *L, int top)
{
API_FCT(get_current_modname);
@ -106,4 +141,6 @@ void ModApiClient::Initialize(lua_State *L, int top)
API_FCT(show_formspec);
API_FCT(send_respawn);
API_FCT(gettext);
API_FCT(get_node);
API_FCT(get_node_or_nil);
}

View file

@ -47,6 +47,14 @@ private:
// set_last_run_mod(modname)
static int l_set_last_run_mod(lua_State *L);
// get_node(pos)
static int l_get_node(lua_State *L);
// get_node_or_nil(pos)
static int l_get_node_or_nil(lua_State *L);
public:
static void Initialize(lua_State *L, int top);
};