From bb78bd88b568b8d9bce561f25c930c545c316622 Mon Sep 17 00:00:00 2001 From: Mattes D Date: Wed, 30 Nov 2016 14:04:27 +0100 Subject: Fixed villages generating under-water. The CompoGenBiomal didn't update the heightmap properly. --- src/Generating/CompoGenBiomal.cpp | 7 ++++++- src/Generating/VillageGen.cpp | 7 ++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Generating/CompoGenBiomal.cpp b/src/Generating/CompoGenBiomal.cpp index 0606477a1..c8e56da7d 100644 --- a/src/Generating/CompoGenBiomal.cpp +++ b/src/Generating/CompoGenBiomal.cpp @@ -435,7 +435,12 @@ protected: { bool HasHadWater = false; int PatternIdx = 0; - HEIGHTTYPE top = std::max(m_SeaLevel, a_ChunkDesc.GetHeight(a_RelX, a_RelZ)); + HEIGHTTYPE top = a_ChunkDesc.GetHeight(a_RelX, a_RelZ); + if (top < m_SeaLevel) + { + top = m_SeaLevel; + a_ChunkDesc.SetHeight(a_RelX, a_RelZ, top - 1); + } for (int y = top; y > 0; y--) { if (a_ShapeColumn[y] > 0) diff --git a/src/Generating/VillageGen.cpp b/src/Generating/VillageGen.cpp index e0804625a..ccea3338d 100644 --- a/src/Generating/VillageGen.cpp +++ b/src/Generating/VillageGen.cpp @@ -234,13 +234,14 @@ protected: { for (int x = MinX; x <= MaxX; x++) { - if (IsBlockWater(a_Chunk.GetBlockType(x, cChunkDef::GetHeight(a_HeightMap, x, z), z))) + auto height = cChunkDef::GetHeight(a_HeightMap, x, z); + if (IsBlockWater(a_Chunk.GetBlockType(x, height, z))) { - a_Chunk.SetBlockTypeMeta(x, cChunkDef::GetHeight(a_HeightMap, x, z), z, WaterRoadBlockType, WaterRoadBlockMeta); + a_Chunk.SetBlockTypeMeta(x, height, z, WaterRoadBlockType, WaterRoadBlockMeta); } else { - a_Chunk.SetBlockTypeMeta(x, cChunkDef::GetHeight(a_HeightMap, x, z), z, RoadBlockType, RoadBlockMeta); + a_Chunk.SetBlockTypeMeta(x, height, z, RoadBlockType, RoadBlockMeta); } } } -- cgit v1.2.3