Apply various fixes to several things
authorkwolekr <kwolekr@minetest.net>
Fri, 28 Jun 2013 02:33:31 +0000 (22:33 -0400)
committerkwolekr <kwolekr@minetest.net>
Fri, 28 Jun 2013 02:35:35 +0000 (22:35 -0400)
doc/lua_api.txt
src/emerge.cpp
src/script/lua_api/l_env.cpp
src/script/lua_api/l_vmanip.cpp

index 622d292c4f7297193bc29b16d34463a125e8d74d..5920b97a0909d33a423c4fd3299cd6f15d84db1f 100644 (file)
@@ -1123,7 +1123,7 @@ minetest.get_mapgen_object(objectname)
 ^ Return requested mapgen object if available (see Mapgen objects)
 minetest.set_mapgen_params(MapgenParams)
 ^ Set map generation parameters
-^ Function can *only* be called within a minetest.on_mapgen_init() callback
+^ Function cannot be called after the registration period; only initialization and on_mapgen_init
 ^ Takes a table as an argument with the fields mgname, seed, water_level, flags, and flagmask.
 ^ Leave field unset to leave that parameter unchanged
 ^ flagmask field must be set to all mapgen flags that are being modified
index 09a58149d38f3e2a9fb7709db2807393f6c11664..c0560ba3bd9b2d11711e5681c0382591d4d85a3a 100644 (file)
@@ -59,9 +59,9 @@ EmergeManager::EmergeManager(IGameDef *gamedef) {
        this->biomedef = new BiomeDefManager();
        this->params   = NULL;
        
-       this->luaoverride_params = NULL;
+       this->luaoverride_params          = NULL;
        this->luaoverride_params_modified = 0;
-       this->luaoverride_flagmask = 0;
+       this->luaoverride_flagmask        = 0;
        
        mapgen_debug_info = g_settings->getBool("enable_mapgen_debug_info");
 
index 02cafc0d5cbb5fcc157af850a8eea1287b3cb0f4..89ba9798a8fe21e3420bf9a19f50043131edc434 100644 (file)
@@ -579,6 +579,8 @@ int ModApiEnvMod::l_get_mapgen_object(lua_State *L)
 
        EmergeManager *emerge = getServer(L)->getEmergeManager();
        Mapgen *mg = emerge->getCurrentMapgen();
+       if (!mg)
+               return 0;
        
        size_t maplen = mg->csize.X * mg->csize.Z;
        
@@ -614,7 +616,7 @@ int ModApiEnvMod::l_get_mapgen_object(lua_State *L)
                        }
                        break; }
                case MGOBJ_BIOMEMAP: {
-                       if (!mg->heightmap)
+                       if (!mg->biomemap)
                                return 0;
                        
                        lua_newtable(L);
@@ -625,6 +627,9 @@ int ModApiEnvMod::l_get_mapgen_object(lua_State *L)
                        break; }
                case MGOBJ_HEATMAP: { // Mapgen V7 specific objects
                case MGOBJ_HUMIDMAP:
+                       if (strcmp(emerge->params->mg_name.c_str(), "v7"))
+                               return 0;
+                       
                        MapgenV7 *mgv7 = (MapgenV7 *)mg;
 
                        float *arr = (mgobj == MGOBJ_HEATMAP) ? 
index f753f5f27425c7e301f4496b8b4e9d5b36dec3be..8bf65a5557d224f417e18541f78a20529ec79147 100644 (file)
@@ -88,7 +88,7 @@ int LuaVoxelManip::l_set_data(lua_State *L)
        int volume = vm->m_area.getVolume();
        for (int i = 0; i != volume; i++) {
                lua_rawgeti(L, 2, i + 1);
-               content_t c = lua_tonumber(L, -1);
+               content_t c = lua_tointeger(L, -1);
                
                vm->m_data[i].setContent(c);
 
@@ -224,7 +224,11 @@ int LuaVoxelManip::create_object(lua_State *L)
 {
        NO_MAP_LOCK_REQUIRED;
        
-       Map *map = &(get_scriptapi(L)->getEnv()->getMap());
+       Environment *env = get_scriptapi(L)->getEnv();
+       if (!env)
+               return 0;
+               
+       Map *map = &(env->getMap());
        LuaVoxelManip *o = new LuaVoxelManip(map);
        
        *(void **)(lua_newuserdata(L, sizeof(void *))) = o;