mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Expose mapgen parameters on scripting init
Add minetest.get_mapgen_params() Deprecate minetest.register_on_mapgen_init()
This commit is contained in:
parent
ff3cfb746e
commit
5e2753c712
9 changed files with 97 additions and 86 deletions
|
@ -82,7 +82,8 @@ public:
|
|||
|
||||
/////////////////////////////// Emerge Manager ////////////////////////////////
|
||||
|
||||
EmergeManager::EmergeManager(IGameDef *gamedef) {
|
||||
EmergeManager::EmergeManager(IGameDef *gamedef)
|
||||
{
|
||||
//register built-in mapgens
|
||||
registerMapgen("v5", new MapgenFactoryV5());
|
||||
registerMapgen("v6", new MapgenFactoryV6());
|
||||
|
@ -132,7 +133,8 @@ EmergeManager::EmergeManager(IGameDef *gamedef) {
|
|||
}
|
||||
|
||||
|
||||
EmergeManager::~EmergeManager() {
|
||||
EmergeManager::~EmergeManager()
|
||||
{
|
||||
for (unsigned int i = 0; i != emergethread.size(); i++) {
|
||||
if (threads_active) {
|
||||
emergethread[i]->Stop();
|
||||
|
@ -162,7 +164,8 @@ EmergeManager::~EmergeManager() {
|
|||
}
|
||||
|
||||
|
||||
void EmergeManager::loadMapgenParams() {
|
||||
void EmergeManager::loadMapgenParams()
|
||||
{
|
||||
loadParamsFromSettings(g_settings);
|
||||
|
||||
if (g_settings->get("fixed_map_seed").empty()) {
|
||||
|
@ -174,7 +177,8 @@ void EmergeManager::loadMapgenParams() {
|
|||
}
|
||||
|
||||
|
||||
void EmergeManager::initMapgens() {
|
||||
void EmergeManager::initMapgens()
|
||||
{
|
||||
if (mapgen.size())
|
||||
return;
|
||||
|
||||
|
@ -197,7 +201,8 @@ void EmergeManager::initMapgens() {
|
|||
}
|
||||
|
||||
|
||||
Mapgen *EmergeManager::getCurrentMapgen() {
|
||||
Mapgen *EmergeManager::getCurrentMapgen()
|
||||
{
|
||||
for (unsigned int i = 0; i != emergethread.size(); i++) {
|
||||
if (emergethread[i]->IsSameThread())
|
||||
return emergethread[i]->mapgen;
|
||||
|
@ -207,7 +212,8 @@ Mapgen *EmergeManager::getCurrentMapgen() {
|
|||
}
|
||||
|
||||
|
||||
void EmergeManager::startThreads() {
|
||||
void EmergeManager::startThreads()
|
||||
{
|
||||
if (threads_active)
|
||||
return;
|
||||
|
||||
|
@ -218,7 +224,8 @@ void EmergeManager::startThreads() {
|
|||
}
|
||||
|
||||
|
||||
void EmergeManager::stopThreads() {
|
||||
void EmergeManager::stopThreads()
|
||||
{
|
||||
if (!threads_active)
|
||||
return;
|
||||
|
||||
|
@ -236,7 +243,8 @@ void EmergeManager::stopThreads() {
|
|||
}
|
||||
|
||||
|
||||
bool EmergeManager::enqueueBlockEmerge(u16 peer_id, v3s16 p, bool allow_generate) {
|
||||
bool EmergeManager::enqueueBlockEmerge(u16 peer_id, v3s16 p, bool allow_generate)
|
||||
{
|
||||
std::map<v3s16, BlockEmergeData *>::const_iterator iter;
|
||||
BlockEmergeData *bedata;
|
||||
u16 count;
|
||||
|
@ -290,7 +298,8 @@ bool EmergeManager::enqueueBlockEmerge(u16 peer_id, v3s16 p, bool allow_generate
|
|||
}
|
||||
|
||||
|
||||
int EmergeManager::getGroundLevelAtPoint(v2s16 p) {
|
||||
int EmergeManager::getGroundLevelAtPoint(v2s16 p)
|
||||
{
|
||||
if (mapgen.size() == 0 || !mapgen[0]) {
|
||||
errorstream << "EmergeManager: getGroundLevelAtPoint() called"
|
||||
" before mapgen initialized" << std::endl;
|
||||
|
@ -301,7 +310,8 @@ int EmergeManager::getGroundLevelAtPoint(v2s16 p) {
|
|||
}
|
||||
|
||||
|
||||
bool EmergeManager::isBlockUnderground(v3s16 blockpos) {
|
||||
bool EmergeManager::isBlockUnderground(v3s16 blockpos)
|
||||
{
|
||||
/*
|
||||
v2s16 p = v2s16((blockpos.X * MAP_BLOCKSIZE) + MAP_BLOCKSIZE / 2,
|
||||
(blockpos.Y * MAP_BLOCKSIZE) + MAP_BLOCKSIZE / 2);
|
||||
|
@ -315,7 +325,8 @@ bool EmergeManager::isBlockUnderground(v3s16 blockpos) {
|
|||
}
|
||||
|
||||
|
||||
u32 EmergeManager::getBlockSeed(v3s16 p) {
|
||||
u32 EmergeManager::getBlockSeed(v3s16 p)
|
||||
{
|
||||
return (u32)(params.seed & 0xFFFFFFFF) +
|
||||
p.Z * 38134234 +
|
||||
p.Y * 42123 +
|
||||
|
@ -324,12 +335,13 @@ u32 EmergeManager::getBlockSeed(v3s16 p) {
|
|||
|
||||
|
||||
Mapgen *EmergeManager::createMapgen(std::string mgname, int mgid,
|
||||
MapgenParams *mgparams) {
|
||||
MapgenParams *mgparams)
|
||||
{
|
||||
std::map<std::string, MapgenFactory *>::const_iterator iter;
|
||||
iter = mglist.find(mgname);
|
||||
if (iter == mglist.end()) {
|
||||
errorstream << "EmergeManager; mapgen " << mgname <<
|
||||
" not registered" << std::endl;
|
||||
" not registered" << std::endl;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -338,12 +350,13 @@ Mapgen *EmergeManager::createMapgen(std::string mgname, int mgid,
|
|||
}
|
||||
|
||||
|
||||
MapgenSpecificParams *EmergeManager::createMapgenParams(std::string mgname) {
|
||||
MapgenSpecificParams *EmergeManager::createMapgenParams(std::string mgname)
|
||||
{
|
||||
std::map<std::string, MapgenFactory *>::const_iterator iter;
|
||||
iter = mglist.find(mgname);
|
||||
if (iter == mglist.end()) {
|
||||
errorstream << "EmergeManager: mapgen " << mgname <<
|
||||
" not registered" << std::endl;
|
||||
" not registered" << std::endl;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -352,7 +365,8 @@ MapgenSpecificParams *EmergeManager::createMapgenParams(std::string mgname) {
|
|||
}
|
||||
|
||||
|
||||
void EmergeManager::loadParamsFromSettings(Settings *settings) {
|
||||
void EmergeManager::loadParamsFromSettings(Settings *settings)
|
||||
{
|
||||
std::string seed_str;
|
||||
const char *setname = (settings == g_settings) ? "fixed_map_seed" : "seed";
|
||||
|
||||
|
@ -373,7 +387,8 @@ void EmergeManager::loadParamsFromSettings(Settings *settings) {
|
|||
}
|
||||
|
||||
|
||||
void EmergeManager::saveParamsToSettings(Settings *settings) {
|
||||
void EmergeManager::saveParamsToSettings(Settings *settings)
|
||||
{
|
||||
settings->set("mg_name", params.mg_name);
|
||||
settings->setU64("seed", params.seed);
|
||||
settings->setS16("water_level", params.water_level);
|
||||
|
@ -387,7 +402,8 @@ void EmergeManager::saveParamsToSettings(Settings *settings) {
|
|||
}
|
||||
|
||||
|
||||
void EmergeManager::registerMapgen(std::string mgname, MapgenFactory *mgfactory) {
|
||||
void EmergeManager::registerMapgen(std::string mgname, MapgenFactory *mgfactory)
|
||||
{
|
||||
mglist.insert(std::make_pair(mgname, mgfactory));
|
||||
infostream << "EmergeManager: registered mapgen " << mgname << std::endl;
|
||||
}
|
||||
|
@ -395,7 +411,8 @@ void EmergeManager::registerMapgen(std::string mgname, MapgenFactory *mgfactory)
|
|||
|
||||
////////////////////////////// Emerge Thread //////////////////////////////////
|
||||
|
||||
bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) {
|
||||
bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags)
|
||||
{
|
||||
std::map<v3s16, BlockEmergeData *>::iterator iter;
|
||||
JMutexAutoLock queuelock(emerge->queuemutex);
|
||||
|
||||
|
@ -423,7 +440,8 @@ bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) {
|
|||
|
||||
|
||||
bool EmergeThread::getBlockOrStartGen(v3s16 p, MapBlock **b,
|
||||
BlockMakeData *data, bool allow_gen) {
|
||||
BlockMakeData *data, bool allow_gen)
|
||||
{
|
||||
v2s16 p2d(p.X, p.Z);
|
||||
//envlock: usually takes <=1ms, sometimes 90ms or ~400ms to acquire
|
||||
JMutexAutoLock envlock(m_server->m_env_mutex);
|
||||
|
@ -454,7 +472,8 @@ bool EmergeThread::getBlockOrStartGen(v3s16 p, MapBlock **b,
|
|||
}
|
||||
|
||||
|
||||
void *EmergeThread::Thread() {
|
||||
void *EmergeThread::Thread()
|
||||
{
|
||||
ThreadStarted();
|
||||
log_register_thread("EmergeThread" + itos(id));
|
||||
DSTACK(__FUNCTION_NAME);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue