Don't use luaL_checkstring to read node names, it's only for arguments
This caused confusing error messages like "argument #4 to set_node is not a string."master
parent
86e9408c9f
commit
d75a0a7394
|
@ -546,22 +546,23 @@ NodeBox read_nodebox(lua_State *L, int index)
|
||||||
MapNode readnode(lua_State *L, int index, INodeDefManager *ndef)
|
MapNode readnode(lua_State *L, int index, INodeDefManager *ndef)
|
||||||
{
|
{
|
||||||
lua_getfield(L, index, "name");
|
lua_getfield(L, index, "name");
|
||||||
const char *name = luaL_checkstring(L, -1);
|
if (!lua_isstring(L, -1))
|
||||||
|
throw LuaError("Node name is not set or is not a string!");
|
||||||
|
const char *name = lua_tostring(L, -1);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
u8 param1;
|
|
||||||
|
u8 param1 = 0;
|
||||||
lua_getfield(L, index, "param1");
|
lua_getfield(L, index, "param1");
|
||||||
if(lua_isnil(L, -1))
|
if (!lua_isnil(L, -1))
|
||||||
param1 = 0;
|
|
||||||
else
|
|
||||||
param1 = lua_tonumber(L, -1);
|
param1 = lua_tonumber(L, -1);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
u8 param2;
|
|
||||||
|
u8 param2 = 0;
|
||||||
lua_getfield(L, index, "param2");
|
lua_getfield(L, index, "param2");
|
||||||
if(lua_isnil(L, -1))
|
if (!lua_isnil(L, -1))
|
||||||
param2 = 0;
|
|
||||||
else
|
|
||||||
param2 = lua_tonumber(L, -1);
|
param2 = lua_tonumber(L, -1);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|
||||||
return MapNode(ndef, name, param1, param2);
|
return MapNode(ndef, name, param1, param2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue