变量与占位符
查阅内联语句、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'在同一菜单的图标中读取变量,并在点击后更新:
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:
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