14 lua_State *Mods::lua_vm;
17 Game::log("Initializing Mods");
18 lua_vm = luaL_newstate();
19 luaL_openlibs(lua_vm);
20 if(! check_lua(luaL_dofile(lua_vm, "builtin/init.lua"))){
21 Game::log("Failed to load Builtin: File 'builtin/init.lua' does not exist or contains an error", ERROR);
27 Game::log("Initializing Nodes");
28 lua_getglobal(lua_vm, "dragonblocks");
29 if(! lua_istable(lua_vm, -1)){
30 Game::log("Failed to load Builtin: 'dragonblocks' does not exist or is not a table", ERROR);
34 lua_pushstring(lua_vm, "registered_nodes");
35 lua_gettable(lua_vm, -2);
36 if(!lua_istable(lua_vm,-1)){
37 Game::log("Failed to load Builtin: 'dragonblocks.registered_nodes' does not exist or is not a table", ERROR);
44 lua_pushnumber(lua_vm, i);
45 lua_gettable(lua_vm, -2);
46 if(!lua_istable(lua_vm, -1))
50 lua_pushstring(lua_vm, "name");
51 lua_gettable(lua_vm, -2);
52 if(!lua_isstring(lua_vm,-1))
54 string name = lua_tostring(lua_vm,-1);
57 lua_pushstring(lua_vm, "texture");
58 lua_gettable(lua_vm, -2);
59 if(!lua_isstring(lua_vm,-1))
61 string texture = lua_tostring(lua_vm,-1);
64 lua_pushstring(lua_vm, "hidden");
65 lua_gettable(lua_vm, -2);
66 if(!lua_isboolean(lua_vm,-1))
68 bool hidden = lua_toboolean(lua_vm,-1);
71 lua_pushstring(lua_vm, "stable");
72 lua_gettable(lua_vm, -2);
73 if(!lua_isboolean(lua_vm,-1))
75 bool stable = lua_toboolean(lua_vm,-1);
78 lua_pushstring(lua_vm, "translucent");
79 lua_gettable(lua_vm, -2);
80 if(!lua_isboolean(lua_vm,-1))
82 bool translucent = lua_toboolean(lua_vm,-1);
85 new Node(name, texture, hidden, stable, translucent);
86 Game::log("Registered Node " + name, INFO);
89 bool Mods::check_lua(int code){
93 error(lua_tostring(lua_vm, -1));
97 void Mods::error(string text){
98 Game::log("\e[34mlua: \e[0m" + text, ERROR);