Skip to content

概览:QI 是什么

上一页:首页 · 下一页:安装与环境

一句话定位

QinhItems(QI)是一个数据驱动的自定义物品引擎:服主用 YAML(或游戏内 GUI)描述「一件物品长什么样、有什么属性、按什么键触发什么效果」,QI 负责把这份描述编译成真正的 Minecraft ItemStack,并在运行时维护它的显示、属性、动作、绑定状态。

如果你用过 MMOItems,可以这样类比:

MMOItems 概念QI 对应备注
Item Types物品类型QI 的类型自带「能力矩阵」
Stats属性 providers.ap / 变量数值交给 AttributePlus
Abilities动作系统触发器 + 处理器
Tiers品质 Tier权重抽取 + 容量
Gem Stones宝石孔双后端
Sets套装按件数激活
/mi 命令/qi 命令
Editor GUI编辑器 GUI

但 QI 不是 MMOItems 的复刻。它有几个根本性的设计差异,理解它们能帮你少踩坑。


QI 的三条设计哲学

1)QI 不管「数值怎么算」,只管「数值挂在物品上」

QI 本身不计算战斗伤害。它把属性以一段 JSON(providers.ap.value)的形式挂在物品上,装备时交给 AttributePlus(AP)去真正作用到玩家身上。这意味着:

  • 「攻击力 = 22」这种数字的含义由 AP 决定(你在 AP 里定义了什么叫"物理伤害")。
  • QI 只负责:把物品上的属性读出来 → 格式化 → 交给 AP,以及在物品 Lore 上显示它们。
  • 没装 AP?QI 进入「纯物品库模式」,物品照样能造、能触发动作、能显示,只是数值不上身。

详见 属性与数值

2)物品 = 模板(Definition) + 实例数据(Instance) + 层(Layers)

一件 QI 物品在内存里由三部分叠加而成:

  • 模板(Definition):YAML 里写死的那份「设计图」,所有同 ID 物品共享。
  • 实例数据(Instance):写在这一个具体 ItemStack 的 NBT 里的、每件不同的状态——例如随机滚出来的数值、绑定者、种子。
  • 层(Layer):创建之后追加上去的「补丁」——例如打孔、镶嵌、强化、附加词缀。层有归属域(owner domain)和优先级,受策略保护。

最终展示给玩家的物品,是这三者经过**装配管线(Assembly Pipeline)**合成的结果。开发者改物品时要分清自己在改哪一层,详见 层与装配

3)配置层(YAML)只描述「是什么」,逻辑交给处理器(Handler)

QI 的动作系统故意不支持 YAML 里写 if / else / switch / 条件分支。一个触发器底下只是「按顺序执行一串处理器引用」。需要复杂逻辑?由开发者实现一个动作处理器QinhActionHandler),把逻辑写在 Kotlin/Java 里,YAML 只负责引用它并传 payload。

这条边界让配置保持简单、可被 GUI 完整编辑,同时把复杂度收纳进代码。详见 动作系统概览动作处理器开发


它能做什么 —— 典型场景

  • 造一把左键召唤雷鸣、3 秒冷却、消耗 1 红石的史诗剑。
  • 造一套穿 4 件触发狂暴、附加 +15 物理伤害与急迫 II 的战士套装。
  • 造一件绑定后无法交易、死亡不掉落的灵魂武器。
  • 让武器带 2 个宝石孔,玩家用 Legendinlay 镶嵌宝石。
  • 配一张随机掉落表:按品质权重抽稀有度,再按容量抽词缀,生成千变万化的装备。
  • 从旧的 MMOItems 配置批量导入到 QI。

它在秦淮生态里的位置

QI 是秦淮系列的「物品底座」。与它协作的兄弟模块:

  • QinhCoreLib(QCL) — 统一底层库(物品源管理、属性管道、动作契约)。QI 硬依赖它
  • QinhSkills(QS) — 技能引擎。物品动作里的 qinhskills:cast 把技能释放交给 QS。
  • AttributePlus(AP) — 第三方属性插件,QI 的数值后端。

🖼️ [图片占位] 秦淮生态模块关系图(QCL 底座、QI 物品、QS 技能、AP 数值) · 建议 assets/ecosystem-diagram.png


继续阅读