Skip to content
iPlugin

物品属性

查阅图标外观字段、继承规则、模型、提示信息与 NBT 的适用范围。

本页用于查字段。想从一个按钮开始修改材质、文字与点击反馈,见制作按钮外观。物品从哪里取得,见物品来源。

写入位置

常规外观字段可以直接写在 panels 中某个面板的 icons.A 下,也可以集中写在 icons.A.display 中:

图标片段:放在 icons 下
A:
  display:
    material: DIAMOND_SWORD
    name: '&b物品详情'
    lore:
      - '&7钻石剑'
      - '&7点击查看详情'
    amount: 1
    damage: 0
    unbreakable: true
    flags:
      - HIDE_ATTRIBUTES
      - HIDE_UNBREAKABLE
  action: "mmsg '&b钻石剑 &7· &f数量 1'"

action 留在图标层,与 display 同级。一旦写了 display,就把这份图标的外观字段全部放进去;同一图标外层的 name、lore、material 等不会再合并进去。每个字段只填写一个名称,不同时填写其别名。

头像和外部来源的顶层简写不属于普通外观字段。使用 display 时,应写成 display.texture.head 或 display.texture.source/value,不能直接写 display.head、display.itemsadder。动画 frames 的每一项也接受外观字段,详见动画。

字段

以下是未从父图标继承值、也没有动画默认外观补值时的省略行为。省略属性通常意味着不覆盖来源物品的原值,不意味着重设为 1、0 或 false。新图标必须提供来源或继承来源;仅填写名称不会自动生成一张纸。

字段类型必填省略行为说明
texture(material、mat)材料文字或来源对象否;新图标需有一种有效来源不指定新物品;初次没有来源时为空,动画中保留当前物品材料名如 PAPER;对象使用 head 或 source/value,见物品来源
head(skull)文字否不选择头像来源图标顶层或动画帧的来源简写,不是 display 的直接字段;接受玩家名、纹理 ID、头颅纹理 Base64
name文字否不覆盖原名称支持颜色、占位符和文字样式;需要确定颜色时显式填写颜色代码
lore(lores)文字或文字列表否不覆盖原 Lore填写时替换整份说明,不追加;每项或实际换行分别显示一行
enhancedLore布尔值否不转换文字形式的 \ntrue 才把 Lore 中的文字换行标记拆行;不控制其他文本位置
amount(count、amt)整数或表达式文字否不覆盖原数量解析后最小为 0;0 不显示正常堆叠物品,不要把它当作“显示数字零”
damage(durability、dur)整数或表达式文字否不覆盖原损伤值填写损伤而非剩余耐久;0 表示无损伤,使用服务端支持的数值范围
customModelData(model)整数或表达式文字否不覆盖原模型数据需要支持模型数据的服务端;单个整数编号,不接受浮点列表或完整模型组件对象
itemModel(item_model、item-model)文字否不覆盖原物品模型命名空间:路径,支持占位符;需要 1.21.2+;空文字用于清除该模型设置
color文字否不改变染色填写也不生效;不能给皮革装备、药水等染色,见物品染色
glow(shiny)布尔值或表达式文字否不主动修改发光相关属性true 添加隐藏的饵钓附魔;false 不是清除全部附魔,见附魔与发光
enchantments(enchantment、enchant)附魔名到整数等级的映射否不添加附魔,已有附魔保留添加或覆盖同名附魔,不清空其他附魔;等级必须是整数
flags(flag)文字或文字列表否不添加提示标志只添加,不清除已有标志;名称必须在当前服务端存在
hideTooltip(hide_tooltip、hide-tooltip)布尔值或表达式文字否不修改已有提示框设置true 隐藏整个提示框,需要 1.20.5+;false 不恢复已隐藏的提示框
unbreakable布尔值或表达式文字否不修改已有不可破坏设置true 设置不可破坏;false 不清除来源物品已有的不可破坏状态
nbt标签名到单个值的映射否不添加或覆盖标签常规可用值为文字或数字;支持值中的占位符,有布尔值与嵌套限制,见NBT
slot(slots、pos、position、positions)整数、位置文字或其列表否初次使用布局位置;后续保留当前位置面板局部位置;序号、坐标、范围和列表见布局与槽位
delay(last)整数,单位 tick否动画帧使用统一间隔,未设时为 20 tick仅动画帧项有效;图标顶层简写不读取它,不控制点击冷却

