3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/world/ClearPlayerDataType.h"
7#include "mc/client/world/ExportWorldFlags.h"
8#include "mc/client/world/IWorldStorageHandler.h"
9#include "mc/client/world/WorldID.h"
10#include "mc/deps/core/file/PathBuffer.h"
11#include "mc/deps/core/minecraft/threading/EnableQueueForMainThread.h"
12#include "mc/deps/core/threading/Async.h"
13#include "mc/deps/core/utility/NonOwnerPointer.h"
14#include "mc/world/level/FileArchiver.h"
15#include "mc/world/level/FileArchiverOutcome.h"
35 public ::Bedrock::Threading::EnableQueueForMainThread {
47 ::ll::TypedStorage<8, 32, ::World::WorldID> mBackupWorldId;
48 ::ll::TypedStorage<4, 8, ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>>
49 mStartClearPlayerDataError;
50 ::ll::TypedStorage<8, 16, ::Bedrock::Threading::Async<void>> mClearPlayerDataTask;
57 ::ll::TypedStorage<8, 32, ::Core::PathBuffer<::std::string>
const> mWorkingDirectory;
58 ::ll::TypedStorage<8, 8, ::ILevelListCache&> mLevelListCache;
59 ::ll::TypedStorage<8, 8, ::IContentManager&> mContentManager;
60 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const>> mKeyProvider;
61 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::LevelDbEnv>> mLevelDbEnv;
62 ::ll::TypedStorage<8, 8, ::FileArchiver&> mFileArchiver;
63 ::ll::TypedStorage<8, 8, ::Social::IUserManager&> mUserManager;
64 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mDiskTaskGroup;
65 ::ll::TypedStorage<1, 1, ::World::IWorldStorageHandler::ExportWorldStatus> mExportWorldStatus;
70 WorldStorageHandler& operator=(WorldStorageHandler
const&);
71 WorldStorageHandler(WorldStorageHandler
const&);
72 WorldStorageHandler();
78 variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>
79 readWorld(::World::WorldID
const&
id)
const ;
81 virtual ::std::optional<::World::IWorldStorageHandler::WriteWorldError> updateOrCreateWorld(
82 ::LevelData& levelData,
83 ::LevelSummary& levelSummary,
84 ::std::shared_ptr<::LevelSettings> levelSettings
87 virtual void deleteWorld(::World::WorldID
const&
id) ;
89 virtual void reloadWorld(::World::WorldID
const&
id) ;
91 virtual ::Bedrock::Threading::Async<void> clearPlayerData(
92 ::World::WorldID
const& worldId,
93 ::World::ClearPlayerDataType type,
94 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
97 virtual void duplicateWorld(
98 ::World::WorldID
const& worldId,
99 ::std::function<
void(::World::WorldID
const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> onComplete
102 virtual void exportWorld(
103 ::World::WorldID
const& worldId,
104 ::World::ExportWorldFlags flags,
105 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
108 virtual void exportWorldAsTemplate(
109 ::World::WorldID
const& worldId,
110 ::World::ExportWorldFlags flags,
111 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
114 virtual ::World::IWorldStorageHandler::ExportWorldStatus exportWorldStatus() const ;
116 virtual
void updateWorldIcon(
117 ::World::WorldID const& worldId,
118 ::Core::PathBuffer<::std::
string> const& screenshotPath,
119 ::std::
string const&
id,
120 ::std::function<
void(::World::WorldID const&)> onComplete
123 virtual
void resetWorldIcon(
124 ::World::WorldID const& worldId,
125 ::std::function<
void(::World::WorldID const&)> onComplete
128 virtual ~WorldStorageHandler() ;
134 MCAPI WorldStorageHandler(
135 ::Core::PathBuffer<::std::
string> const& workingDirectory,
136 ::ILevelListCache& levelListCache,
137 ::IContentManager& contentManager,
138 ::FileArchiver& fileArchiver,
139 ::Social::IUserManager& userManager,
140 ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const> const& keyProvider,
141 ::Bedrock::NotNullNonOwnerPtr<::LevelDbEnv> levelDbEnv
144 MCAPI
void _exportWorld(
145 ::World::WorldID const& worldId,
146 ::FileArchiver::ExportType exportType,
147 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
150 MCAPI ::std::
string _makeBackupOfLevel(::World::WorldID const&
id);
152 MCAPI
void _onDuplicateWorldSuccess(
153 ::std::
string const& worldId,
154 ::Core::PathBuffer<::std::
string> const& worldPath,
155 ::std::function<
void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> const&
159 MCAPI
void _onExportComplete(
160 ::FileArchiverOutcome outcome,
161 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete,
162 ::std::shared_ptr<::FilePickerSettings> settings
165 MCAPI
void _scheduleCheckUserStorageAsync() const;
167 MCAPI
void _setupExportWorld(
168 ::World::WorldID const& worldId,
169 ::FileArchiver::ExportType exportType,
170 ::World::ExportWorldFlags flags,
171 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
179 ::Core::PathBuffer<::std::
string> const& workingDirectory,
180 ::ILevelListCache& levelListCache,
181 ::IContentManager& contentManager,
182 ::FileArchiver& fileArchiver,
183 ::Social::IUserManager& userManager,
184 ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const> const& keyProvider,
185 ::Bedrock::NotNullNonOwnerPtr<::LevelDbEnv> levelDbEnv
198 MCAPI ::std::variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::
CachedWorldData>
199 $readWorld(::World::WorldID const&
id) const;
201 MCAPI ::std::optional<::World::IWorldStorageHandler::WriteWorldError> $updateOrCreateWorld(
202 ::LevelData& levelData,
203 ::LevelSummary& levelSummary,
204 ::std::shared_ptr<::LevelSettings> levelSettings
207 MCAPI
void $deleteWorld(::World::WorldID const&
id);
209 MCAPI
void $reloadWorld(::World::WorldID const&
id);
211 MCAPI ::Bedrock::Threading::Async<
void> $clearPlayerData(
212 ::World::WorldID const& worldId,
213 ::World::ClearPlayerDataType type,
214 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
217 MCAPI
void $duplicateWorld(
218 ::World::WorldID const& worldId,
219 ::std::function<
void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> onComplete
222 MCAPI
void $exportWorld(
223 ::World::WorldID const& worldId,
224 ::World::ExportWorldFlags flags,
225 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
228 MCAPI
void $exportWorldAsTemplate(
229 ::World::WorldID const& worldId,
230 ::World::ExportWorldFlags flags,
231 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
234 MCFOLD ::World::IWorldStorageHandler::ExportWorldStatus $exportWorldStatus() const;
236 MCAPI
void $updateWorldIcon(
237 ::World::WorldID const& worldId,
238 ::Core::PathBuffer<::std::
string> const& screenshotPath,
239 ::std::
string const&
id,
240 ::std::function<
void(::World::WorldID const&)> onComplete
244 $resetWorldIcon(::World::WorldID const& worldId, ::std::function<
void(::World::WorldID const&)> onComplete);
Definition FileArchiver.h:35
Definition FilePickerSettings.h:5
Definition IContentKeyProvider.h:13
Definition IContentManager.h:5
Definition ILevelListCache.h:27
Definition LevelData.h:50
Definition LevelDbEnv.h:8
Definition LevelSettings.h:39
Definition IUserManager.h:34
Definition TaskGroup.h:53
Definition WorldStorageHandler.h:7
static MCAPI void ** $vftableForIWorldStorageHandler()
static MCAPI void ** $vftableForEnableQueueForMainThread()
Definition LevelSummary.h:30
Definition IWorldStorageHandler.h:27
Definition WorldStorageHandler.h:15