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