Skip to content
iPlugin

变量与占位符

查阅内联语句、PlaceholderAPI、变量作用域、解析顺序与刷新方式。

写法与位置

写法读取内容示例
{{语句}}立即取得 Kether 计算结果{{player name}}、{{&status}}、{{page get}}
%占位符%PlaceholderAPI 扩展结果%player_name%

常用于图标 name、lore、menu.title 和 fmsg / mmsg。材料、头像、来源 value、数量、损伤、模型、发光等字段也各有支持范围,见物品属性;不要据此认为所有字段都接受表达式,例如 enchantments 的等级只接受整数,enhancedLore 只接受布尔值。

{{...}} 中填写可立即返回结果的语句,不使用等待输入或延时任务来生成文字。结果会转为文字;缺失变量不保证返回空字符串,可能显示 null、错误提示或未替换内容。

菜单变量

在菜单顶层的 events.pre_open 设置初始值:

菜单顶层片段
events:
  pre_open: 'ctx set status to ready true'

在同一菜单的图标中读取变量,并在点击后更新:

图标片段:放在 icons 下
A:
  material: PAPER
  name: '&f状态:{{&status}}'
  action: 'ctx set status to done icon update'

打开显示 状态:ready,点击后变成 状态:done。这里的 &status 读取当前菜单会话变量,不是 PlaceholderAPI 扩展,也不是 &a 颜色代码。初始化放在 pre_open,确保第一次显示时已有值。

变量还可由打开参数提供,见命令绑定;需要跨菜单或重开后保留时,见持久数据。

元素数据与节点

生成器的 output 在当前元素上下文中使用字段,例如元素的 title 对应 element_title,在线玩家元素的 name 对应 element_name:

显示属性片段:放在 generator.output 下
name: '&f{{&element_title}}'

这些字段只在对应元素中存在,不能直接搬到任意普通面板;实际可用键取决于生成器类型,见生成器。

复用计算文字可写 {{node 节点名}},节点必须已在菜单或全局节点中登记,见节点。节点返回真正的换行与返回文字 \n 的区别,仍按Lore 换行处理。

PlaceholderAPI

显示属性片段
name: '&a%player_name%'

需要 PlaceholderAPI 和提供 player_name 的扩展。没有安装相应扩展时,不应期待它自动变成玩家名;只需当前玩家名时也可以直接使用 {{player name}}。

Invero 自带的数据占位符同样通过 PlaceholderAPI 读取:

占位符读取内容
%invero_data_player_theme%当前玩家持久键 player@theme 的值
%invero_data_global_season%全局持久键 global@season 的值

后缀可替换成自己的键名;它们不是读取普通临时变量的通用入口。缺失键会返回带键名的 <NULL: ...>,没有在线玩家时返回 <OFFLINE_PLAYER>,未知操作返回 <UNKNOWN_OPERATOR>。持久键的设置见持久数据。

解析顺序

先求 {{语句}},再替换 PlaceholderAPI,然后应用对应的颜色或富文本格式。内联结果里的 %...% 可继续交给 PlaceholderAPI;PlaceholderAPI 返回的 {{...}} 不会自动重新求值,也不要依赖返回文字的无限递归解析。

Kether.auto-placeholder-translate 控制部分消息动作入口,不关闭图标和标题的解析,见文本写法。

内容更新

变量变化不等于已显示的物品自动变化:

  • 更新当前图标用 icon update,更新现有图标用 icons update。
  • 子图标条件变化时,还需要重新选择子状态;与普通文字刷新区分开,见图标刷新。
  • 只修改窗口标题时用 menu title update;标题动画预先计算与逐帧计算的区别见动画。

占位符原样显示或出现错误文字时,对应处理见问题排查。

Last updated on