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