mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Add command register for ChatBot
ChatBot can register their own command for interacting with user
This commit is contained in:
parent
4f3f217c0f
commit
64643af89d
2 changed files with 76 additions and 1 deletions
|
|
@ -1089,5 +1089,54 @@ namespace MinecraftClient
|
|||
{
|
||||
return Handler.UpdateSign(location, line1, line2, line3, line4);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Register a command in command prompt
|
||||
/// </summary>
|
||||
/// <param name="CMDName">Name of the command</param>
|
||||
/// <param name="CMDDesc">Description/usage of the command</param>
|
||||
/// <param name="Run">Method for handling the command</param>
|
||||
/// <returns>True if successfully registered</returns>
|
||||
protected bool RegisterChatBotCommand(string CMDName, string CMDDesc, CommandRunner Run)
|
||||
{
|
||||
return Handler.RegisterCommand(CMDName, CMDDesc, Run);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Command runner definition.
|
||||
/// Returned string will be the output of the command
|
||||
/// </summary>
|
||||
/// <param name="command">Full command</param>
|
||||
/// <param name="args">Arguments in the command</param>
|
||||
/// <returns></returns>
|
||||
public delegate string CommandRunner(string command, string[] args);
|
||||
|
||||
/// <summary>
|
||||
/// Command class with constructor for creating command for ChatBots.
|
||||
/// </summary>
|
||||
public class ChatBotCommand : Command
|
||||
{
|
||||
public CommandRunner Runner;
|
||||
|
||||
public override string CMDName { get; }
|
||||
public override string CMDDesc { get; }
|
||||
public override string Run(McClient handler, string command, Dictionary<string, object> localVars)
|
||||
{
|
||||
return this.Runner(command, getArgs(command));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="CMDName">Name of the command</param>
|
||||
/// <param name="CMDDesc">Description/usage of the command</param>
|
||||
/// <param name="runner">Method for handling the command</param>
|
||||
public ChatBotCommand(string CMDName, string CMDDesc, CommandRunner runner)
|
||||
{
|
||||
this.CMDName = CMDName;
|
||||
this.CMDDesc = CMDDesc;
|
||||
this.Runner = runner;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ namespace MinecraftClient
|
|||
private static readonly List<string> cmd_names = new List<string>();
|
||||
private static readonly Dictionary<string, Command> cmds = new Dictionary<string, Command>();
|
||||
private readonly Dictionary<Guid, string> onlinePlayers = new Dictionary<Guid, string>();
|
||||
private static bool CommandLoaded = false;
|
||||
|
||||
private readonly List<ChatBot> bots = new List<ChatBot>();
|
||||
private static readonly List<ChatBot> botsOnHold = new List<ChatBot>();
|
||||
|
|
@ -338,7 +339,7 @@ namespace MinecraftClient
|
|||
{
|
||||
/* Load commands from the 'Commands' namespace */
|
||||
|
||||
if (cmds.Count == 0)
|
||||
if (!CommandLoaded)
|
||||
{
|
||||
Type[] cmds_classes = Program.GetTypesInNamespace("MinecraftClient.Commands");
|
||||
foreach (Type type in cmds_classes)
|
||||
|
|
@ -359,6 +360,7 @@ namespace MinecraftClient
|
|||
}
|
||||
}
|
||||
}
|
||||
CommandLoaded = true;
|
||||
}
|
||||
|
||||
/* Process the provided command */
|
||||
|
|
@ -572,6 +574,30 @@ namespace MinecraftClient
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Register a command prompt command
|
||||
/// </summary>
|
||||
/// <param name="CMDName">Name of the command</param>
|
||||
/// <param name="CMDDesc">Description/usage of the command</param>
|
||||
/// <param name="runner">Method for handling the command</param>
|
||||
/// <returns>True if successfully registered</returns>
|
||||
public bool RegisterCommand(string CMDName, string CMDDesc, CommandRunner runner)
|
||||
{
|
||||
if (cmds.ContainsKey(CMDName.ToLower()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
Command cmd = new ChatBotCommand(CMDName, CMDDesc, runner);
|
||||
cmds.Add(CMDName.ToLower(), cmd);
|
||||
cmd_names.Add(CMDName.ToLower());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#region Management: Load/Unload ChatBots and Enable/Disable settings
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue