模板 / 其他子编辑器
本页汇总物品编辑器下剩余的子编辑器:模板中心、资源包 / 模型、以及编辑器的会话 / 保存机制。
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 取消并回到上个界面,否则按当前模式处理输入、更新会话、重渲染界面。