Skip to content
Permalink
Browse files

Voxelmanip: Do not emerge or blit to blocks over map gen limit

Placing a structure that extends into mapblocks that extend past
map_gen_limit causes a crash. For example a sapling growing at the
world edge which adds leaves beyond the edge, or placing a structure
using the lua voxelmanip, or placing a schematic or l-system tree.

Do not run the 'load_if_inexistent' block of code if the mapblock
is over limit, this also marks the mapblock with the flag
VMANIP_BLOCK_DATA_INEXIST which later prevents blitting back those
mapblocks.

This fix therefore uses existing functionality by having the same
effect as the 'load_if_inexistent' bool being false.
  • Loading branch information...
paramat committed Feb 17, 2017
1 parent d0a6cac commit 111e7e1cc8316e4812e85fddc579feaeedecbb58
Showing with 1 addition and 1 deletion.
  1. +1 −1 src/map.cpp
@@ -3161,7 +3161,7 @@ void MMVManip::initialEmerge(v3s16 blockpos_min, v3s16 blockpos_max,
if(block_data_inexistent)
{

if (load_if_inexistent) {
if (load_if_inexistent && !blockpos_over_limit(p)) {
ServerMap *svrmap = (ServerMap *)m_map;
block = svrmap->emergeBlock(p, false);
if (block == NULL)

0 comments on commit 111e7e1

Please sign in to comment.
You can’t perform that action at this time.