summaryrefslogtreecommitdiffstats
path: root/src/Items
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2016-12-01 17:40:50 +0100
committerGitHub <noreply@github.com>2016-12-01 17:40:50 +0100
commit3c9f1a9d31525fc5aa24cf0b595e7c61fb43459c (patch)
tree7faee9aead6d9299dde4201edd16644fceb994a1 /src/Items
parentDebuggers: Added commands to investigate item's custom Lua properties. (diff)
parentAdded code to handle signs replacing blocks (diff)
downloadcuberite-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 '')
-rw-r--r--src/Items/ItemSign.h13
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;
}