diff options
-rw-r--r-- | .travis.yml | 6 | ||||
-rw-r--r-- | src/Generating/Caves.cpp | 25 |
2 files changed, 26 insertions, 5 deletions
diff --git a/.travis.yml b/.travis.yml index 4e8377748..26e74c1b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,9 +11,11 @@ before_install: - sudo apt-get update -qq install: - # g++4.8 + # g++4.8 and clang - sudo apt-get install -qq g++-4.8 - - export CXX="g++-4.8" + + # g++4.8 + - if [ "$CXX" == "g++" ]; then export CXX="g++-4.8"; export CC="gcc-4.8"; fi # Build MCServer script: ./CIbuild.sh diff --git a/src/Generating/Caves.cpp b/src/Generating/Caves.cpp index e4735cb83..1e8dbef90 100644 --- a/src/Generating/Caves.cpp +++ b/src/Generating/Caves.cpp @@ -100,6 +100,7 @@ public: void ProcessChunk( int a_ChunkX, int a_ChunkZ, cChunkDef::BlockTypes & a_BlockTypes, + cChunkDesc::BlockNibbleBytes & a_BlockMetas, cChunkDef::HeightMap & a_HeightMap ); @@ -455,6 +456,7 @@ void cCaveTunnel::CalcBoundingBox(void) void cCaveTunnel::ProcessChunk( int a_ChunkX, int a_ChunkZ, cChunkDef::BlockTypes & a_BlockTypes, + cChunkDesc::BlockNibbleBytes & a_BlockMetas, cChunkDef::HeightMap & a_HeightMap ) { @@ -505,6 +507,22 @@ void cCaveTunnel::ProcessChunk( cChunkDef::SetBlock(a_BlockTypes, x, y, z, E_BLOCK_AIR); } } + else if (SqDist <= SqRad * 2) + { + if (cChunkDef::GetBlock(a_BlockTypes, x, y, z) == E_BLOCK_SAND) + { + int Index = cChunkDef::MakeIndexNoCheck(x, y, z); + if (a_BlockMetas[Index] == 1) + { + a_BlockMetas[Index] = 0; + cChunkDef::SetBlock(a_BlockTypes, x, y, z, E_BLOCK_RED_SANDSTONE); + } + else + { + cChunkDef::SetBlock(a_BlockTypes, x, y, z, E_BLOCK_SANDSTONE); + } + } + } } // for y } // for x, z } // for itr - m_Points[] @@ -596,11 +614,12 @@ void cStructGenWormNestCaves::cCaveSystem::DrawIntoChunk(cChunkDesc & a_ChunkDes { int ChunkX = a_ChunkDesc.GetChunkX(); int ChunkZ = a_ChunkDesc.GetChunkZ(); - cChunkDef::BlockTypes & BlockTypes = a_ChunkDesc.GetBlockTypes(); - cChunkDef::HeightMap & HeightMap = a_ChunkDesc.GetHeightMap(); + cChunkDef::BlockTypes & BlockTypes = a_ChunkDesc.GetBlockTypes(); + cChunkDef::HeightMap & HeightMap = a_ChunkDesc.GetHeightMap(); + cChunkDesc::BlockNibbleBytes & BlockMetas = a_ChunkDesc.GetBlockMetasUncompressed(); for (cCaveTunnels::const_iterator itr = m_Tunnels.begin(), end = m_Tunnels.end(); itr != end; ++itr) { - (*itr)->ProcessChunk(ChunkX, ChunkZ, BlockTypes, HeightMap); + (*itr)->ProcessChunk(ChunkX, ChunkZ, BlockTypes, BlockMetas, HeightMap); } // for itr - m_Tunnels[] } |