context()

命令

处理命令参数

参数处理使用ArgumentParser的实例,构造器中name表示参数名,仅用于提示帮助信息

例如,处理字符串参数可以使用ArgumentParserString,第二个参数表示字符串中是否可以包含空格,后面的参数表示预设值

java

public class Demo extends MzModule
{
    public static Demo instance = new Demo();

    public Command command;

    @Override
    public void onLoad()
    {
        this.register(this.command=new Command("demo", "d").setHandler(context->
        {
            // process arg0
            String arg0=new ArgumentParserString("arg0", false, "enum1", "enum2").process(context);
            // 若arg0解析失败直接返回
            if(!context.successful)
                return;
            switch(arg0)
            {
                case "enum1":
                    // 第一种用法
                    if(!context.successful || !context.doExecute)
                        return;
                    context.sender.sendMessage(Text.literal("This is the first usage of this command"));
                    break;
                case "enum2":
                    // 第二种用法
                    // 再读一个参数
                    // 后面没有其它参数,可以允许包含空格
                    String arg1=new ArgumentParserString("arg1", true).process(context);
                    if(!context.successful || !context.doExecute)
                        return;
                    context.sender.sendMessage(Text.literal("Second: "+arg1));
                    break;
                default: // 无效的arg0,命令解析失败
                    context.successful=false;
                    break;
            }
        }));
    }
}