aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Server/Console/commands/IServerCliCommand.h
diff options
context:
space:
mode:
authorqwasdrizzel <145519042+qwasdrizzel@users.noreply.github.com>2026-03-16 21:44:26 -0500
committerGitHub <noreply@github.com>2026-03-16 21:44:26 -0500
commitce739f6045ec72127491286ea3f3f21e537c1b55 (patch)
treef33bd42a47c1b4a7b2153a7fb77127ee3b407db9 /Minecraft.Server/Console/commands/IServerCliCommand.h
parent255a18fe8e9b57377975f82e2b227afe2a12eda0 (diff)
parent5a59f5d146b43811dde6a5a0245ee9875d7b5cd1 (diff)
Merge branch 'smartcmd:main' into main
Diffstat (limited to 'Minecraft.Server/Console/commands/IServerCliCommand.h')
-rw-r--r--Minecraft.Server/Console/commands/IServerCliCommand.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/Minecraft.Server/Console/commands/IServerCliCommand.h b/Minecraft.Server/Console/commands/IServerCliCommand.h
new file mode 100644
index 00000000..9cf5ef0e
--- /dev/null
+++ b/Minecraft.Server/Console/commands/IServerCliCommand.h
@@ -0,0 +1,50 @@
+#pragma once
+
+#include <string>
+#include <vector>
+
+namespace ServerRuntime
+{
+ class ServerCliEngine;
+ struct ServerCliParsedLine;
+ struct ServerCliCompletionContext;
+
+ /**
+ * **Command interface for server CLI**
+ *
+ * Implement this contract to add new commands without changing engine internals.
+ */
+ class IServerCliCommand
+ {
+ public:
+ virtual ~IServerCliCommand() = default;
+
+ /** Primary command name */
+ virtual const char *Name() const = 0;
+ /** Optional aliases */
+ virtual std::vector<std::string> Aliases() const { return {}; }
+ /** Usage text for help */
+ virtual const char *Usage() const = 0;
+ /** Short command description*/
+ virtual const char *Description() const = 0;
+
+ /**
+ * **Execute command logic**
+ *
+ * Called after tokenization and command lookup.
+ */
+ virtual bool Execute(const ServerCliParsedLine &line, ServerCliEngine *engine) = 0;
+
+ /**
+ * **Provide argument completion candidates**
+ *
+ * Override when command-specific completion is needed.
+ */
+ virtual void Complete(const ServerCliCompletionContext &context, const ServerCliEngine *engine, std::vector<std::string> *out) const
+ {
+ (void)context;
+ (void)engine;
+ (void)out;
+ }
+ };
+}