1
0
Files
cuberite-2a/source/cChestEntity.h
mtilden@gmail.com c4f4ae5c71 - Chests open and close on clients when opened/closed
- Beginnings of "Double Chest". All that's needed is detection when 2 chests get put next to each other, block other chests from then touching them on any side, load/save with the m_JoinedChest seeing each other and adding and making sure the left side is always the top rows.

I'm not sure exactly at this moment how to do all of the detection and saving/loading of the double chest stuff so if you've any ideas feel free to point out some areas in the server code or implement it yourself.

git-svn-id: http://mc-server.googlecode.com/svn/trunk@154 0a769ca7-a7f5-676a-18bf-c427514a06d6
2011-12-29 13:16:23 +00:00

52 lines
1.4 KiB
C++

#pragma once
#include "cBlockEntity.h"
#include "cWindowOwner.h"
#include "FileDefine.h"
#include "packets\cPacket_BlockAction.h"
namespace Json
{
class Value;
};
class cClientHandle;
class cServer;
class cItem;
class cNBTData;
class cChestEntity : public cBlockEntity, public cWindowOwner
{
public:
cChestEntity(int a_X, int a_Y, int a_Z, cChunk* a_Chunk);
virtual ~cChestEntity();
virtual void Destroy();
void HandleData( cNBTData* a_NBTData );
cItem * GetSlot( int a_Slot );
void SetSlot( int a_Slot, cItem & a_Item );
void WriteToFile(FILE* a_File);
bool LoadFromFile(FILE* a_File);
bool LoadFromJson( const Json::Value& a_Value );
void SaveToJson( Json::Value& a_Value );
void SendTo( cClientHandle* a_Client, cServer* a_Server );
virtual void UsedBy( cPlayer & a_Player );
cChestEntity *GetJoinedChest() { return m_JoinedChest; }
void SetJoinedChest(cChestEntity *a_Chest) { m_JoinedChest = a_Chest; }
void RemoveJoinedChest(cChestEntity *a_Chest) { if (m_JoinedChest && m_JoinedChest == a_Chest) { m_JoinedChest = NULL; m_TopChest = false; } }
int GetChestHeight() { return ((m_JoinedChest) ? c_ChestHeight * 2 : c_ChestHeight); }
cItem *GetContents(bool a_OnlyThis = false);
static const int c_ChestWidth = 9;
static const int c_ChestHeight = 3;
private:
cItem* m_Content;
bool m_TopChest;
cChestEntity *m_JoinedChest;
};