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