Cuberite
A lightweight, fast and extensible game server for Minecraft
|
#include <ChestEntity.h>
Public Types | |
enum | { ContentsHeight = 3 , ContentsWidth = 9 } |
Public Member Functions | |
cChestEntity (BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, Vector3i a_Pos, cWorld *a_World) | |
int | GetNumberOfPlayers (void) const |
Gets the number of players who currently have this chest open. More... | |
cChestEntity & | GetPrimaryChest () |
Returns the associated primary chest. More... | |
cChestEntity * | GetSecondaryChest () |
Returns the associated secondary chest, if any. More... | |
bool | ScanNeighbour (cChunk &a_Chunk, Vector3i a_Position) |
Search the given horizontally adjacent relative position for a neighbouring chest of the same type. More... | |
void | SetNumberOfPlayers (int a_NumActivePlayers) |
Sets the number of players who currently have this chest open. More... | |
Public Member Functions inherited from cBlockEntityWithItems | |
cBlockEntityWithItems (BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, Vector3i a_Pos, int a_ItemGridWidth, int a_ItemGridHeight, cWorld *a_World) | |
virtual cItems | ConvertToPickups () const override |
Returns the contents of this block entity that it would drop if broken. More... | |
cItemGrid & | GetContents (void) |
Returns the ItemGrid used for storing the contents. More... | |
const cItemGrid & | GetContents (void) const |
Const version of the GetContents() function for C++ type-safety. More... | |
const cItem & | GetSlot (int a_SlotNum) const |
const cItem & | GetSlot (int a_X, int a_Y) const |
void | SetSlot (int a_SlotNum, const cItem &a_Item) |
void | SetSlot (int a_X, int a_Y, const cItem &a_Item) |
Public Member Functions inherited from cBlockEntity | |
OwnedBlockEntity | Clone (Vector3i a_Pos) |
Makes an exact copy of this block entity, except for its m_World (set to nullptr), and at a new position. More... | |
virtual void | Destroy () |
Called when this block entity's associated block is destroyed. More... | |
BLOCKTYPE | GetBlockType () const |
int | GetChunkX () const |
int | GetChunkZ () const |
Vector3i | GetPos () const |
int | GetPosX () const |
int | GetPosY () const |
int | GetPosZ () const |
Vector3i | GetRelPos () const |
int | GetRelX () const |
int | GetRelZ () const |
cWorld * | GetWorld () const |
void | SetPos (Vector3i a_NewPos) |
Updates the internally stored position. More... | |
void | SetWorld (cWorld *a_World) |
virtual bool | Tick (std::chrono::milliseconds a_Dt, cChunk &a_Chunk) |
Ticks the entity; returns true if the chunk should be marked as dirty as a result of this ticking. More... | |
virtual | ~cBlockEntity ()=default |
Public Member Functions inherited from cItemGrid::cListener | |
virtual | ~cListener () |
Public Member Functions inherited from cBlockEntityWindowOwner | |
cBlockEntityWindowOwner (cBlockEntity *a_BlockEntity) | |
virtual Vector3i | GetBlockPos (void) override |
Returns the block position at which the element owning the window is. More... | |
Public Member Functions inherited from cWindowOwner | |
void | CloseWindow (void) |
cWindowOwner () | |
cWindow * | GetWindow (void) const |
void | OpenWindow (cWindow *a_Window) |
virtual | ~cWindowOwner () |
Private Types | |
using | Super = cBlockEntityWithItems |
Private Member Functions | |
virtual void | CopyFrom (const cBlockEntity &a_Src) override |
Copies all properties of a_Src into this entity, except for its m_World and location. More... | |
void | DestroyWindow () |
Forces any players to close the owned window. More... | |
bool | IsBlocked () |
Returns true if the chest should not be accessible by players. More... | |
virtual void | OnAddToWorld (cWorld &a_World, cChunk &a_Chunk) override |
Called when the block entity object is added to a world. More... | |
virtual void | OnRemoveFromWorld () override |
Called when the block entity object is removed from a world. More... | |
virtual void | OnSlotChanged (cItemGrid *a_Grid, int a_SlotNum) override |
cItemGrid::cListener overrides: More... | |
void | OpenNewWindow () |
Opens a new chest window where this is the primary chest and any neighbour is the secondary. More... | |
virtual void | SendTo (cClientHandle &a_Client) override |
Sends the packet defining the block entity to the client specified. More... | |
virtual bool | UsedBy (cPlayer *a_Player) override |
Called when a player uses this entity; should open the UI window. More... | |
Private Attributes | |
cChestEntity * | m_Neighbour |
Neighbouring chest that links to form a double chest. More... | |
int | m_NumActivePlayers |
Number of players who currently have this chest open. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from cBlockEntity | |
static OwnedBlockEntity | CreateByBlockType (BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, Vector3i a_Pos, cWorld *a_World=nullptr) |
Creates a new block entity for the specified block type at the specified absolute pos. More... | |
static bool | IsBlockEntityBlockType (BLOCKTYPE a_BlockType) |
Returns true if the specified blocktype is supposed to have an associated block entity. More... | |
Protected Member Functions inherited from cBlockEntity | |
cBlockEntity (BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, Vector3i a_Pos, cWorld *a_World) | |
Protected Attributes inherited from cBlockEntityWithItems | |
cItemGrid | m_Contents |
Protected Attributes inherited from cBlockEntity | |
NIBBLETYPE | m_BlockMeta |
The block meta representing this particular instance in the world Mainly used for directional entities, such as dispensers. More... | |
BLOCKTYPE | m_BlockType |
The blocktype representing this particular instance in the world. More... | |
Vector3i | m_Pos |
Position in absolute block coordinates. More... | |
int | m_RelX |
Position relative to the chunk, used to speed up ticking. More... | |
int | m_RelZ |
cWorld * | m_World |
Definition at line 18 of file ChestEntity.h.
|
private |
Definition at line 23 of file ChestEntity.h.
anonymous enum |
Enumerator | |
---|---|
ContentsHeight | |
ContentsWidth |
Definition at line 29 of file ChestEntity.h.
cChestEntity::cChestEntity | ( | BLOCKTYPE | a_BlockType, |
NIBBLETYPE | a_BlockMeta, | ||
Vector3i | a_Pos, | ||
cWorld * | a_World | ||
) |
Definition at line 17 of file ChestEntity.cpp.
|
overrideprivatevirtual |
Copies all properties of a_Src into this entity, except for its m_World and location.
Each non-abstract descendant should override to copy its specific properties, and call Super::CopyFrom(a_Src) to copy the common ones.
Reimplemented from cBlockEntityWithItems.
Definition at line 129 of file ChestEntity.cpp.
|
private |
Forces any players to close the owned window.
Definition at line 82 of file ChestEntity.cpp.
|
inline |
Gets the number of players who currently have this chest open.
Definition at line 40 of file ChestEntity.h.
cChestEntity & cChestEntity::GetPrimaryChest | ( | ) |
Returns the associated primary chest.
Definition at line 28 of file ChestEntity.cpp.
cChestEntity * cChestEntity::GetSecondaryChest | ( | ) |
Returns the associated secondary chest, if any.
Definition at line 46 of file ChestEntity.cpp.
|
private |
Returns true if the chest should not be accessible by players.
Definition at line 95 of file ChestEntity.cpp.
Called when the block entity object is added to a world.
Reimplemented from cBlockEntity.
Definition at line 144 of file ChestEntity.cpp.
|
overrideprivatevirtual |
Called when the block entity object is removed from a world.
This occurs when the chunk it resides in is unloaded, or when the associated block is destroyed. If it is the latter, Destroy() is guaranteed to be called first.
Reimplemented from cBlockEntity.
Definition at line 167 of file ChestEntity.cpp.
|
overrideprivatevirtual |
cItemGrid::cListener overrides:
Reimplemented from cBlockEntityWithItems.
Definition at line 240 of file ChestEntity.cpp.
|
private |
Opens a new chest window where this is the primary chest and any neighbour is the secondary.
Definition at line 110 of file ChestEntity.cpp.
Search the given horizontally adjacent relative position for a neighbouring chest of the same type.
If found, links them together with ourselves and returns true.
Definition at line 56 of file ChestEntity.cpp.
|
overrideprivatevirtual |
Sends the packet defining the block entity to the client specified.
To send to all eligible clients, use cWorld::BroadcastBlockEntity()
Implements cBlockEntity.
Definition at line 183 of file ChestEntity.cpp.
|
inline |
Sets the number of players who currently have this chest open.
Definition at line 53 of file ChestEntity.h.
|
overrideprivatevirtual |
Called when a player uses this entity; should open the UI window.
returns true if the use was successful, return false to use the block as a "normal" block
Implements cBlockEntity.
Definition at line 192 of file ChestEntity.cpp.
|
private |
Neighbouring chest that links to form a double chest.
Definition at line 61 of file ChestEntity.h.
|
private |
Number of players who currently have this chest open.
Definition at line 58 of file ChestEntity.h.