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