From 43e684071933adef93040e8d4b830d5c6b71cf9a Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sat, 12 Jan 2013 04:46:01 +0000 Subject: Merged branch "branches/hooks" into "trunk". git-svn-id: http://mc-server.googlecode.com/svn/trunk@1139 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/Items/ItemBed.h | 47 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) (limited to 'source/Items/ItemBed.h') diff --git a/source/Items/ItemBed.h b/source/Items/ItemBed.h index 1b2c54cbd..c9fec9064 100644 --- a/source/Items/ItemBed.h +++ b/source/Items/ItemBed.h @@ -3,23 +3,54 @@ #include "ItemHandler.h" #include "../World.h" +#include "../Blocks/BlockBed.h" -class cItemBedHandler : public cItemHandler + + + + +class cItemBedHandler : + public cItemHandler { public: - cItemBedHandler(int a_ItemType) - : cItemHandler(a_ItemType) + cItemBedHandler(int a_ItemType) : + cItemHandler(a_ItemType) { - } - virtual bool IsPlaceable() override + + virtual bool IsPlaceable(void) override { return true; } - virtual BLOCKTYPE GetBlockType() override + virtual bool GetPlacementBlockTypeMeta( + cWorld * a_World, cPlayer * a_Player, + int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, + int a_CursorX, int a_CursorY, int a_CursorZ, + BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta + ) override { - return E_BLOCK_BED; + if (a_BlockFace != BLOCK_FACE_TOP) + { + // Can only be placed on the floor + return false; + } + + a_BlockMeta = cBlockBedHandler::RotationToMetaData(a_Player->GetRotation()); + + // Check if there is empty space for the foot section: + Vector3i Direction = cBlockBedHandler::MetaDataToDirection(a_BlockMeta); + if (a_World->GetBlock(a_BlockX + Direction.x, a_BlockY, a_BlockZ + Direction.z) != E_BLOCK_AIR) + { + return false; + } + + a_BlockType = E_BLOCK_BED; + return true; } -}; \ No newline at end of file +} ; + + + + -- cgit v1.2.3