LeviLamina
Loading...
Searching...
No Matches
ServerPlayer.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/certificates/identity/PlayerAuthenticationType.h"
7#include "mc/common/SubClientId.h"
8#include "mc/deps/core/platform/PlatformType.h"
9#include "mc/deps/core/string/HashedString.h"
10#include "mc/deps/core/utility/AutomaticID.h"
11#include "mc/deps/core/utility/CrashDumpLogStringID.h"
12#include "mc/deps/core/utility/NonOwnerPointer.h"
13#include "mc/deps/input/InputMode.h"
14#include "mc/deps/shared_types/legacy/actor/ArmorSlot.h"
15#include "mc/legacy/ActorUniqueID.h"
16#include "mc/util/CallbackToken.h"
17#include "mc/util/HudElement.h"
18#include "mc/util/HudVisibility.h"
19#include "mc/world/ContainerID.h"
20#include "mc/world/actor/ActorEvent.h"
21#include "mc/world/actor/ActorInitializationMethod.h"
22#include "mc/world/actor/ActorSwingSource.h"
23#include "mc/world/actor/player/Player.h"
24#include "mc/world/actor/player/ServerLocatorBar.h"
25#include "mc/world/actor/player/VanillaWaypointManager.h"
26#include "mc/world/inventory/InventoryMenu.h"
27#include "mc/world/level/GameType.h"
28#include "mc/world/level/Tick.h"
29
30// auto generated forward declare list
31// clang-format off
32class Actor;
34class BlockActor;
35class BlockPos;
36class ChunkSource;
38class CompoundTag;
39class Container;
41class DataLoadHelper;
42class Dimension;
43class EntityContext;
46class ItemStack;
47class Level;
49class Packet;
50class PacketSender;
54class TextObjectRoot;
55class Vec3;
56struct INpcDialogueData;
60namespace Bedrock::DDUI { class DataStoreSyncServer; }
61namespace ClientBlobCache::Server { class ActiveTransfersManager; }
62namespace Editor { class IEditorManager; }
63namespace Editor { class IEditorPlayer; }
64namespace mce { class UUID; }
66// clang-format on
67
68class ServerPlayer : public ::Player {
69public:
70 // ServerPlayer inner types declare
71 // clang-format off
72 struct NearbyActor;
73 // clang-format on
74
75 // ServerPlayer inner types define
76 struct NearbyActor {
77 public:
78 // NearbyActor inner types define
79 enum class State : int {
80 Unknown = 0,
81 New = 1,
82 Exist = 2,
83 DidExist = 3,
84 };
85
86 public:
87 // member variables
88 // NOLINTBEGIN
89 ::ll::TypedStorage<1, 1, bool> isAutonomous;
90 ::ll::TypedStorage<4, 4, ::ServerPlayer::NearbyActor::State> state;
91 ::ll::TypedStorage<8, 8, ::Actor*> tempActor;
92 // NOLINTEND
93 };
94
95 using OnPlayerLoadedCallback = ::std::function<void(::ServerPlayer&)>;
96
97public:
98 LLNDAPI static ServerPlayer* tryGetFromEntity(::EntityContext& entity, bool includeRemoved);
99
100public:
101 // member variables
102 // NOLINTBEGIN
103 ::ll::TypedStorage<4, 4, ::PlatformType> mPlatformType;
104 ::ll::TypedStorage<8, 8, ::ServerNetworkSystem&> mNetwork;
105 ::ll::TypedStorage<8, 64, ::std::function<void(::ServerPlayer&)>> mOnPlayerLoadedCallback;
106 ::ll::TypedStorage<8, 112, ::InventoryMenu> mInventoryMenu;
107 ::ll::TypedStorage<1, 1, ::ContainerID> mContainerCounter;
108 ::ll::TypedStorage<4, 4, uint> mMaxChunkRadius;
109 ::ll::TypedStorage<1, 1, bool> mIsInitialPlayerLoadHappening;
110 ::ll::TypedStorage<1, 1, bool> mIsTeacher;
111 ::ll::TypedStorage<1, 1, bool> mLocalPlayerInitialized;
112 ::ll::TypedStorage<1, 1, bool> mWaitingForTickingAreasPreload;
113 ::ll::TypedStorage<8, 8, ::Tick> mPrevShieldBlockingTick;
114 ::ll::TypedStorage<4, 4, uint> mClientViewRadius;
115 ::ll::TypedStorage<4, 4, uint> mClientRequestedRadius;
116 ::ll::TypedStorage<1, 1, bool> mIsCompatibleWithClientSideChunkGen;
117 ::ll::TypedStorage<8, 40, ::std::optional<::std::string>> mPartyId;
118 ::ll::TypedStorage<4, 4, int> mRemainingStructureRefreshTicks;
119 ::ll::TypedStorage<8, 48, ::HashedString> mCurrentStructureFeature;
120 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ActorUniqueID, ::ServerPlayer::NearbyActor>> mNearbyActors;
121 ::ll::TypedStorage<8, 16, ::CallbackToken> mCloseContainerToken;
122 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Editor::IEditorPlayer>> mEditorServerPlayer;
123 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Bedrock::DDUI::DataStoreSyncServer>> mDataStoreSync;
124 ::ll::TypedStorage<1, 1, bool> mHasQueuedViewMove;
125 ::ll::TypedStorage<1, 1, bool> mIsPendingDisconnect;
126 ::ll::TypedStorage<4, 52, ::std::array<::HudVisibility, 13>> mHudElementsVisibilityState;
127 ::ll::TypedStorage<8, 24, ::ServerLocatorBar> mServerLocatorBar;
128 ::ll::TypedStorage<8, 24, ::VanillaWaypointManager> mVanillaWaypointManager;
129 // NOLINTEND
130
131public:
132 // prevent constructor by default
133 ServerPlayer& operator=(ServerPlayer const&);
134 ServerPlayer(ServerPlayer const&);
135 ServerPlayer();
136
137public:
138 // virtual functions
139 // NOLINTBEGIN
140 virtual ~ServerPlayer() /*override*/;
141
142 virtual void
143 initializeComponents(::ActorInitializationMethod method, ::VariantParameterList const& params) /*override*/;
144
145 virtual void aiStep() /*override*/;
146
147 virtual void normalTick() /*override*/;
148
149 virtual void knockback(
150 ::Actor* source,
151 int dmg,
152 float xd,
153 float zd,
154 float horizontalPower,
155 float verticalPower,
156 float heightCap
157 ) /*override*/;
158
159 virtual void die(::ActorDamageSource const& source) /*override*/;
160
161 virtual void moveView() /*override*/;
162
163 virtual void moveSpawnView(::Vec3 const& spawnPosition, ::DimensionType dimension) /*override*/;
164
165 virtual void frameUpdate(::FrameUpdateContextBase&) /*override*/;
166
167 virtual bool isValidTarget(::Actor* attacker) const /*override*/;
168
169 virtual bool swing(::ActorSwingSource swingSource) /*override*/;
170
171 virtual void
172 hurtArmorSlots(::ActorDamageSource const& source, int dmg, ::std::bitset<5> const hurtSlots) /*override*/;
173
174 virtual void sendArmorDamage(::std::bitset<5> const damagedSlots) /*override*/;
175
176 virtual void sendArmor(::std::bitset<5> const armorSlots) /*override*/;
177
178 virtual void setDamagedArmor(::SharedTypes::Legacy::ArmorSlot slot, ::ItemStack const& item) /*override*/;
179
180 virtual void sendInventory(bool shouldSelectSlot) /*override*/;
181
182 virtual void sendInventoryTransaction(::InventoryTransaction const& transaction) const /*override*/;
183
184 virtual void sendComplexInventoryTransaction(::std::unique_ptr<::ComplexInventoryTransaction> transaction) const
185 /*override*/;
186
187 virtual void sendNetworkPacket(::Packet& packet) const /*override*/;
188
189 virtual void displayTextObjectMessage(
190 ::TextObjectRoot const& textObject,
191 ::std::string const& fromXuid,
192 ::std::string const& fromPlatformId
193 ) /*override*/;
194
195 virtual void displayTextObjectWhisperMessage(
196 ::ResolvedTextObject const& textObject,
197 ::std::string const& xuid,
198 ::std::string const& platformId
199 ) /*override*/;
200
201 virtual void displayTextObjectWhisperMessage(
202 ::std::string const& message,
203 ::std::string const& xuid,
204 ::std::string const& platformId
205 ) /*override*/;
206
207 virtual void displayWhisperMessage(
208 ::std::string const& author,
209 ::std::string const& message,
210 ::std::optional<::std::string> const filteredMessage,
211 ::std::string const& xuid,
212 ::std::string const& platformId
213 ) /*override*/;
214
215 virtual void openTrading(::ActorUniqueID const& uniqueID, bool useNewScreen) /*override*/;
216
217 virtual void openPortfolio() /*override*/;
218
219 virtual void openNpcInteractScreen(::std::shared_ptr<::INpcDialogueData> npc) /*override*/;
220
221 virtual void openInventory() /*override*/;
222
223 virtual void openBook(int, bool, int, ::BlockActor* lectern) /*override*/;
224
225 virtual void openSign(::BlockPos const& position, bool isFrontSide) /*override*/;
226
227 virtual void checkMovementStats(::Vec3 const& d) /*override*/;
228
229 virtual ::HashedString getCurrentStructureFeature() const /*override*/;
230
231 virtual void handleEntityEvent(::ActorEvent id, int data) /*override*/;
232
233 virtual void setContainerData(::IContainerManager& menu, int id, int value) /*override*/;
234
235 virtual void slotChanged(
236 ::IContainerManager& menu,
237 ::Container& container,
238 int slot,
239 ::ItemStack const& oldItem,
240 ::ItemStack const& newItem,
241 bool isResultSlot
242 ) /*override*/;
243
244 virtual void refreshContainer(::IContainerManager& menu) /*override*/;
245
246 virtual void stopSleepInBed(bool forcefulWakeUp, bool updateLevelList) /*override*/;
247
248 virtual void setArmor(::SharedTypes::Legacy::ArmorSlot const armorSlot, ::ItemStack const& item) /*override*/;
249
250 virtual void setOffhandSlot(::ItemStack const& item) /*override*/;
251
252 virtual void clearVanishEnchantedItemsOnDeath() /*override*/;
253
254 virtual bool canChangeDimensionsUsingPortal() const /*override*/;
255
256 virtual void changeDimension(::DimensionType toId) /*override*/;
257
258 virtual void changeDimensionWithCredits(::DimensionType dimension) /*override*/;
259
260 virtual void setPlayerGameType(::GameType gameType) /*override*/;
261
262 virtual void prepareRegion(::ChunkSource& mainChunkSource) /*override*/;
263
264 virtual bool isActorRelevant(::Actor const& actor) /*override*/;
265
266 virtual ::ActorUniqueID getControllingPlayer() const /*override*/;
267
268 virtual void destroyRegion() /*override*/;
269
270 virtual void onSuspension() /*override*/;
271
272 virtual void onLinkedSlotsChanged() /*override*/;
273
274 virtual bool isTeacher() const /*override*/;
275
276 virtual bool isLoading() const /*override*/;
277
278 virtual bool load(::CompoundTag const& tag, ::DataLoadHelper& dataLoadHelper) /*override*/;
279
280 virtual bool isPlayerInitialized() const /*override*/;
281
282 virtual void respawn() /*override*/;
283
284 virtual ::PlayerEventCoordinator& getPlayerEventCoordinator() /*override*/;
285
286 virtual void destroyEditorPlayer() /*override*/;
287
288 virtual ::Bedrock::NonOwnerPointer<::Editor::IEditorPlayer> getEditorPlayer() const /*override*/;
289
290 virtual uchar getMaxChunkBuildRadius() const /*override*/;
291
292 virtual ::std::optional<::std::string> const getPartyId_UNTRUSTED() const /*override*/;
293
294 virtual int _getSpawnChunkLimit() const;
295
296 virtual void _updateChunkPublisherView(::Vec3 const& position, float minDistance);
297
298 virtual void _serverInitItemStackIds() /*override*/;
299 // NOLINTEND
300
301public:
302 // member functions
303 // NOLINTBEGIN
304 MCAPI ServerPlayer(
305 ::Level& level,
306 ::PacketSender& packetSender,
307 ::ServerNetworkSystem& network,
308 ::ClientBlobCache::Server::ActiveTransfersManager& clientCacheMirror,
309 ::GameType playerGameType,
310 bool isHostingPlayer,
311 ::NetworkIdentifier const& owner,
312 ::SubClientId subid,
313 ::std::function<void(::ServerPlayer&)> onPlayerLoadedCallback,
314 ::mce::UUID uuid,
315 ::std::string const& deviceId,
316 ::PlayerAuthenticationType authType,
317 ::PlayerAuthenticationInfo const& authInfo,
318 int maxChunkRadius,
319 bool enableItemStackNetManager,
320 ::EntityContext& entityContext,
321 ::PlatformType platformType,
322 ::InputMode inputMode,
323 ::SyncedClientOptionsComponent clientOptions
324 );
325
326 MCAPI bool _checkForLoadedTickingAreas() const;
327
328 MCAPI void _logCDEvent(
329 ::CrashDumpLogStringID option1,
330 ::CrashDumpLogStringID option2,
331 ::CrashDumpLogStringID option3,
332 ::CrashDumpLogStringID option4
333 );
334
335 MCAPI void _removeNearbyEntities();
336
337 MCAPI void _setContainerManagerModel(::std::shared_ptr<::ContainerManagerModel> menu);
338
339 MCAPI void _updateNearbyActors();
340
341 MCAPI void createEditorPlayer(::Bedrock::NonOwnerPointer<::Editor::IEditorManager> editorManager);
342
343 MCAPI void disconnect();
344
345 MCAPI void doDeleteContainerManager(bool forceDisconnect);
346
347 MCAPI void doInitialSpawn();
348
349 MCAPI void handleActorPickRequestOnServer(::Actor& target, bool withData, bool isActorAgentAndEduMode);
350
351 MCAPI void handleBlockPickRequestOnServer(::BlockPos const& position, bool withData);
352
353 MCAPI void hideAllExcept(::std::optional<::std::vector<::HudElement>> const& hudElements);
354
355 MCAPI void initiateContainerClose();
356
357 MCAPI bool isInPickRangeOf(::BlockPos const& pos) const;
358
359 MCAPI ::ContainerID openUnmanagedContainer();
360
361 MCAPI void postReplicationTick(::Tick const& currentTick);
362
363 MCAPI void preReplicationTick(::Tick const& currentTick);
364
365 MCAPI bool selectItem(::ItemStack const& item);
366
367 MCAPI void setClientChunkRadius(uint requestedRadius, uchar clientMaxChunkRadius);
368
369 MCAPI void setHudVisibilityState(
370 ::HudVisibility hudVisibility,
371 ::std::optional<::std::vector<::HudElement>> const& hudElements
372 );
373
374 MCAPI void setIsShowingCredits(bool value);
375
376 MCAPI void setPartyId(::std::optional<::std::string> partyId);
377 // NOLINTEND
378
379public:
380 // constructor thunks
381 // NOLINTBEGIN
382 MCAPI void* $ctor(
383 ::Level& level,
384 ::PacketSender& packetSender,
385 ::ServerNetworkSystem& network,
386 ::ClientBlobCache::Server::ActiveTransfersManager& clientCacheMirror,
387 ::GameType playerGameType,
388 bool isHostingPlayer,
389 ::NetworkIdentifier const& owner,
390 ::SubClientId subid,
391 ::std::function<void(::ServerPlayer&)> onPlayerLoadedCallback,
392 ::mce::UUID uuid,
393 ::std::string const& deviceId,
394 ::PlayerAuthenticationType authType,
395 ::PlayerAuthenticationInfo const& authInfo,
396 int maxChunkRadius,
397 bool enableItemStackNetManager,
398 ::EntityContext& entityContext,
399 ::PlatformType platformType,
400 ::InputMode inputMode,
401 ::SyncedClientOptionsComponent clientOptions
402 );
403 // NOLINTEND
404
405public:
406 // destructor thunk
407 // NOLINTBEGIN
408 MCAPI void $dtor();
409 // NOLINTEND
410
411public:
412 // virtual function thunks
413 // NOLINTBEGIN
414 MCAPI void $initializeComponents(::ActorInitializationMethod method, ::VariantParameterList const& params);
415
416 MCAPI void $aiStep();
417
418 MCAPI void $normalTick();
419
420 MCAPI void $knockback(
421 ::Actor* source,
422 int dmg,
423 float xd,
424 float zd,
425 float horizontalPower,
426 float verticalPower,
427 float heightCap
428 );
429
430 MCAPI void $die(::ActorDamageSource const& source);
431
432 MCAPI void $moveView();
433
434 MCAPI void $moveSpawnView(::Vec3 const& spawnPosition, ::DimensionType dimension);
435
436 MCFOLD void $frameUpdate(::FrameUpdateContextBase&);
437
438 MCAPI bool $isValidTarget(::Actor* attacker) const;
439
440 MCAPI bool $swing(::ActorSwingSource swingSource);
441
442 MCAPI void $hurtArmorSlots(::ActorDamageSource const& source, int dmg, ::std::bitset<5> const hurtSlots);
443
444 MCAPI void $sendArmorDamage(::std::bitset<5> const damagedSlots);
445
446 MCAPI void $sendArmor(::std::bitset<5> const armorSlots);
447
448 MCAPI void $setDamagedArmor(::SharedTypes::Legacy::ArmorSlot slot, ::ItemStack const& item);
449
450 MCAPI void $sendInventory(bool shouldSelectSlot);
451
452 MCAPI void $sendInventoryTransaction(::InventoryTransaction const& transaction) const;
453
454 MCAPI void $sendComplexInventoryTransaction(::std::unique_ptr<::ComplexInventoryTransaction> transaction) const;
455
456 MCAPI void $sendNetworkPacket(::Packet& packet) const;
457
458 MCAPI void $displayTextObjectMessage(
459 ::TextObjectRoot const& textObject,
460 ::std::string const& fromXuid,
461 ::std::string const& fromPlatformId
462 );
463
464 MCAPI void $displayTextObjectWhisperMessage(
465 ::ResolvedTextObject const& textObject,
466 ::std::string const& xuid,
467 ::std::string const& platformId
468 );
469
470 MCAPI void $displayTextObjectWhisperMessage(
471 ::std::string const& message,
472 ::std::string const& xuid,
473 ::std::string const& platformId
474 );
475
476 MCAPI void $displayWhisperMessage(
477 ::std::string const& author,
478 ::std::string const& message,
479 ::std::optional<::std::string> const filteredMessage,
480 ::std::string const& xuid,
481 ::std::string const& platformId
482 );
483
484 MCAPI void $openTrading(::ActorUniqueID const& uniqueID, bool useNewScreen);
485
486 MCFOLD void $openPortfolio();
487
488 MCFOLD void $openNpcInteractScreen(::std::shared_ptr<::INpcDialogueData> npc);
489
490 MCAPI void $openInventory();
491
492 MCAPI void $openBook(int, bool, int, ::BlockActor* lectern);
493
494 MCAPI void $openSign(::BlockPos const& position, bool isFrontSide);
495
496 MCAPI void $checkMovementStats(::Vec3 const& d);
497
498 MCAPI ::HashedString $getCurrentStructureFeature() const;
499
500 MCAPI void $handleEntityEvent(::ActorEvent id, int data);
501
502 MCAPI void $setContainerData(::IContainerManager& menu, int id, int value);
503
504 MCAPI void $slotChanged(
505 ::IContainerManager& menu,
506 ::Container& container,
507 int slot,
508 ::ItemStack const& oldItem,
509 ::ItemStack const& newItem,
510 bool isResultSlot
511 );
512
513 MCAPI void $refreshContainer(::IContainerManager& menu);
514
515 MCAPI void $stopSleepInBed(bool forcefulWakeUp, bool updateLevelList);
516
517 MCAPI void $setArmor(::SharedTypes::Legacy::ArmorSlot const armorSlot, ::ItemStack const& item);
518
519 MCAPI void $setOffhandSlot(::ItemStack const& item);
520
521 MCAPI void $clearVanishEnchantedItemsOnDeath();
522
523 MCAPI bool $canChangeDimensionsUsingPortal() const;
524
525 MCAPI void $changeDimension(::DimensionType toId);
526
527 MCAPI void $changeDimensionWithCredits(::DimensionType dimension);
528
529 MCAPI void $setPlayerGameType(::GameType gameType);
530
531 MCAPI void $prepareRegion(::ChunkSource& mainChunkSource);
532
533 MCAPI bool $isActorRelevant(::Actor const& actor);
534
535 MCAPI ::ActorUniqueID $getControllingPlayer() const;
536
537 MCAPI void $destroyRegion();
538
539 MCAPI void $onSuspension();
540
541 MCAPI void $onLinkedSlotsChanged();
542
543 MCAPI bool $isTeacher() const;
544
545 MCAPI bool $isLoading() const;
546
547 MCAPI bool $load(::CompoundTag const& tag, ::DataLoadHelper& dataLoadHelper);
548
549 MCAPI bool $isPlayerInitialized() const;
550
551 MCAPI void $respawn();
552
553 MCAPI ::PlayerEventCoordinator& $getPlayerEventCoordinator();
554
555 MCAPI void $destroyEditorPlayer();
556
557 MCAPI ::Bedrock::NonOwnerPointer<::Editor::IEditorPlayer> $getEditorPlayer() const;
558
559 MCAPI uchar $getMaxChunkBuildRadius() const;
560
561 MCAPI ::std::optional<::std::string> const $getPartyId_UNTRUSTED() const;
562
563 MCAPI int $_getSpawnChunkLimit() const;
564
565 MCAPI void $_updateChunkPublisherView(::Vec3 const& position, float minDistance);
566
567 MCAPI void $_serverInitItemStackIds();
568
569
570 // NOLINTEND
571
572public:
573 // vftables
574 // NOLINTBEGIN
575 MCAPI static void** $vftable();
576 // NOLINTEND
577};
Definition ActorDamageSource.h:18
Definition Actor.h:106
Definition DataStoreSyncServer.h:15
Definition BlockActor.h:30
Definition BlockPos.h:19
Definition ChunkSource.h:38
Definition ActiveTransfersManager.h:17
Definition ComplexInventoryTransaction.h:19
Definition CompoundTag.h:23
Definition ContainerManagerModel.h:32
Definition Container.h:33
Definition DataLoadHelper.h:20
Definition Dimension.h:86
Definition IEditorManager.h:25
Definition IEditorPlayer.h:16
Definition EntityContext.h:16
Definition FrameUpdateContextBase.h:5
Definition HashedString.h:5
Definition IContainerManager.h:16
Definition InventoryTransaction.h:21
Definition ItemStack.h:26
Definition Level.h:250
Definition NetworkIdentifier.h:10
Definition PacketSender.h:17
Definition Packet.h:28
Definition PlayerEventCoordinator.h:22
Definition ResolvedTextObject.h:5
Definition ServerNetworkSystem.h:34
Definition TextObjectRoot.h:14
Definition Vec3.h:10
Definition UUID.h:7
STL namespace.
Definition ActorUniqueID.h:5
Definition INpcDialogueData.h:12
Definition PlayerAuthenticationInfo.h:8
Definition ServerPlayer.h:76
Definition SyncedClientOptionsComponent.h:10
Definition Tick.h:5
Definition VariantParameterList.h:13