summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-12-25 01:00:51 +0100
committerMattes D <github@xoft.cz>2014-12-25 01:00:51 +0100
commit9e478c6f29702002c227dc06c0a1f49d1568de53 (patch)
tree65a7f96945e955524f52ab3ed98a1207994ba237 /src
parentFixed forgotten big flower handler. (diff)
downloadcuberite-9e478c6f29702002c227dc06c0a1f49d1568de53.tar
cuberite-9e478c6f29702002c227dc06c0a1f49d1568de53.tar.gz
cuberite-9e478c6f29702002c227dc06c0a1f49d1568de53.tar.bz2
cuberite-9e478c6f29702002c227dc06c0a1f49d1568de53.tar.lz
cuberite-9e478c6f29702002c227dc06c0a1f49d1568de53.tar.xz
cuberite-9e478c6f29702002c227dc06c0a1f49d1568de53.tar.zst
cuberite-9e478c6f29702002c227dc06c0a1f49d1568de53.zip
Diffstat (limited to 'src')
-rw-r--r--src/Blocks/BlockDoor.h3
-rw-r--r--src/Items/ItemDoor.h4
2 files changed, 4 insertions, 3 deletions
diff --git a/src/Blocks/BlockDoor.h b/src/Blocks/BlockDoor.h
index 334519077..53f84b553 100644
--- a/src/Blocks/BlockDoor.h
+++ b/src/Blocks/BlockDoor.h
@@ -117,7 +117,8 @@ public:
static bool CanBeOn(BLOCKTYPE a_BlockType)
{
// Vanilla refuses to place doors on transparent blocks
- return !cBlockInfo::IsTransparent(a_BlockType);
+ // We need to keep the door compatible with itself, otherwise the top half drops while the bottom half stays
+ return !cBlockInfo::IsTransparent(a_BlockType) || IsDoorBlockType(a_BlockType);
}
diff --git a/src/Items/ItemDoor.h b/src/Items/ItemDoor.h
index dbba26728..dacf286e5 100644
--- a/src/Items/ItemDoor.h
+++ b/src/Items/ItemDoor.h
@@ -27,7 +27,7 @@ public:
) override
{
// Vanilla only allows door placement while clicking on the top face of the block below the door:
- if (a_BlockFace != BLOCK_FACE_NONE)
+ if (a_BlockFace != BLOCK_FACE_TOP)
{
return false;
}
@@ -40,7 +40,7 @@ public:
}
// The door needs a compatible block below it:
- if ((a_BlockY > 0) && cBlockDoorHandler::CanBeOn(a_World.GetBlock(a_BlockX, a_BlockY - 1, a_BlockZ)))
+ if ((a_BlockY > 0) && !cBlockDoorHandler::CanBeOn(a_World.GetBlock(a_BlockX, a_BlockY - 1, a_BlockZ)))
{
return false;
}