#pragma once #include "../Entity.h" #include "../HangingEntity.h" class Level; class ItemFrame : public HangingEntity { public: eINSTANCEOF GetType() { return eTYPE_ITEM_FRAME; }; static Entity* create(Level* level) { return new ItemFrame(level); } private: static const int DATA_ITEM = 2; static const int DATA_ROTATION = 3; float dropChance; private: void _init(); public: ItemFrame(Level* level); ItemFrame(Level* level, int xTile, int yTile, int zTile, int dir); protected: virtual void defineSynchedData(); public: virtual int getWidth() { return 9; } virtual int getHeight() { return 9; } virtual bool shouldRenderAtSqrDistance(double distance); virtual void dropItem(std::shared_ptr causedBy); private: void removeFramedMap(std::shared_ptr item); public: std::shared_ptr getItem(); void setItem(std::shared_ptr item); int getRotation(); void setRotation(int rotation); virtual void addAdditonalSaveData(CompoundTag* tag); virtual void readAdditionalSaveData(CompoundTag* tag); virtual bool interact(std::shared_ptr player); };