Skip to content

Command PCommand

Legoshi edited this page Mar 20, 2020 · 2 revisions

PCommand 接口是 ParrotX 提供的一个用于代表子命令类的接口,

实现该接口并于 CommandHandler 类注册将会在玩家输入对应的指令时尝试调用该接口的 execute() 方法以执行指令。


实现接口

实现该接口最少需要实现两个方法。

getPermission()

  • 返回值:String
  • 用于获取执行该子命令所需的权限节点。
  • 若返回 null 或 "" 代表该子命令无需权限即可执行,将会跳过权限检查。

execute(PPlugin plugin, CommandSender sender, String[] args)

  • 返回值:boolean
  • 在玩家执行此子命令时会尝试调用此方法以执行该子命令的内容。
  • 参数:
    • plugin 插件的 PPlugin 主类对象,可以通过该参数快捷获取 ParrotX 提供的 I18n 语言工具。
    • sender 执行此命令的 CommandSender 对象。
    • args 该子命令后的其他参数,同时包括该子命令,所以该子命令的参数应从 args[1] 开始。

其他

该接口下同时提供了其他的方法用于 ParrotX 实现其他命令方面的便利功能,

比如自动生成帮助信息与 Tab 填充。

getDescription()

  • 返回值:String
  • 用于获取该子命令的用途介绍,在生成帮助信息时需要用到。
  • 若未覆写该方法,默认返回 没有介绍。

getHelp()

  • 返回值:String[]
  • 用于获取该子命令的详细帮助。
  • 若未覆写该方法,默认返回空数组:new String[0]

getParams(int arg)

  • 返回值:String[]
  • 用于获取该子命令对应参数位中,Tab 自动补全向玩家推荐的参数列表。
  • 若未覆写该方法,默认返回空数组:new String[0]
  • 参数:
    • arg 参数位置。
      • 请注意,在这里参数序号从头算起,例如 0 代表子命令关键词后的第一个参数。

requiredParam(String param) & optionalParam(String param)

  • 返回值:String
  • 用于快速格式生成必填参数/可选参数。
  • 我所使用的帮助信息中 <> 代表必填参数,而 [] 代表可选参数,这好像与其他插件的帮助信息不一致,您可以通过覆写此方法来自定义它的输出格式。

模板命令

ParrotX 目前提供了两个模板命令类,均已实现 PCommand 接口,用于快速注册常见的命令。

HelpCommand(PPlugin plugin, String perm)

该类可以处理并发送插件帮助信息,在不带有参数时发送插件帮助信息,在带有参数时会视为获取指定子命令的帮助信息,通过调用对应 PCommand 类中的 getHelp() 方法获取。

  • 参数:
    • plugin 插件的 PPlugin 主类对象,该类需要 PPlugin 对象以调用 I18n 语言工具或获取 CommandHandler 类对象以获取对应的子命令 PCommand 对象。
    • perm 执行此子命令所需的权限节点。

ReloadCommand(PPlugin plugin, String perm)

该类可以处理重载动作,具体实现为调用 PPlugin 主类对象中的 init() 方法。

  • 参数:
    • plugin 插件的 PPlugin 主类对象,该类需要 PPlugin 对象以调用 I18n 语言工具或调用 PPlugin 主类对象中的 init() 方法。
    • perm 执行此子命令所需的权限节点。