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/shared_types/legacy/item/EquipmentSlot.h"
11#include "mc/server/commands/CommandSelectionOrder.h"
12#include "mc/server/commands/CommandSelectionType.h"
13#include "mc/world/actor/selectors/InvertableFilter.h"
14
15// auto generated forward declare list
16// clang-format off
17class Actor;
19class CommandOrigin;
20class CommandPosition;
22class HashedString;
23class Vec3;
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 addHasItemFilter(
70 ::std::string const& itemName,
71 ::std::optional<int> auxValue,
72 ::CommandIntegerRange const& quantity,
73 ::SharedTypes::Legacy::EquipmentSlot equipmentSlot,
74 ::CommandIntegerRange const& slot
75 );
76
77 MCAPI void addHasPermissionFilters(::std::vector<::HasPermissionFilter> const& filters);
78
79 MCAPI void addHasPropertyFilter(
80 ::HashedString const& propertyName,
81 bool inverted,
82 ::std::optional<::std::variant<::CommandRationalRange, bool, ::std::string>> const& optionalValue
83 );
84
85 MCAPI void addScoreFilter(
86 ::std::string const& objName,
87 ::CommandIntegerRange const& range,
88 ::std::function<int(bool&, ::std::string const&, ::Actor const&)> callback
89 );
90
91 MCAPI void addTypeFilter(::InvertableFilter<::std::string> const& filter);
92
93 MCAPI bool compareName(::std::string const& name) const;
94
95 MCAPI bool compile(::CommandOrigin const& origin, ::std::string& error);
96
97 MCAPI bool filter(::CommandOrigin const& origin, ::Actor& actor) const;
98
99 MCAPI ::std::string getName() const;
100
101 MCAPI bool isExpansionAllowed(::CommandOrigin const& origin) const;
102
103 MCAPI bool isInDimension(::CommandOrigin const& origin, ::Actor& entity) const;
104
105 MCAPI bool matchFamily(::Actor const& entity) const;
106
107 MCAPI bool matchName(::Actor const& entity) const;
108
109 MCAPI bool matchTag(::Actor const& entity) const;
110
111 MCAPI bool matchType(::Actor const& entity) const;
112
113 MCAPI ::std::shared_ptr<::std::vector<::Actor*>> newResults(::CommandOrigin const& origin) const;
114
115 MCAPI ~CommandSelectorBase();
116 // NOLINTEND
117
118public:
119 // static functions
120 // NOLINTBEGIN
121 MCAPI static ::Vec3 const getFeetPos(int version, ::Actor const& entity);
122 // NOLINTEND
123
124public:
125 // destructor thunk
126 // NOLINTBEGIN
127 MCAPI void $dtor();
128 // NOLINTEND
129};
Definition Actor.h:104
Definition CommandIntegerRange.h:5
Definition CommandOrigin.h:32
Definition CommandPosition.h:13
Definition CommandRationalRange.h:5
Definition CommandSelectorBase.h:28
Definition HashedString.h:5
Definition Vec3.h:10
Definition ActorDefinitionIdentifier.h:13
Definition HasPermissionFilter.h:5
Definition InvertableFilter.h:6