1
0

Merge pull request #1473 from mc-server/NewStoneGeneration

Added Granite, Diorite and Andesite to the NaturalPatches generator.
This commit is contained in:
Mattes D 2014-09-29 09:33:13 +02:00
commit 666aa1df94
3 changed files with 46 additions and 7 deletions

View File

@ -428,6 +428,33 @@ void cComposableGenerator::InitFinishGens(cIniFile & a_IniFile)
GravelVein.NestSize = 32;
Ores.push_back(GravelVein);
// Granite vein
cStructGenOreNests::OreInfo GraniteVein;
GraniteVein.BlockType = E_BLOCK_STONE;
GraniteVein.BlockMeta = 1;
GraniteVein.MaxHeight = 127;
GraniteVein.NumNests = 20;
GraniteVein.NestSize = 32;
Ores.push_back(GraniteVein);
// Diorite vein
cStructGenOreNests::OreInfo DioriteVein;
DioriteVein.BlockType = E_BLOCK_STONE;
DioriteVein.BlockMeta = 3;
DioriteVein.MaxHeight = 127;
DioriteVein.NumNests = 20;
DioriteVein.NestSize = 32;
Ores.push_back(DioriteVein);
// Andesite vein
cStructGenOreNests::OreInfo AndesiteVein;
AndesiteVein.BlockType = E_BLOCK_STONE;
AndesiteVein.BlockMeta = 5;
AndesiteVein.MaxHeight = 127;
AndesiteVein.NumNests = 20;
AndesiteVein.NestSize = 32;
Ores.push_back(AndesiteVein);
m_FinishGens.push_back(new cStructGenOreNests(Seed, Ores, E_BLOCK_STONE));
}
else if (NoCaseCompare(*itr, "NetherClumpFoliage") == 0)

View File

@ -272,13 +272,14 @@ void cStructGenOreNests::GenFinish(cChunkDesc & a_ChunkDesc)
int ChunkX = a_ChunkDesc.GetChunkX();
int ChunkZ = a_ChunkDesc.GetChunkZ();
cChunkDef::BlockTypes & BlockTypes = a_ChunkDesc.GetBlockTypes();
cChunkDesc::BlockNibbleBytes & BlockMetas = a_ChunkDesc.GetBlockMetasUncompressed();
int seq = 1;
// Generate the ores from the ore list.
for (OreList::const_iterator itr = m_OreList.begin(); itr != m_OreList.end(); ++itr)
{
GenerateOre(ChunkX, ChunkZ, itr->BlockType, itr->MaxHeight, itr->NumNests, itr->NestSize, BlockTypes, seq);
GenerateOre(ChunkX, ChunkZ, itr->BlockType, itr->BlockMeta, itr->MaxHeight, itr->NumNests, itr->NestSize, BlockTypes, BlockMetas, seq);
seq++;
}
}
@ -287,7 +288,7 @@ void cStructGenOreNests::GenFinish(cChunkDesc & a_ChunkDesc)
void cStructGenOreNests::GenerateOre(int a_ChunkX, int a_ChunkZ, BLOCKTYPE a_OreType, int a_MaxHeight, int a_NumNests, int a_NestSize, cChunkDef::BlockTypes & a_BlockTypes, int a_Seq)
void cStructGenOreNests::GenerateOre(int a_ChunkX, int a_ChunkZ, BLOCKTYPE a_OreType, NIBBLETYPE a_BlockMeta, int a_MaxHeight, int a_NumNests, int a_NestSize, cChunkDef::BlockTypes & a_BlockTypes, cChunkDesc::BlockNibbleBytes & a_BlockMetas, int a_Seq)
{
// This function generates several "nests" of ore, each nest consisting of number of ore blocks relatively adjacent to each other.
// It does so by making a random XYZ walk and adding ore along the way in cuboids of different (random) sizes
@ -341,6 +342,7 @@ void cStructGenOreNests::GenerateOre(int a_ChunkX, int a_ChunkZ, BLOCKTYPE a_Ore
if (a_BlockTypes[Index] == m_ToReplace)
{
a_BlockTypes[Index] = a_OreType;
a_BlockMetas[Index] = a_BlockMeta;
}
Num++;
} // for z

View File

@ -78,10 +78,20 @@ class cStructGenOreNests :
public:
struct OreInfo
{
BLOCKTYPE BlockType; // The type of the nest.
int MaxHeight; // The highest possible a nest can occur
int NumNests; // How many nests per chunk
int NestSize; // The amount of blocks a nest can have.
BLOCKTYPE BlockType; // The type of the nest.
NIBBLETYPE BlockMeta; // The block meta
int MaxHeight; // The highest possible a nest can occur
int NumNests; // How many nests per chunk
int NestSize; // The amount of blocks a nest can have.
OreInfo() :
BlockType(0),
BlockMeta(0),
MaxHeight(0),
NumNests(0),
NestSize(0)
{
}
};
typedef std::vector<OreInfo> OreList;
@ -103,7 +113,7 @@ protected:
// cFinishGen override:
virtual void GenFinish(cChunkDesc & a_ChunkDesc) override;
void GenerateOre(int a_ChunkX, int a_ChunkZ, BLOCKTYPE a_OreType, int a_MaxHeight, int a_NumNests, int a_NestSize, cChunkDef::BlockTypes & a_BlockTypes, int a_Seq);
void GenerateOre(int a_ChunkX, int a_ChunkZ, BLOCKTYPE a_OreType, NIBBLETYPE a_BlockMeta, int a_MaxHeight, int a_NumNests, int a_NestSize, cChunkDef::BlockTypes & a_BlockTypes, cChunkDesc::BlockNibbleBytes & a_BlockMetas, int a_Seq);
} ;