跳转到正文
iPlugin

玩家输入

接收聊天或告示牌内容,并保存到变量中。

catch 写在图标 action 中。开始输入时关闭菜单,输入内容保存在 catch 指定的变量中。

聊天输入

# 图标 action 字段
action:
  catch: nickname
  cancel:
    - cancel
    - exit
  reopen: true
  beforeInput: "mmsg '&e请在聊天栏输入内容,cancel 取消'"
  afterInput: "mmsg '&a收到: {{&nickname}}'"
  onCancel: "mmsg '&7已取消'"

不填写 content 与 signLine 时使用聊天输入。输入保存为 nickname,afterInput 通过 {{&nickname}} 读取;成功后按 reopen 设置重新打开菜单,保留输入变量。

告示牌输入

action:
  catch: keyword
  content:
    - '输入关键词:'
    - ''
    - '确认后返回菜单'
    - ''
  signLine: 1
  cancel:
    - cancel
  afterInput: "mmsg '&a搜索词: {{&keyword}}'"

填写 content 或 signLine 时使用告示牌。content 为四行初始文字;signLine: 1 读取第二行。省略 signLine 或填写负数时合并所有行。

字段与回调

单次输入时写在图标的 action 对象中。多步输入时,除 reopen 外的字段写在每个步骤中。

字段类型必填默认行为说明
catch文字是—保存输入内容的变量名
content文字列表否不提供初始文字告示牌初始内容,按四行填写;设置后使用告示牌输入
signLine(signIndex、index、line)整数否告示牌输入时合并所有行读取的行号 0~3;负数合并所有行,设置此字段即使用告示牌
cancel文字或文字列表否不设置取消关键词匹配时取消输入,忽略大小写
reopen布尔值否true输入成功后重开原菜单;多步输入时写在 catchers 同级
beforeInput动作或动作列表否不执行第一次开始接收此项输入前执行,重试时不重复执行
afterInput动作或动作列表否接受输入收到非取消内容后执行;返回 false 时重新输入
onRepeat动作或动作列表否不执行额外动作afterInput 返回 false 时执行,然后再次接收输入
onCancel动作或动作列表否不执行,也不自动重开输入取消关键词时执行

多步输入

catchers 按顺序接收多项内容,全部完成后才按 reopen 设置返回菜单:

action:
  reopen: true
  catchers:
    - catch: nickname
      cancel:
        - cancel
      beforeInput: "mmsg '&e请输入昵称,输入 cancel 取消'"
      onCancel: "mmsg '&7已取消输入'"
    - catch: message
      beforeInput: "mmsg '&e请输入留言,输入 cancel 取消'"
      afterInput: "mmsg '&a{{&nickname}} 的留言:{{&message}}'"
字段类型必填默认行为说明
catchers输入步骤对象列表是—至少一个步骤;每项使用上表的输入字段
reopen布尔值否true所有步骤成功后重开原菜单,不写入单个步骤

后续步骤未填写 cancel、beforeInput、onRepeat 或 onCancel 时,沿用第一步的对应设置。afterInput 按每步单独配置。任一步取消后停止后续步骤。

取消后返回菜单

取消输入只执行 onCancel,不会自动重开菜单。下面在取消时打开 ID 为 search 的菜单:

action:
  catch: keyword
  cancel:
    - cancel
  reopen: true
  beforeInput: "mmsg '&e输入搜索词,或输入 cancel 返回'"
  afterInput: "mmsg '&a搜索词:{{&keyword}}'"
  onCancel: 'menu open search'

输入内容用于命令参数时,应限定可接受的内容;控制台或 OP 命令不直接执行玩家提交的整段文本。

最后更新于