From cb584a87bd8336d590941cec0c204cbf75ab53eb Mon Sep 17 00:00:00 2001
From: p-mcgowan <mickeymcgowan@shaw.ca>
Date: Mon, 1 Dec 2014 11:44:20 -0800
Subject: cacti no longer spawn outside of desert variants

---
 src/Generating/FinishGen.cpp | 14 +++++++++++++-
 src/Generating/FinishGen.h   |  3 +++
 2 files changed, 16 insertions(+), 1 deletion(-)

(limited to 'src/Generating')

diff --git a/src/Generating/FinishGen.cpp b/src/Generating/FinishGen.cpp
index b9d702429..e09646758 100644
--- a/src/Generating/FinishGen.cpp
+++ b/src/Generating/FinishGen.cpp
@@ -370,7 +370,8 @@ void cFinishGenSprinkleFoliage::GenFinish(cChunkDesc & a_ChunkDesc)
 						(a_ChunkDesc.GetBlockType(x + 1, y, z)     == E_BLOCK_AIR) &&
 						(a_ChunkDesc.GetBlockType(x - 1, y, z)     == E_BLOCK_AIR) &&
 						(a_ChunkDesc.GetBlockType(x,     y, z + 1) == E_BLOCK_AIR) &&
-						(a_ChunkDesc.GetBlockType(x,     y, z - 1) == E_BLOCK_AIR)
+						(a_ChunkDesc.GetBlockType(x,     y, z - 1) == E_BLOCK_AIR) &&
+						IsDesertVariant(a_ChunkDesc.GetBiome(x, z)
 					)
 					{
 						a_ChunkDesc.SetBlockType(x, ++Top, z, E_BLOCK_CACTUS);
@@ -391,6 +392,17 @@ void cFinishGenSprinkleFoliage::GenFinish(cChunkDesc & a_ChunkDesc)
 
 
 
+bool cFinishGenSprinkleFoliage::IsDesertVariant(EMCSBiome a_biome)
+{
+	return a_biome == biDesertHills ||
+	       a_biome == biDesert ||
+	       a_biome == biDesertM;
+}
+
+
+
+
+
 ////////////////////////////////////////////////////////////////////////////////
 // cFinishGenSoulsandRims
 
diff --git a/src/Generating/FinishGen.h b/src/Generating/FinishGen.h
index d45365683..16128efa5 100644
--- a/src/Generating/FinishGen.h
+++ b/src/Generating/FinishGen.h
@@ -149,6 +149,9 @@ protected:
 	/// Tries to place sugarcane at the coords specified, returns true if successful
 	bool TryAddSugarcane(cChunkDesc & a_ChunkDesc, int a_RelX, int a_RelY, int a_RelZ);
 	
+	// Checks if biome is a desert to spawn cacti as opposed to just sand
+	bool IsDesertVariant(EMCSBiome a_biome);
+
 	// cFinishGen override:
 	virtual void GenFinish(cChunkDesc & a_ChunkDesc) override;
 } ;
-- 
cgit v1.2.3