]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/scriptapi.cpp
Slightly improved version of mystrtok_r
[dragonfireclient.git] / src / scriptapi.cpp
index 27f48be27af150f802569a8bf659bf5cb8909392..13ba72056a6a53ba25b9dcb94d465c3442ac5077 100644 (file)
@@ -4460,13 +4460,15 @@ static int l_register_biome_groups(lua_State *L)
 {
        luaL_checktype(L, 1, LUA_TTABLE);
        int index = 1;
-       if (!lua_istable(L, index)) {
+       if (!lua_istable(L, index))
+               throw LuaError(L, "register_biome_groups: parameter is not a table");
 
+       BiomeDefManager *bmgr = get_server(L)->getBiomeDef();
+       if (!bmgr) {
+               verbosestream << "register_biome_groups: BiomeDefManager not active" << std::endl;
                return 0;
        }
 
-       BiomeDefManager *bmgr = get_server(L)->getEmergeManager()->biomedef;
-
        lua_pushnil(L);
        for (int i = 1; lua_next(L, index) != 0; i++) {
                bmgr->addBiomeGroup(lua_tonumber(L, -1));
@@ -4485,7 +4487,11 @@ static int l_register_biome(lua_State *L)
        std::string nodename;
 
        IWritableNodeDefManager *ndef = get_server(L)->getWritableNodeDefManager();
-       BiomeDefManager *bmgr = get_server(L)->getEmergeManager()->biomedef;
+       BiomeDefManager *bmgr = get_server(L)->getBiomeDef();
+       if (!bmgr) {
+               verbosestream << "register_biome: BiomeDefManager not active" << std::endl;
+               return 0;
+       }
 
        groupid = getintfield_default(L, index, "group_id", 0);
 
@@ -4514,15 +4520,16 @@ static int l_register_biome(lua_State *L)
        b->humidity_min = getfloatfield_default(L, index, "humidity_min", 0.);
        b->humidity_max = getfloatfield_default(L, index, "humidity_max", 0.);
 
-//////hrm, what to do about the noiseparams...
-       b->np = new NoiseParams; /////just a hacky solution
+       b->np = new NoiseParams; // should read an entire NoiseParams later on...
        getfloatfield(L, index, "scale", b->np->scale);
        getfloatfield(L, index, "offset", b->np->offset);
-       //TODO: add configurable spread factor and octaves!?
-       //I'd have to create a Noise for every Biome...
-       bmgr->addBiome(groupid, b);
-       printf(" - added biome '%s'  -  %d %d\n", b->name.c_str(), b->n_top.param0, b->n_filler.param0);
 
+       b->groupid = (s8)groupid;
+       b->flags   = 0; //reserved
+
+       bmgr->addBiome(b);
+
+       verbosestream << "register_biome: " << b->name << std::endl;
        return 0;
 }
 
@@ -4874,6 +4881,13 @@ static int l_setting_getbool(lua_State *L)
        return 1;
 }
 
+// setting_save()
+static int l_setting_save(lua_State *L)
+{
+       get_server(L)->saveConfig();
+       return 0;
+}
+
 // chat_send_all(text)
 static int l_chat_send_all(lua_State *L)
 {
@@ -5343,6 +5357,7 @@ static const struct luaL_Reg minetest_f [] = {
        {"setting_set", l_setting_set},
        {"setting_get", l_setting_get},
        {"setting_getbool", l_setting_getbool},
+       {"setting_save",l_setting_save},
        {"chat_send_all", l_chat_send_all},
        {"chat_send_player", l_chat_send_player},
        {"get_player_privs", l_get_player_privs},