Example #1
0
// set_mapgen_setting_noiseparams(name, noiseparams, set_default)
// set mapgen config values for noise parameters
int ModApiMapgen::l_set_mapgen_setting_noiseparams(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	MapSettingsManager *settingsmgr =
		getServer(L)->getEmergeManager()->map_settings_mgr;

	const char *name = luaL_checkstring(L, 1);

	NoiseParams np;
	if (!read_noiseparams(L, 2, &np)) {
		errorstream << "set_mapgen_setting_noiseparams: cannot set '" << name
			<< "'; invalid noiseparams table" << std::endl;
		return 0;
	}

	bool override_meta = lua_isboolean(L, 3) ? lua_toboolean(L, 3) : false;

	if (!settingsmgr->setMapSettingNoiseParams(name, &np, override_meta)) {
		errorstream << "set_mapgen_setting_noiseparams: cannot set '"
			<< name << "' after initialization" << std::endl;
	}

	return 0;
}
Example #2
0
// get_mapgen_setting_noiseparams(name)
int ModApiMapgen::l_get_mapgen_setting_noiseparams(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	NoiseParams np;
	MapSettingsManager *settingsmgr =
		getServer(L)->getEmergeManager()->map_settings_mgr;

	const char *name = luaL_checkstring(L, 1);
	if (!settingsmgr->getMapSettingNoiseParams(name, &np))
		return 0;

	push_noiseparams(L, &np);
	return 1;
}
Example #3
0
// get_mapgen_setting(name)
int ModApiMapgen::l_get_mapgen_setting(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	std::string value;
	MapSettingsManager *settingsmgr =
		getServer(L)->getEmergeManager()->map_settings_mgr;

	const char *name = luaL_checkstring(L, 1);
	if (!settingsmgr->getMapSetting(name, &value))
		return 0;

	lua_pushstring(L, value.c_str());
	return 1;
}
Example #4
0
// set_mapgen_setting(name, value, override_meta)
// set mapgen config values
int ModApiMapgen::l_set_mapgen_setting(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	MapSettingsManager *settingsmgr =
		getServer(L)->getEmergeManager()->map_settings_mgr;

	const char *name   = luaL_checkstring(L, 1);
	const char *value  = luaL_checkstring(L, 2);
	bool override_meta = lua_isboolean(L, 3) ? lua_toboolean(L, 3) : false;

	if (!settingsmgr->setMapSetting(name, value, override_meta)) {
		errorstream << "set_mapgen_setting: cannot set '"
			<< name << "' after initialization" << std::endl;
	}

	return 0;
}
Example #5
0
// get_humidity(pos)
// returns the humidity at the position
int ModApiMapgen::l_get_humidity(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	v3s16 pos = read_v3s16(L, 1);

	NoiseParams np_humidity;
	NoiseParams np_humidity_blend;

	MapSettingsManager *settingsmgr =
		getServer(L)->getEmergeManager()->map_settings_mgr;

	if (!settingsmgr->getMapSettingNoiseParams("mg_biome_np_humidity",
			&np_humidity) ||
			!settingsmgr->getMapSettingNoiseParams("mg_biome_np_humidity_blend",
			&np_humidity_blend))
		return 0;

	std::string value;
	if (!settingsmgr->getMapSetting("seed", &value))
		return 0;
	std::istringstream ss(value);
	u64 seed;
	ss >> seed;

	BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr;
	if (!bmgr)
		return 0;

	float humidity = bmgr->getHumidityAtPosOriginal(pos, np_humidity,
		np_humidity_blend, seed);
	if (!humidity)
		return 0;

	lua_pushnumber(L, humidity);

	return 1;
}
Example #6
0
int ModApiMapgen::l_get_mapgen_params(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	log_deprecated(L, "get_mapgen_params is deprecated; "
		"use get_mapgen_setting instead");

	std::string value;

	MapSettingsManager *settingsmgr =
		getServer(L)->getEmergeManager()->map_settings_mgr;

	lua_newtable(L);

	settingsmgr->getMapSetting("mg_name", &value);
	lua_pushstring(L, value.c_str());
	lua_setfield(L, -2, "mgname");

	settingsmgr->getMapSetting("seed", &value);
	std::istringstream ss(value);
	u64 seed;
	ss >> seed;
	lua_pushinteger(L, seed);
	lua_setfield(L, -2, "seed");

	settingsmgr->getMapSetting("water_level", &value);
	lua_pushinteger(L, stoi(value, -32768, 32767));
	lua_setfield(L, -2, "water_level");

	settingsmgr->getMapSetting("chunksize", &value);
	lua_pushinteger(L, stoi(value, -32768, 32767));
	lua_setfield(L, -2, "chunksize");

	settingsmgr->getMapSetting("mg_flags", &value);
	lua_pushstring(L, value.c_str());
	lua_setfield(L, -2, "flags");

	return 1;
}
Example #7
0
// set_mapgen_params(params)
// set mapgen parameters
int ModApiMapgen::l_set_mapgen_params(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	log_deprecated(L, "set_mapgen_params is deprecated; "
		"use set_mapgen_setting instead");

	if (!lua_istable(L, 1))
		return 0;

	MapSettingsManager *settingsmgr =
		getServer(L)->getEmergeManager()->map_settings_mgr;

	lua_getfield(L, 1, "mgname");
	if (lua_isstring(L, -1))
		settingsmgr->setMapSetting("mg_name", lua_tostring(L, -1), true);

	lua_getfield(L, 1, "seed");
	if (lua_isnumber(L, -1))
		settingsmgr->setMapSetting("seed", lua_tostring(L, -1), true);

	lua_getfield(L, 1, "water_level");
	if (lua_isnumber(L, -1))
		settingsmgr->setMapSetting("water_level", lua_tostring(L, -1), true);

	lua_getfield(L, 1, "chunksize");
	if (lua_isnumber(L, -1))
		settingsmgr->setMapSetting("chunksize", lua_tostring(L, -1), true);

	warn_if_field_exists(L, 1, "flagmask",
		"Deprecated: flags field now includes unset flags.");

	lua_getfield(L, 1, "flags");
	if (lua_isstring(L, -1))
		settingsmgr->setMapSetting("mg_flags", lua_tostring(L, -1), true);

	return 0;
}
Example #8
0
// get_biome_data(pos)
// returns a table containing the biome id, heat and humidity at the position
int ModApiMapgen::l_get_biome_data(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	v3s16 pos = read_v3s16(L, 1);

	NoiseParams np_heat;
	NoiseParams np_heat_blend;
	NoiseParams np_humidity;
	NoiseParams np_humidity_blend;

	MapSettingsManager *settingsmgr =
		getServer(L)->getEmergeManager()->map_settings_mgr;

	if (!settingsmgr->getMapSettingNoiseParams("mg_biome_np_heat",
			&np_heat) ||
			!settingsmgr->getMapSettingNoiseParams("mg_biome_np_heat_blend",
			&np_heat_blend) ||
			!settingsmgr->getMapSettingNoiseParams("mg_biome_np_humidity",
			&np_humidity) ||
			!settingsmgr->getMapSettingNoiseParams("mg_biome_np_humidity_blend",
			&np_humidity_blend))
		return 0;

	std::string value;
	if (!settingsmgr->getMapSetting("seed", &value))
		return 0;
	std::istringstream ss(value);
	u64 seed;
	ss >> seed;

	BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr;
	if (!bmgr)
		return 0;

	float heat = bmgr->getHeatAtPosOriginal(pos, np_heat, np_heat_blend, seed);
	if (!heat)
		return 0;

	float humidity = bmgr->getHumidityAtPosOriginal(pos, np_humidity,
		np_humidity_blend, seed);
	if (!humidity)
		return 0;

	Biome *biome = (Biome *)bmgr->getBiomeFromNoiseOriginal(heat, humidity, pos.Y);
	if (!biome || biome->index == OBJDEF_INVALID_INDEX)
		return 0;

	lua_newtable(L);

	lua_pushinteger(L, biome->index);
	lua_setfield(L, -2, "biome");

	lua_pushnumber(L, heat);
	lua_setfield(L, -2, "heat");

	lua_pushnumber(L, humidity);
	lua_setfield(L, -2, "humidity");

	return 1;
}