diff options
author | Mattes D <github@xoft.cz> | 2014-12-13 20:43:17 +0100 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-12-13 20:43:17 +0100 |
commit | 58668351ae410e8d3392ac7d4d6550d49e578566 (patch) | |
tree | 6a19d87c9e0cd48c576ad37edda3ee88ddfe041c /src/Generating/Caves.cpp | |
parent | Merge pull request #1663 from mc-server/APIDumpSize (diff) | |
parent | WormNestCaves occasionally generates sandstone around the cave (diff) | |
download | cuberite-58668351ae410e8d3392ac7d4d6550d49e578566.tar cuberite-58668351ae410e8d3392ac7d4d6550d49e578566.tar.gz cuberite-58668351ae410e8d3392ac7d4d6550d49e578566.tar.bz2 cuberite-58668351ae410e8d3392ac7d4d6550d49e578566.tar.lz cuberite-58668351ae410e8d3392ac7d4d6550d49e578566.tar.xz cuberite-58668351ae410e8d3392ac7d4d6550d49e578566.tar.zst cuberite-58668351ae410e8d3392ac7d4d6550d49e578566.zip |
Diffstat (limited to 'src/Generating/Caves.cpp')
-rw-r--r-- | src/Generating/Caves.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
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[] } |