diff options
author | Julian Laubstein <julianlaubstein@yahoo.de> | 2014-10-19 15:01:01 +0200 |
---|---|---|
committer | Julian Laubstein <julianlaubstein@yahoo.de> | 2014-10-19 15:01:01 +0200 |
commit | 403f8581cf4a10e8402a129eca3f595eb5c029ab (patch) | |
tree | 05581d4ec964904b754735ca4746197834a881b6 /src/Blocks/BlockRedstone.h | |
parent | Mountain height gen: Added ditches. (diff) | |
download | cuberite-403f8581cf4a10e8402a129eca3f595eb5c029ab.tar cuberite-403f8581cf4a10e8402a129eca3f595eb5c029ab.tar.gz cuberite-403f8581cf4a10e8402a129eca3f595eb5c029ab.tar.bz2 cuberite-403f8581cf4a10e8402a129eca3f595eb5c029ab.tar.lz cuberite-403f8581cf4a10e8402a129eca3f595eb5c029ab.tar.xz cuberite-403f8581cf4a10e8402a129eca3f595eb5c029ab.tar.zst cuberite-403f8581cf4a10e8402a129eca3f595eb5c029ab.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Blocks/BlockRedstone.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/Blocks/BlockRedstone.h b/src/Blocks/BlockRedstone.h index 37d61ed73..2785eb479 100644 --- a/src/Blocks/BlockRedstone.h +++ b/src/Blocks/BlockRedstone.h @@ -3,6 +3,7 @@ #include "BlockHandler.h" #include "../World.h" +#include "BlockSlab.h" @@ -16,11 +17,33 @@ public: : cBlockHandler(a_BlockType) { } - + + 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::FullyOccupiesVoxel(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; } |