From a62b2b1be2103d7de2fd66c7304b7473e369be3c Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Wed, 5 May 2021 14:25:10 +0100 Subject: Move item placement into item handlers (#5184) * Move item placement into item handlers + Add appropriate CanBeAt checks in cPlayer::PlaceBlocks, into which all placement handlers call. * Partly addresses #5157 * Fixes #4878 * Fixes #2919 * Fixes #4629 * Fixes #4239 * Fixes #4849 Co-authored-by: changyong guo Co-authored-by: Xotheus Co-authored-by: Krist Pregracke * Review fixes * Update APIDesc.lua * Rename Co-authored-by: changyong guo Co-authored-by: Xotheus Co-authored-by: Krist Pregracke --- src/Blocks/BlockTripwireHook.h | 52 ++---------------------------------------- 1 file changed, 2 insertions(+), 50 deletions(-) (limited to 'src/Blocks/BlockTripwireHook.h') diff --git a/src/Blocks/BlockTripwireHook.h b/src/Blocks/BlockTripwireHook.h index 0d58bb084..ae553d66f 100644 --- a/src/Blocks/BlockTripwireHook.h +++ b/src/Blocks/BlockTripwireHook.h @@ -30,57 +30,9 @@ public: private: - virtual bool GetPlacementBlockTypeMeta( - cChunkInterface & a_ChunkInterface, - cPlayer & a_Player, - const Vector3i a_PlacedBlockPos, - eBlockFace a_ClickedBlockFace, - const Vector3i a_CursorPos, - BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta - ) const override + virtual bool CanBeAt(const cChunk & a_Chunk, const Vector3i a_Position, const NIBBLETYPE a_Meta) const override { - a_BlockType = m_BlockType; - - switch (a_ClickedBlockFace) - { - case BLOCK_FACE_XM: - { - a_BlockMeta = 0x1; - return true; - } - case BLOCK_FACE_XP: - { - a_BlockMeta = 0x3; - return true; - } - case BLOCK_FACE_ZM: - { - a_BlockMeta = 0x2; - return true; - } - case BLOCK_FACE_ZP: - { - a_BlockMeta = 0x0; - return true; - } - case BLOCK_FACE_NONE: - case BLOCK_FACE_YM: - case BLOCK_FACE_YP: - { - return false; - } - } - UNREACHABLE("Unsupported block face"); - } - - - - - - virtual bool CanBeAt(cChunkInterface & a_ChunkInterface, const Vector3i a_RelPos, const cChunk & a_Chunk) const override - { - const auto Meta = a_Chunk.GetMeta(a_RelPos); - const auto RearPosition = AddFaceDirection(a_RelPos, MetadataToDirection(Meta), true); + const auto RearPosition = AddFaceDirection(a_Position, MetadataToDirection(a_Meta), true); BLOCKTYPE NeighborBlockType; if (!a_Chunk.UnboundedRelGetBlockType(RearPosition, NeighborBlockType)) -- cgit v1.2.3