28class CommandSelectorBase {
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{};
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{};
56 bool mExcludeAgents{};
57 bool mIsExplicitIdSelector{};
58 bool mForceDimensionFiltering{};
61 CommandSelectorBase() =
default;
62 CommandSelectorBase(
bool forcePlayer) : mForcePlayer(forcePlayer) {}
71 MCAPI
void addHasItemFilter(
72 ::std::string
const& itemName,
73 ::std::optional<int> auxValue,
75 ::SharedTypes::Legacy::EquipmentSlot equipmentSlot,
79 MCAPI
void addHasPermissionFilters(::std::vector<::HasPermissionFilter>
const& filters);
81 MCAPI
void addHasPropertyFilter(
84 ::std::optional<::std::variant<::CommandRationalRange, bool, ::std::string>>
const& optionalValue
87 MCAPI
void addScoreFilter(
88 ::std::string
const& objName,
90 ::std::function<
int(
bool&, ::std::string
const&,
::Actor const&)> callback
95 MCAPI
bool compile(
::CommandOrigin const& origin, ::std::string& error);
99 MCAPI ::std::string getName()
const;
101 MCFOLD uint64 getResultCount()
const;
103 MCAPI
bool hasName()
const;
107 MCFOLD
bool isExplicitIdSelector()
const;
109 MCAPI
bool matchFamily(
::Actor const& entity)
const;
111 MCAPI
bool matchName(
::Actor const& entity)
const;
113 MCAPI
bool matchTag(
::Actor const& entity)
const;
115 MCAPI
bool matchType(
::Actor const& entity)
const;
117 MCAPI ::std::shared_ptr<::std::vector<::Actor*>> newResults(
::CommandOrigin const& origin)
const;
119 MCAPI
void setExplicitIdSelector(::std::string
const& playerName);
121 MCAPI
void setIncludeDeadPlayers(
bool includeDead);
123 MCAPI
void setType(::CommandSelectionType type);
125 MCFOLD
void setVersion(
int version);
127 MCAPI ~CommandSelectorBase();
133 MCAPI static ::Vec3
const getFeetPos(
int version,
::Actor const& entity);