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."
This commit is contained in:
ShadowNinja 2015-03-07 20:01:59 -05:00
parent 86e9408c9f
commit d75a0a7394
1 changed files with 10 additions and 9 deletions

View File

@ -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);
} }