物品来源
查阅材料、头像、全部外部来源、序列化物品与脚本来源的写法和限制。
选择来源
每份图标外观选择一种来源,再按需覆盖 name、lore、amount 等物品属性。不要同时填写 material、head 和某个外部来源,也不要混写同一字段的多个别名。
| 来源 | 常用入口 | 用途 |
|---|---|---|
| 原版材料 | material(mat) | 纸、书、玻璃等普通按钮 |
| 玩家头像或头颅纹理 | 图标顶层的 head(skull) | 玩家名、纹理 ID、纹理 Base64 |
| 外部物品 | texture.source + texture.value | 取得其他物品插件登记的物品 |
| 已有物品 | base64、json、serialized 来源 | 保留事先做好的物品数据 |
| 即时脚本结果 | kether 来源 | 用立即返回物品的语句生成图标 |
省略来源不会自动生成默认的纸;新图标没有可继承的来源时为空。某些已注册来源未取得物品时会显示基岩,不能据此认为来源配置成功;来源名称不存在或依赖未启用时,可能直接报告无效来源,不能把所有失败都视为基岩回退。
原版材料
A:
material: PAPER
name: '&f帮助'texture: PAPER、material: PAPER、mat: PAPER 是同一材料字段的不同名称。材料名不区分大小写,名称中的空格或连字符会转换为下划线;也支持跨版本材料别名。识别失败时可能选到相近材料或基岩,不保证报错;推荐填写准确的英文材料名。
材料文字可以包含占位符,其结果仍须是有效材料名。AIR 是空气,不会显示名称和说明。数字形式的 ID / ID:子ID 仅适用于 1.13 之前的服务端,1.13+ 不支持数字材料 ID。
玩家头像
A:
head: '{{player name}}'
name: '&f我的头像'head(skull)可填写固定玩家名,如 Steve;上例使用当前玩家名。它已经指定头颅来源,无需另写 material: PLAYER_HEAD。玩家名并不等同于任意 UUID 或完整纹理网址。
如果图标采用 display,使用标准对象而不是 display.head:
A:
display:
texture:
head: '{{player name}}'
name: '&f我的头像'texture 对象里的键为 head,不是 skull;skull 是图标顶层和动画帧的简写别名。
| 字段 | 类型 | 必填 | 省略行为 | 说明 |
|---|---|---|---|---|
head | 文字 | 头像对象中必填 | 无有效头像对象 | texture.head 的实际内容;可包含占位符,不是只有顶层简写才接受头像 |
较短的值按玩家名处理;常见的 64 位纹理 ID 可直接填写,完整纹理 Base64 则保持原样。不要将任意 UUID 或网址当作额外的头像输入格式。
自定义头颅
head 也接受纹理 ID 或 Base64 纹理值。下面两种写法使用同一纹理,均是放在 icons 下的图标片段:
A:
head: 'b727d0ab03f5cd022f8705d3f7f133ca4920eae8e1e47b5074433a137e691e4e'
name: '&f自定义头颅'纹理 ID 是纹理链接中 textures.minecraft.net/texture/ 后的一段;填写这一段,不填写整条链接。
头颅纹理 Base64 只描述皮肤;/invero item encode 导出的 Base64 是整件物品,应按已有物品导入,不能填进 head。
标准来源对象
A:
display:
texture:
source: itemsadder
value: 'my_namespace:example_item'
name: '&a物品详情'
action: "mmsg '&a已选择此物品'"以下字段写在 texture 中;该对象放在图标下或 display 下均可,也可用于动画帧:
| 字段 | 类型 | 必填 | 省略行为 | 说明 |
|---|---|---|---|---|
source | 文字 | 是 | 无可用来源对象 | 下表来源名称或别名,不区分大小写;不是插件 JAR 文件名 |
value | 文字 | 是 | 无物品标识或内容 | 由所选来源解释,支持占位符;不支持把多个来源 ID 写成列表 |
source 和 value 必须配套。头像对象则只写 head,不需要 source/value;不要把两种对象结构混在一起。
外部提供方
以下外部来源均需要对应插件已启用。来源名称及其别名填在 texture.source 中;example_item 等仅表示填写位置,要换成对应插件内真实存在的标识。
source 名称与别名 | 对应插件 | value 格式与特殊行为 |
|---|---|---|
itemsadder、ia | ItemsAdder | 命名空间:物品ID |
craftengine、ce | CraftEngine | 命名空间:物品ID |
mmoitems、mi | MMOItems | 类型:物品ID,如 SWORD:EXAMPLE;冒号两侧均不能为空 |
oraxen | Oraxen | 物品 ID;无效 ID 不保证静默回退 |
nexo | Nexo | 物品 ID |
zaphkiel、zap | Zaphkiel | 物品 ID |
ecoitems、eco | EcoItems | 物品 ID |
slimefun、sf | Slimefun | Slimefun 物品 ID |
headdatabase、hdb | HeadDatabase | 头颅 ID;未找到时会尝试随机头颅 |
neigeitems、ni | NeigeItems | 物品ID 或 物品ID 指向数据;未找到 NI 物品时尝试其 MythicMobs 物品接入 |
sxitem、sx、si | SX-Item | 物品 ID;按查看菜单的玩家取得物品,需要玩家上下文 |
azureflow、af | AzureFlow | 物品工厂 ID |
magicgem、gem | MagicGem | 宝石名称 |
magiccosmetics、magic | MagicCosmetics | 装饰品 ID,或 equipped:类型 取得玩家已装备的对应类型装饰品 |
itemtools、it | ItemTools | 物品 ID |
hmccosmetics、hmc | HMCCosmetics | 装饰品 ID |
外部插件内部的标识是否区分大小写,由对应插件决定;来源别名不改变 ID 格式。magiccosmetics 的 equipped: 前缀使用小写。
简写范围
除下列例外外,上表中的来源名称与别名也可用作图标顶层或动画帧的简写键,键名使用小写,值与标准对象中的 value 相同。简写不能写在 display 下。
A:
itemsadder: 'my_namespace:example_item'
B:
sxitem: 'example_item'
C:
azureflow: 'example_factory'简写有两个例外:
- NeigeItems:
neigeitems、ni不支持简写,使用标准texture对象。 - SX-Item:简写仅支持
sxitem、si;sx只可作为source的值。
这些来源仍可使用标准对象:
A:
texture:
source: ni
value: 'example_item 指向数据'
B:
texture:
source: sx
value: 'example_item'
C:
texture:
source: mmoitems
value: 'SWORD:EXAMPLE'除外部来源外,base64、json、serialized、kether 也支持同名顶层简写。使用 display 时统一写标准 texture 对象,避免将简写放错层级。
玩家相关内容
value 中的占位符可随当前玩家和菜单变量计算。固定 ID 的外部物品可能复用先前取得的内容,不能仅凭“该插件支持玩家变量”就保证每位玩家得到单独生成的名称或 Lore。
需要动态外观时,最直接的方式是在 Invero 的 name、lore 中填写占位符;如果需要由来源插件按玩家生成内容,应让 value 本身含有实际使用的占位符,并结合该来源的 ID 格式。例如将物品 ID 放入菜单变量 item_id 后使用 value: '{{&item_id}}'。修改变量后仍需刷新图标。
已有物品
手持目标物品执行 /invero item encodePrint,从服务端后台复制额外打印的完整 Base64 内容,不是上传链接或结构视图。该命令仍会上传内容;默认 lucko 的网页只含结构视图,不提供 Base64。使用 pastegg 时,网页才同时包含 Format Base64。服务选择与导出差异见物品导出。
A:
texture:
source: base64
value: '替换为实际导出的 Base64 内容'base64、json、serialized 是同一类导入入口,均不需要外部物品插件。内容以 { 开头时按 JSON 读取,否则按整件物品的 Base64 读取;别名本身不强制选择格式。保持导出字符串完整,不添加前导空格。
JSON 导入字段
json 来源也可导入手工准备的基础物品结构。以下字段属于 texture.value 内的 JSON 内容,不是 texture 的同级 YAML 字段:
| 字段 | 类型 | 必填 | 省略行为 | 说明 |
|---|---|---|---|---|
type | 材料名文字 | 否 | 使用 STONE | 需精确的服务端材料枚举名,不能按普通材料字段做近似匹配 |
amount | 整数 | 否 | 使用 1 | 导入后的堆叠数量;非整数不会作为有效数量覆盖 |
durability | 数值 | 否 | 使用新物品的损伤值 | 旧式损伤字段,不是“剩余耐久” |
meta | 标签 JSON 对象 | 否 | 不额外应用物品元数据 | 最后应用;在组件物品环境中可连同材质、数量一起覆盖,形态与顺序见下文 |
data | 旧式子 ID 数值 | 否 | 没有作用 | 只在部分 JSON 导出中出现,导入不读取它;不是 durability 或 meta 的别名 |
不需要元数据时,可将基础 JSON 放进块文字,保持内容首字符为 {:
A:
texture:
source: json
value: |-
{
"type": "PAPER",
"amount": 1,
"durability": 0
}这是一个字符串里的 JSON,不是把物品对象直接放到 value 下。
meta 的形态与应用顺序
顺序是:先按 type 建立物品,再设置 amount 和 durability,最后应用 meta。外层 data 从未参与导入,因此不存在“用 data 替代 meta”或“data 优先”的规则。
| 服务端物品格式 | meta 形态与优先级 |
|---|---|
| 1.20.4 及以前 | meta 是物品标签集合;最后应用其中的元数据,损伤等可能覆盖先前的 durability,但不是重新设置根级材质和数量的入口 |
| 1.20.5+ | meta 按完整物品级标签读取,以有效的 id 标识物品,count、components 分别承载数量与组件;成功应用时,其中的材质、数量、损伤与组件可覆盖根级 type、amount、durability 的结果 |
这里的 id / count 等是物品标签内的键,不是根级 JSON 字段的额外别名。不要把旧式的标签集合直接作为现代完整物品标签;形态不匹配可能失败或不应用,而非自动补齐。
meta 使用带类型后缀的标签 JSON。对象表示复合标签,JSON 数组表示标签列表;单个标签值的文字后缀如下。这里的复杂结构仅适用于 JSON 内部的 meta,不能照搬到图标的平铺 nbt 字段。
| 标签类型 | 值的形态 |
|---|---|
| 字节、短整数、整数、长整数 | "1b"、"1s"、"1i"、"1l" |
| 单精度、双精度 | "1.5f"、"1.5d" |
| 文字 | "内容t",末尾 t 为类型标记,不属于最终文字 |
| 字节、整数、长整数数组 | "1,2b]"、"1,2i]"、"1,2l]" |
直接写没有后缀的普通数值、布尔值、null 或旧式 type/data 包装,都不是这里可任意混用的格式。旧式物品与 1.20.5+ 组件物品需要的标签结构不同;后者不能只放几项自定义标签,就期待恢复完整名称、附魔或组件。需要明确元数据兼容性时优先使用整件物品 Base64,而不是手工拼装跨版本的 meta。
**JSON 导出与导入存在不对称:**导出结果中的 meta 仍可能是旧式 type/data 包装,不能保证直接复制回此入口可用;1.20.5+ 的 JSON 导出也不能保证保留整件物品的组件。需要保留染色、复杂标签、旧子 ID 或标准存储附魔书时,使用 Format Base64,不要把 Format Json 当作与 Base64 等价的完整备份。
后续填写的 Invero name、lore、amount 等仍会覆盖来源物品的对应属性。导出命令会向主配置指定的粘贴服务上传内容;命令参数和打印方式见命令。
由 Kether 取得物品
kether 来源不需要外部物品插件,value 是返回物品的 Invero 语句:
A:
texture:
source: kether
value: "item 'PAPER' amount 1"
name: '&f脚本取得的纸'这里的 item 返回物品,不发到玩家背包。结果必须是物品,并且在本次取值时立即可用;发送消息、执行命令、等待输入、延时或异步执行都不能保证得到可用的物品结果。玩家相关、延时型生成不建议绕经此来源,普通按钮优先使用材料或已有物品。
kether 也可作顶层简写键;使用 source 对象更容易与其他外部物品统一结构。item 的完整语法见Invero 语句参考。
Last updated on