Skip to content

模板 / 其他子编辑器

所属:编辑器 GUI · 相关:碎片与模板 · 资源包

本页汇总物品编辑器下剩余的子编辑器:模板中心、资源包 / 模型、以及编辑器的会话 / 保存机制。


1. 模板中心(TemplateHubGui)

从物品编辑器 [模板] 进入。顶部多个标签:定义 / 技能 / 能力 / 资源包 / 类型信息 / 库

定义标签

  • Lore / 碎片(FragmentSelectionGui + LoreBlockGui):
    • 分页管理引用的碎片 ID。
    • Lore 行增 / 改 / 删(聊天输入)。
  • 变量(VariableDeclarationGui):
    • 分页管理变量条目(键=值)。
    • 添加:输入键 → 输入值。
    • Shift + 右键编辑值;右键删除。

技能标签

显示动作表 + 触发器数 + 技能绑定概览,可跳到动作 / 技能编辑器

能力标签

列出物品的能力模块(skill / attribute / render / set…),点击查看条目。

资源包标签

跳到资源包中心(见下)。

🖼️ [图片占位] 模板中心的定义标签(碎片 + 变量) · 建议 assets/editor-template.png


2. 资源包 / 模型中心(ResourcePackHubGui)

编辑物品的自定义模型

  • CMD 编辑器(CMDEditorGui):设 custom_model_data
  • 模型选择器(ModelSelectorGui):从 integrations/resource_models.yml模型目录分类里选模型。

注意 QI 对资源包字段有严格隔离校验,模型不能绑定变量 / 层 / 条件。


3. 段 / 词缀编译(SectionAffixCompileGui)

用于查看 / 编译词缀


4. 内容包编辑(ItemPackEditorGui)

/qi packs gui 打开,管理 .qipack 内容包的导出 / 导入 / 同步。导入导出机制见 导入导出


5. 会话与状态(EditorSession)

编辑器按玩家维护一个 EditorSession,记录:

  • mode:当前状态机模式(80+ 种,决定下一条聊天消息被哪个监听器消费)。
  • workingCopy:正在编辑的物品定义(内存工作副本)。
  • 各子编辑器的草稿(当前触发器、动作草稿、套装档索引、变量键、属性键值…)。

EditorSessions.isAwaitingChat(player) 判断玩家是否处于「等待聊天输入」状态。关背包不保存 = 丢弃工作副本。


6. 保存守卫(EditorSaveGuard)

保存流程:

saveItemOrNotify(player, definition)
1. PolicyEngine.validateItem(definition) 校验(约束检查,不只是 schema)
2. 有错误 → 聊天提示错误,拒绝保存
   有警告 → 聊天提示,继续
3. QinhItemRegistry.save() 写回 sourceFile
4. ActionTableRegistry.reload() 热重载动作表
5. 成功提示 + 铁砧音效

校验规则(你可能遇到的报错)见 资源包 → 校验约束


7. 聊天输入系统(EditorChatInput)

很多字段点击后会关背包、在聊天框提示输入。统一提示格式:

─────────────────
[QinhItems 编辑器] <标题>
<提示行 1>
<提示行 2>
输入 cancel 取消
─────────────────

EditorChatListener 拦截下一条消息:输入 cancel 取消并回到上个界面,否则按当前模式处理输入、更新会话、重渲染界面。


下一步