3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/screens/models/ContentType.h"
7#include "mc/client/world/IWorldResourcePackHandler.h"
8#include "mc/client/world/PackAction.h"
9#include "mc/client/world/PackActionError.h"
10#include "mc/client/world/PackDownloadError.h"
11#include "mc/client/world/PackStatus.h"
12#include "mc/client/world/PendingPackActionHash.h"
13#include "mc/client/world/PendingPackActionKey.h"
14#include "mc/client/world/PendingPackActivation.h"
15#include "mc/client/world/PendingPackRemoval.h"
16#include "mc/client/world/WorldID.h"
17#include "mc/deps/core/utility/NonOwnerPointer.h"
18#include "mc/deps/core/utility/pub_sub/Subscription.h"
19#include "mc/resources/PackScope.h"
28class IEntitlementManager;
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContentManagerContext>> mContext;
59 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContentManagerContext>> mGlobalContext;
63 using ConstContentItemPtr = ::std::shared_ptr<::ContentItem const>;
65 using ContentItemPtr = ::std::shared_ptr<::ContentItem>;
70 ::ll::TypedStorage<8, 8, ::IContentManager&> mContentManager;
71 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IResourcePackRepository>> mResourcePackRepository;
72 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IEntitlementManager>> mEntitlementManager;
73 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IContentTierManager const>> mContentTierManager;
74 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::World::IWorldResourcePackDownloader>> mWorldResourcePackDownloader;
75 ::ll::TypedStorage<8, 8, ::IContentAcquisition&> mContentAcquisition;
76 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mEventing;
77 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnSourcesReloadedSubscription;
78 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::World::WorldPacks>> mWorldPacks;
83 ::World::PendingPackActionKey,
84 ::std::variant<::World::PendingPackActivation, ::World::PendingPackRemoval>,
85 ::World::PendingPackActionHash,
86 ::std::equal_to<::World::PendingPackActionKey>>>
88 ::ll::TypedStorage<1, 1, bool> mIsEditorWorld;
89 ::ll::TypedStorage<8, 32, ::World::WorldID> mCurrentWorldID;
90 ::ll::TypedStorage<1, 1, bool> mDirty;
95 WorldResourcePackHandler& operator=(WorldResourcePackHandler
const&);
96 WorldResourcePackHandler(WorldResourcePackHandler
const&);
97 WorldResourcePackHandler();
102 virtual ~WorldResourcePackHandler() =
default;
104 virtual ::World::WorldPacks& loadPackContentForWorld(::LevelSummary
const& levelSummary) ;
106 virtual ::World::PackCollection getWorldPackCollection(
107 ::LevelSummary
const& levelSummary,
108 ::ContentType
const contentType,
112 virtual ::std::optional<::World::PackActionError> activatePack(
113 ::LevelSummary
const& levelSummary,
114 ::ContentType
const contentType,
115 ::std::string
const& packId,
116 bool const isEduMode,
120 virtual ::std::optional<::World::PackActionError> deactivatePack(
121 ::LevelSummary
const& levelSummary,
122 ::ContentType
const contentType,
123 ::std::string
const& packId,
124 bool const isEduMode,
128 virtual ::std::optional<::World::PackActionError>
129 continuePackActivation(::LevelSummary
const& levelSummary) ;
131 virtual ::std::optional<::World::PackActionError>
132 continuePackDeactivation(::LevelSummary
const& levelSummary) ;
134 virtual void downloadPacks(
135 ::LevelSummary
const& levelSummary,
136 ::std::vector<::std::string>
const& packIds,
137 ::std::function<
void()> onCompleteCallback,
138 ::std::function<
void(::World::PackDownloadError)> onErrorCallback
141 virtual ::World::PackDownloadProgressInfo getDownloadPackProgress() ;
144 getDownloadingPackTitles(::std::function<
void(::std::vector<::std::string>)> packTitlesCallback) ;
146 virtual void cancelDownloadPack() ;
148 virtual void getPackSizes(
149 ::LevelSummary
const& levelSummary,
150 ::std::vector<::std::string>
const& packIds,
151 ::std::function<
void(uint64)> onCompleteCallback,
152 ::std::function<
void(::World::PackActionError)> onErrorCallback
155 virtual void savePacksData() ;
157 virtual bool hasNonAddonBehaviorPacks(::LevelSummary
const& levelSummary) ;
159 virtual bool hasBehaviorPacks(::LevelSummary
const& levelSummary) ;
161 virtual bool hasLockedPacks(::LevelSummary
const& levelSummary)
const ;
163 virtual ::std::optional<::World::PackActionError> changePackPriority(
164 ::LevelSummary
const& levelSummary,
165 ::ContentType
const contentType,
166 ::std::string
const& packId,
171 virtual ::World::PackCheckResult
172 checkDlc(::std::string
const& levelId, ::PackIdVersion
const& packIdVersion,
bool const isForRealms) ;
174 virtual ::std::vector<::World::PackDetails> getPackDetailsForWorld(
175 ::LevelSummary
const& levelSummary,
176 ::std::vector<::std::string>
const& packIds
179 virtual bool getResourcePacksDirty() ;
181 virtual void refreshPacksData() ;
187 MCAPI WorldResourcePackHandler(
188 ::IContentManager& contentManager,
189 ::Bedrock::NotNullNonOwnerPtr<::IResourcePackRepository> resourcePackRepository,
190 ::Bedrock::NotNullNonOwnerPtr<::IEntitlementManager> entitlementManager,
191 ::Bedrock::NotNullNonOwnerPtr<::IContentTierManager const> contentTierManager,
192 ::IContentAcquisition& contentAcquisition,
193 ::std::unique_ptr<::World::IWorldResourcePackDownloader> worldResourcePackDownloader,
194 ::IMinecraftEventing& eventing
197 MCAPI ::World::WorldPacks&
198 _cacheWorldPackData(::World::WorldResourcePackHandler::Contexts&& contexts, ::LevelSummary
const& levelSummary);
200 MCAPI ::std::unique_ptr<::ContentViews> _createContentViews(
201 ::World::WorldResourcePackHandler::Contexts& contexts,
202 ::ContentType contentType,
206 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem> _findPackByType(
207 ::World::WorldPacks& worldPacks,
208 ::ContentType
const contentType,
209 ::std::string
const& packId
212 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem> _findPackViewAndContent(
213 ::World::WorldPacks& worldPacks,
214 ::ContentType
const contentType,
215 ::World::PackStatus
const packStatus,
216 ::std::string
const& packId
219 MCAPI
void _getMissingPackIds(
220 ::LevelSummary
const& levelSummary,
221 ::std::vector<::std::string>
const& packIds,
222 ::std::function<
void(::World::PackActionError)> onErrorCallback,
223 ::std::function<
void(::std::vector<::std::string>
const&)> onCompleteCallback
226 MCAPI ::World::PackDetails _getPackDetails(
227 ::World::WorldID
const worldID,
228 ::std::shared_ptr<::ContentItem>
const& contentItem,
229 ::ContentViews
const& contentViews,
230 ::World::PackStatus
const packStatus,
234 MCAPI ::World::WorldResourcePackHandler::Contexts
235 _initializeContentManagerForWorld(::LevelSummary
const& levelSummary);
237 MCAPI
bool _needToDownloadPack(::std::shared_ptr<::ContentItem>
const& contentItem)
const;
239 MCAPI ::std::optional<::World::PackActionError> _performPackMovement(
240 ::World::PackAction
const packAction,
241 ::LevelSummary
const& levelSummary,
242 ::ContentType
const contentType,
243 ::std::string
const& packId,
244 bool const isEduMode,
248 MCAPI
void _populatePackDetails(
249 ::World::WorldID
const worldID,
250 ::std::vector<::World::PackDetails>& packDetails,
251 ::Bedrock::NonOwnerPointer<::ContentView> contentView,
252 ::World::PackCollection
const& packCollection,
253 ::ContentViews
const& contentViews,
254 ::World::PackStatus
const packStatus,
263 ::IContentManager& contentManager,
264 ::Bedrock::NotNullNonOwnerPtr<::IResourcePackRepository> resourcePackRepository,
265 ::Bedrock::NotNullNonOwnerPtr<::IEntitlementManager> entitlementManager,
266 ::Bedrock::NotNullNonOwnerPtr<::IContentTierManager const> contentTierManager,
267 ::IContentAcquisition& contentAcquisition,
268 ::std::unique_ptr<::World::IWorldResourcePackDownloader> worldResourcePackDownloader,
269 ::IMinecraftEventing& eventing
276 MCAPI ::World::WorldPacks& $loadPackContentForWorld(::LevelSummary
const& levelSummary);
278 MCAPI ::World::PackCollection
279 $getWorldPackCollection(::LevelSummary
const& levelSummary, ::ContentType
const contentType,
bool const isEduMode);
281 MCAPI ::std::optional<::World::PackActionError> $activatePack(
282 ::LevelSummary
const& levelSummary,
283 ::ContentType
const contentType,
284 ::std::string
const& packId,
285 bool const isEduMode,
289 MCAPI ::std::optional<::World::PackActionError> $deactivatePack(
290 ::LevelSummary
const& levelSummary,
291 ::ContentType
const contentType,
292 ::std::string
const& packId,
293 bool const isEduMode,
297 MCAPI ::std::optional<::World::PackActionError> $continuePackActivation(::LevelSummary
const& levelSummary);
299 MCAPI ::std::optional<::World::PackActionError> $continuePackDeactivation(::LevelSummary
const& levelSummary);
301 MCAPI
void $downloadPacks(
302 ::LevelSummary
const& levelSummary,
303 ::std::vector<::std::string>
const& packIds,
304 ::std::function<
void()> onCompleteCallback,
305 ::std::function<
void(::World::PackDownloadError)> onErrorCallback
308 MCAPI ::World::PackDownloadProgressInfo $getDownloadPackProgress();
310 MCAPI
void $getDownloadingPackTitles(::std::function<
void(::std::vector<::std::string>)> packTitlesCallback);
312 MCFOLD
void $cancelDownloadPack();
314 MCAPI
void $getPackSizes(
315 ::LevelSummary
const& levelSummary,
316 ::std::vector<::std::string>
const& packIds,
317 ::std::function<
void(uint64)> onCompleteCallback,
318 ::std::function<
void(::World::PackActionError)> onErrorCallback
321 MCAPI
void $savePacksData();
323 MCAPI
bool $hasNonAddonBehaviorPacks(::LevelSummary
const& levelSummary);
325 MCAPI
bool $hasBehaviorPacks(::LevelSummary
const& levelSummary);
327 MCAPI
bool $hasLockedPacks(::LevelSummary
const& levelSummary)
const;
329 MCAPI ::std::optional<::World::PackActionError> $changePackPriority(
330 ::LevelSummary
const& levelSummary,
331 ::ContentType
const contentType,
332 ::std::string
const& packId,
337 MCAPI ::World::PackCheckResult
338 $checkDlc(::std::string
const& levelId, ::PackIdVersion
const& packIdVersion,
bool const isForRealms);
340 MCAPI ::std::vector<::World::PackDetails>
341 $getPackDetailsForWorld(::LevelSummary
const& levelSummary, ::std::vector<::std::string>
const& packIds);
343 MCAPI
bool $getResourcePacksDirty();
345 MCAPI
void $refreshPacksData();
Definition ContentView.h:5
Definition IContentAcquisition.h:5
Definition IContentManagerContext.h:5
Definition IContentManager.h:5
Definition IContentTierManager.h:13
Definition IMinecraftEventing.h:145
Definition IResourcePackRepository.h:34
Definition IWorldResourcePackDownloader.h:7
Definition WorldResourcePackHandler.h:7
Definition ContentItem.h:5
Definition ContentViews.h:5
Definition LevelSummary.h:30
Definition PackIdVersion.h:10
Definition PackCheckResult.h:7
Definition PackCollection.h:7
Definition PackDetails.h:7
Definition PackDownloadProgressInfo.h:7
Definition PackViewAndItem.h:7
Definition WorldPacks.h:7
Definition WorldResourcePackHandler.h:15