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 {}; }
39 *(T*)storage = (T)registry.getEnumData(token);
43template <concepts::Require<std::is_enum> T>
46 static constexpr CommandParameterDataType dataType() {
return CommandParameterDataType::Enum; }
47 static constexpr CommandParameterOption options() {
return CommandParameterOption::EnumAutocompleteExpansion; }
48 static constexpr std::string_view enumNameOrPostfix() {
return enum_name_v<T>; }
49 static void transformData(
CommandParameterData&) { CommandRegistrar::getInstance().template tryRegisterEnum<T>(); }
51template <concepts::Specializes<SoftEnum> T>
53 static constexpr CommandParameterDataType dataType() {
return CommandParameterDataType::SoftEnum; }
54 static constexpr CommandParameterOption options() {
return CommandParameterOption::EnumAutocompleteExpansion; }
55 static inline CommandRegistry::ParseFunction parseFn() {
return &CommandRegistry::parse<std::string>; }
56 static constexpr std::string_view enumNameOrPostfix() {
return enum_name_v<T>; }
59 CommandRegistrar::getInstance().template tryRegisterSoftEnum<T>();
80 static constexpr CommandParameterOption options() {
return CommandParameterOption::HasSemanticConstraint; }
85 static constexpr CommandParameterOption options() {
return CommandParameterOption::HasSemanticConstraint; }
98inline bool CommandRegistry::parse(
104 std::vector<std::string>& errorParams
107 if constexpr (
requires {
typename Traits::Parser; }) {
108 return (
typename Traits::Parser{})(*
this, storage, token, origin, version, error, errorParams);
110 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:17
Definition CommandRegistry.h:44
Definition MobEffect.h:27
Definition ActorDefinitionIdentifier.h:13
Definition CommandRegistry.h:373
Definition ParamTraits.h:62
Definition ParamTraits.h:35
Definition ParamTraits.h:23
Definition ParamTraits.h:33