图标配置
Suite 统一图标系统配置指南,支持 Material、外部物品库、自定义贴图、头颅、发光等
图标配置
概述
IconDefinition 是 Suite 的统一图标配置系统。所有模块中需要展示物品图标的地方——如菜单按钮、奖励图标、商店商品、鱼类图鉴、抽奖物品等——都使用统一的 icon: 配置节。
IconResolver 负责将配置解析为两部分:
- ItemStack:服务端实际使用的物品对象
- JSON:客户端 UI 渲染用的物品 JSON 数据
这种统一设计使得图标配置在不同模块间完全一致,学会一处即可全局适用。无论你是配置一个菜单按钮还是一个抽奖奖品,icon: 节的写法完全相同。
完整字段列表
IconDefinition 支持以下 17 个字段:
| 字段 | 说明 | 默认值 |
|---|---|---|
material | Bukkit Material 名 | STONE |
amount | 数量 | 1 |
name | 显示名(支持颜色码 & 和 PAPI) | - |
lore | 描述列表(支持颜色码和 PAPI) | - |
custom-model-data / customModelData | 自定义模型数据 | - |
source | 外部物品来源 | - |
id / item-id | 外部物品 ID | - |
mmo-type / mmoType | MMO 类型 | - |
mmo-id / mmoId | MMO 物品 ID | - |
json | 整段物品 JSON(SNBT) | - |
texture | 自定义贴图标识(写入 NBT icon 键) | - |
texture-url / url | 贴图 URL(写入 NBT url 键) | - |
nbt | NBT 标签(键值对配置节或 SNBT 字符串) | - |
glow | 是否附魔发光 | false |
skull-texture / skullTexture | 头颅 Base64 或 URL | - |
color | 皮革染色 #RRGGBB | - |
带斜杠的字段名互为别名,配置时任选其一。
name和lore中的&颜色码会自动转换为§,PlaceholderAPI 占位符也会自动解析。
解析优先级
IconResolver 按以下顺序解析图标配置:
- JSON 优先:若配置了
json字段,按 SNBT 格式直接生成物品,跳过其他来源 - 外部物品来源:若配置了
source+id,调用 ItemSourceRegistry 生成外部物品(MythicMobs、NeigeItems、Overture、MMOItems 等) - 原版 Material:否则按
material字段创建原版物品 - 属性叠加:最后在生成的物品基础上叠加
name、lore、customModelData、glow、skullTexture、color、nbt、texture、textureUrl等属性
属性叠加阶段会覆盖外部物品自带的
name、lore等属性。若希望保留外部物品原始属性,请勿在icon:中重复配置这些字段。
配置示例
基础原版物品图标
最简单的图标配置,仅需指定 material:
带自定义名称和描述
通过 name 和 lore 自定义显示文本,支持 & 颜色码和 PAPI 占位符:
使用 MythicMobs 物品作为图标
通过 source + id 引用外部物品库的物品:
自定义模型数据
通过 custom-model-data 配合资源包使用,实现自定义贴图:
附魔发光效果
通过 glow 让物品呈现附魔发光效果(不实际添加附魔属性):
玩家头颅
通过 skull-texture 配置玩家头颅,支持 Base64 纹理值或 URL:
material必须为PLAYER_HEAD才能显示头颅纹理。
皮革染色
通过 color 为皮革盔甲染色,格式为 #RRGGBB:
color仅对皮革类物品(LEATHER_HELMET、LEATHER_CHESTPLATE、LEATHER_LEGGINGS、LEATHER_BOOTS)生效。
自定义贴图
通过 texture 和 texture-url 写入自定义 NBT 键,供客户端模组或资源包识别:
texture写入 NBT 的icon键texture-url写入 NBT 的url键
完整 NBT
通过 nbt 字段直接附加 NBT 标签,支持键值对配置节或 SNBT 字符串两种写法:
键值对写法:
SNBT 字符串写法:
综合示例
结合多种属性配置一个完整图标:
在各模块中的使用
icon: 配置节在以下模块配置中出现,写法完全一致:
| 模块 | 使用场景 | 示例 |
|---|---|---|
| Menu | 菜单按钮图标 | 按钮 icon: 节 |
| Market | 商店商品图标 | 商品 icon: 节 |
| BattlePass | 等级奖励图标 | 奖励 icon: 节 |
| Fishing | 鱼类图鉴图标 | 鱼类 icon: 节 |
| Lottery | 抽奖物品图标 | 奖品 icon: 节 |
Menu 菜单按钮
Market 商店商品
BattlePass 等级奖励
Fishing 鱼类图鉴
Lottery 抽奖物品
故障排除
| 现象 | 排查方向 |
|---|---|
| 图标显示为石头 | 确认 material 名称拼写正确,参考 Bukkit Material 枚举 |
| 外部物品图标不显示 | 确认对应插件已安装,source 和 id 正确 |
| 头颅纹理不显示 | 确认 material 为 PLAYER_HEAD,skull-texture 为合法 Base64 或 URL |
| 皮革染色不生效 | 确认 material 为皮革类物品,color 格式为 #RRGGBB |
| 自定义名称不显示颜色 | 确认使用 & 颜色码(非 §),系统会自动转换 |
| PAPI 占位符未解析 | 确认已安装 PlaceholderAPI 且相关 Expansion 已注册 |
| NBT 标签格式错误 | 确认 SNBT 格式正确,字符串用双引号转义 |