#pragma once class StructurePiece; class BoundingBox; #include "StructureFeatureIO.h" class StructureStart { public: list pieces; protected: BoundingBox *boundingBox; private: int chunkX, chunkZ; bool dirty; public: StructureStart(); StructureStart(int x, int z); ~StructureStart(); BoundingBox *getBoundingBox(); list *getPieces(); void postProcess(Level *level, Random *random, BoundingBox *chunkBB); protected: void calculateBoundingBox(); public: virtual byteArray createTag(int chunkX, int chunkZ); virtual void addAdditionalSaveData(DataOutputStream *dos); virtual void load(Level *level, DataInputStream *dis); virtual void readAdditonalSaveData(DataInputStream *dis); protected: void moveBelowSeaLevel(Level *level, Random *random, int offset); void moveInsideHeights(Level *level, Random *random, int lowestAllowed, int highestAllowed); public: bool isValid(); int getChunkX(); int getChunkZ(); void clearDirty(); bool isDirty(); virtual EStructureStart GetType() = 0; };