From fe855e004f424fec1f7f3f2e7e06be2f70f4952e Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Fri, 22 Jul 2011 01:37:05 +0300 Subject: [PATCH] Fixed new map generator causing a crash when generating at map limit --- src/map.cpp | 68 ++++++++++++++++++++++++++++++-------------------- src/mapgen.cpp | 2 +- 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/src/map.cpp b/src/map.cpp index 9ff0fa6d3..2a3e9f760 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -2012,7 +2012,15 @@ void ServerMap::initBlockMake(mapgen::BlockMakeData *data, v3s16 blockpos) { /*dstream<<"initBlockMake(): ("<no_op = true; + return; + } + data->no_op = false; data->seed = m_seed; data->blockpos = blockpos; @@ -2063,6 +2071,7 @@ void ServerMap::initBlockMake(mapgen::BlockMakeData *data, v3s16 blockpos) neighboring blocks */ + // The area that contains this block and it's neighbors v3s16 bigarea_blocks_min = blockpos - v3s16(1,1,1); v3s16 bigarea_blocks_max = blockpos + v3s16(1,1,1); @@ -2087,7 +2096,7 @@ MapBlock* ServerMap::finishBlockMake(mapgen::BlockMakeData *data, if(data->no_op) { - dstream<<"finishBlockMake(): no-op"<getNode(p); - if(n.d == CONTENT_IGNORE) + bool erroneus_content = false; + for(s16 z0=0; z0getNode(p); + if(n.d == CONTENT_IGNORE) + { + dstream<<"CONTENT_IGNORE at " + <<"("<setNode(v3s16(x0,y0,z0), n); + for(s16 y0=0; y0setNode(v3s16(x0,y0,z0), n); + } } } #endif diff --git a/src/mapgen.cpp b/src/mapgen.cpp index 4a2a39aec..acff3b963 100644 --- a/src/mapgen.cpp +++ b/src/mapgen.cpp @@ -1303,7 +1303,7 @@ void make_block(BlockMakeData *data) { if(data->no_op) { - dstream<<"makeBlock: no-op"<