3#include "ll/api/base/Meta.h"
4#include "ll/api/command/Optional.h"
5#include "ll/api/command/ParamTraits.h"
6#include "ll/api/command/Runtime/RuntimeEnum.h"
8#include "mc/deps/core/utility/AutomaticID.h"
9#include "mc/deps/core/utility/typeid_t.h"
10#include "mc/deps/json/Value.h"
11#include "mc/server/commands/BlockStateCommandParam.h"
12#include "mc/server/commands/Command.h"
13#include "mc/server/commands/CommandBlockName.h"
14#include "mc/server/commands/CommandFilePath.h"
15#include "mc/server/commands/CommandIntegerRange.h"
16#include "mc/server/commands/CommandItem.h"
17#include "mc/server/commands/CommandMessage.h"
18#include "mc/server/commands/CommandPositionFloat.h"
19#include "mc/server/commands/CommandRawText.h"
20#include "mc/server/commands/CommandWildcardInt.h"
21#include "mc/server/commands/RelativeFloat.h"
22#include "mc/server/commands/WildcardCommandSelector.h"
23#include "mc/world/actor/ActorDefinitionIdentifier.h"
24#include "mc/world/actor/player/Player.h"
25#include "mc/world/effect/MobEffect.h"
27namespace ll::command {
29using ParamKindType = size_t;
33enum Kind : ParamKindType {
64using ParamKindList = meta::TypeList<
72 CommandSelector<Actor>,
73 CommandSelector<Player>,
81 std::vector<BlockStateCommandParam>,
83 ActorDefinitionIdentifier
const*,
84 std::unique_ptr<::Command>,
89 WildcardCommandSelector<Actor>
95 using Optional<ParamKindList::to<std::variant>>::Optional;
97 ParamKindType index()
const {
return mValue.index(); }
98 bool hold(ParamKindType kind)
const {
return has_value() && kind == index(); }
100 decltype(
auto) get()
const {
101 return std::get<N>(value());
Definition ParamKind.h:93