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;
115 virtual ::std::weak_ptr<::Village>
116 fetchClosestVillage(
::BlockPos const& position,
int maxDistFromVillageBounds, uint searchRadius)
const ;
119 virtual ::std::weak_ptr<::Village> getVillageByID(
::mce::UUID const& villageID)
const ;
129 MCAPI
void _assignPOIOnly(::std::shared_ptr<::POIInstance>&& pi);
132 _calculateDistanceFromPositionToEdgeOfVillage(
::BlockPos const& position,
::Village const& village)
const;
134 MCAPI ::std::shared_ptr<::Village> _createOrGetVillage(
::mce::UUID const&
id,
::BlockPos const& newVillagePos);
136 MCAPI ::std::unordered_map<::Village const*, ::VillageManager::BedAvailabilityState>
137 _getVillageWithBedsAvailableMap()
const;
139 MCAPI
void _loadPOIBlueprints();
141 MCAPI
void _processNextUnclusteredPOIQuery();
143 MCAPI
void _removeEligibleVillages();
145 MCAPI
void _removeVillage(
::Village& village);
149 MCAPI
void _tryAssignPOIOrCreateVillage(::std::shared_ptr<::POIInstance>&& pi);
151 MCAPI
void _unclusterDerelictPOIs(::std::vector<::std::weak_ptr<::POIInstance>>& pois);
153 MCAPI ::std::weak_ptr<::Village> fetchClosestVillageMostSuitableForDweller(
155 int maxDistFromVillageBounds,
159 MCAPI ::std::weak_ptr<::Village> getClosestVillageWithRaid(
::BlockPos const& pos);
161 MCAPI ::std::weak_ptr<::POIInstance> getPOI(
::BlockPos const& position)
const;
163 MCAPI ::HashedString getPOIInitEventFromName(
::HashedString const& name)
const;
165 MCAPI ::HashedString
const& getPOINameFromBlueprint(
::Block const& block)
const;
167 MCAPI
bool hasPOI(
::BlockPos const& position, ::POIType type)
const;
172 MCAPI
void insertPOI(::std::shared_ptr<::POIInstance>&& poi);
176 MCAPI
void removePOI(::std::weak_ptr<::POIInstance> poi);
178 MCAPI ::std::shared_ptr<::POIInstance> tryCreatePOI(
::BlockPos const& position,
::Block const& block);
184 MCAPI
static int const& MAX_POI_TOLERANCE_DIST();
186 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;