上一页:概览.md · 下一页:方块模型作物.md 相关:../02-服主指南/物品源引用.md · ../04-开发者/物品API.md · 概览.md
🎒 物品类插件对接
QCL 把九个物品来源都接成了「物品桥」。它们的共同价值是:让别家插件的物品,能用 QCL 的统一引用语法被引用 —— 无论是在 QinhItems(QI)、自定义 GUI、CustomBlock 掉落、还是开发者 API 里。
🧷 核心心智模型:你几乎从不直接调用某个桥。你只需要写一段物品源引用字符串(如
mi-SWORD-CUTLASS),QCL 会自动派发到对应的桥取出物品。引用语法总览见 👉 ../02-服主指南/物品源引用.md。
🧭 引用前缀速查
| 插件 | 引用前缀 | 例子 |
|---|---|---|
| MMOItems | mi-类型-id | mi-SWORD-CUTLASS |
| NeigeItems | ni-id | ni-magic_apple |
| MythicMobs | mm-id | mm-SkeletonKingBlade |
| MagicGem | mg-id | mg-fire_ruby |
| CustomFishing | cf-id | cf-golden_carp |
| ItemsAdder | ia-命名空间_id | ia-myitems_ruby_sword |
| Nexo | nx-id | nx-ruby_sword |
| CraftEngine | ce-命名空间_id | ce-default_oak_chair |
| QinhItems | qi:id | qi:flame_blade |
⚠️ 引用前缀里的
-/_/:都是约定写法,请照抄格式。下文每个插件会说明各自的坑。
⚔️ MMOItems
| 项目 | 内容 |
|---|---|
| 桥类 | MMOItemsBridge |
| 引用前缀 | mi-类型-id |
| 检测类 | net.Indyuce.mmoitems.MMOItems |
| 桥能力 | getItem(类型, id)、getType(物品)、getID(物品) |
| 反射要点 | 反射 getTypes / get / getItem |
MMOItems 的物品天生分类型(SWORD、ARMOR、CONSUMABLE…),所以引用必须带类型:
# ✅ 正确:mi - 类型 - id 三段
item: mi-SWORD-CUTLASS
# ❌ 错误:缺类型,桥无法定位
item: mi-CUTLASSgetType(物品)/getID(物品):反向读取一个物品的 MMOItems 类型与 id,用于「这是不是某个 MMOItems」之类判定。
🍎 NeigeItems
| 项目 | 内容 |
|---|---|
| 桥类 | NeigeItemsBridge |
| 引用前缀 | ni-id |
| 检测对象 | pers.neige.neigeitems.manager.ItemManager.INSTANCE |
| 桥能力 | getItemStack(id)、getItemId(物品) |
NeigeItems 物品不分类型,引用只要 id:
item: ni-magic_applegetItemId(物品):反查一个物品是不是某个 NeigeItems(返回它的 id)。
💀 MythicMobs
| 项目 | 内容 |
|---|---|
| 桥类 | MythicMobsBridge |
| 引用前缀 | mm-id |
| 桥能力 | getItemStack(id, 数量) |
| 反射要点 | 双绑定:现代版 io.lumine.mythic.bukkit.MythicBukkit + 遗留版 io.lumine.xikage |
MythicMobs 经历过包名大改,所以这个桥同时尝试绑定两套类:
| 绑定模式 | 对应版本 | 类名根 |
|---|---|---|
| 现代版 | 新版 MythicMobs | io.lumine.mythic.bukkit.MythicBukkit |
| 遗留版 | 老版 MythicMobs | io.lumine.xikage |
item: mm-SkeletonKingBlade🔍 诊断:
/qcl status detail会显示该桥实际命中的bindMode。如果你的 MythicMobs 物品取不出来,先看 bindMode 是不是和你装的版本对得上。
💎 MagicGem
| 项目 | 内容 |
|---|---|
| 桥类 | MagicGemBridge |
| 引用前缀 | mg-id |
| 检测类 | pku.yim.magicgem.gem.GemManager |
| 桥能力 | getGemItem(id)、hasGem(id) |
| 反射要点 | getRealGem() / realGem |
item: mg-fire_rubyhasGem(id):判断该宝石 id 是否存在,可用于「引用前先校验」。
🎣 CustomFishing
| 项目 | 内容 |
|---|---|
| 桥类 | CustomFishingBridge |
| 引用前缀 | cf-id |
| 桥能力 | buildItem(id, 数量) |
| 反射要点 | 多类名 + 多构建方法 + 多上下文兼容 |
CustomFishing 不同版本的构建入口差异较大,桥做了多类名 / 多构建方法 / 多上下文的兼容尝试。
item: cf-golden_carp🧩 ItemsAdder
| 项目 | 内容 |
|---|---|
| 桥类 | ItemsAdderBridge |
| 引用前缀 | ia-命名空间_id |
| 检测类 | dev.lone.itemsadder.api.CustomStack |
| 桥能力 | buildItemStack(id, 数量) |
| 反射要点 | 用插件自己的类加载器加载 |
ItemsAdder 的物品 id 是 命名空间:id 形式。在 QCL 引用里,把冒号 : 换成下划线 _:
# ItemsAdder 里的 myitems:ruby_sword
item: ia-myitems_ruby_sword⚠️ 下划线转写:ItemsAdder 原生 id 用
:分隔命名空间,QCL 引用前缀里写成_。
🔷 Nexo
| 项目 | 内容 |
|---|---|
| 桥类 | NexoBridge |
| 引用前缀 | nx-id |
| 检测类 | com.nexomc.nexo.api.NexoItems |
| 桥能力 | buildItemStack(id, 数量) |
| 反射要点 | itemFromId().build() |
Nexo 是 Oraxen/ItemsAdder 一脉的继任者,物品 id 直接用:
item: nx-ruby_sword🛠️ CraftEngine(物品部分)
| 项目 | 内容 |
|---|---|
| 桥类 | CraftEngineBridge / CraftEngineManager |
| 引用前缀 | ce-命名空间_id |
| 桥能力(物品) | buildItemStack(标识, 数量) |
| 反射要点 | 多版本多签名兼容 |
CraftEngine 不只提供物品,还提供自定义方块 / 家具的放置与识别能力 —— 物品引用在这里,方块/家具能力见 👉 方块模型作物.md。
# CraftEngine 里的 default:oak_chair
item: ce-default_oak_chair⚠️ 同 ItemsAdder:命名空间分隔符
:在引用里写成_。
🏮 QinhItems(内部源)
| 项目 | 内容 |
|---|---|
| 内部源类 | QinhItemsItemSource(非反射桥,是内部物品源) |
| 引用前缀 | qi:id |
| 实现 | 反射 QinhItemRegistry.create(id, 数量) |
| 前提 | 需 QinhItems 已启用 |
QinhItems(QI)是秦淮生态的自家物品系统。它在 QCL 里以内部物品源形式存在(区别于第三方反射桥),但引用语法照样统一:
item: qi:flame_blade💡 QI 物品 id 用冒号
qi:id,与上面多数第三方插件的-略有不同,请照抄。
🧪 怎么用这些引用
无论哪个前缀,引用字符串能出现的地方是一致的:
- QinhItems 配方/掉落/属性来源里引用别家物品。
- 自定义 GUI:图标
material写成物品源引用。 - CustomBlock:方块掉落物。
- 开发者 API:见 ../04-开发者/物品API.md。
所有引用都走 QCL 统一物品源解析层,解析不到(插件没装 / id 写错)时返回空而非报错。
📚 继续阅读
- 🔗 ../02-服主指南/物品源引用.md —— 引用语法总览、解析顺序、原版物品写法。
- 🧱 方块模型作物.md —— CraftEngine 的方块/家具能力、ModelEngine、CustomCrops。
- 🧑💻 ../04-开发者/物品API.md —— 在代码里解析物品源引用。
- 🧩 概览.md —— 软依赖 + 反射桥设计哲学、全插件总矩阵。