Repository navigation
v0.6.0 — 会自己排步骤:依赖图、make、箱子取料
这一版补上的
依赖图 + 目标规划(新 plan 模块)
清单里的配方和站点现在能变成"做一个东西要几步、缺什么"的答案:
buildRecipeGraph(manifest):物品 → 配方(原料分组、工具、站点类型、产出数量)planTarget(graph, {item, count, have, stock, stations}):目标 → 按执行顺序的步骤,
只输出宿主已有的craft / cut / pot / cook / smelt / take;按背包记账递归补原料,
工具按"候选里有一把就行",带循环/6 层/96 步上限- 箱子里的料也算:背包不够先看够得着的箱子,够就排
take;工具、成品本身同理 - 容器(锅要碗)按真实原料算:每批一个,缺了先从箱子取,取不到如实报缺
宿主的 make 技能消费它:拿所有已加载包的配方和站点,调 planner 按序执行,失败就用
当前背包重排一次(重排出来还是同一串步骤就停)。真机验证:三碗牛肉炖(先从箱子拿一碗
现成的、再下锅做两碗),27 秒齐。
盲搜文法自动起语义字段名
--accept/待审落盘时把 f0/f1 按 kind 命名为 ingredient/ingredient2/result/results,
join 也认这种命名。Fromage 那 28 条 cheese_slicing/waxing/stracciattella 因此可消费,
不再被误标成 SimpleRecipeSerializer。
探针不再被自定义窗口打崩
Fromage 的压模是自定义窗口类型(25/26),prismarine-windows 不认识 → createWindow
返回 null → mineflayer 读 window.id 抛 TypeError,整个探针进程崩在第 40/63 个方块。
现在在 emit 层接住,记为"开窗但界面未知"——不能因为播不出来就当成不开窗。
一个反直觉的边界(写进文档)
fromage:cheddar 的物品是食物不是 BlockItem:拿它右键支撑块,服务端按"吃食物"处理,
物品被吃掉、方块没放下。所以"物品 id == 方块 id"推不出可放置性,方块交互类配方暂时
不会自动排 place;宿主保留了通用的 place 技能(vanilla 石头实测通过)。
现状
- 155 个测试全绿
- 已知边界:方块交互配方要"可放置性/方块形态"数据;gui/流体机制仍不支持