23class StructureFeature {
26 using StructureMap = ::std::unordered_map<::ChunkPos, ::std::unique_ptr<::StructureStart>>;
31 ::ll::TypedStorage<8, 48, ::HashedString> mStructureFeatureType;
32 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ChunkPos, ::std::unique_ptr<::StructureStart>>> mCachedStructures;
33 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mCacheMutex;
34 ::ll::TypedStorage<8, 64, ::std::unordered_set<::ChunkPos>> mVisitedPositions;
35 ::ll::TypedStorage<4, 4, uint> mRadius;
36 ::ll::TypedStorage<4, 4, int> mXScale;
37 ::ll::TypedStorage<4, 4, int> mZScale;
38 ::ll::TypedStorage<8, 80, ::std::mutex> mCreateBlueprintsAndVisitedPositionsMutex;
39 ::ll::TypedStorage<8, 72, ::std::condition_variable> mBlueprintWaitVar;
40 ::ll::TypedStorage<4, 4, ::std::atomic<int>> mActiveBlueprintCreateCount;
41 ::ll::TypedStorage<1, 1, ::std::atomic<bool>> mBlueprintsFinished;
51 virtual ~StructureFeature();
53 virtual bool shouldAddHardcodedSpawnAreas()
const;
55 virtual bool shouldPostProcessMobs()
const;
57 virtual ::gsl::span<::BiomeIdType const> getRequiredBiomes()
const;
59 virtual bool getNearestGeneratedFeature(
65 bool mustBeInNewChunks,
66 ::std::optional<::HashedString>
const& biomeTag
69 virtual bool isFeatureChunk(
78 virtual ::std::unique_ptr<::StructureStart> createStructureStart(
86 virtual ::StructureStart* getStructureAt(
int cellX,
int cellY,
int cellZ);
92 MCAPI StructureFeature(uint seed,
::HashedString structureFeatureType);
114 ::StructureFeature& feature,
115 ::std::optional<::HashedString>
const& biomeTag,
120 int minFeatureSeparation,
124 bool mustBeInNewChunks
141 MCAPI
void* $ctor(uint seed,
::HashedString structureFeatureType);
153 MCFOLD
bool $shouldAddHardcodedSpawnAreas()
const;
155 MCFOLD
bool $shouldPostProcessMobs()
const;
157 MCFOLD ::gsl::span<::BiomeIdType const> $getRequiredBiomes()
const;
159 MCAPI
bool $getNearestGeneratedFeature(
165 bool mustBeInNewChunks,
166 ::std::optional<::HashedString>
const& biomeTag
169 MCAPI ::StructureStart* $getStructureAt(
int cellX,
int cellY,
int cellZ);
static MCAPI bool findNearestFeaturePositionBySpacing(::Dimension &dimension, ::IPreliminarySurfaceProvider const &preliminarySurfaceLevel, ::StructureFeature &feature, ::std::optional<::HashedString > const &biomeTag, ::BiomeSource const &biomeSource, ::BlockPos const &origin, ::BlockPos &result, int featureSpacing, int minFeatureSeparation, int randomSalt, bool tiltedSpacing, int maxSearchRadius, bool mustBeInNewChunks)
static MCAPI ::ChunkPos getChunkPosInSpace(::ChunkPos const &cp, ::Random &random, uint levelSeed, int spacing, int separation, int salt, bool tiltedSpacing)