#pragma once #include #include "Tile.h" class WoolCarpetTile : public Tile { friend class Tile; protected: WoolCarpetTile(int id); public: Icon* getTexture(int face, int data); std::optional getAABB(Level* level, int x, int y, int z); bool blocksLight(); bool isSolidRender(bool isServerLevel = false); bool isCubeShaped(); void updateDefaultShape(); void updateShape(LevelSource* level, int x, int y, int z, int forceData = -1, std::shared_ptr forceEntity = std::shared_ptr()); protected: void updateShape(int data); public: bool mayPlace(Level* level, int x, int y, int z); void neighborChanged(Level* level, int x, int y, int z, int type); private: bool checkCanSurvive(Level* level, int x, int y, int z); public: bool canSurvive(Level* level, int x, int y, int z); bool shouldRenderFace(LevelSource* level, int x, int y, int z, int face); int getSpawnResourcesAuxValue(int data); static int getTileDataForItemAuxValue(int auxValue); static int getItemAuxValueForTileData(int data); void registerIcons(IconRegister* iconRegister); };