#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(); } int getContainerType(); // 4J-Added; using TileEntity::setChanged; private: void _init(bool isBonusChest); public: ChestTileEntity(bool isBonusChest = false); // 4J added param ChestTileEntity(int type, 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; int type; std::wstring name; 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 std::wstring getName(); virtual std::wstring getCustomName(); virtual bool hasCustomName(); virtual void setCustomName(const std::wstring& name); 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(); private: virtual void heyImYourNeighbor(std::shared_ptr neighbor, int from); public: virtual void checkNeighbors(); private: bool isSameChest(int x, int y, int z); public: virtual void tick(); virtual bool triggerEvent(int b0, int b1); virtual void startOpen(); virtual void stopOpen(); virtual bool canPlaceItem(int slot, std::shared_ptr item); virtual void setRemoved(); virtual int getType(); // 4J Added virtual std::shared_ptr clone(); };