LeviLamina
Loading...
Searching...
No Matches
CommandSelectorBase.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/deps/core/math/Vec3.h"
5#include "mc/deps/core/string/HashedString.h"
6#include "mc/server/commands/CommandPosition.h"
7#include "mc/world/actor/ActorDefinitionIdentifier.h"
8
9// auto generated inclusion list
10#include "mc/deps/core/math/Vec3.h"
11#include "mc/deps/shared_types/legacy/item/EquipmentSlot.h"
12#include "mc/server/commands/CommandPosition.h"
13#include "mc/server/commands/CommandSelectionOrder.h"
14#include "mc/server/commands/CommandSelectionType.h"
15#include "mc/world/actor/selectors/InvertableFilter.h"
16
17// auto generated forward declare list
18// clang-format off
19class Actor;
21class CommandOrigin;
23class HashedString;
26// clang-format on
27
29public:
30 // CommandSelectorBase inner types define
31 using FilterFunc = ::std::function<bool(::CommandOrigin const&, ::Actor const&)>;
32
33public:
34 // member variables
35 // NOLINTBEGIN
36 int mVersion{};
37 ::CommandSelectionType mType{};
38 ::CommandSelectionOrder mOrder{};
39 ::std::vector<::InvertableFilter<::std::string>> mNameFilters{};
40 ::std::vector<::InvertableFilter<::ActorDefinitionIdentifier>> mTypeFilters{};
41 ::std::vector<::InvertableFilter<::HashedString>> mFamilyFilters{};
42 ::std::vector<::InvertableFilter<::std::string>> mTagFilters{};
43 ::std::vector<::std::function<bool(::CommandOrigin const&, ::Actor const&)>> mFilterChain{};
44 ::CommandPosition mPosition{};
45 ::Vec3 mBoxDeltas{};
46 float mRadiusMinSqr{0.0f};
47 float mRadiusMaxSqr{std::numeric_limits<float>::max()};
48 uint64 mCount{std::numeric_limits<uint>::max()};
49 bool mIncludeDeadPlayers{};
50 bool mIsPositionBound{};
51 bool mDistanceFiltered{};
52 bool mPositionFiltered{};
53 bool mCountFiltered{};
54 bool mHaveDeltas{};
55 bool mForcePlayer{};
56 bool mExcludeAgents{};
57 bool mIsExplicitIdSelector{};
58 bool mForceDimensionFiltering{};
59 // NOLINTEND
60
61 CommandSelectorBase() = default;
62 CommandSelectorBase(bool forcePlayer) : mForcePlayer(forcePlayer) {}
63
64public:
65 // member functions
66 // NOLINTBEGIN
67 MCAPI void addFamilyFilter(::InvertableFilter<::std::string> const& filter);
68
69 MCAPI void addFilter(::std::function<bool(::CommandOrigin const&, ::Actor const&)> filter);
70
71 MCAPI void addHasItemFilter(
72 ::std::string const& itemName,
73 ::std::optional<int> auxValue,
74 ::CommandIntegerRange const& quantity,
75 ::SharedTypes::Legacy::EquipmentSlot equipmentSlot,
76 ::CommandIntegerRange const& slot
77 );
78
79 MCAPI void addHasPermissionFilters(::std::vector<::HasPermissionFilter> const& filters);
80
81 MCAPI void addHasPropertyFilter(
82 ::HashedString const& propertyName,
83 bool inverted,
84 ::std::optional<::std::variant<::CommandRationalRange, bool, ::std::string>> const& optionalValue
85 );
86
87 MCAPI void addScoreFilter(
88 ::std::string const& objName,
89 ::CommandIntegerRange const& range,
90 ::std::function<int(bool&, ::std::string const&, ::Actor const&)> callback
91 );
92
93 MCAPI void addTypeFilter(::InvertableFilter<::std::string> const& filter);
94
95 MCAPI bool compareName(::std::string const& name) const;
96
97 MCAPI bool compile(::CommandOrigin const& origin, ::std::string& error);
98
99 MCAPI bool filter(::CommandOrigin const& origin, ::Actor& actor) const;
100
101 MCAPI ::std::string getName() const;
102
103 MCAPI bool isExpansionAllowed(::CommandOrigin const& origin) const;
104
105 MCAPI bool isInDimension(::CommandOrigin const& origin, ::Actor& entity) const;
106
107 MCAPI bool matchFamily(::Actor const& entity) const;
108
109 MCAPI bool matchName(::Actor const& entity) const;
110
111 MCAPI bool matchTag(::Actor const& entity) const;
112
113 MCAPI bool matchType(::Actor const& entity) const;
114
115 MCAPI ::std::shared_ptr<::std::vector<::Actor*>> newResults(::CommandOrigin const& origin) const;
116
117 MCAPI ~CommandSelectorBase();
118 // NOLINTEND
119
120public:
121 // static functions
122 // NOLINTBEGIN
123 MCAPI static ::Vec3 const getFeetPos(int version, ::Actor const& entity);
124 // NOLINTEND
125
126public:
127 // destructor thunk
128 // NOLINTBEGIN
129 MCAPI void $dtor();
130 // NOLINTEND
131};
Definition Actor.h:102
Definition CommandIntegerRange.h:5
Definition CommandOrigin.h:32
Definition CommandPosition.h:15
Definition CommandRationalRange.h:5
Definition CommandSelectorBase.h:28
Definition HashedString.h:5
Definition Vec3.h:10
Definition ActorDefinitionIdentifier.h:15
Definition HasPermissionFilter.h:8
Definition InvertableFilter.h:6