diff options
author | Mattes D <github@xoft.cz> | 2016-12-01 17:40:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-01 17:40:50 +0100 |
commit | 3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c (patch) | |
tree | 7faee9aead6d9299dde4201edd16644fceb994a1 /src/Items | |
parent | Debuggers: Added commands to investigate item's custom Lua properties. (diff) | |
parent | Added code to handle signs replacing blocks (diff) | |
download | cuberite-3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c.tar cuberite-3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c.tar.gz cuberite-3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c.tar.bz2 cuberite-3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c.tar.lz cuberite-3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c.tar.xz cuberite-3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c.tar.zst cuberite-3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c.zip |
Diffstat (limited to 'src/Items')
-rw-r--r-- | src/Items/ItemSign.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/Items/ItemSign.h b/src/Items/ItemSign.h index edc358c6e..4c417947d 100644 --- a/src/Items/ItemSign.h +++ b/src/Items/ItemSign.h @@ -28,14 +28,25 @@ public: int a_CursorX, int a_CursorY, int a_CursorZ ) override { + // Check if placing on something ignoring build collision to edit the correct sign later on: + BLOCKTYPE ClickedBlock; + NIBBLETYPE ClickedBlockMeta; + a_World.GetBlockTypeMeta(a_BlockX, a_BlockY, a_BlockZ, ClickedBlock, ClickedBlockMeta); + bool isReplacingClickedBlock = BlockHandler(ClickedBlock)->DoesIgnoreBuildCollision() || BlockHandler(ClickedBlock)->DoesIgnoreBuildCollision(&a_Player, ClickedBlockMeta); + // If the regular placement doesn't work, do no further processing: if (!super::OnPlayerPlace(a_World, a_Player, a_EquippedItem, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_CursorX, a_CursorY, a_CursorZ)) { return false; } + // Use isReplacingClickedBlock to make sure we will edit the right sign: + if (!isReplacingClickedBlock) + { + AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace); + } + // After successfully placing the sign, open the sign editor for the player: - AddFaceDirection(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace); a_Player.GetClientHandle()->SendEditSign(a_BlockX, a_BlockY, a_BlockZ); return true; } |