跳转到正文
iPlugin

菜单打开入口

通过命令、物品交互、聊天内容或按键打开菜单。

bindings 写在菜单顶层,别名为 binding、activator、activators。

入口字段

字段类型必填默认行为说明
command(commands、cmd、cmds)文字、命令对象或列表否不注册绑定命令命令名简写或完整命令定义
item(items)文字或文字列表否不启用物品入口物品匹配表达式;列表中任意一个匹配即可打开
chat(chats)文字或文字列表否不启用聊天入口匹配玩家聊天内容,忽略大小写
shift_f整数否不启用按键入口潜行切换后按换手键的时间窗口,单位毫秒;小于 50 时按 50 处理
entity文字或文字列表否不启用实体入口右键指定实体类型时打开
adyeshach(ady)文字或文字列表否不启用 NPC 入口交互的 Adyeshach NPC ID,需要 Adyeshach

命令入口

# 菜单顶层
bindings:
  command: hello-menu

注册 /hello-menu,执行后打开当前菜单。绑定名称不含开头 /。

命令字段

命令对象写在 bindings.command 下;只有命令名时也可像上例直接写文字。

字段类型必填默认行为说明
name文字是—命令名称,不含开头 /
aliases文字列表否无别名同一命令的其他名称
description文字否使用命令名称帮助中的命令说明
usage文字否根据命令名称与参数生成用法提示;可选参数使用方括号,必填参数使用尖括号
permission文字否默认允许使用使用权限,填写后向使用者授予相应权限
permissionMessage文字否使用默认权限提示没有权限时显示的文字
arguments(argument、args)参数定义列表否无参数每项定义一个命令参数

多个命令可以写成列表,各自使用自己的参数与权限:

bindings:
  command:
    - name: guide
      aliases:
        - menu-guide
    - name: help-menu
      description: '打开同一个帮助菜单'

命令名称与别名忽略大小写;同一菜单中的命令定义也不能使用重复名称或别名。

命令参数

bindings:
  command:
    name: profile
    aliases:
      - my-profile
    description: '打开资料菜单'
    usage: '/profile [target]'
    permission: 'invero.profile'
    permissionMessage: '你没有权限打开资料菜单。'
    arguments:
      - id: target
        type: ANY
        optional: true
        default: '自己'
        suggest:
          - 自己
          - Steve

/profile Steve 将 target 设置为 Steve;不输入参数时使用 default。菜单文本通过 {{&target}} 读取它。

字段类型必填默认行为说明
id(key、name、label)文字是—参数变量名;同一命令内保持唯一
type文字否ANYANY、DECIMAL、INTEGER、BOOLEAN、PLAYER、WORLD
optional布尔值否true是否允许省略此参数
default文字、数字或布尔值否不提供默认值参数省略时使用;读取到的参数内容为文字
suggest文字列表否无提示列表输入时提供的候选内容
restrict布尔值否false是否将 ANY 参数限制为提示列表中的值

需要在线玩家参数时使用 type: PLAYER,世界参数使用 WORLD。可选参数省略且没有 default 时,不提供对应变量;显示时应考虑这一情况。

参数中的 incorrectMessage 不生效,不能自定义参数错误提示;参数类型与取值不符时使用默认提示。命令的无权限提示使用 permissionMessage,不受此限制。

物品、聊天与按键

bindings:
  item: 'minecraft:compass'
  chat: '打开菜单'
  shift_f: 800
入口示例的触发方式
item使用指南针交互
chat输入“打开菜单”,忽略大小写
shift_f切换潜行状态后 800 毫秒内按换手键

物品入口的值为物品匹配表达式,例如 minecraft:compass。item 的别名为 items,chat 的别名为 chats;两者也可以填写列表,以匹配多个物品表达式或聊天内容。

命令名与别名应与其他插件的命令区分;冲突信息会显示在服务端日志中。

实体入口

右键以下类型的实体时打开当前菜单:

bindings:
  entity:
    - VILLAGER
    - WANDERING_TRADER

填写实体类型名称,而不是实体显示名称。只匹配一种类型时也可写为 entity: VILLAGER。

打开后可读取的变量内容
activator_entity_name实体显示名称
activator_entity_type实体类型
activator_entity_uuid实体 UUID
activator_entity_location_x、activator_entity_location_y、activator_entity_location_z实体位置
activator_entity_is_npc是否被识别为 NPC

例如在图标名称中使用 {{&activator_entity_name}}。这些变量只由对应的实体入口提供。

Adyeshach NPC 入口

需要启用 Adyeshach。以下配置匹配该插件中 ID 为 menu_guide 或 help_guide 的 NPC:

bindings:
  adyeshach:
    - menu_guide
    - help_guide

adyeshach 的别名为 ady。填写 NPC ID,不填写 NPC 的显示名称;单个 ID 也可以直接写字符串。入口触发后,{{&activator_ady}} 可读取此次交互的 NPC ID。

入口变量

打开方式变量
命令参数arguments 中定义的 id,例如 target
聊天入口activator_message,玩家提交的匹配内容
物品入口activator_item,此次交互的物品
实体入口上面的 activator_entity_* 变量
Adyeshach 入口activator_ady,NPC ID

其他打开方式不自动提供这些入口变量。通用玩家信息使用占位符。

最后更新于