3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/screens/ProgressScreenNavigation.h"
7#include "mc/client/network/realms/FailureReason.h"
8#include "mc/client/network/realms/GenericStatus.h"
9#include "mc/client/network/realms/RealmsAPI.h"
10#include "mc/client/world/JoinRealmWorldResult.h"
11#include "mc/deps/core/http/StatusCode.h"
12#include "mc/deps/core/utility/NonOwnerPointer.h"
13#include "mc/deps/core/utility/pub_sub/Publisher.h"
14#include "mc/events/IMinecraftEventing.h"
26namespace Bedrock::PubSub::ThreadModel {
struct MultiThreaded; }
28namespace Realms {
struct RealmId; }
29namespace Realms {
struct World; }
41 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClient;
42 ::ll::TypedStorage<8, 8, ::INetworkGameConnector&> mNetworkGameConnector;
43 ::ll::TypedStorage<8, 8, ::IGameServerShutdown&> mGameServerShutdown;
44 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mMinecraftEventing;
45 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::RealmsAPI>> mRealmsAPI;
46 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::Social::IUserManager>> mUserManager;
47 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IAppPlatform>> mAppPlatform;
52 Publisher<void(::World::JoinRealmWorldResult), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
53 mJoinRealmWorldResultPublisher;
54 ::ll::TypedStorage<8, 104, ::ui::ProgressScreenNavigation> mProgressScreenNavigation;
55 ::ll::TypedStorage<8, 64, ::std::function<::Bedrock::NonOwnerPointer<::Parties::IPartyProvider>()>>
57 ::ll::TypedStorage<8, 64, ::std::function<bool(::Realms::RealmId)>> mIsRealmJoinable;
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::AsyncTracker>> mAsyncTracker;
59 ::ll::TypedStorage<1, 1, bool> mJoinRealmWorldInProgress;
60 ::ll::TypedStorage<1, 1, bool> mIsEditorMode;
65 RealmWorldJoiner& operator=(RealmWorldJoiner
const&);
66 RealmWorldJoiner(RealmWorldJoiner
const&);
72 MCAPI RealmWorldJoiner(
73 ::IClientInstance& client,
74 ::INetworkGameConnector& networkGameConnector,
75 ::IGameServerShutdown& gameServerShutdown,
76 ::IMinecraftEventing& minecraftEventing,
77 ::Bedrock::NotNullNonOwnerPtr<::Social::IUserManager>
const& userManager,
78 ::Bedrock::NonOwnerPointer<::IAppPlatform>
const& appPlatform,
79 ::std::weak_ptr<::RealmsAPI> realmsAPI,
80 ::ui::ProgressScreenNavigation progressScreenNavigation,
81 ::std::function<::Bedrock::NonOwnerPointer<::Parties::IPartyProvider>()> getPartyProvider,
82 ::std::function<
bool(::Realms::RealmId)>&& isRealmJoinable
85 MCAPI ::World::JoinRealmWorldResult _fetchWorldByRealmId(
86 ::Realms::RealmId realmId,
87 ::IMinecraftEventing::RealmConnectionFlow fromFlow,
88 ::std::function<
void(::std::unique_ptr<::ProgressHandler>, ::std::unique_ptr<::ProgressHandler>)>
91 ::IMinecraftEventing::RealmConnectionResult,
92 ::std::optional<::Realms::FailureReason>,
93 ::std::optional<::World::RealmsJoinData>
97 MCAPI ::std::optional<::std::string> _getPartyId();
99 MCAPI
void _handleFetchedWorldResult(
100 ::Realms::GenericStatus status,
101 ::Realms::World world,
102 ::IMinecraftEventing::RealmConnectionFlow fromFlow,
103 ::std::function<
void(::std::unique_ptr<::ProgressHandler>, ::std::unique_ptr<::ProgressHandler>)>
105 ::std::function<
void(
106 ::IMinecraftEventing::RealmConnectionResult,
107 ::std::optional<::Realms::FailureReason>,
108 ::std::optional<::World::RealmsJoinData>
112 MCAPI
void _handleFetchedWorldResultV2(
113 ::std::string
const& realmId,
114 ::Realms::GenericStatus status,
115 ::Realms::World world,
116 ::IMinecraftEventing::RealmConnectionFlow fromFlow
119 MCAPI
bool _isUserWorldOwner(::Realms::World
const& world)
const;
121 MCAPI
void _joinRealm(
122 ::IMinecraftEventing::RealmConnectionFlow fromFlow,
123 ::Realms::World& world,
124 ::std::function<
void(::std::unique_ptr<::ProgressHandler>, ::std::unique_ptr<::ProgressHandler>)>
125 onRealmFetchedCallback,
126 ::std::function<
void(
127 ::IMinecraftEventing::RealmConnectionResult,
128 ::std::optional<::Realms::FailureReason>,
129 ::std::optional<::World::RealmsJoinData>
130 )> onRealmJoinedCallback
133 MCAPI
void _joinRealmConnectionHandler(
134 ::IMinecraftEventing::RealmConnectionResult result,
135 ::std::optional<::Realms::FailureReason> failureReason,
136 ::std::optional<::World::RealmsJoinData> realmsJoinData,
137 ::std::optional<::std::string> realmId
140 MCAPI
void _joinRealmsWorld(
141 ::Realms::World world,
142 ::std::function<
void(::Social::GameConnectionInfo
const&,
bool)> successCallback,
143 ::std::function<
void(::Realms::GenericStatus, ::RealmsAPI::JoinStatus, ::Realms::FailureReason)> failCallback,
144 ::std::function<
void(
int)> retryCallback,
145 ::IMinecraftEventing::RealmConnectionFlow realmConnectionFlow,
146 ::std::function<
void(::IMinecraftEventing::RealmConnectionFlow)> broadcastConnectionEventRealmsRequestFunction,
147 ::std::function<
void(::IMinecraftEventing::RealmConnectionFlow, ::Bedrock::Http::StatusCode)>
148 broadcastConnectionEventRealmsResponseFunction
151 MCAPI
bool _shouldShowHardcoreWarning()
const;
153 MCAPI
void joinRealmWorld(
154 ::Realms::RealmId realmId,
155 ::IMinecraftEventing::RealmConnectionFlow fromFlow,
156 ::std::function<
void(::World::JoinRealmWorldResult)> onRealmResult,
157 ::std::function<
void(::std::unique_ptr<::ProgressHandler>, ::std::unique_ptr<::ProgressHandler>)>
159 ::std::function<
void(
160 ::IMinecraftEventing::RealmConnectionResult,
161 ::std::optional<::Realms::FailureReason>,
162 ::std::optional<::World::RealmsJoinData>
166 MCAPI
void joinRealmWorldV2(::std::string
const& realmIdString, ::IMinecraftEventing::RealmConnectionFlow fromFlow);
168 MCAPI ~RealmWorldJoiner();
175 ::IClientInstance& client,
176 ::INetworkGameConnector& networkGameConnector,
177 ::IGameServerShutdown& gameServerShutdown,
178 ::IMinecraftEventing& minecraftEventing,
179 ::Bedrock::NotNullNonOwnerPtr<::Social::IUserManager>
const& userManager,
180 ::Bedrock::NonOwnerPointer<::IAppPlatform>
const& appPlatform,
181 ::std::weak_ptr<::RealmsAPI> realmsAPI,
182 ::ui::ProgressScreenNavigation progressScreenNavigation,
183 ::std::function<::Bedrock::NonOwnerPointer<::Parties::IPartyProvider>()> getPartyProvider,
184 ::std::function<
bool(::Realms::RealmId)>&& isRealmJoinable
Definition AsyncTracker.h:5
Definition IClientInstance.h:5
Definition IMinecraftEventing.h:134
Definition INetworkGameConnector.h:5
Definition IPartyProvider.h:7
Definition ProgressHandler.h:5
Definition GameConnectionInfo.h:21
Definition IUserManager.h:34
Definition RealmWorldJoiner.h:7
Definition MultiThreaded.h:12
Definition IGameServerShutdown.h:5
Definition RealmsJoinData.h:7