Skip to content

Commit c862d28

Browse files
author
54895y
committed
docs: add MatrixCook wiki and refresh MatrixShop docs
1 parent 9802d02 commit c862d28

22 files changed

Lines changed: 1562 additions & 268 deletions

docs/intro.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,27 @@
22
title: 插件 Wiki
33
---
44

5-
这里是 Matrix 系列插件的统一文档站
5+
这里是 Matrix 系列插件的统一文档站点
66

7-
当前已收录
7+
当前已经收录
88

9-
- [MatrixAuth](./matrixauth/overview.md)
10-
- [MatrixShop](./matrixshop/index.mdx)
9+
- [MatrixAuth](/docs/matrixauth/overview)
10+
- [MatrixCook](/docs/matrixcook/overview)
11+
- [MatrixShop](/docs/matrixshop)
1112

12-
当前文档约定:
13+
## 文档约定
1314

14-
- 每个插件放在 `docs/{plugin}/` 目录下。
15-
- 每个插件至少维护概览、部署、配置、命令和常见问题等基础页面
16-
- 文档以当前源码和默认配置为准,不沿用旧交接文档中的过时命令或路径
17-
- 首页只保留总入口,具体内容落到对应插件章节
15+
- 每个插件单独放在 `docs/{plugin}/` 目录下。
16+
- 文档内容以当前源码、默认配置和默认资源文件为准
17+
- 如果代码已经和旧文档分叉,以代码行为为准,并在对应页面里注明迁移差异
18+
- 首页只做索引,具体使用说明放到插件各自章节
1819

19-
MatrixAuth 入口:
20+
## 推荐阅读顺序
2021

21-
- [概览](./matrixauth/overview.md)
22-
- [部署指南](./matrixauth/installation.md)
23-
- [配置说明](./matrixauth/configuration.md)
24-
- [命令说明](./matrixauth/commands.md)
25-
- [PlaceholderAPI](./matrixauth/placeholders.md)
26-
- [EasyBot 对接](./matrixauth/easybot.md)
27-
- [开发说明](./matrixauth/development.md)
28-
- [常见问题](./matrixauth/faq.md)
22+
首次接触某个插件时,建议按这个顺序阅读:
23+
24+
1. 概览
25+
2. 安装 / 快速开始
26+
3. 配置结构
27+
4. 命令与权限
28+
5. 常见问题
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
title: 命令与占位符
3+
description: MatrixCook 的命令入口、权限节点和 PlaceholderAPI 变量。
4+
---
5+
6+
# 命令与占位符
7+
8+
## 主命令
9+
10+
根命令是 `/matrixcook`,总权限为 `matrixcook.command`
11+
12+
### 玩家常用命令
13+
14+
| 命令 | 权限 | 说明 |
15+
| --- | --- | --- |
16+
| `/matrixcook help` | `matrixcook.command` | 查看帮助面板 |
17+
| `/matrixcook menu` | `matrixcook.command.menu` | 打开锅具总览菜单 |
18+
| `/matrixcook menu cooker <锅具ID>` | `matrixcook.command.menu` | 查看某个锅具的配方列表 |
19+
| `/matrixcook menu categories <分类ID>` | `matrixcook.command.menu` | 查看分类详情 |
20+
21+
### 管理命令
22+
23+
| 命令 | 权限 | 说明 |
24+
| --- | --- | --- |
25+
| `/matrixcook reload` | `matrixcook.command.reload` | 重载配置、语言和缓存 |
26+
| `/matrixcook give cooker <玩家> <锅具ID> [数量]` | `matrixcook.command.give` | 发放锅具 |
27+
| `/matrixcook give fuel <玩家> <燃料ID> [数量]` | `matrixcook.command.give` | 发放燃料 |
28+
| `/matrixcook give item <玩家> <配方ID> <result\|failure> [数量]` | `matrixcook.command.give` | 发放配方产物或失败产物 |
29+
| `/matrixcook debug` | `matrixcook.admin` | 输出当前已放置锅具的调试信息 |
30+
31+
## 配置内权限
32+
33+
除了命令权限,配置本身还有两类运行权限:
34+
35+
- 锅具权限:默认 `cookly.cooker.<id>`
36+
- 配方权限:默认 `cookly.recipe.<id>`
37+
38+
也就是说,命令权限前缀是 `matrixcook.*`,而锅具/配方使用权限默认还是 `cookly.*`。这是当前代码里的真实行为。
39+
40+
## PlaceholderAPI
41+
42+
如果服务器安装了 PlaceholderAPI,插件会注册 `cookly` 前缀。
43+
44+
当前已实现的占位符形式:
45+
46+
- `%cookly_cooker_<id>_amount%`
47+
- `%cookly_cooker_<id>_active%`
48+
- `%cookly_cooker_<id>_normal%`
49+
50+
含义分别是:
51+
52+
- `amount`:玩家拥有或放置的该锅具总数
53+
- `active`:当前处于烹饪中的数量
54+
- `normal`:当前空闲中的数量
55+
56+
示例:
57+
58+
```text
59+
%cookly_cooker_iron_pot_amount%
60+
%cookly_cooker_iron_pot_active%
61+
%cookly_cooker_iron_pot_normal%
62+
```
63+
64+
占位符前缀之所以还是 `cookly`,是因为扩展类 `CooklyExpansion` 当前就是按这个名字注册的。

