Skip to content
iPlugin

点击动作

查询动作结构、点击类型、默认动作叠加与连续执行规则。

action(别名 actions、handler、click)写在 panels 中某个图标下;子图标和生成器的 output 也可以配置点击动作。动画 frames 只配置显示,不在帧内定义点击动作。一次动作可以是 Kether 文本、布尔值、动作列表或结构化对象,不必只写一条命令。

# 图标内
material: PAPER
name: '&f点击测试'
action: "mmsg '&a点击成功'"

连续动作

action: |-
  mmsg '&a点击成功'
  menu close

这是同一段 Kether 脚本,普通语句的返回值不会自动中断后面的语句;脚本最终结果才是这次动作的结果。同一段脚本中设置的脚本临时变量可以继续使用。

动作结果优先使用真正的布尔值 true / false。普通脚本结果为文字 false 或 no 时也判为失败;这不是“数字 0 一定失败”的规则。输入捕获开始时返回 false,因此应将输入后的操作写进回调,而不是放在它后面的列表项。

结构化动作

结构入口用途完整查询
kether将一段脚本包在对象中下方说明
if、if_not、all、any、none按条件执行 then / else条件动作
case 与 when按值选择首个匹配分支按值选择
catch接收一次聊天或告示牌输入玩家输入
catchers顺序接收多步输入多步输入

同一个对象只选择一种结构;分支里可以继续嵌套另一种结构或动作列表。不要在同一层混合 if、kether、catch 等入口。

结构化 kether

action:
  kether: |-
    ctx set selected to help
    menu open help
字段类型必填省略行为说明
kether脚本文本是不构成此结构单行文字或多行块文本,作为一段脚本执行

kether 下的 YAML 语句列表目前不能正常读取。多行脚本使用上面的 |-;多项动作使用外层动作列表,不写成 kether 列表。

点击类型

直接填写动作时,所有送达该图标的点击类型共用此动作。需要区分点击时,在 action 下按类型配置:

action:
  left: "mmsg '&a你按了左键'"
  right: "mmsg '&b你按了右键'"
  shift_left: "mmsg '&eShift + 左键'"

直接按类型名写在 action 下,不再套一层 typed。配置键不区分大小写。以下表格同时列出完整名称与可用的 Bukkit 名称;未列出缩写的类型使用完整名称。

配置键触发方式
LEFT_CLICK(left)、RIGHT_CLICK(right)左键、右键
SHIFT_LEFT_CLICK(shift_left)、SHIFT_RIGHT_CLICK(shift_right)Shift + 左键、右键
LEFT_CLICK_OUTSIDE(window_border_left)、RIGHT_CLICK_OUTSIDE(window_border_right)窗口外左键、右键;不会送达正常的图标格子
NUMBER_KEY(number_key)数字键公共处理;也会接收副手交换
NUMBER_KEY_1~NUMBER_KEY_9指定数字键
OFFHAND_SWAP(swap_offhand)副手交换键
MIDDLE_CLICK(middle)中键,受游戏模式限制
DROP(drop)、CONTROL_DROP(control_drop)丢弃键、Ctrl + 丢弃键
DOUBLE_CLICK(double_click)双击
LEFT_MOUSE_DRAG_STARTING、LEFT_MOUSE_DRAG_ADD_SLOT、LEFT_MOUSE_DRAG_ENDING左键拖动的开始、经过槽位、结束
RIGHT_MOUSE_DRAG_STARTING、RIGHT_MOUSE_DRAG_ADD_SLOT、RIGHT_MOUSE_DRAG_ENDING右键拖动的对应阶段
MIDDLE_MOUSE_DRAG_STARTING、MIDDLE_MOUSE_DRAG_ADD_SLOT、MIDDLE_MOUSE_DRAG_ENDING中键拖动的对应阶段,受游戏模式限制

拖动、窗口外点击等类型是否实际触发,还取决于容器与面板是否把该事件送到图标;不能仅靠配置一个名称让任意面板支持拖放。不要使用 UNKNOWN 作为通用匹配。

多个类型共用动作时,用英文逗号连接,逗号两侧不加空格:

action:
  'left,right': "mmsg '&a已点击'"

窗口外点击及 *_DRAG_STARTING、*_DRAG_ENDING 没有对应的正常图标格子,不作为普通按钮的回调。虚拟窗口中的 *_DRAG_ADD_SLOT 可用于经过图标的拖拽阶段;普通窗口的真实物品拖拽不按经过的图标逐个调用这些动作。存取区域的内容变化写在 crafting.listener 中。

默认动作 def

action:
  def: "mmsg '&7已点击按钮'"
  left: "mmsg '&a你按了左键'"
字段类型必填省略行为说明
def(default)动作或动作列表否不执行公共动作每次点击额外执行,不是“仅未匹配时执行”
点击类型名称动作或动作列表否该类型无专属动作匹配的类型动作先启动,再启动数字键公共动作和 def

def 会与匹配的点击动作叠加执行。 上例左键发送两条消息,右键只发送公共消息。具体类型返回 false 只影响它自己的动作列表,不会阻止 def;两者也不会等待对方的延迟脚本完成。

数字键会启动具体的 NUMBER_KEY_1~NUMBER_KEY_9、公共 NUMBER_KEY 和 def;副手交换会启动 OFFHAND_SWAP、NUMBER_KEY 和 def。同一效果不要重复放进这些分支。

执行命令

action: 'command "spawn" as player'

command 默认使用玩家身份;可用 as console 或 as op。命令内容不带开头 /。身份别名、文字替换、console / playerPerform 的差异见消息、命令与工具语句。

Last updated on