3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/screens/models/ContentType.h"
7#include "mc/client/world/AddWorldFromTemplateError.h"
8#include "mc/client/world/ClearPlayerDataType.h"
9#include "mc/client/world/ExportWorldFlags.h"
10#include "mc/client/world/IWorldStorageHandler.h"
11#include "mc/client/world/PackActionError.h"
12#include "mc/client/world/PackDownloadError.h"
13#include "mc/client/world/SaveWorldError.h"
14#include "mc/client/world/WorldID.h"
15#include "mc/deps/core/threading/Async.h"
16#include "mc/deps/core/utility/pub_sub/Publisher.h"
17#include "mc/world/level/LevelListCacheObserver.h"
25namespace Bedrock::PubSub::ThreadModel {
struct MultiThreaded; }
27namespace Realms {
struct RealmId; }
28namespace Realms {
struct World; }
38class WorldEditor :
public ::LevelListCacheObserver {
42 ::ll::TypedStorage<4, 4, int> mNextModifier;
43 ::ll::TypedStorage<1, 1, bool const> mIsEduMode;
44 ::ll::TypedStorage<8, 8, ::ILevelListCache&> mLevelListCache;
45 ::ll::TypedStorage<8, 8, ::World::IWorldResourcePackHandler&> mWorldResourcePackHandler;
46 ::ll::TypedStorage<8, 8, ::World::IWorldStorageHandler&> mWorldStorageHandler;
47 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::World::IWorldTemplateHandler>> mWorldTemplateHandler;
52 ::Bedrock::PubSub::Publisher<void(::World::WorldID), ::Bedrock::PubSub::ThreadModel::SingleThreaded, 0>>>
53 mOnLevelDataUpdatedPublisher;
54 ::ll::TypedStorage<8, 64, ::std::function<void()>> mOnSaveCompletedCallback;
55 ::ll::TypedStorage<8, 64, ::std::function<void(::World::SaveWorldError)>> mOnSaveErrorCallback;
56 ::ll::TypedStorage<8, 24, ::std::vector<::World::WorldID>> mIDs;
57 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::World::WorldData>> mWorlds;
58 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::LevelData>> mLevelData;
59 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::LevelSummary>> mLevelSummary;
60 ::ll::TypedStorage<8, 24, ::std::vector<::Realms::RealmId>> mRealmIDs;
61 ::ll::TypedStorage<8, 64, ::std::unordered_map<int64, ::Realms::World>> mRealmWorlds;
62 ::ll::TypedStorage<8, 128, ::Bedrock::PubSub::Publisher<void(), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
63 mNotifyWorldsInvalidated;
68 WorldEditor& operator=(WorldEditor
const&);
69 WorldEditor(WorldEditor
const&);
75 virtual void onLevelDeleted(::std::string
const& levelId) ;
77 virtual void onLevelUpdated(::std::string
const& levelId) ;
79 virtual ~WorldEditor() ;
86 ::ILevelListCache& levelListCache,
88 ::World::IWorldResourcePackHandler& worldResourcePackHandler,
89 ::World::IWorldStorageHandler& worldStorageHandler,
90 ::std::unique_ptr<::World::IWorldTemplateHandler> worldTemplateHandler
93 MCAPI
void _addWorldEditorEntry(
94 ::World::WorldID
const& worldID,
95 ::World::IWorldStorageHandler::CachedWorldData
const& cachedWorldData
98 MCAPI
bool _closeWorld(::World::WorldID
const& worldID);
100 MCAPI
void _onWorldIconUpdated(::World::WorldID
const& worldID);
102 MCAPI
bool _refreshWorldData(::World::WorldID
const& worldID);
104 MCAPI
void _saveWorld(
105 ::World::WorldID
const& worldID,
106 ::std::function<
void()> onCompleteCallback,
107 ::std::function<
void(::World::SaveWorldError)> onErrorCallback
110 MCAPI ::std::optional<::World::PackActionError>
111 activatePack(::World::WorldID
const& worldID, ::ContentType contentType, ::std::string
const& packId,
bool force);
113 MCAPI ::World::WorldID addWorld();
115 MCAPI
void addWorldFromTemplate(
116 ::std::string
const& templateId,
117 ::std::function<
void(::std::variant<::World::AddWorldFromTemplateError, ::World::WorldID>)> onComplete
120 MCAPI ::Bedrock::Threading::Async<void> clearPlayerData(
121 ::World::WorldID
const& worldID,
122 ::World::ClearPlayerDataType type,
123 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
126 MCAPI ::std::optional<::World::PackActionError>
127 deactivatePack(::World::WorldID
const& worldID, ::ContentType contentType, ::std::string
const& packId,
bool force);
129 MCAPI
void downloadPacks(
130 ::World::WorldID
const& worldID,
131 ::std::vector<::std::string>
const& packIds,
132 ::std::function<
void()> onCompleteCallback,
133 ::std::function<
void(::World::PackDownloadError)> onErrorCallback
136 MCAPI
void duplicateWorld(
137 ::World::WorldID
const& worldID,
138 ::std::function<
void()> onCompleteCallback,
139 ::std::function<
void()> onCancelCallback,
140 ::std::function<
void(::World::IWorldStorageHandler::DuplicateWorldResult)> onErrorCallback
143 MCAPI
void exportWorld(
144 ::World::WorldID
const& worldID,
145 ::World::ExportWorldFlags flags,
146 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
149 MCAPI
void exportWorldAsTemplate(
150 ::World::WorldID
const& worldID,
151 ::World::ExportWorldFlags flags,
152 ::std::function<
void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
155 MCAPI ::World::WorldData* getWorld(::World::WorldID
const& worldID);
157 MCAPI ::World::WorldPacksData getWorldPacksData(::World::WorldID
const& worldID);
159 MCAPI ::std::optional<::World::IWorldStorageHandler::ReadWorldError> loadWorld(::World::WorldID
const& worldID);
161 MCAPI ::Bedrock::PubSub::Subscription
162 registerWorldIconUpdatedListener(::std::function<
void(::World::WorldID
const&)> callback);
164 MCAPI
void saveWorld(
165 ::World::WorldID
const& worldID,
166 ::std::function<
void()> onCompleteCallback,
167 ::std::function<
void(::World::SaveWorldError)> onErrorCallback
175 ::ILevelListCache& levelListCache,
177 ::World::IWorldResourcePackHandler& worldResourcePackHandler,
178 ::World::IWorldStorageHandler& worldStorageHandler,
179 ::std::unique_ptr<::World::IWorldTemplateHandler> worldTemplateHandler
192 MCAPI
void $onLevelDeleted(::std::string
const& levelId);
194 MCAPI
void $onLevelUpdated(::std::string
const& levelId);
Definition Subscription.h:10
Definition ILevelListCache.h:27
Definition LevelData.h:52
Definition IWorldResourcePackHandler.h:7
Definition IWorldStorageHandler.h:7
Definition IWorldTemplateHandler.h:7
Definition WorldEditor.h:7
static MCAPI void ** $vftable()
Definition MultiThreaded.h:12
Definition SingleThreaded.h:7
Definition LevelSummary.h:30
Definition WorldPacksData.h:7