9#include "ll/api/base/StdInt.h"
10#include "ll/api/command/CommandRegistrar.h"
11#include "ll/api/command/EnumName.h"
12#include "ll/api/command/Optional.h"
13#include "ll/api/command/SoftEnum.h"
15#include "mc/deps/core/utility/typeid_t.h"
16#include "mc/server/commands/CommandParameterData.h"
17#include "mc/server/commands/CommandParameterDataType.h"
18#include "mc/server/commands/CommandParameterOption.h"
19#include "mc/server/commands/CommandRegistry.h"
21namespace ll::command {
24 static constexpr CommandParameterDataType dataType() {
return CommandParameterDataType::Basic; }
25 static constexpr CommandParameterOption options() {
return CommandParameterOption::None; }
26 static inline CommandRegistry::ParseFunction parseFn() {
return &CommandRegistry::parse<T>; }
27 static constexpr std::string_view enumNameOrPostfix() {
return {}; }
28 static constexpr std::string_view subChain() {
return {}; }
43 std::vector<std::string>&
45 *(T*)storage = (T)registry.getEnumData(token);
49template <concepts::Require<std::is_enum> T>
52 static constexpr CommandParameterDataType dataType() {
return CommandParameterDataType::Enum; }
53 static constexpr CommandParameterOption options() {
return CommandParameterOption::EnumAutocompleteExpansion; }
54 static constexpr std::string_view enumNameOrPostfix() {
return enum_name_v<T>; }
55 static void transformData(
CommandParameterData&) { CommandRegistrar::getInstance().template tryRegisterEnum<T>(); }
57template <concepts::Specializes<SoftEnum> T>
59 static constexpr CommandParameterDataType dataType() {
return CommandParameterDataType::SoftEnum; }
60 static constexpr CommandParameterOption options() {
return CommandParameterOption::EnumAutocompleteExpansion; }
61 static inline CommandRegistry::ParseFunction parseFn() {
return &CommandRegistry::parse<std::string>; }
62 static constexpr std::string_view enumNameOrPostfix() {
return enum_name_v<T>; }
65 CommandRegistrar::getInstance().template tryRegisterSoftEnum<T>();
76 std::vector<std::string>&
92 static constexpr CommandParameterOption options() {
return CommandParameterOption::HasSemanticConstraint; }
97 static constexpr CommandParameterOption options() {
return CommandParameterOption::HasSemanticConstraint; }
110inline bool CommandRegistry::parse(
116 std::vector<std::string>& errorParams
119 if constexpr (
requires {
typename Traits::Parser; }) {
120 return (
typename Traits::Parser{})(*
this, storage, token, origin, version, error, errorParams);
122 static_assert(ll::traits::always_false<T>,
"param traits missing parser type");
Definition AutomaticID.h:6
Definition CommandBlockName.h:12
Definition CommandItem.h:11
Definition CommandOrigin.h:32
Definition CommandParameterData.h:18
Definition CommandRegistry.h:44
Definition MobEffect.h:27
Definition ActorDefinitionIdentifier.h:15
Definition CommandRegistry.h:334
Definition ParamTraits.h:68
Definition ParamTraits.h:35
Definition ParamTraits.h:23
Definition ParamTraits.h:33