|
@@ -223,7 +223,7 @@ s16 MapgenV6::find_stone_level(v2s16 p2d) |
|
|
if (c != CONTENT_IGNORE && (c == c_stone || c == c_desert_stone)) |
|
|
break; |
|
|
|
|
|
vm->m_area.add_y(em, i, -1); |
|
|
VoxelArea::add_y(em, i, -1); |
|
|
} |
|
|
return (y >= y_nodes_min) ? y : y_nodes_min - 1; |
|
|
} |
|
@@ -696,7 +696,7 @@ int MapgenV6::generateGround() |
|
|
vm->m_data[i] = n_air; |
|
|
} |
|
|
} |
|
|
vm->m_area.add_y(em, i, 1); |
|
|
VoxelArea::add_y(em, i, 1); |
|
|
} |
|
|
} |
|
|
|
|
@@ -759,7 +759,7 @@ void MapgenV6::addMud() |
|
|
vm->m_data[i] = addnode; |
|
|
mudcount++; |
|
|
|
|
|
vm->m_area.add_y(em, i, 1); |
|
|
VoxelArea::add_y(em, i, 1); |
|
|
} |
|
|
} |
|
|
} |
|
@@ -799,7 +799,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) |
|
|
n->getContent() == c_gravel) |
|
|
break; |
|
|
|
|
|
vm->m_area.add_y(em, i, -1); |
|
|
VoxelArea::add_y(em, i, -1); |
|
|
} |
|
|
|
|
|
// Stop if out of area |
|
@@ -815,7 +815,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) |
|
|
// Don't flow it if the stuff under it is not mud |
|
|
{ |
|
|
u32 i2 = i; |
|
|
vm->m_area.add_y(em, i2, -1); |
|
|
VoxelArea::add_y(em, i2, -1); |
|
|
// Cancel if out of area |
|
|
if (!vm->m_area.contains(i2)) |
|
|
continue; |
|
@@ -826,7 +826,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) |
|
|
} |
|
|
} |
|
|
|
|
|
v3s16 dirs4[4] = { |
|
|
static const v3s16 dirs4[4] = { |
|
|
v3s16(0, 0, 1), // back |
|
|
v3s16(1, 0, 0), // right |
|
|
v3s16(0, 0, -1), // front |
|
@@ -836,7 +836,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) |
|
|
// Check that upper is walkable. Cancel |
|
|
// dropping if upper keeps it in place. |
|
|
u32 i3 = i; |
|
|
vm->m_area.add_y(em, i3, 1); |
|
|
VoxelArea::add_y(em, i3, 1); |
|
|
MapNode *n3 = NULL; |
|
|
|
|
|
if (vm->m_area.contains(i3)) { |
|
@@ -849,7 +849,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) |
|
|
for (const v3s16 &dirp : dirs4) { |
|
|
u32 i2 = i; |
|
|
// Move to side |
|
|
vm->m_area.add_p(em, i2, dirp); |
|
|
VoxelArea::add_p(em, i2, dirp); |
|
|
// Fail if out of area |
|
|
if (!vm->m_area.contains(i2)) |
|
|
continue; |
|
@@ -858,7 +858,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) |
|
|
if (ndef->get(*n2).walkable) |
|
|
continue; |
|
|
// Check that under side is air |
|
|
vm->m_area.add_y(em, i2, -1); |
|
|
VoxelArea::add_y(em, i2, -1); |
|
|
if (!vm->m_area.contains(i2)) |
|
|
continue; |
|
|
n2 = &vm->m_data[i2]; |
|
@@ -867,7 +867,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) |
|
|
// Loop further down until not air |
|
|
bool dropped_to_unknown = false; |
|
|
do { |
|
|
vm->m_area.add_y(em, i2, -1); |
|
|
VoxelArea::add_y(em, i2, -1); |
|
|
n2 = &vm->m_data[i2]; |
|
|
// if out of known area |
|
|
if (!vm->m_area.contains(i2) || |
|
@@ -877,7 +877,7 @@ void MapgenV6::flowMud(s16 &mudflow_minpos, s16 &mudflow_maxpos) |
|
|
} |
|
|
} while (!ndef->get(*n2).walkable); |
|
|
// Loop one up so that we're in air |
|
|
vm->m_area.add_y(em, i2, 1); |
|
|
VoxelArea::add_y(em, i2, 1); |
|
|
|
|
|
// Move mud to new place. Outside mapchunk remove |
|
|
// any decorations above removed or placed mud. |
|
@@ -917,17 +917,17 @@ void MapgenV6::moveMud(u32 remove_index, u32 place_index, |
|
|
vm->m_data[above_remove_index].getContent() != c_water_source && |
|
|
vm->m_data[above_remove_index].getContent() != CONTENT_IGNORE) { |
|
|
vm->m_data[above_remove_index] = n_air; |
|
|
vm->m_area.add_y(em, above_remove_index, 1); |
|
|
VoxelArea::add_y(em, above_remove_index, 1); |
|
|
} |
|
|
// Mud placed may have partially-buried a stacked decoration, search |
|
|
// above and remove. |
|
|
vm->m_area.add_y(em, place_index, 1); |
|
|
VoxelArea::add_y(em, place_index, 1); |
|
|
while (vm->m_area.contains(place_index) && |
|
|
vm->m_data[place_index].getContent() != CONTENT_AIR && |
|
|
vm->m_data[place_index].getContent() != c_water_source && |
|
|
vm->m_data[place_index].getContent() != CONTENT_IGNORE) { |
|
|
vm->m_data[place_index] = n_air; |
|
|
vm->m_area.add_y(em, place_index, 1); |
|
|
VoxelArea::add_y(em, place_index, 1); |
|
|
} |
|
|
} |
|
|
} |
|
@@ -1001,7 +1001,7 @@ void MapgenV6::placeTreesAndJungleGrass() |
|
|
u32 vi = vm->m_area.index(x, y, z); |
|
|
// place on dirt_with_grass, since we know it is exposed to sunlight |
|
|
if (vm->m_data[vi].getContent() == c_dirt_with_grass) { |
|
|
vm->m_area.add_y(em, vi, 1); |
|
|
VoxelArea::add_y(em, vi, 1); |
|
|
vm->m_data[vi] = n_junglegrass; |
|
|
} |
|
|
} |
|
@@ -1071,7 +1071,7 @@ void MapgenV6::growGrass() // Add surface nodes |
|
|
ndef->get(n).liquid_type != LIQUID_NONE || |
|
|
n.getContent() == c_ice) |
|
|
break; |
|
|
vm->m_area.add_y(em, i, -1); |
|
|
VoxelArea::add_y(em, i, -1); |
|
|
} |
|
|
surface_y = (y >= full_node_min.Y) ? y : full_node_min.Y; |
|
|
} |
|
@@ -1085,10 +1085,10 @@ void MapgenV6::growGrass() // Add surface nodes |
|
|
} else if (bt == BT_TUNDRA) { |
|
|
if (c == c_dirt) { |
|
|
vm->m_data[i] = n_snowblock; |
|
|
vm->m_area.add_y(em, i, -1); |
|
|
VoxelArea::add_y(em, i, -1); |
|
|
vm->m_data[i] = n_dirt_with_snow; |
|
|
} else if (c == c_stone && surface_y < node_max.Y) { |
|
|
vm->m_area.add_y(em, i, 1); |
|
|
VoxelArea::add_y(em, i, 1); |
|
|
vm->m_data[i] = n_snowblock; |
|
|
} |
|
|
} else if (c == c_dirt) { |
|
|