省略、继承与覆盖

  • 子图标未填写的外观属性通常从父图标继承;inherit: false 可关闭这一行为,见图标。
  • 动画帧未填写的常规属性使用图标的默认外观。没有新来源的帧在当前物品上继续修改,不会自动还原来源物品。
  • name、lore 等一旦填写就覆盖对应内容;flags、enchantments 和 nbt 不是“先清空再重建”。
  • enhancedLore 的动画行为有例外:需要拆分文字 \n 的每一帧都应填写 enhancedLore: true。
  • 动画使用 nbt 时,在需要它的每一帧中明确填写对应映射,不要仅依赖默认外观中的 nbt 补值。

动画关联字段

这些设置写在图标层,与 display 同级,不要放进 display:

字段类型必填省略行为说明
frames外观对象列表否没有物品帧动画每项可使用本页外观字段及 delay
framesProperties(frames-properties、frames-prop、prop)动画设置对象否默认间隔 20 tick、模式 LOOP为 frames 提供统一设置

以下字段写在 framesProperties 中:

字段类型必填省略行为说明
delay(default-delay、period、last)整数,单位 tick否20 tick统一帧间隔;单帧的 delay / last 优先
mode(type)模式文字否LOOPONE_WAY 单向、LOOP 循环、REVERSIBLE 往返、RANDOM 随机

模式名不区分大小写,空格或连字符可替代下划线;无法识别的模式回到 LOOP,不是近似匹配。完整使用方式见动画,Lore 和 NBT 的逐帧限制仍按本页说明处理。

位置格式

slot 的坐标相对所在面板,序号从 0 开始;面板宽度决定序号换算,不能把窗口槽位直接套到任意子面板。

写法含义
0第一个槽位
'4x1' 或 '4,1'第五列、第二行,坐标从 0 开始
'0~8'、'0-8'、'0..8'从 0 到 8,包含两端,使用递增范围
'0;8;4x1'分号组合多个序号或坐标
块状列表每项写一个上述位置表达式,不使用嵌套坐标对象
含实际换行的布局文字取出现次数最少的非空字符对应的位置;有多个同样少的字符时不要依赖其选择顺序

常规排版优先使用清晰的 layout 或槽位列表,示例见布局与槽位。

Lore 与换行

lore-demo.yml配置效果示意 · 非游戏截图
窗口槽位 1窗口坐标 1x0面板局部坐标 1x0字符 B

三种配置写法均显示两行 Lore;选择纸张可查看说明。

图示中的三张纸悬停后都显示“第一行”“第二行”,区别只在配置写法。可下载 lore-demo.yml,保存到 plugins/Invero/workspace/ 后,用 /invero menu reload 和 /lore-demo 打开。

图标片段:放在 icons 下
A:
  material: PAPER
  lore:
    - '&7第一行'
    - '&7第二行'

列表每项就是一行,不需要 enhancedLore。

节点或占位符返回真正的换行时也会分行;返回文字 \n 时才需要增强处理。它只影响 Lore,不负责颜色、名称换行或聊天悬停换行。lore 与 enhancedLore 要放在同一份显示配置里。

数量与动态值

图标片段:放在 icons 下
A:
  material: PAPER
  name: '&f计数'
  amount: '{{ctx get count}}'

count 应由菜单变量或打开参数提供,例如在菜单顶层初始化:

菜单顶层片段
events:
  pre_open: 'ctx set count to 1 true'

数值变化后用 icon update 或 icons update 刷新,详见图标刷新。数值字段应得到数字;无法转换的文字可能变成 0,不会替你保留原值。布尔表达式可返回 true / false,也识别 yes / 1 为真。

