|
| 1 | +--- |
| 2 | +title: 锅具、配方与燃料 |
| 3 | +description: MatrixCook 的核心 YAML 结构。 |
| 4 | +--- |
| 5 | + |
| 6 | +# 锅具、配方与燃料 |
| 7 | + |
| 8 | +MatrixCook 的核心配置分布在 4 个目录: |
| 9 | + |
| 10 | +- `cooker/`:锅具定义 |
| 11 | +- `recipe/`:配方定义 |
| 12 | +- `fuel/`:燃料定义 |
| 13 | +- `categories/`:分类定义 |
| 14 | + |
| 15 | +## 锅具文件 |
| 16 | + |
| 17 | +锅具示例 `cooker/iron_pot.yml` 包含这些重点字段: |
| 18 | + |
| 19 | +```yaml |
| 20 | +iron_pot: |
| 21 | + permission: "cookly.cooker.iron_pot" |
| 22 | + properties: |
| 23 | + speed: 1.0 |
| 24 | + allowed_recipes: |
| 25 | + - "fried_egg" |
| 26 | + hologram: |
| 27 | + idle: |
| 28 | + - "&7铁锅" |
| 29 | + cooking: |
| 30 | + - "&7铁锅" |
| 31 | + - "&a烹饪中 %progress%" |
| 32 | + items: |
| 33 | + hand: |
| 34 | + type: "CAULDRON" |
| 35 | + custom-model-data: 1001 |
| 36 | + placed: |
| 37 | + source: "minecraft" |
| 38 | + type: "block" |
| 39 | + id: "CAMPFIRE" |
| 40 | + gui: |
| 41 | + title: "&6铁锅" |
| 42 | + layout: |
| 43 | + - "AAAAAAAAA" |
| 44 | + - "AAIAIAIAA" |
| 45 | + - "AAAAFAAAA" |
| 46 | + - "AAAAOAAAA" |
| 47 | + - "AAAACAAAA" |
| 48 | +``` |
| 49 | +
|
| 50 | +### 关键点 |
| 51 | +
|
| 52 | +- `permission`:玩家是否可以使用这个锅具。 |
| 53 | +- `properties.speed`:速度倍率。真实烹饪时间会用 `配方时间 / speed` 计算。 |
| 54 | +- `properties.allowed_recipes`:留空表示允许全部配方。 |
| 55 | +- `items.hand`:玩家手里拿到的锅具物品。 |
| 56 | +- `items.placed`:放下后在世界中对应的实体或方块。 |
| 57 | + |
| 58 | +`items.placed` 支持: |
| 59 | + |
| 60 | +- `source`: `minecraft`、`craftengine`、`itemsadder` |
| 61 | +- `type`: `block`、`furniture` |
| 62 | + |
| 63 | +如果你使用 CraftEngine 或 ItemsAdder,锅具的放置监听会分别由对应的监听器处理。 |
| 64 | + |
| 65 | +## 配方文件 |
| 66 | + |
| 67 | +配方示例 `recipe/basic.yml` 使用这些字段: |
| 68 | + |
| 69 | +```yaml |
| 70 | +fried_egg: |
| 71 | + permission: "cookly.recipe.fried_egg" |
| 72 | + ingredients: |
| 73 | + - "EGG:1" |
| 74 | + cooking_time: 10 |
| 75 | + result: |
| 76 | + item: |
| 77 | + type: "COOKED_CHICKEN" |
| 78 | + name: "&6煎蛋" |
| 79 | + amount: 1 |
| 80 | + actions: [] |
| 81 | + failure: |
| 82 | + item: |
| 83 | + type: "CHARCOAL" |
| 84 | + name: "&7烧焦的食物" |
| 85 | + actions: [] |
| 86 | +``` |
| 87 | + |
| 88 | +### 配方规则 |
| 89 | + |
| 90 | +- `ingredients` 支持 `物品ID:数量`。 |
| 91 | +- 也支持分类写法,例如 `categories:蔬菜:2`。 |
| 92 | +- `allowed_fuels` 留空表示兼容所有燃料。 |
| 93 | +- `result.actions` / `failure.actions` 会在完成后执行 Kether 动作。 |
| 94 | + |
| 95 | +### 批量烹饪 |
| 96 | + |
| 97 | +如果当前锅具内的原料足够多,`CookingManager` 会计算最大批次数,并连续处理下一锅。中途如果输出槽满了,或原料不再满足,就会停止批量流程。 |
| 98 | + |
| 99 | +### 燃料耗尽失败 |
| 100 | + |
| 101 | +烹饪中如果燃料耗尽,锅具会进入 `FUEL_OUT` 状态。超过 `config.yml` 中的 `cooking.fuel_out_timeout` 后,当前配方会走 `failure` 分支。 |
| 102 | + |
| 103 | +## 燃料文件 |
| 104 | + |
| 105 | +`fuel/fuels.yml` 支持两种常见写法: |
| 106 | + |
| 107 | +1. 只按物品类型匹配 |
| 108 | +2. 按完整名称、Lore、CMD 精确匹配 |
| 109 | + |
| 110 | +示例: |
| 111 | + |
| 112 | +```yaml |
| 113 | +煤炭: |
| 114 | + item: |
| 115 | + type: "COAL" |
| 116 | + time: 1 |
| 117 | +
|
| 118 | +超级煤炭: |
| 119 | + item: |
| 120 | + type: "COAL" |
| 121 | + name: "&e超级煤炭" |
| 122 | + time: 100 |
| 123 | +``` |
| 124 | + |
| 125 | +如果 `item` 里只写了 `type`,任何同类型物品都能作为燃料;一旦加入 `name`、`lore` 或 `custom-model-data`,就会变成严格匹配。 |
| 126 | + |
| 127 | +## 分类文件 |
| 128 | + |
| 129 | +`categories/example.yml` 的结构是: |
| 130 | + |
| 131 | +```yaml |
| 132 | +categories: |
| 133 | + 蔬菜: |
| 134 | + display: "蔬菜" |
| 135 | + list: |
| 136 | + - "minecraft:carrot" |
| 137 | + - "minecraft:potato" |
| 138 | +``` |
| 139 | + |
| 140 | +分类的用途主要有两个: |
| 141 | + |
| 142 | +- 作为配方原料条件,例如 `categories:蔬菜:2` |
| 143 | +- 作为燃料来源,例如 `categories:木质物品` |
| 144 | + |
| 145 | +## 物品 ID 规则 |
| 146 | + |
| 147 | +`ItemData` 最终通过 Arim 物品解析器构建物品。当前文档里最常用的写法有: |
| 148 | + |
| 149 | +- 原版:`minecraft:stone` |
| 150 | +- 省略前缀时默认按原版处理,例如 `DIAMOND` |
| 151 | +- CraftEngine:`ce:namespace:item` |
| 152 | +- 分类:`categories:<分类ID>` |
| 153 | + |
| 154 | +如果你使用 ItemsAdder,自定义物品也可以按其命名空间 ID 参与匹配和生成。 |
0 commit comments