Skip to content

旧配置转换器下线清单

convert-legacy 是一次性迁移设施,不是插件功能。本页记录它的下线契约:等所有服务器都迁移完成后,照这份清单删除即可,不必重新调查调用点。

判定位收口本身的说明在物品匹配器,本页只讲「怎么把转换器整包删掉」。

为什么单独记一页

转换器分布在 6 个包里(CoreLib 共享引擎 + 5 个模块各自的目标定义),彼此有删除顺序约束。删错顺序会让其余模块的转换器编译失败,而这个依赖关系从代码里看不出来——LegacyMessageSink 还被两个非迁移用途的类实现着。

删除顺序

CoreLib 的 corelib.legacy 是共享引擎,被全部 5 个模块依赖。单独删它会让每个模块的转换器编译失败,所以它必须与模块级 legacy 包在同一次改动里下线,不能提前。

整包下线清单

一次改动内删除以下全部内容:

  1. EmakiCoreLibcorelib.legacy 包;
  2. 5 个模块各自的 legacy 包(Cooking / Forge / Gem / Level / Strengthen);
  3. 每个模块命令路由里那一行 case "convert-legacy" -> ...,以及 tab 补全列表里的 "convert-legacy" 字符串;
  4. 每个模块双语语言文件中的 command.convert_legacy.* 键;Gem 与 Strengthen 另有 command.help.desc.convert_legacy
  5. 每个模块加载期的 reportLegacyItemSources() 调用(Strengthen 无此调用);
  6. AbstractMessageServiceLevelMessageServiceimplements LegacyMessageSink 子句。

第 6 项容易漏:LegacyMessageSink 是共享引擎里唯一有非迁移用途消费方的成员,删包时这两个 implements 会变成悬空引用。

各模块落位

模块迁移目标命令入口删包后需要改的其他位置
CoreLib共享引擎,无自己的目标AbstractMessageServiceLevelMessageServiceimplements
Cookingconfig.ymlrecipes/ 中的旧扁平 matcher 键迁移到嵌套 item_sources + matcher;发酵桶 inputs[] 保留旧键以便兼容状态身份空间/emakicooking convert-legacyCookingCommandRouterEmakiCookingPlugin
Forgerecipes/materials[]blueprint_requirements[]item_sources 结构迁移到当前字段形态;材料目标保留旧键/emakiforge convert-legacyForgeCommandRouterEmakiForgePlugin
Gemitems/*.yml 的旧 match/emakigem convert-legacyGemCommandRouterEmakiGemPlugin
Levelsources/*.ymlresult_item_sourcesitem_sources/emakilevel convert-legacyLevelCommandEmakiLevelPlugin
Strengthenrecipes/*.yml 的旧 match/emakistrengthen convert-legacyStrengthenCommandRouter

共同安全性质

这些性质是「可以放心删」的依据:

  • 只从命令入口与加载期扫描告警进入,运行期的判定、加载、锻造/烹饪/镶嵌路径都不调用它;
  • 不读运行期状态,不写任何 PDC 条目,不碰玩家存档;只读写插件数据目录下的配置文件;
  • 删掉整包后,除上表列出的位置外,插件其余部分照常编译。

各模块特有边界

判定位改成 item_sourcesmatcher 同级 AND 之后,转换器的可迁移面已经明显收窄:

Cooking / Forge / Gem 仍保留配置迁移目标。 Cooking 的转换器处理工具、锅铲、容器、蒸锅加水规则、营养映射以及各类配方输入的旧扁平 matcher 键;发酵桶 inputs[] 迁移会保留旧键,以保持持久化槽位身份的兼容空间。Forge 的转换器处理 materials[]blueprint_requirements[] 的旧来源字段,材料项保留旧键。Gem 的转换器处理开孔器与宝石定义中的旧来源字段;宝石构造底材当前推荐独立使用 base_item_source,旧顶层 item_sources 仍作为构造底材回退读取。

Level 仍有一项真实转换: sources/*.ymlrules[].result_item_sourcesitem_sources

Gem / Strengthen 的旧 match 块转换仍在,且输出可直接使用。 两个转换器都不再往 matcher 里写 type: item_source:Gem 把旧 match.item_sources 提升为顶层 item_sources;Strengthen 把旧 match.source_ids 转成锚定正则(形如 ^\Qemakiitem-xxx\E$)并合并进顶层 source_patterns。转换结果无需手工修正。

判断迁移是否完成

旧写法不会静默失效:Cooking 的旧扁平前缀键与 Gem 的旧顶层 item_sources 都被加载期兼容读取,只是不再是推荐写法。

Cooking、Forge、Gem、Level 四个模块启动时会扫描残留旧写法并告警(Strengthen 没有这个调用,只能靠 /emakistrengthen convert-legacy 主动预览)。连续若干个版本没有服主再报告该告警,即可认为迁移期结束,按上面的清单整包下线。