199 enum class LoginState : uchar {
200 AwaitingHandshake = 0,
201 AwaitingPlayerSpawn = 1,
208 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ConnectionRequest>> mPrimaryRequest;
209 ::ll::TypedStorage<8, 384, ::PlayerAuthenticationInfo> mPrimaryPlayerInfo;
210 ::ll::TypedStorage<8, 32, ::std::string> mClientInfoPartyId;
211 ::ll::TypedStorage<8, 64, ::std::unordered_map<::SubClientId, ::PlayerAuthenticationInfo>> mSubClientPlayerInfo;
212 ::ll::TypedStorage<1, 1, ::ServerNetworkHandler::Client::LoginState> mLoginState;
227 MCAPI
void removeSubClientPlayerInfo(::SubClientId subClientId);
242 ::ll::TypedStorage<8, 248, ::ClientBlobCache::Server::TransferBuilder> mTransferBuilder;
252 ::std::unordered_map<::NetworkIdentifier, ::std::unique_ptr<::ServerNetworkHandler::Client>>>
254 ::ll::TypedStorage<8, 8, ::GameCallbacks&> mGameCallbacks;
255 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::ILevel>> mLevel;
256 ::ll::TypedStorage<8, 24, ::ServerPlayerLoader> mPlayerLoader;
257 ::ll::TypedStorage<8, 8, ::ServerNetworkSystem&> mNetwork;
258 ::ll::TypedStorage<8, 8, ::PrivateKeyManager&> mServerKeys;
259 ::ll::TypedStorage<8, 8, ::ServerLocator&> mServerLocator;
260 ::ll::TypedStorage<8, 8, ::gsl::not_null<::PacketSender*>> mPacketSender;
261 ::ll::TypedStorage<8, 8, ::AllowList&> mAllowList;
262 ::ll::TypedStorage<8, 8, ::EditorAllowList&> mEditorAllowList;
263 ::ll::TypedStorage<8, 8, ::PermissionsFile*> mPermissionsFile;
264 ::ll::TypedStorage<8, 104, ::DenyList> mServerDenyList;
265 ::ll::TypedStorage<8, 72, ::NetworkServerConfig> mNetworkServerConfig;
266 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::ScriptPackSettingsCache>> mPackSettingsCache;
267 ::ll::TypedStorage<1, 1, bool> mHasDisplayedPackErrors;
268 ::ll::TypedStorage<8, 176, ::NetworkIdentifier> mMyId;
269 ::ll::TypedStorage<4, 4, int const> mMaxChunkRadius;
270 ::ll::TypedStorage<8, 8, ::MinecraftCommands&> mMinecraftCommands;
271 ::ll::TypedStorage<8, 8, ::IMinecraftApp&> mApp;
272 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::TextFilteringProcessor>> mTextFilteringProcessor;
273 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ClientBlobCache::Server::ActiveTransfersManager>> mClientCacheManager;
274 ::ll::TypedStorage<8, 64, ::std::unordered_map<::NetworkIdentifierWithSubId, ::Json::Value>>
275 mServerStorageForClientsConnectingAttempt;
276 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::Social::Nonce>> mPlayerNonces;
277 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ClassroomModeNetworkHandler>> mCompanionHandler;
278 ::ll::TypedStorage<8, 80, ::std::mutex> mValidatePlayerMutex;
279 ::ll::TypedStorage<1, 1, bool> mAllowIncoming;
280 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IServerNetworkController>> mServerNetworkController;
281 ::ll::TypedStorage<8, 32, ::std::string> mServerName;
282 ::ll::TypedStorage<4, 4, int> mMaxNumPlayers;
283 ::ll::TypedStorage<8, 64, ::std::unordered_set<::mce::UUID>> mKnownEmotePieceIdLookup;
284 ::ll::TypedStorage<8, 24, ::std::vector<::mce::UUID>> mKnownEmotePieceIds;
288 ::std::unordered_map<
290 ::std::unordered_map<::std::string, ::std::shared_ptr<::ResourcePackFileUploadManager>>>>
291 mResourceUploadManagers;
292 ::ll::TypedStorage<8, 16, ::gsl::not_null<::std::shared_ptr<::Bedrock::Threading::SharedAsync<void>>>>
295 TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::ResourcePackPathLifetimeHelpers::ResourcePackPathCache>>>
296 mResourcePackPathCache;
297 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::ServerConnectionAuthValidator>>>
298 mConnectionAuthValidator;
299 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::TaskGroup>>> mNetworkTaskGroup;
300 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::AsyncJoinTaskManager>>> mAsyncJoinTaskManager;
301 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mIOTaskGroup;
302 ::ll::TypedStorage<1, 1, bool> mIsTrial;
303 ::ll::TypedStorage<8, 64, ::std::unordered_map<::PackIdVersion, ::std::string>> mPackIdToContentKey;
304 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::GameSpecificNetEventCallback>> mGameSpecificNetEventCallback;
308 ::std::unordered_map<::NetworkIdentifier, ::std::unique_ptr<::ServerNetworkHandler::TransferBuilderBatcher>>>
309 mTransferBuilderBatcher;
310 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::GameTestNetworkAdapter>> mGameTestAdapter;
311 ::ll::TypedStorage<8, 40, ::ServiceReference<::AppConfigs>> mAppConfigs;
312 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BiomeDefinitionListPacket const>> mBiomeDefinitionListWithoutCSCG;
313 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BiomeDefinitionListPacket const>> mBiomeDefinitionListWithCSCG;
314 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IEDUSystems>> mEduSystems;
315 ::ll::TypedStorage<8, 384, ::std::optional<::ServerConfiguration::ServerConfigurationJoinInfo>>
316 mServerConfigurationJoinInfo;
317 ::ll::TypedStorage<8, 128, ::Social::Events::ServerTelemetryData> mServerTelemetryData;
318 ::ll::TypedStorage<8, 256, ::ServerNetworkHandlerDependencies const> mDependencies;
323 mOnPlayerDisconnected;
329 mOnPlayerNetworkDisconnected;
337 mOnPlayerNetworkConnected;
342 ServerNetworkHandler& operator=(ServerNetworkHandler
const&);
343 ServerNetworkHandler(ServerNetworkHandler
const&);
344 ServerNetworkHandler();
349 virtual ~ServerNetworkHandler() =
default;
351 virtual void onValidPacketReceived(
353 ::MinecraftPacketIds packetId,
354 ::SubClientId senderSubId,
358 virtual void onWebsocketRequest(
359 ::std::string
const& serverAddress,
360 ::std::string
const& payload,
361 ::std::function<
void()> errorCallback
365 getOnPlayerNetworkDisconnectedConnector() ;
367 virtual ::Bedrock::PubSub::Connector<
369 getOnPlayerNetworkConnectedConnector() ;
371 virtual void onInvalidPlayerJoinedLobby(
::mce::UUID const& uuid, ::std::string
const& xuid) ;
377 virtual void onXboxUserBlocked(::std::string
const& xuid) ;
379 virtual void onXboxUserUnblocked(::std::string
const& xuid) ;
381 virtual void onPlayerReady(
::Player& player) ;
383 virtual void handlePacketViolation(
384 ::std::shared_ptr<::IPacketSecurityController>
const& packetSecurityController,
385 ::std::error_code
const& errorCode,
386 ::PacketViolationResponse
const response,
387 ::MinecraftPacketIds
const packetId,
390 ::SubClientId
const clientSubId,
391 ::SubClientId
const senderSubId,
392 uint
const packetSize
395 virtual void sendPacketViolationWarningPacket(
396 ::std::error_code
const& errorCode,
397 ::PacketViolationResponse violationResponse,
398 ::MinecraftPacketIds violatingPacketId,
401 ::SubClientId clientSubId
404 virtual void sendServerLegacyParticle(::ParticleType name,
::Vec3 const& pos,
::Vec3 const&,
int data) ;
409 virtual void onDisconnect(
411 ::Connection::DisconnectFailReason
const discoReason,
412 ::Connection::DisconnectionStage
const disconnectStage,
413 ::std::string
const& messageFromServer,
414 ::std::string
const& messageBodyOverride,
416 ::std::string
const& telemetryOverride
419 virtual ::IncomingPacketFilterResult allowIncomingPacketId(
421 ::MinecraftPacketIds packetId,
425 virtual ::OutgoingPacketFilterResult
426 allowOutgoingPacket(::std::vector<::NetworkIdentifierWithSubId>
const& ids,
::Packet const& packet) ;
435 handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::BlockActorDataPacket> packet) ;
477 handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::InventoryTransactionPacket> packet) ;
485 virtual void handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::LoginPacket> packet) ;
493 virtual void handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::MobEquipmentPacket> packet) ;
555 handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::SubClientLoginPacket> packet) ;
600 virtual void sendSubClientLoginMessageLocal(
607 virtual void onTick() ;
609 virtual ::GameSpecificNetEventCallback* getGameSpecificNetEventCallback() ;
615 virtual ::std::optional<::PlayerAuthenticationInfo>
618 virtual void _onClientAsyncAuthorized(
622 ::std::optional<::MessToken>
const& hostMessToken
625 virtual ::ServerPlayer* _getServerPlayer(
::NetworkIdentifier const& source, ::SubClientId subId);
631 MCAPI ServerNetworkHandler(
634 ::std::optional<::ServerConfiguration::ServerConfigurationJoinInfo>
const& serverJoinInfo,
638 ::Bedrock::NotNullNonOwnerPtr<::MinecraftServiceKeyManager> minecraftServiceKeys,
649 ::std::unordered_map<::PackIdVersion, ::std::string>
const& packIdToContentKey,
655 ::std::shared_ptr<::ScriptPackSettingsCache> packSettingsCache,
661 MCAPI
int _getActiveAndInProgressPlayerCount(
::mce::UUID excludePlayer)
const;
663 MCAPI ::std::optional<::MessToken> _getJoinerMessToken(::std::string
const& eduTokenChain);
665 MCAPI ::ResourcePackFileUploadManager&
666 _getResourcePackFileUploadManager(
::NetworkIdentifier const& source, ::std::string
const& resourceName);
668 MCAPI
void _handleFinalVerdict(
670 ::std::reference_wrapper<::ConnectionRequest const>,
671 ::std::reference_wrapper<::SubClientConnectionRequest const>>
const& connectionRequest,
674 ::SubClientId subClientId,
675 ::std::optional<::MessToken> messToken,
676 ::nonstd::expected<::AsyncJoinAllow, ::AsyncJoinDeny> finalVerdict
679 MCAPI
bool _isPrimaryOrSecondaryPlayerInServer(
::mce::UUID const& playerId)
const;
683 MCAPI
void _onPlayerLeft(
::ServerPlayer* player,
bool skipMessage);
685 MCAPI
void _onSubClientAuthenticated(
687 ::std::shared_ptr<::SubClientLoginPacket> packet,
691 MCAPI
void _processValidatedLoginPacket(
693 ::std::shared_ptr<::LoginPacket> packet,
695 ::std::optional<::MessToken>
const& hostMessToken
702 MCAPI
bool _updatePermissions(
710 MCAPI ::ServerPlayer*
711 _validatePrimaryPlayerForSubClient(
::NetworkIdentifier const& source, ::SubClientId subClientId);
713 MCAPI
void addToDenyList(
::mce::UUID const& uuid, ::std::string
const& xuid);
715 MCAPI
void allowIncomingConnections(::std::string
const& serverName,
bool shouldAnnounce);
717 MCAPI ::OwnerPtr<::EntityContext> createNewPlayer(
723 MCAPI ::OwnerPtr<::EntityContext> createSimulatedPlayer(
724 ::std::string
const& name,
725 ::std::string
const& xuid,
726 ::std::optional<::ActorUniqueID> idOverride
729 MCAPI
void disconnectClient(
731 ::SubClientId
const subId,
732 ::Connection::DisconnectFailReason
const disconnectReason
735 MCAPI
void disconnectClientWithMessage(
738 ::Connection::DisconnectFailReason discoReason,
739 ::std::string
const& message,
740 ::std::optional<::std::string> filteredMessage
744 disconnectPrimaryClient(
::NetworkIdentifier const&
id, ::Connection::DisconnectFailReason disconnectReason);
749 MCAPI
void engineDownloadingFinishedResponseHelper(
754 MCAPI
void engineDownloadingResponseHelper(
759 MCAPI ::PlayerAuthenticationInfo fetchPlayerAuthenticationInfo(
::NetworkIdentifier const& source);
762 MCAPI ::std::string getServerName()
const;
767 MCAPI
void onStartShutdown();
769 MCAPI
void removeFromDenyList(
::mce::UUID const& uuid, ::std::string
const& xuid);
771 MCAPI
void sendLoginMessageLocal(
785 MCAPI
bool tryToLoadPlayer(
791 MCAPI
void updateServerAnnouncement();
799 MCAPI
static bool _isServerTextEnabled(::ServerTextEvent
const& textEvent);
801 MCAPI
static void _populateCDNValues(
802 ::std::vector<::PackInfoData>& resourcePacksData,
803 ::std::vector<::std::pair<::std::string, ::std::string>>& cdnUrls,
804 ::std::string
const& deviceModel
807 MCAPI
static void _updateCommandBlock(
820 ::std::optional<::ServerConfiguration::ServerConfigurationJoinInfo>
const& serverJoinInfo,
824 ::Bedrock::NotNullNonOwnerPtr<::MinecraftServiceKeyManager> minecraftServiceKeys,
835 ::std::unordered_map<::PackIdVersion, ::std::string>
const& packIdToContentKey,
841 ::std::shared_ptr<::ScriptPackSettingsCache> packSettingsCache,
849 MCAPI
void $onValidPacketReceived(
851 ::MinecraftPacketIds packetId,
852 ::SubClientId senderSubId,
856 MCAPI
void $onWebsocketRequest(
857 ::std::string
const& serverAddress,
858 ::std::string
const& payload,
859 ::std::function<
void()> errorCallback
863 $getOnPlayerNetworkDisconnectedConnector();
865 MCAPI ::Bedrock::PubSub::Connector<
867 $getOnPlayerNetworkConnectedConnector();
869 MCAPI
void $onInvalidPlayerJoinedLobby(
::mce::UUID const& uuid, ::std::string
const& xuid);
875 MCAPI
void $onXboxUserBlocked(::std::string
const& xuid);
877 MCAPI
void $onXboxUserUnblocked(::std::string
const& xuid);
879 MCFOLD
void $onPlayerReady(
::Player& player);
881 MCAPI
void $handlePacketViolation(
882 ::std::shared_ptr<::IPacketSecurityController>
const& packetSecurityController,
883 ::std::error_code
const& errorCode,
884 ::PacketViolationResponse
const response,
885 ::MinecraftPacketIds
const packetId,
888 ::SubClientId
const clientSubId,
889 ::SubClientId
const senderSubId,
890 uint
const packetSize
893 MCAPI
void $sendPacketViolationWarningPacket(
894 ::std::error_code
const& errorCode,
895 ::PacketViolationResponse violationResponse,
896 ::MinecraftPacketIds violatingPacketId,
899 ::SubClientId clientSubId
902 MCAPI
void $sendServerLegacyParticle(::ParticleType name,
::Vec3 const& pos,
::Vec3 const&,
int data);
906 MCAPI
void $onDisconnect(
908 ::Connection::DisconnectFailReason
const discoReason,
909 ::Connection::DisconnectionStage
const disconnectStage,
910 ::std::string
const& messageFromServer,
911 ::std::string
const& messageBodyOverride,
913 ::std::string
const& telemetryOverride
916 MCAPI ::IncomingPacketFilterResult $allowIncomingPacketId(
918 ::MinecraftPacketIds packetId,
922 MCAPI ::OutgoingPacketFilterResult
923 $allowOutgoingPacket(::std::vector<::NetworkIdentifierWithSubId>
const& ids,
::Packet const& packet);
931 MCAPI
void $handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::BlockActorDataPacket> packet);
971 MCAPI
void $handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::InventoryTransactionPacket> packet);
979 MCAPI
void $handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::LoginPacket> packet);
987 MCAPI
void $handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::MobEquipmentPacket> packet);
1043 MCAPI
void $handle(
::NetworkIdentifier const& source, ::std::shared_ptr<::SubClientLoginPacket> packet);
1085 MCAPI
void $sendSubClientLoginMessageLocal(
1092 MCAPI
void $onTick();
1094 MCAPI ::GameSpecificNetEventCallback* $getGameSpecificNetEventCallback();
1100 MCAPI ::std::optional<::PlayerAuthenticationInfo>
1103 MCAPI
void $_onClientAsyncAuthorized(
1107 ::std::optional<::MessToken>
const& hostMessToken
1110 MCAPI ::ServerPlayer* $_getServerPlayer(
::NetworkIdentifier const& source, ::SubClientId subId);