模型

图标片段:放在 icons 下
A:
  material: PAPER
  name: '&f模型按钮'
  customModelData: 1001

customModelData(model)只设置整数模型数据;它不会自动生成模型资源,也不提供新版完整自定义模型数据组件的列表配置。

两者是不同的设置,不是彼此的别名。选择哪种取决于资源包采用的模型方案;仅填写编号或路径,不会把普通纸自动变成自定义图案。

隐藏提示信息

图标片段:放在 icons 下
A:
  material: DIAMOND_SWORD
  name: '&b展示物品'
  unbreakable: true
  flags:
    - HIDE_ATTRIBUTES
    - HIDE_UNBREAKABLE
设置可见效果与限制
HIDE_ENCHANTS隐藏附魔文字,不删除附魔
HIDE_ATTRIBUTES隐藏属性提示;在 1.21+ 还会清空该物品的属性修饰数据,不应当作纯文字隐藏使用
HIDE_UNBREAKABLE隐藏不可破坏提示,不改变不可破坏状态
hideTooltip: true隐藏整个提示框,包括名称和 Lore;需要 1.20.5+

flags 接受当前服务端提供的物品标志,不限于上表。名称不区分大小写,名称中的空格可替代下划线;连字符不是通用替代写法。拼错或填写当前服务端不存在的名称会导致该图标处理失败,而不是自动忽略。

unbreakable: false、hideTooltip: false 以及删去一项 flags,均不能保证清除导入物品原有的设置。要恢复提示,选择没有这些隐藏设置的来源物品。

NBT

写在当前外观配置的 nbt 下:

显示属性片段
nbt:
  example_tag: 'menu_button'
  example_number: 7
  example_short: '1s'
  example_owner: '{{player name}}'

nbt 只接受一层映射,值为单个文字或数字的常规用法;不能在值处直接放嵌套对象、列表或完整数据组件。标签名中的点号可表示层级路径,例如 example.owner;这仍是平铺的 YAML 键,不是在值处嵌套对象。同名顶层标签被覆盖,其他顶层标签保留;不是递归合并,使用点路径创建的父标签也可能替换旧父标签的其他内容。此字段不提供删除标签的语法,也不能用 null 当作删除指令。

值会按内容识别整数、长整数、小数等类型;加引号的 '123' 也不保证保存为文字。'1s' 这类非负整数字样加 s 的文字可表示短整数。不要填写 true / false:虽然字段能读入布尔值,实际写入不支持它们,给布尔文字加引号也不能解决。需要特定标签类型或复杂结构时,使用已有物品来源,不要把此字段当作完整 NBT 编辑器。

动画中的 NBT 与增强 Lore

不要把“省略帧字段使用默认外观”理解成 NBT 与增强开关也能完全补齐。默认外观含 nbt 而当前帧省略 nbt 时,该帧可能处理失败;需要转换文字 \n 时也必须在当前帧开启增强处理。

下面是可直接放在 icons 下的两帧图标片段。两帧均显式填写 NBT 和 enhancedLore,只有名称变化,说明始终显示两行:

图标片段:放在 icons 下
A:
  material: PAPER
  name: '&f状态'
  lore:
    - '&7第一行\n&7第二行'
  enhancedLore: true
  nbt:
    example_tag: 'menu_button'
  frames:
    - name: '&a显示状态'
      enhancedLore: true
      nbt:
        example_tag: 'menu_button'
    - name: '&e等待状态'
      enhancedLore: true
      nbt:
        example_tag: 'menu_button'

如果不需要外观动画,直接使用默认外观、不配置 frames 即可。帧间隔、循环模式和其他逐帧限制见动画。

物品染色

color 是可读入但不会生效的字段,不会改变皮革装备、药水或其他物品的颜色。需要染色效果时,先准备好目标物品,再通过物品来源导入。名称与 Lore 的文字颜色不受此限制,直接使用颜色与样式。

Last updated on