summaryrefslogtreecommitdiffstats
path: root/src/Blocks/BlockRedstoneRepeater.h
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-10-19 19:13:48 +0200
committerMattes D <github@xoft.cz>2014-10-19 19:13:48 +0200
commit8fbd65e77559f7324e217428baafd220331ca427 (patch)
tree4037415eb2f534a3c822f753b7773594728d3963 /src/Blocks/BlockRedstoneRepeater.h
parentRemoved obsolete tr1::shared_ptr. (diff)
parentFixed error with non-const function (diff)
downloadcuberite-8fbd65e77559f7324e217428baafd220331ca427.tar
cuberite-8fbd65e77559f7324e217428baafd220331ca427.tar.gz
cuberite-8fbd65e77559f7324e217428baafd220331ca427.tar.bz2
cuberite-8fbd65e77559f7324e217428baafd220331ca427.tar.lz
cuberite-8fbd65e77559f7324e217428baafd220331ca427.tar.xz
cuberite-8fbd65e77559f7324e217428baafd220331ca427.tar.zst
cuberite-8fbd65e77559f7324e217428baafd220331ca427.zip
Diffstat (limited to '')
-rw-r--r--src/Blocks/BlockRedstoneRepeater.h25
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;
}