Biome *get_or_load_biome(lua_State *L, int index, BiomeManager *biomemgr) { if (index < 0) index = lua_gettop(L) + 1 + index; Biome *biome = (Biome *)get_objdef(L, index, biomemgr); if (biome) return biome; biome = read_biome_def(L, index, biomemgr->getNodeDef()); if (!biome) return NULL; if (biomemgr->add(biome) == OBJDEF_INVALID_HANDLE) { delete biome; return NULL; } return biome; }
// register_biome({lots of stuff}) int ModApiMapgen::l_register_biome(lua_State *L) { int index = 1; luaL_checktype(L, index, LUA_TTABLE); INodeDefManager *ndef = getServer(L)->getNodeDefManager(); BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; Biome *biome = read_biome_def(L, index, ndef); if (!biome) return 0; ObjDefHandle handle = bmgr->add(biome); if (handle == OBJDEF_INVALID_HANDLE) { delete biome; return 0; } lua_pushinteger(L, handle); return 1; }