diff options
Diffstat (limited to 'src/Items/ItemRedstoneDust.h')
-rw-r--r-- | src/Items/ItemRedstoneDust.h | 56 |
1 files changed, 3 insertions, 53 deletions
diff --git a/src/Items/ItemRedstoneDust.h b/src/Items/ItemRedstoneDust.h index 559be843d..d1bb6556c 100644 --- a/src/Items/ItemRedstoneDust.h +++ b/src/Items/ItemRedstoneDust.h @@ -23,69 +23,19 @@ public: - virtual bool IsPlaceable(void) override + virtual bool CommitPlacement(cPlayer & a_Player, const cItem & a_HeldItem, const Vector3i a_PlacePosition, const eBlockFace a_ClickedBlockFace, const Vector3i a_CursorPosition) override { - return true; + return a_Player.PlaceBlock(a_PlacePosition, E_BLOCK_REDSTONE_WIRE, 0); } - virtual bool GetPlacementBlockTypeMeta( - cWorld * a_World, cPlayer * a_Player, - const Vector3i a_PlacedBlockPos, - eBlockFace a_ClickedBlockFace, - const Vector3i a_CursorPos, - BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta - ) override + virtual bool IsPlaceable(void) override { - // Check the block below, if it supports dust on top of it: - auto UnderPos = a_PlacedBlockPos.addedY(-1); - if (UnderPos.y < 0) - { - return false; - } - BLOCKTYPE BlockType; - NIBBLETYPE BlockMeta; - if (!a_World->GetBlockTypeMeta(UnderPos, BlockType, BlockMeta)) - { - return false; - } - if (!IsBlockTypeUnderSuitable(BlockType, BlockMeta)) - { - return false; - } - - a_BlockType = E_BLOCK_REDSTONE_WIRE; - a_BlockMeta = 0; return true; } - - - - - - /** 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) - { - if (cBlockInfo::FullyOccupiesVoxel(a_BlockType)) - { - return true; - } - - switch (a_BlockType) - { - case E_BLOCK_RED_SANDSTONE_SLAB: - case E_BLOCK_WOODEN_SLAB: - case E_BLOCK_STONE_SLAB: - { - // Slabs can support redstone if they're upside down: - return ((a_BlockMeta & 0x08) != 0); - } - } - return false; - } } ; |