LeviLamina
Loading...
Searching...
No Matches
CommandHandle.h
1#pragma once
2
3#include <string_view>
4
5#include "ll/api/command/Overload.h"
6#include "ll/api/command/OverloadData.h"
7
8#include "mc/server/commands/CommandRegistry.h"
9
10namespace ll::command {
11class CommandRegistrar;
12class RuntimeOverload;
14 friend OverloadData;
15 friend CommandRegistrar;
16
17 struct Impl;
18 std::unique_ptr<Impl> impl;
19
20 CommandRegistrar& getRegistrar();
21
22 void registerOverload(OverloadData&);
23
24 char const* addText(std::string_view);
25
26 char const* storeStr(std::string_view);
27
28 size_t disableModOverloads(std::string_view modName);
29
30public:
31 CommandHandle(CommandRegistrar& registrar, CommandRegistry::Signature& signature, bool owned);
33
34 template <reflection::Reflectable Params = EmptyParam>
35 [[nodiscard]] auto overload(std::weak_ptr<mod::Mod> mod = mod::NativeMod::current()) -> Overload<Params> {
36 return Overload<Params>{*this, std::move(mod)};
37 }
38 LLNDAPI RuntimeOverload runtimeOverload(std::weak_ptr<mod::Mod> mod = mod::NativeMod::current());
39
40 LLNDAPI std::vector<std::string> alias() const;
41
42 LLAPI CommandHandle& alias(std::string_view alias);
43};
44} // namespace ll::command
Definition CommandHandle.h:13
Definition CommandRegistrar.h:32
Definition OverloadData.h:20
Definition Overload.h:16
Definition RuntimeOverload.h:12
Definition CommandRegistry.h:310