summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Server/Plugins/APIDump/APIDesc.lua17
-rw-r--r--src/BiomeDef.cpp24
-rw-r--r--src/BiomeDef.h3
-rw-r--r--src/Generating/FinishGen.cpp21
4 files changed, 65 insertions, 0 deletions
diff --git a/Server/Plugins/APIDump/APIDesc.lua b/Server/Plugins/APIDump/APIDesc.lua
index dd88eb7c5..e352f35a2 100644
--- a/Server/Plugins/APIDump/APIDesc.lua
+++ b/Server/Plugins/APIDump/APIDesc.lua
@@ -13647,6 +13647,23 @@ end
},
Notes = "Returns true if the biome is mountainous (mutations of the extreme hills biome)."
},
+ IsBiomeMesa =
+ {
+ Params =
+ {
+ {
+ Name = "Biome",
+ Type = "EMCSBiome",
+ }
+ },
+ Returns =
+ {
+ {
+ Type = "boolean",
+ },
+ },
+ Notes = "Returns true if the biome is type of Mesa (mutations of the Mesa biome)."
+ },
IsValidBlock =
{
Params =
diff --git a/src/BiomeDef.cpp b/src/BiomeDef.cpp
index ebb45f5e9..f56d9c815 100644
--- a/src/BiomeDef.cpp
+++ b/src/BiomeDef.cpp
@@ -246,6 +246,30 @@ bool IsBiomeMountain(EMCSBiome a_Biome)
+bool IsBiomeMesa(EMCSBiome a_Biome)
+{
+ switch (a_Biome)
+ {
+ case biMesa:
+ case biMesaPlateauF:
+ case biMesaPlateau:
+ case biMesaBryce:
+ case biMesaPlateauFM:
+ case biMesaPlateauM:
+ {
+ return true;
+ }
+ default:
+ {
+ return false;
+ }
+ }
+}
+
+
+
+
+
int GetSnowStartHeight(EMCSBiome a_Biome)
{
switch (a_Biome)
diff --git a/src/BiomeDef.h b/src/BiomeDef.h
index 888e3bb19..f8dea3e9f 100644
--- a/src/BiomeDef.h
+++ b/src/BiomeDef.h
@@ -154,6 +154,9 @@ extern bool IsBiomeCold(EMCSBiome a_Biome);
/** Returns true if the biome is mountainous (mutations of the extreme hills biome) */
extern bool IsBiomeMountain(EMCSBiome a_Biome);
+/** Returns true if the biome is Mesa or one of its mutations. */
+extern bool IsBiomeMesa(EMCSBiome a_Biome);
+
/** Returns the height when a biome when a biome starts snowing. */
extern int GetSnowStartHeight(EMCSBiome a_Biome);
diff --git a/src/Generating/FinishGen.cpp b/src/Generating/FinishGen.cpp
index 90c3e6ea4..f9315333b 100644
--- a/src/Generating/FinishGen.cpp
+++ b/src/Generating/FinishGen.cpp
@@ -1769,6 +1769,27 @@ void cFinishGenOreNests::GenerateOre(
}
}
+ // Gold ores are generated more often in Mesa-Type-Biomes:
+ // https://minecraft.gamepedia.com/Gold_Ore
+ if (a_OreType == E_BLOCK_GOLD_ORE)
+ {
+ auto BiomeSampleOne = a_ChunkDesc.GetBiome( 4, 4);
+ auto BiomeSampleTwo = a_ChunkDesc.GetBiome( 4, 12);
+ auto BiomeSampleThree = a_ChunkDesc.GetBiome(12, 4);
+ auto BiomeSampleFour = a_ChunkDesc.GetBiome(12, 12);
+
+ if (
+ IsBiomeMesa(BiomeSampleOne) ||
+ IsBiomeMesa(BiomeSampleTwo) ||
+ IsBiomeMesa(BiomeSampleThree) ||
+ IsBiomeMesa(BiomeSampleFour)
+ )
+ {
+ a_MaxHeight = 76;
+ a_NumNests = 22; // 2 time default + 20 times mesa bonus
+ }
+ }
+
auto chunkX = a_ChunkDesc.GetChunkX();
auto chunkZ = a_ChunkDesc.GetChunkZ();
auto & blockTypes = a_ChunkDesc.GetBlockTypes();