LeviLamina
Loading...
Searching...
No Matches
PlayerPermissionsManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/deps/core/utility/pub_sub/Publisher.h"
8#include "mc/deps/core/utility/pub_sub/Subscription.h"
9#include "mc/legacy/ActorUniqueID.h"
10#include "mc/server/commands/PlayerPermissionLevel.h"
11#include "mc/world/actor/player/AbilitiesIndex.h"
12
13// auto generated forward declare list
14// clang-format off
15class Player;
18namespace Bedrock::PubSub::ThreadModel { struct SingleThreaded; }
19// clang-format on
20
21class PlayerPermissionsManager {
22public:
23 // member variables
24 // NOLINTBEGIN
25 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::PlayerAbilitiesManager>> mPlayerAbilitiesManager;
26 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::PlayerListManager>> mPlayerListManager;
27 ::ll::TypedStorage<8, 64, ::std::function<::Player*()>> mGetPrimaryLocalPlayer;
28 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mCurrentPlayerID;
29 ::ll::TypedStorage<1, 2, ::std::optional<::PlayerPermissionLevel>> mCurrentPlayerPermissionLevel;
30 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<::AbilitiesIndex, bool>>> mCurrentPlayerPermissionsList;
31 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<::AbilitiesIndex, bool>>> mLocalPlayerPermissionsList;
32 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mPlayerAbilitiesSubscription;
33 ::ll::TypedStorage<
34 8,
35 48,
36 ::Bedrock::PubSub::
38 mPlayerPermissionsChangedPublisher;
39 ::ll::TypedStorage<
40 8,
41 48,
43 void(::ActorUniqueID const&, ::std::optional<::PlayerPermissionLevel>),
45 0>>
46 mCachedPlayerPermissionLevelChangedPublisher;
47 // NOLINTEND
48
49public:
50 // prevent constructor by default
51 PlayerPermissionsManager();
52
53public:
54 // virtual functions
55 // NOLINTBEGIN
56 virtual ~PlayerPermissionsManager() = default;
57
58 virtual bool hasPlayerPermissions(::ActorUniqueID playerId) const;
59 // NOLINTEND
60
61public:
62 // member functions
63 // NOLINTBEGIN
64 MCAPI PlayerPermissionsManager(
67 ::std::function<::Player*()> getPrimaryLocalPlayer
68 );
69
70 MCAPI void _loadLocalPermissionsList();
71
72#ifdef LL_PLAT_C
73 MCAPI void _updatePermissionLevel();
74
75 MCAPI void _updatePermissionsList();
76
77 MCAPI bool arePermissionsSynced(
78 ::std::optional<::PlayerPermissionLevel> playerPermissionLevel,
79 ::std::vector<::std::pair<::AbilitiesIndex, bool>> playerPermissions
80 ) const;
81
82 MCAPI bool evaluateCanEditPermissions(
83 ::ActorUniqueID localPlayerId,
84 bool isPrimaryClient,
85 bool isHostingLocalDedicatedServer
86 ) const;
87
88 MCAPI bool evaluateCanKickPlayer(::ActorUniqueID playerId, ::ActorUniqueID localPlayerId);
89
90 MCAPI ::std::optional<::std::vector<::std::pair<::AbilitiesIndex, bool>>>
91 getCurrentPlayerPermissionsList(::ActorUniqueID playerId) const;
92
93 MCAPI bool loadPlayerPermissions(::ActorUniqueID playerId);
94
95 MCAPI bool savePlayerPermissions(::ActorUniqueID playerId);
96#endif
97 // NOLINTEND
98
99public:
100 // constructor thunks
101 // NOLINTBEGIN
102 MCAPI void* $ctor(
105 ::std::function<::Player*()> getPrimaryLocalPlayer
106 );
107 // NOLINTEND
108
109public:
110 // virtual function thunks
111 // NOLINTBEGIN
112 MCAPI bool $hasPlayerPermissions(::ActorUniqueID playerId) const;
113
114
115 // NOLINTEND
116};
Definition NonOwnerPointer.h:9
Definition Publisher.h:25
Definition PlayerAbilitiesManager.h:19
Definition PlayerListManager.h:23
Definition Player.h:129
Definition ActorUniqueID.h:5