Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
1.9 kB · 82 lines
C
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#pragma once#include "LargeFeature.h"#include "StructureFeatureSavedData.h"
class StructureStart;
//#define ENABLE_STRUCTURE_SAVING
class StructureFeature : public LargeFeature{public: // 4J added - Maps to values in the game rules xml enum EFeatureTypes { eFeature_Mineshaft, eFeature_NetherBridge, eFeature_Temples, eFeature_Stronghold, eFeature_Village, };
#ifdef ENABLE_STRUCTURE_SAVINGprivate: shared_ptr<StructureFeatureSavedData> savedData;#endif
protected: unordered_map<__int64, StructureStart *> cachedStructures;
public: StructureFeature(); ~StructureFeature();
virtual wstring getFeatureName() = 0;
virtual void addFeature(Level *level, int x, int z, int xOffs, int zOffs, byteArray blocks);
bool postProcess(Level *level, Random *random, int chunkX, int chunkZ); bool isIntersection(int cellX, int cellZ);
bool isInsideFeature(int cellX, int cellY, int cellZ);
protected: StructureStart *getStructureAt(int cellX, int cellY, int cellZ);
public: bool isInsideBoundingFeature(int cellX, int cellY, int cellZ); TilePos *getNearestGeneratedFeature(Level *level, int cellX, int cellY, int cellZ);
protected: vector<TilePos> *getGuesstimatedFeaturePositions();
private: virtual void restoreSavedData(Level *level); virtual void saveFeature(int chunkX, int chunkZ, StructureStart *feature);
/** * Returns true if the given chunk coordinates should hold a structure * source. * * @param x * chunk x * @param z * chunk z * @return */protected: virtual bool isFeatureChunk(int x, int z, bool bIsSuperflat=false) = 0;
/** * Creates a new instance of a structure source at the given chunk * coordinates. * * @param x * chunk x * @param z * chunk z * @return */ virtual StructureStart *createStructureStart(int x, int z) = 0;};