39 using POIBlueprintMap = ::std::unordered_map<::BlockLegacy const*, ::std::unique_ptr<::POIBlueprint>>;
41 using VillageMap = ::std::unordered_map<::mce::UUID, ::std::shared_ptr<::Village>>;
43 using POIMap = ::std::unordered_map<::BlockPos, ::std::shared_ptr<::POIInstance>>;
45 enum class BedAvailabilityState :
int {
55 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Village>> village;
56 ::ll::TypedStorage<1, 1, bool> positionIsWithinVillageBounds;
57 ::ll::TypedStorage<4, 4, float> distanceToClosestEdgeOfVillage;
65 ::ll::TypedStorage<4, 4, ::VillageManager::BedAvailabilityState> bedAvailability;
84 ::ll::TypedStorage<8, 8, ::Dimension&> mDimension;
85 ::ll::TypedStorage<8, 40, ::std::deque<::ActorUniqueID>> mFindPOIQueries;
86 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::POIInstance>>> mUnclusteredPOIs;
87 ::ll::TypedStorage<8, 64, ::std::unordered_map<::mce::UUID, ::std::shared_ptr<::Village>>> mVillages;
88 ::ll::TypedStorage<8, 192, ::std::array<::std::unordered_map<::BlockPos, ::std::shared_ptr<::POIInstance>>, 3>>
90 ::ll::TypedStorage<8, 64, ::std::unordered_map<::BlockLegacy const*, ::std::unique_ptr<::POIBlueprint>>>
92 ::ll::TypedStorage<8, 8, ::Tick> mTickCount;
93 ::ll::TypedStorage<8, 32, ::WanderingTraderScheduler> mWanderingTraderScheduler;
94 ::ll::TypedStorage<1, 1, bool> mFinishedQueryScan;
95 ::ll::TypedStorage<4, 4, int> mCurrentXScan;
96 ::ll::TypedStorage<4, 4, int> mCurrentYScan;
97 ::ll::TypedStorage<4, 4, int> mCurrentZScan;
98 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnSaveSubscription;
99 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnLevelStorageManagerStartLeaveGameSubscription;
109 virtual ::std::weak_ptr<::Village>
110 fetchClosestVillage(
::BlockPos const& position,
int maxDistFromVillageBounds, uint searchRadius)
const ;
113 virtual ::std::weak_ptr<::Village> getVillageByID(
::mce::UUID const& villageID)
const ;
123 MCAPI
void _assignPOIOnly(::std::shared_ptr<::POIInstance>&& pi);
126 _calculateDistanceFromPositionToEdgeOfVillage(
::BlockPos const& position,
::Village const& village)
const;
128 MCAPI ::std::shared_ptr<::Village> _createOrGetVillage(
::mce::UUID const&
id,
::BlockPos const& newVillagePos);
130 MCAPI ::std::unordered_map<::Village const*, ::VillageManager::BedAvailabilityState>
131 _getVillageWithBedsAvailableMap()
const;
133 MCAPI
void _loadPOIBlueprints();
135 MCAPI
void _processNextUnclusteredPOIQuery();
137 MCAPI
void _removeEligibleVillages();
139 MCAPI
void _removeVillage(
::Village& village);
143 MCAPI
void _tryAssignPOIOrCreateVillage(::std::shared_ptr<::POIInstance>&& pi);
145 MCAPI
void _unclusterDerelictPOIs(::std::vector<::std::weak_ptr<::POIInstance>>& pois);
147 MCAPI ::std::weak_ptr<::Village> fetchClosestVillageMostSuitableForDweller(
149 int maxDistFromVillageBounds,
153 MCAPI ::std::weak_ptr<::Village> getClosestVillageWithRaid(
::BlockPos const& pos);
155 MCAPI ::std::weak_ptr<::POIInstance> getPOI(
::BlockPos const& position)
const;
157 MCAPI ::HashedString getPOIInitEventFromName(
::HashedString const& name)
const;
159 MCAPI ::HashedString
const& getPOINameFromBlueprint(
::Block const& block)
const;
161 MCAPI
bool hasPOI(
::BlockPos const& position, ::POIType type)
const;
166 MCAPI
void insertPOI(::std::shared_ptr<::POIInstance>&& poi);
170 MCAPI
void removePOI(::std::weak_ptr<::POIInstance> poi);
172 MCAPI ::std::shared_ptr<::POIInstance> tryCreatePOI(
::BlockPos const& position,
::Block const& block);
178 MCAPI
static int const& MAX_POI_TOLERANCE_DIST();
180 MCAPI static ::EffectDuration
const& VILLAGE_HERO_EFFECT_DURATION();
198 MCAPI ::std::weak_ptr<::Village>
199 $fetchClosestVillage(
::BlockPos const& position,
int maxDistFromVillageBounds, uint searchRadius)
const;
201 MCAPI ::std::weak_ptr<::Village> $getVillageByID(
::mce::UUID const& villageID)
const;
207 MCAPI
static void** $vftable();