#pragma once #include "TileEntity.h" #include "../../Containers/Container.h" #include "../../IO/NBT/ListTag.h" class Player; class CompoundTag; class ChestTileEntity : public TileEntity, public Container { public: eINSTANCEOF GetType() { return eTYPE_CHESTTILEENTITY; } static TileEntity *create() { return new ChestTileEntity(); } using TileEntity::setChanged; public: ChestTileEntity(bool isBonusChest = false); // 4J added param virtual ~ChestTileEntity(); private: ItemInstanceArray *items; public: bool isBonusChest; // 4J added bool hasCheckedNeighbors; std::weak_ptr n; std::weak_ptr e; std::weak_ptr w; std::weak_ptr s; float openness, oOpenness; int openCount; private: int tickInterval; public: virtual unsigned int getContainerSize(); virtual std::shared_ptr getItem(unsigned int slot); virtual std::shared_ptr removeItem(unsigned int slot, int count); virtual std::shared_ptr removeItemNoUpdate(int slot); virtual void setItem(unsigned int slot, std::shared_ptr item); virtual int getName(); virtual void load(CompoundTag *base); virtual void save(CompoundTag *base); virtual int getMaxStackSize(); virtual bool stillValid(std::shared_ptr player); virtual void setChanged(); virtual void clearCache(); virtual void checkNeighbors(); virtual void tick(); virtual void triggerEvent(int b0, int b1); virtual void startOpen(); virtual void stopOpen(); virtual void setRemoved(); // 4J Added virtual std::shared_ptr clone(); };