summaryrefslogtreecommitdiffstats
path: root/src/Items/ItemRedstoneDust.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Items/ItemRedstoneDust.h')
-rw-r--r--src/Items/ItemRedstoneDust.h35
1 files changed, 25 insertions, 10 deletions
diff --git a/src/Items/ItemRedstoneDust.h b/src/Items/ItemRedstoneDust.h
index 87f351654..559be843d 100644
--- a/src/Items/ItemRedstoneDust.h
+++ b/src/Items/ItemRedstoneDust.h
@@ -7,36 +7,48 @@
-class cItemRedstoneDustHandler : public cItemHandler
+class cItemRedstoneDustHandler:
+ public cItemHandler
{
+ using Super = cItemHandler;
+
public:
- cItemRedstoneDustHandler(int a_ItemType)
- : cItemHandler(a_ItemType)
+
+ cItemRedstoneDustHandler(int a_ItemType):
+ Super(a_ItemType)
{
}
+
+
+
+
virtual bool IsPlaceable(void) override
{
return true;
}
+
+
+
+
virtual bool GetPlacementBlockTypeMeta(
cWorld * a_World, cPlayer * a_Player,
- int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
- int a_CursorX, int a_CursorY, int a_CursorZ,
+ const Vector3i a_PlacedBlockPos,
+ eBlockFace a_ClickedBlockFace,
+ const Vector3i a_CursorPos,
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
) override
{
- // Check if coords are out of range:
- if ((a_BlockY <= 0) || (a_BlockY >= cChunkDef::Height))
+ // Check the block below, if it supports dust on top of it:
+ auto UnderPos = a_PlacedBlockPos.addedY(-1);
+ if (UnderPos.y < 0)
{
return false;
}
-
- // Check the block below, if it supports dust on top of it:
BLOCKTYPE BlockType;
NIBBLETYPE BlockMeta;
- if (!a_World->GetBlockTypeMeta(a_BlockX, a_BlockY - 1, a_BlockZ, BlockType, BlockMeta))
+ if (!a_World->GetBlockTypeMeta(UnderPos, BlockType, BlockMeta))
{
return false;
}
@@ -51,6 +63,9 @@ public:
}
+
+
+
/** Returns true if the specified block type / meta is suitable to have redstone dust on top of it. */
static bool IsBlockTypeUnderSuitable(BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
{