3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/multiplayer/BeforeLevelForLevelHoldingOwnership.h"
7#include "mc/deps/core/utility/NonOwnerPointer.h"
8#include "mc/deps/core/utility/UniqueOwnerPointer.h"
9#include "mc/deps/core/utility/pub_sub/Subscription.h"
10#include "mc/deps/game_refs/OwnerPtr.h"
11#include "mc/world/level/Level.h"
12#include "mc/world/level/PlayerSleepManager.h"
13#include "mc/world/level/biome/glue/BiomeJsonDocumentGlue.h"
46 using ActorIdMap = ::std::map<int, ::Actor*>;
48 using ActorSet = ::std::set<::Actor*>;
53 ::ll::TypedStorage<8, 16, ::gsl::not_null<::Bedrock::UniqueOwnerPointer<::TrustedSkinHelper>>> mTrustedSkinHelper;
54 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::CameraRegistry>>> mCameraRegistry;
55 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::EntitySystems>>> mCameraSystems;
56 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::VolumeEntityManagerClient>> mVolumeEntityManager;
57 ::ll::TypedStorage<8, 16, ::gsl::not_null<::Bedrock::UniqueOwnerPointer<::SubChunkManager>>> mSubChunkManager;
58 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnSubChunkLoaded;
59 ::ll::TypedStorage<8, 16, ::gsl::not_null<::Bedrock::UniqueOwnerPointer<::DisplayActorManager>>>
61 ::ll::TypedStorage<8, 40, ::PlayerSleepManager> mPlayerSleepManager;
62 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ArmorTrimIconGenerator>> mArmorTrimIconGenerator;
63 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ArmorTrimUnloader>> mArmorTrimUnloader;
64 ::ll::TypedStorage<8, 16, ::gsl::not_null<::Bedrock::UniqueOwnerPointer<::MapDataManager>>> mMapDataManager;
74 virtual ~MultiPlayerLevel() ;
76 virtual bool initialize(
77 ::std::string
const& levelName,
78 ::LevelSettings
const& levelSettings,
79 ::Experiments
const& experiments,
80 ::std::string
const* levelId,
81 ::std::optional<::std::reference_wrapper<
82 ::std::unordered_map<::std::string, ::std::unique_ptr<::BiomeJsonDocumentGlue::ResolvedBiomeData>>>>
86 virtual ::Tick
const getCurrentServerTick() const ;
88 virtual
void startLeaveGame() ;
90 virtual ::Actor* addEntity(::BlockSource& region, ::OwnerPtr<::EntityContext> entity) ;
92 virtual ::OwnerPtr<::EntityContext> removeActorFromWorldAndTakeEntity(::WeakEntityRef) ;
94 virtual ::OwnerPtr<::EntityContext> takeEntity(::WeakEntityRef entityRef, ::LevelChunk&) ;
96 virtual ::Actor* addDisplayEntity(::BlockSource& region, ::OwnerPtr<::EntityContext> entity) ;
98 virtual
void removeDisplayEntity(::WeakEntityRef entity) ;
100 virtual ::Bedrock::NonOwnerPointer<::DisplayActorManager> getDisplayActorManager() ;
102 virtual ::PlayerSleepManager const& getPlayerSleepManager() const ;
104 virtual ::PlayerSleepManager& getPlayerSleepManager() ;
106 virtual
void notifySubChunkRequestManager(::SubChunkPacket const& packet) ;
108 virtual ::SubChunkRequestManager* getSubChunkRequestManager() ;
110 virtual
void onSubChunkLoaded(
111 ::ChunkSource& source,
113 short absoluteSubChunkIndex,
114 bool subChunkVisibilityChanged
117 virtual ::Bedrock::NonOwnerPointer<::SubChunkManager> getSubChunkManager() ;
119 virtual
bool canUseSkin(
120 ::SerializedSkinRef const& skin,
121 ::NetworkIdentifier const& networkIdentifier,
122 ::ActorUniqueID const& playerId
125 virtual ::Bedrock::NonOwnerPointer<::TrustedSkinHelper const> getTrustedSkinHelper() const ;
127 virtual ::MultiPlayerLevel* asMultiPlayerLevel() ;
129 virtual ::Bedrock::NonOwnerPointer<::CameraRegistry const> getCameraRegistry() const ;
131 virtual ::Bedrock::NonOwnerPointer<::CameraRegistry> getCameraRegistry() ;
133 virtual ::Bedrock::NonOwnerPointer<::EntitySystems> getCameraSystems() ;
135 virtual ::ArmorTrimUnloader* getArmorTrimUnloader() ;
137 virtual ::Bedrock::NotNullNonOwnerPtr<::MapDataManager> getMapDataManager() ;
139 virtual
void subChunkTickAndSendRequests() ;
141 virtual ::MapDataManager& _getMapDataManager() ;
143 virtual
void _subTick() ;
149 MCAPI explicit MultiPlayerLevel(::MultiPlayerLevelArguments&& args);
151 MCAPI
void _initializeSubChunkManager();
153 MCAPI
void _onSubChunkLoaded(
154 ::ChunkSource& source,
156 short absoluteSubChunkIndex,
157 bool subChunkVisibilityChanged
164 MCAPI
void* $ctor(::MultiPlayerLevelArguments&& args);
176 MCAPI
bool $initialize(
177 ::std::
string const& levelName,
178 ::LevelSettings const& levelSettings,
179 ::Experiments const& experiments,
180 ::std::
string const* levelId,
181 ::std::optional<::std::reference_wrapper<
182 ::std::unordered_map<::std::
string, ::std::unique_ptr<::BiomeJsonDocumentGlue::ResolvedBiomeData>>>>
183 biomeIdToResolvedData
186 MCAPI ::Tick const $getCurrentServerTick() const;
188 MCAPI
void $startLeaveGame();
190 MCAPI ::Actor* $addEntity(::BlockSource& region, ::OwnerPtr<::EntityContext> entity);
192 MCAPI ::OwnerPtr<::EntityContext> $removeActorFromWorldAndTakeEntity(::WeakEntityRef);
194 MCAPI ::OwnerPtr<::EntityContext> $takeEntity(::WeakEntityRef entityRef, ::LevelChunk&);
196 MCAPI ::Actor* $addDisplayEntity(::BlockSource& region, ::OwnerPtr<::EntityContext> entity);
198 MCAPI
void $removeDisplayEntity(::WeakEntityRef entity);
200 MCAPI ::Bedrock::NonOwnerPointer<::DisplayActorManager> $getDisplayActorManager();
202 MCFOLD ::PlayerSleepManager const& $getPlayerSleepManager() const;
204 MCFOLD ::PlayerSleepManager& $getPlayerSleepManager();
206 MCAPI
void $notifySubChunkRequestManager(::SubChunkPacket const& packet);
208 MCAPI ::SubChunkRequestManager* $getSubChunkRequestManager();
210 MCAPI
void $onSubChunkLoaded(
211 ::ChunkSource& source,
213 short absoluteSubChunkIndex,
214 bool subChunkVisibilityChanged
217 MCAPI ::Bedrock::NonOwnerPointer<::SubChunkManager> $getSubChunkManager();
219 MCAPI
bool $canUseSkin(
220 ::SerializedSkinRef const& skin,
221 ::NetworkIdentifier const& networkIdentifier,
222 ::ActorUniqueID const& playerId
225 MCAPI ::Bedrock::NonOwnerPointer<::TrustedSkinHelper const> $getTrustedSkinHelper() const;
227 MCFOLD ::MultiPlayerLevel* $asMultiPlayerLevel();
229 MCFOLD ::Bedrock::NonOwnerPointer<::CameraRegistry const> $getCameraRegistry() const;
231 MCFOLD ::Bedrock::NonOwnerPointer<::CameraRegistry> $getCameraRegistry();
233 MCAPI ::Bedrock::NonOwnerPointer<::EntitySystems> $getCameraSystems();
235 MCFOLD ::ArmorTrimUnloader* $getArmorTrimUnloader();
237 MCAPI ::Bedrock::NotNullNonOwnerPtr<::MapDataManager> $getMapDataManager();
239 MCAPI
void $subChunkTickAndSendRequests();
241 MCAPI ::MapDataManager& $_getMapDataManager();
243 MCAPI
void $_subTick();
Definition BeforeLevelForLevelHoldingOwnership.h:5
Definition BlockSource.h:68
Definition ChunkSource.h:37
Definition DisplayActorManager.h:21
Definition EntityContext.h:16
Definition EntitySystems.h:25
Definition Experiments.h:14
Definition LevelChunk.h:79
Definition LevelSettings.h:39
Definition MapDataManager.h:24
Definition MultiPlayerLevel.h:5
static MCAPI void ** $vftableForBlockSourceListener()
static MCAPI void ** $vftableForILevel()
static MCAPI void ** $vftableForIWorldRegistriesProvider()
Definition NetworkIdentifier.h:10
Definition SerializedSkinRef.h:22
Definition SubChunkPacket.h:19
Definition SubChunkRequestManager.h:18
Definition WeakEntityRef.h:14
Definition ActorUniqueID.h:5
Definition ArmorTrimIconGenerator.h:5
Definition ArmorTrimUnloader.h:5
Definition CameraRegistry.h:5
Definition MultiPlayerLevelArguments.h:5
Definition SubChunkManager.h:5
Definition TrustedSkinHelper.h:5
Definition VolumeEntityManagerClient.h:5