diff options
author | Samuel Barney <samjbarney@gmail.com> | 2015-08-19 18:45:53 +0200 |
---|---|---|
committer | Samuel Barney <samjbarney@gmail.com> | 2015-08-19 18:48:21 +0200 |
commit | cc83c4641d50818bf4fd830653438515ed5264d3 (patch) | |
tree | d4c4ebe5a88eaeba8ce9d53122c9eb92e297870c /src/Blocks/BlockCactus.h | |
parent | Merge pull request #2439 from cuberite/AppveyorYml (diff) | |
download | cuberite-cc83c4641d50818bf4fd830653438515ed5264d3.tar cuberite-cc83c4641d50818bf4fd830653438515ed5264d3.tar.gz cuberite-cc83c4641d50818bf4fd830653438515ed5264d3.tar.bz2 cuberite-cc83c4641d50818bf4fd830653438515ed5264d3.tar.lz cuberite-cc83c4641d50818bf4fd830653438515ed5264d3.tar.xz cuberite-cc83c4641d50818bf4fd830653438515ed5264d3.tar.zst cuberite-cc83c4641d50818bf4fd830653438515ed5264d3.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Blocks/BlockCactus.h | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/Blocks/BlockCactus.h b/src/Blocks/BlockCactus.h index cb6cecc7b..29e86d085 100644 --- a/src/Blocks/BlockCactus.h +++ b/src/Blocks/BlockCactus.h @@ -1,18 +1,19 @@ #pragma once -#include "BlockHandler.h" +#include "BlockPlant.h" class cBlockCactusHandler : - public cBlockHandler + public cBlockPlant { + typedef cBlockPlant Super; public: cBlockCactusHandler(BLOCKTYPE a_BlockType) - : cBlockHandler(a_BlockType) + : Super(a_BlockType, false) { } @@ -64,7 +65,10 @@ public: virtual void OnUpdate(cChunkInterface & cChunkInterface, cWorldInterface & a_WorldInterface, cBlockPluginInterface & a_PluginInterface, cChunk & a_Chunk, int a_RelX, int a_RelY, int a_RelZ) override { - a_Chunk.GetWorld()->GrowCactus(a_RelX + a_Chunk.GetPosX() * cChunkDef::Width, a_RelY, a_RelZ + a_Chunk.GetPosZ() * cChunkDef::Width, 1); + if (CanGrow(a_Chunk, a_RelX, a_RelY, a_RelZ) == paGrowth) + { + a_Chunk.GetWorld()->GrowCactus(a_RelX + a_Chunk.GetPosX() * cChunkDef::Width, a_RelY, a_RelZ + a_Chunk.GetPosZ() * cChunkDef::Width, 1); + } } virtual ColourID GetMapBaseColourID(NIBBLETYPE a_Meta) override @@ -72,6 +76,19 @@ public: UNUSED(a_Meta); return 7; } + +protected: + + virtual PlantAction CanGrow(cChunk & a_Chunk, int a_RelX, int a_RelY, int a_RelZ) override + { + auto Action = paStay; + if (((a_RelY + 1) < cChunkDef::Height) && (a_Chunk.GetBlock(a_RelX, a_RelY + 1, a_RelZ) == E_BLOCK_AIR)) + { + Action = Super::CanGrow(a_Chunk, a_RelX, a_RelY, a_RelZ); + } + + return Action; + } } ; |