11---
22title : 配置结构
3- description : MatrixShop 当前版本的目录布局与文件职责 。
3+ description : MatrixShop 顶层配置、模块目录和入口文件的详细结构说明 。
44---
55
66# 配置结构
77
8- 当前 MatrixShop 不是“一个总配置 + 一堆平铺子目录”的结构,而是三层配置 :
8+ 当前 MatrixShop 的配置不是“一个总配置文件解决所有问题”,而是三层 :
99
10- - 顶层全局文件
11- - 模块目录
12- - 模块内的 ` settings.yml ` 、` shops/*.yml ` 、` ui/*.yml `
10+ 1 . 顶层全局文件
11+ 2 . 模块目录
12+ 3 . 模块内部的 ` settings.yml ` 、` shops/*.yml ` 、` ui/*.yml `
1313
1414## 顶层文件
1515
16- | 文件 | 作用 |
16+ ### ` config.yml `
17+
18+ ``` yaml
19+ debug : false
20+
21+ system-shop :
22+ default-category : weapon
23+
24+ messages :
25+ no-permission : ' &c你没有权限执行这个操作。'
26+ player-only : ' &c该命令只能由玩家执行。'
27+ ` ` `
28+
29+ 字段解释:
30+
31+ | 字段 | 说明 |
32+ | --- | --- |
33+ | ` debug` | 是否输出调试信息。生产服通常保持 `false`。 |
34+ | `system-shop.default-category` | 系统商店直接打开时默认进入的分类。这里的值要和 `SystemShop/shops/<file-name>.yml` 对应。 |
35+ | `messages.no-permission` | 无权限时的提示。 |
36+ | `messages.player-only` | 非玩家执行命令时的提示。 |
37+
38+ # ## `module.yml`
39+
40+ ` ` ` yaml
41+ modules:
42+ menu: true
43+ system-shop: true
44+ player-shop: true
45+ global-market: true
46+ auction: true
47+ chestshop: true
48+ transaction: true
49+ cart: true
50+ record: true
51+ ` ` `
52+
53+ 字段解释:
54+
55+ | 字段 | 说明 |
1756| --- | --- |
18- | ` config.yml ` | 调试、默认系统商店分类、基础消息 |
19- | ` module.yml ` | 九个模块的启用状态 |
20- | ` database.yml ` | SQLite / MySQL 数据层配置 |
57+ | `modules.menu` | 是否启用导航菜单模块。 |
58+ | `modules.system-shop` | 是否启用系统商店。 |
59+ | `modules.player-shop` | 是否启用玩家商店。 |
60+ | `modules.global-market` | 是否启用全球市场。 |
61+ | `modules.auction` | 是否启用拍卖行。 |
62+ | `modules.chestshop` | 是否启用箱子商店。 |
63+ | `modules.transaction` | 是否启用面对面交易。 |
64+ | `modules.cart` | 是否启用购物车。 |
65+ | `modules.record` | 是否启用账本记录。 |
66+
67+ 最实用的理解方式是:这里控制的是“模块总开关”。如果你把某个模块关掉,即使该模块目录里的配置还在,入口也不会正常工作。
68+
69+ # ## `database.yml`
70+
71+ ` ` ` yaml
72+ Database:
73+ Type: SQLITE
74+
75+ SQLite:
76+ File: 'Data/data.db'
77+
78+ MySQL:
79+ Host: '127.0.0.1'
80+ Port: 3306
81+ Database: 'matrixshop'
82+ Username: 'root'
83+ Password: 'password'
84+ Maximum-Pool-Size: 10
85+
86+ Redis:
87+ Enabled: false
88+ Host: '127.0.0.1'
89+ Port: 6379
90+ Password: ''
91+ Channels:
92+ Invalidate: 'matrixshop:invalidate'
93+ Sync: 'matrixshop:sync'
94+ ` ` `
95+
96+ 字段解释:
97+
98+ | 字段 | 说明 |
99+ | --- | --- |
100+ | `Database.Type` | 当前想使用的后端类型。默认是 `SQLITE`。 |
101+ | `SQLite.File` | SQLite 数据文件路径。 |
102+ | `MySQL.*` | MySQL 连接参数。 |
103+ | `Maximum-Pool-Size` | 连接池大小。 |
104+ | `Redis.Enabled` | 当前配置层可见,但实际实现里更偏预留字段。 |
105+ | `Redis.Channels.*` | Redis 频道名称,仍建议视为预留配置。 |
106+
107+ > 当前文档仍建议把 `SQLITE` 和 `MYSQL` 作为主要选项来理解,Redis 不要当作稳定主存储来写运营说明。
21108
22109# # 模块目录
23110
24- 当前默认资源目录如下 :
111+ 默认资源目录如下 :
25112
26113- ` Menu/`
27114- ` SystemShop/`
@@ -33,67 +120,56 @@ description: MatrixShop 当前版本的目录布局与文件职责。
33120- ` Cart/`
34121- ` Record/`
35122
36- ## ` settings.yml `
123+ 每个模块目录通常包含:
37124
38- 每个模块的 ` settings.yml ` 主要负责两类内容:
125+ - ` settings.yml`
126+ - ` shops/*.yml`
127+ - ` ui/*.yml`
39128
40- 1 . 模块是否启用后的运行选项
41- 2 . 命令绑定声明
129+ 个别模块还带有额外文件:
42130
43- 命令绑定的通用结构是:
44-
45- ``` yaml
46- Bindings :
47- Commands :
48- Bindings :
49- - ' auction'
50- - ' ah'
51- Register : true
52- Show-In-Help : true
53- Priority : 20
54- Condition : ' perm matrixshop.auction.use'
55- ` ` `
131+ - ` ChestShop/signs.yml`
132+ - ` Record/retention.yml`
56133
57- 其中:
134+ # # `settings.yml` 和 `shops/*.yml` 的分工
58135
59- - ` Bindings`:候选命令关键字
60- - ` Register` :是否注册为独立命令
61- - ` Show-In-Help` :是否出现在 `/ms help`
62- - ` Priority` :多个命令别名冲突时的优先级
136+ # ## `settings.yml`
63137
64- # # `shops/*.yml`
138+ 负责模块级控制,例如:
65139
66- ` shops/*.yml` 是当前版本最重要的入口配置。它承担两个职责:
140+ - 命令候选关键字
141+ - 模块开关
142+ - 权限条件
143+ - 运行参数
67144
68- 1. 定义一个菜单视图
69- 2. 定义一个 `shopId`
145+ # ## `shops/*.yml`
70146
71- 规则很简单 :
147+ 负责入口页或主视图,例如 :
72148
73- - 文件名就是 `shopId`
74- - 里面可以再次声明 `Bindings.Commands`
75- - 里面的 `layout`、`icons`、`template` 决定这个入口怎么显示
149+ - 标题
150+ - 菜单布局
151+ - 静态按钮
152+ - 动态槽位
153+ - 商品模板
76154
77- 当前示例里,以下模块都依赖 `shops/*.yml`:
155+ 同时,**当前实现里 `shopId` 以文件名为准**。
78156
79- - ` Menu`
80- - ` SystemShop`
81- - ` PlayerShop`
82- - ` GlobalMarket`
83- - ` Auction`
84- - ` ChestShop`
85- - ` Transaction`
86- - ` Cart`
87- - ` Record`
157+ 例如:
88158
89- # # `ui/*.yml`
159+ - ` PlayerShop/shops/default.yml` -> `default`
160+ - ` Cart/shops/cart.yml` -> `cart`
161+ - ` Record/shops/record.yml` -> `record`
90162
91- ` ui/*.yml ` 用于承载模块的具体界面模板,例如:
163+ # # 从哪里继续读
92164
93- - 系统商店确认页
94- - 拍卖详情页
95- - 玩家商店编辑页
96- - 购物车结算页
97- - 交易确认页
165+ 如果你要改具体模块,请直接进入新的详细页:
98166
99- 模块代码会按自己的流程打开这些 UI 文件,因此 `ui/*.yml` 更偏向“内部页面”,而 `shops/*.yml` 更偏向“入口页面”。
167+ - [Menu](./shop-types/menu)
168+ - [SystemShop](./shop-types/system-shop)
169+ - [PlayerShop](./shop-types/player-shop)
170+ - [GlobalMarket](./shop-types/global-market)
171+ - [Auction](./shop-types/auction)
172+ - [ChestShop](./shop-types/chest-shop)
173+ - [Transaction](./shop-types/transaction)
174+ - [Cart](./shop-types/cart)
175+ - [Record](./shop-types/record)
0 commit comments