28class VillageFeature :
public ::StructureFeature {
32 ::ll::TypedStorage<4, 4, int> mTownSpacing;
33 ::ll::TypedStorage<4, 4, int> mMinTownSeparation;
34 ::ll::TypedStorage<8, 24, ::std::vector<::BiomeIdType>> mAllowedBiomes;
38 VillageFeature(uint seed,
int townSpacing,
int minTownSeparation,
BiomeRegistry const& biomeRegistry)
39 : StructureFeature(seed, VanillaStructureFeatureType::Village()),
40 mTownSpacing(townSpacing),
41 mMinTownSeparation(minTownSeparation) {
42 mAllowedBiomes->clear();
45 for (
auto const& biome : biomeRegistry.mBiomesById.get()) {
46 if (biome.get() != biomeRegistry.mEmptyBiome) {
47 mAllowedBiomes->push_back(biome->mId);
60 virtual ::gsl::span<::BiomeIdType const> getRequiredBiomes()
const ;
62 virtual bool isFeatureChunk(
71 virtual bool getNearestGeneratedFeature(
77 bool mustBeInNewChunks,
78 ::std::optional<::HashedString>
const& biomeTag
81 virtual bool shouldPostProcessMobs()
const ;
83 virtual ::std::unique_ptr<::StructureStart> createStructureStart(
91 virtual ~VillageFeature() =
default;
98 MCAPI VillageFeature(uint seed,
int townSpacing,
int minTownSeparation,
::BiomeRegistry const& biomeRegistry);
106 MCAPI
void* $ctor(uint seed,
int townSpacing,
int minTownSeparation,
::BiomeRegistry const& biomeRegistry);
113 MCFOLD ::gsl::span<::BiomeIdType const> $getRequiredBiomes()
const;
115 MCAPI
bool $isFeatureChunk(
124 MCAPI
bool $getNearestGeneratedFeature(
130 bool mustBeInNewChunks,
131 ::std::optional<::HashedString>
const& biomeTag
134 MCFOLD
bool $shouldPostProcessMobs()
const;
136 MCAPI ::std::unique_ptr<::StructureStart> $createStructureStart(