diff options
author | Howaner <franzi.moos@googlemail.com> | 2014-10-21 17:37:03 +0200 |
---|---|---|
committer | Howaner <franzi.moos@googlemail.com> | 2014-10-21 17:37:03 +0200 |
commit | 283eda3c4eaa37acc242ccefdb3912768a80d14b (patch) | |
tree | fe9cdd385d5687c2f8bfe55d331ead942f28e4aa /src/Blocks/BlockRedstoneRepeater.h | |
parent | Leaves are harvest-able. (diff) | |
parent | Updated ProtectionAreas (diff) | |
download | cuberite-283eda3c4eaa37acc242ccefdb3912768a80d14b.tar cuberite-283eda3c4eaa37acc242ccefdb3912768a80d14b.tar.gz cuberite-283eda3c4eaa37acc242ccefdb3912768a80d14b.tar.bz2 cuberite-283eda3c4eaa37acc242ccefdb3912768a80d14b.tar.lz cuberite-283eda3c4eaa37acc242ccefdb3912768a80d14b.tar.xz cuberite-283eda3c4eaa37acc242ccefdb3912768a80d14b.tar.zst cuberite-283eda3c4eaa37acc242ccefdb3912768a80d14b.zip |
Diffstat (limited to 'src/Blocks/BlockRedstoneRepeater.h')
-rw-r--r-- | src/Blocks/BlockRedstoneRepeater.h | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/Blocks/BlockRedstoneRepeater.h b/src/Blocks/BlockRedstoneRepeater.h index 1eb67f714..e8262dc40 100644 --- a/src/Blocks/BlockRedstoneRepeater.h +++ b/src/Blocks/BlockRedstoneRepeater.h @@ -5,6 +5,7 @@ #include "Chunk.h" #include "MetaRotator.h" #include "ChunkInterface.h" +#include "BlockSlab.h" @@ -44,6 +45,7 @@ public: } + virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override { // Reset meta to zero @@ -59,7 +61,28 @@ public: virtual bool CanBeAt(cChunkInterface & a_ChunkInterface, int a_RelX, int a_RelY, int a_RelZ, const cChunk & a_Chunk) override { - return ((a_RelY > 0) && cBlockInfo::IsSolid(a_Chunk.GetBlock(a_RelX, a_RelY - 1, a_RelZ))); + if (a_RelY <= 0) + { + return false; + } + + BLOCKTYPE BelowBlock; + NIBBLETYPE BelowBlockMeta; + a_Chunk.GetBlockTypeMeta(a_RelX, a_RelY - 1, a_RelZ, BelowBlock, BelowBlockMeta); + + if (cBlockInfo::FullyOccupiesVoxel(BelowBlock)) + { + return true; + } + else if (cBlockSlabHandler::IsAnySlabType(BelowBlock)) + { + // Check if the slab is turned up side down + if ((BelowBlockMeta & 0x08) == 0x08) + { + return true; + } + } + return false; } |