From 3ccba12e390dc83b08393ad922b91825be2eedb7 Mon Sep 17 00:00:00 2001 From: faketruth Date: Sun, 9 Jun 2013 15:16:07 +0000 Subject: Added dead bush block handler so a dead bush pickup is dropped when the sand underneath it is removed. git-svn-id: http://mc-server.googlecode.com/svn/trunk@1569 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- VC2008/MCServer.vcproj | 4 ++++ source/Blocks/BlockDeadBush.h | 47 ++++++++++++++++++++++++++++++++++++++++++ source/Blocks/BlockHandler.cpp | 2 ++ 3 files changed, 53 insertions(+) create mode 100644 source/Blocks/BlockDeadBush.h diff --git a/VC2008/MCServer.vcproj b/VC2008/MCServer.vcproj index a8a3aede6..5effcba67 100644 --- a/VC2008/MCServer.vcproj +++ b/VC2008/MCServer.vcproj @@ -1812,6 +1812,10 @@ RelativePath="..\source\blocks\BlockCrops.h" > + + diff --git a/source/Blocks/BlockDeadBush.h b/source/Blocks/BlockDeadBush.h new file mode 100644 index 000000000..cfa872b2c --- /dev/null +++ b/source/Blocks/BlockDeadBush.h @@ -0,0 +1,47 @@ + +#pragma once + +#include "BlockHandler.h" +#include "../World.h" + + + + + +class cBlockDeadBushHandler : + public cBlockHandler +{ +public: + cBlockDeadBushHandler(BLOCKTYPE a_BlockType) + : cBlockHandler(a_BlockType) + { + } + + + virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override + { + a_Pickups.push_back(cItem(E_BLOCK_DEAD_BUSH, 1, a_BlockMeta)); + } + + + virtual bool CanBeAt(int a_RelX, int a_RelY, int a_RelZ, const cChunk & a_Chunk) override + { + return (a_RelY > 0) && (a_Chunk.GetBlock(a_RelX, a_RelY - 1, a_RelZ) == E_BLOCK_SAND); + } + + + virtual bool DoesAllowBlockOnTop(void) override + { + return false; + } + + + virtual bool CanBePlacedOnSide() override + { + return false; + } +} ; + + + + diff --git a/source/Blocks/BlockHandler.cpp b/source/Blocks/BlockHandler.cpp index 149dcd98d..77c51f02a 100644 --- a/source/Blocks/BlockHandler.cpp +++ b/source/Blocks/BlockHandler.cpp @@ -57,6 +57,7 @@ #include "BlockBrewingStand.h" #include "BlockCobWeb.h" #include "BlockTNT.h" +#include "BlockDeadBush.h" @@ -149,6 +150,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType) case E_BLOCK_RAIL: return new cBlockRailHandler (a_BlockType); case E_BLOCK_POTATOES: return new cBlockCropsHandler (a_BlockType); case E_BLOCK_POWERED_RAIL: return new cBlockRailHandler (a_BlockType); + case E_BLOCK_DEAD_BUSH: return new cBlockDeadBushHandler (a_BlockType); case E_BLOCK_DETECTOR_RAIL: return new cBlockRailHandler (a_BlockType); case E_BLOCK_REDSTONE_ORE: return new cBlockOreHandler (a_BlockType); case E_BLOCK_REDSTONE_ORE_GLOWING: return new cBlockOreHandler (a_BlockType); -- cgit v1.2.3