docs/matrixcook/configuration.mdx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
title: 配置说明
3+
description: MatrixCook 的全局配置与存储配置。
4+
---
5+
6+
# 配置说明
7+
8+
`config.yml` 负责全局语言、全息高度、燃料耗尽超时和放置状态存储。
9+
10+
## `config.yml`
11+
12+
|| 默认值 | 说明 |
13+
| --- | --- | --- |
14+
| `language.default` | `zh_cn` | 默认语言文件 |
15+
| `hologram.height` | `1.5` | 全息文字相对锅具的高度 |
16+
| `cooking.fuel_out_timeout` | `60` | 燃料耗尽后,锅具进入失败判定前的秒数 |
17+
| `database.type` | `sqlite` | 放置状态存储类型 |
18+
| `database.flush_interval` | `10` | 异步刷盘间隔,单位秒 |
19+
| `database.table` | `matrixcook_placed_cookers` | SQL 表名 |
20+
| `database.sqlite.file` | `data/matrixcook.db` | SQLite 文件路径 |
21+
| `database.mysql.*` | 见默认配置 | MySQL 连接参数 |
22+
| `database.redis.*` | 见默认配置 | Redis 键空间与连接参数 |
23+
24+
## 存储类型
25+
26+
当前代码支持 4 种放置状态存储:
27+
28+
| 类型 | 说明 |
29+
| --- | --- |
30+
| `sqlite` | 默认选项,单机最省事 |
31+
| `mysql` | 多服或外部数据库环境可用 |
32+
| `redis` | 运行态快照写入 Redis key |
33+
| `yaml` | 兼容旧版 `data/placed_cookers.yml` |
34+
35+
需要注意的是,存储后端只负责“已放置锅具”的运行态数据,不负责锅具、配方、燃料这些静态配置。
36+
37+
## 旧版数据迁移
38+
39+
如果当前配置使用的存储后端还是空的,而 `plugins/MatrixCook/data/placed_cookers.yml` 存在,`ConfigManager` 会尝试把旧 YAML 数据迁移到新的后端,然后把旧文件改名为 `.migrated`
40+
41+
## 自动保存
42+
43+
放置状态不会每次都同步写盘,而是通过:
44+
45+
- 配置变更后的强制持久化
46+
- 周期性自动刷盘
47+
- 服务器关闭前的同步落盘
48+
49+
这也是 `database.flush_interval` 存在的原因。
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
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 参与匹配和生成。

docs/matrixcook/faq.mdx

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
title: 常见问题
3+
description: MatrixCook 的排错与注意事项。
4+
---
5+
6+
# 常见问题
7+
8+
## 为什么命令是 `matrixcook`,但权限和占位符里还有 `cookly`
9+
10+
这是当前代码保留下来的兼容痕迹:
11+
12+
- 命令权限走 `matrixcook.*`
13+
- 锅具/配方默认权限走 `cookly.*`
14+
- PlaceholderAPI 前缀也是 `cookly`
15+
16+
写权限组和记分板时要按这个现状处理。
17+
18+
## 为什么配方明明写了却匹配不上
19+
20+
优先检查这几项:
21+
22+
- 当前锅具 `allowed_recipes` 是否允许这条配方
23+
- 原料数量是否满足 `ingredients`
24+
- 配方权限是否真的给到了玩家
25+
- 如果用了分类,`categories/*.yml` 里的物品 ID 是否正确
26+
27+
## 为什么燃料放进去没有反应
28+
29+
`FuelConfig` 的匹配逻辑分两档:
30+
31+
- 只写 `type` 时,按材质匹配
32+
- 写了 `name``lore``custom-model-data` 后,要求完全匹配
33+
34+
另外,配方如果声明了 `allowed_fuels`,不在名单里的燃料也不会被消耗。
35+
36+
## 为什么没有全息文字
37+
38+
全息系统需要以下两者之一:
39+
40+
- `DecentHolograms`
41+
- `CMI`
42+
43+
如果两者都没装,锅具依然能工作,只是不会创建全息提示。
44+
45+
## 存档会不会自动迁移
46+
47+
会。当前后端为空而旧版 `data/placed_cookers.yml` 存在时,插件会尝试导入旧数据,并把原文件改名为 `.migrated`
48+
49+
## 什么时候该用 `minecraft`,什么时候该用 `craftengine` / `itemsadder`
50+
51+
- 纯原版方块锅具:用 `minecraft`
52+
- 自定义方块或家具来自 CraftEngine:用 `craftengine`
53+
- 自定义方块或家具来自 ItemsAdder:用 `itemsadder`
54+
55+
放置来源和监听器必须与实际使用的物品系统一致,否则放下去之后不会被识别为锅具。

0 commit comments

Comments
 (0)