Files
cuberite-2a/src/BlockEntities/HopperEntity.h
T

94 lines
3.2 KiB
C++
Raw Normal View History

2013-07-29 12:13:03 +01:00
// HopperEntity.h
// Declares the cHopperEntity representing a hopper block entity
#pragma once
#include "BlockEntityWithItems.h"
2013-12-16 22:02:28 +01:00
// tolua_begin
class cHopperEntity :
2014-02-12 22:01:22 +00:00
public cBlockEntityWithItems
2013-07-29 12:13:03 +01:00
{
typedef cBlockEntityWithItems super;
public:
2014-07-19 15:23:40 +02:00
enum
{
2013-07-29 12:13:03 +01:00
ContentsHeight = 1,
ContentsWidth = 5,
TICKS_PER_TRANSFER = 8, ///< How many ticks at minimum between two item transfers to or from the hopper
} ;
// tolua_end
2014-11-27 22:42:08 +01:00
BLOCKENTITY_PROTODEF(cHopperEntity)
2015-07-31 16:49:10 +02:00
/** Constructor used for normal operation */
2013-07-29 12:13:03 +01:00
cHopperEntity(int a_BlockX, int a_BlockY, int a_BlockZ, cWorld * a_World);
/** Returns the block coords of the block receiving the output items, based on the meta
Returns false if unattached.
2015-07-31 16:49:10 +02:00
Exported in ManualBindings.cpp. */
2013-07-29 12:13:03 +01:00
bool GetOutputBlockPos(NIBBLETYPE a_BlockMeta, int & a_OutputX, int & a_OutputY, int & a_OutputZ);
protected:
Int64 m_LastMoveItemsInTick;
Int64 m_LastMoveItemsOutTick;
// cBlockEntity overrides:
2015-01-11 21:12:26 +00:00
virtual bool Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override;
2013-07-29 12:13:03 +01:00
virtual void SendTo(cClientHandle & a_Client) override;
virtual void UsedBy(cPlayer * a_Player) override;
2015-07-31 16:49:10 +02:00
/** Opens a new chest window for this chest. Scans for neighbors to open a double chest window, if appropriate. */
2013-07-29 12:13:03 +01:00
void OpenNewWindow(void);
2015-07-31 16:49:10 +02:00
/** Moves items from the container above it into this hopper. Returns true if the contents have changed. */
2013-07-29 12:13:03 +01:00
bool MoveItemsIn(cChunk & a_Chunk, Int64 a_CurrentTick);
2015-07-31 16:49:10 +02:00
/** Moves pickups from above this hopper into it. Returns true if the contents have changed. */
2013-07-29 12:13:03 +01:00
bool MovePickupsIn(cChunk & a_Chunk, Int64 a_CurrentTick);
2015-07-31 16:49:10 +02:00
/** Moves items out from this hopper into the destination. Returns true if the contents have changed. */
2013-07-29 12:13:03 +01:00
bool MoveItemsOut(cChunk & a_Chunk, Int64 a_CurrentTick);
2015-07-31 16:49:10 +02:00
/** Moves items from a chest (dblchest) above the hopper into this hopper. Returns true if contents have changed. */
2013-07-29 12:13:03 +01:00
bool MoveItemsFromChest(cChunk & a_Chunk);
2015-07-31 16:49:10 +02:00
/** Moves items from a furnace above the hopper into this hopper. Returns true if contents have changed. */
2013-07-29 12:13:03 +01:00
bool MoveItemsFromFurnace(cChunk & a_Chunk);
2015-07-31 16:49:10 +02:00
/** Moves items from the specified a_Entity's Contents into this hopper. Returns true if contents have changed. */
bool MoveItemsFromGrid(cBlockEntityWithItems & a_Entity);
2013-07-29 12:13:03 +01:00
2015-07-31 16:49:10 +02:00
/** Moves one piece from the specified itemstack into this hopper. Returns true if contents have changed. Doesn't change the itemstack. */
2015-05-11 22:58:27 +01:00
bool MoveItemsFromSlot(cBlockEntityWithItems & a_Entity, int a_SrcSlotNum);
2013-07-29 12:13:03 +01:00
2015-07-31 16:49:10 +02:00
/** Moves items to the chest at the specified coords. Returns true if contents have changed */
2013-07-29 12:13:03 +01:00
bool MoveItemsToChest(cChunk & a_Chunk, int a_BlockX, int a_BlockY, int a_BlockZ);
2015-07-31 16:49:10 +02:00
/** Moves items to the furnace at the specified coords. Returns true if contents have changed */
2013-07-29 12:13:03 +01:00
bool MoveItemsToFurnace(cChunk & a_Chunk, int a_BlockX, int a_BlockY, int a_BlockZ, NIBBLETYPE a_HopperMeta);
2015-07-31 16:49:10 +02:00
/** Moves items to the specified ItemGrid. Returns true if contents have changed */
bool MoveItemsToGrid(cBlockEntityWithItems & a_Entity);
2013-07-29 12:13:03 +01:00
2015-07-31 16:49:10 +02:00
/** Moves one piece to the specified entity's contents' slot. Returns true if contents have changed. */
bool MoveItemsToSlot(cBlockEntityWithItems & a_Entity, int a_DstSlotNum);
2013-10-23 11:12:04 +02:00
} ; // tolua_export
2013-07-29 12:13:03 +01:00