跳转到正文
iPlugin

图标与子图标

设置图标外观、点击动作、状态切换与刷新。

图标配置

写在面板的 icons 中:

# 放在某个面板的 icons 下
A:
  material: PAPER
  name: '&f说明'
  lore:
    - '&7点击查看消息'
  action: "mmsg '&a你好'"

字段

字段类型必填默认行为说明
id(key)文字否使用 icons 中的键图标 ID,用于布局与指定图标操作
display显示属性对象否使用直接写在图标下的外观字段集中设置外观,见物品属性
action(actions、handler、click)动作或动作列表否无点击动作子图标可继承父动作;写法见点击动作
sub(icons)子图标列表否无子图标按配置顺序选择首个条件满足的子图标
condition(if、rule)条件语句文本否不选中该子图标用于子图标选择,不是顶层图标的隐藏开关
inherit布尔值否true子图标是否继承父图标未填写的外观、动画与动作
update整数否-1,不自动更新外观更新间隔,单位 tick;正数启用,不重新选择子图标
relocate整数否-1,不自动选择子图标选择间隔,单位 tick;正数启用,不移动槽位
frames显示属性对象列表否无动画;子图标可继承图标动画帧,见动画配置
frames-prop(framesProperties、frames-properties、prop)动画设置对象否间隔 20 tick,模式 LOOP;子图标可继承默认动画间隔与播放模式

外观字段见物品属性,动画字段见动画配置。

根据状态切换图标

A:
  material: GRAY_DYE
  name: '&7尚未开启'
  action: 'ctx set enabled to true icon refresh'
  sub:
    - if: 'ctx get enabled'
      material: LIME_DYE
      name: '&a已开启'
      action: 'ctx del enabled icon refresh'

未开启时显示灰色染料;点击后设置 enabled,刷新为绿色状态。再次点击删除该值,恢复灰色状态。

子图标只需填写变化的字段,并设置 condition(或 if、rule)。未设置条件的子图标不会被选中;多个条件满足时使用列表中的第一个。inherit: false 取消继承父图标。

刷新语句

语句作用
icon update更新当前图标的名称、Lore 等外观
icon relocate重新判断当前图标使用哪个子状态
icon refresh重新选择子状态并更新外观
icon by 'A' refresh刷新指定 ID 的图标
icons update更新现有图标的名称、Lore、数量等显示,保留生成器当前页
icons relocate重新选择现有图标的子状态,保留生成器当前页
icons refresh更新普通面板的图标;生成器列表重建并回到第一页

icon by 按 ID 在当前或选定面板中查找;跨面板时先使用 panel at 选择目标。变量修改后,在修改动作末尾执行相应刷新。需要周期更新时设置 update 或 relocate。

生成器的固定导航用 icon by 单独刷新,保留当前页;icons refresh 不自动重选这些固定图标的子状态。用法见生成器面板。

更新文字与选中状态

文字或数量变化,只更新显示:

action: |-
  ctx set status to done
  icons update

变量影响 sub 条件时,先重新选择状态,再更新显示:

action: |-
  ctx set enabled to true
  icons relocate
  icons update

relocate 不是移动槽位,而是重新判断使用哪个子图标。只需要更新点击的按钮时,用 icon refresh;需要更新多个按钮时,用上面的组合。

周期更新

A:
  material: PAPER
  update: 20
  name: '&f状态:{{ctx get status}}'

update: 20 每 20 tick 重新计算外观,20 TPS 时约一秒。它不重新选择 sub;条件变化需要 relocate,或在改变变量的动作后主动刷新。

权限按钮

展示状态使用 sub,点击时的权限判断写在 action 中。完整配置见权限按钮。

最后更新于