配置结构
当前 MatrixShop 的配置不是“一个总配置文件解决所有问题”,而是四层:
- 顶层全局文件
- 统一经济定义
- 模块目录
- 模块内部的
settings.yml、shops/*.yml、ui/*.yml
顶层文件
config.yml
debug: false
system-shop:
default-category: weapon
messages:
no-permission: '&c你没有权限执行这个操作。'
player-only: '&c该命令只能由玩家执行。'
字段解释:
| 字段 | 说明 |
|---|---|
debug | 是否输出调试信息。生产服通常保持 false。 |
system-shop.default-category | 系统商店直接打开时默认进入的分类。这里的值要和 SystemShop/shops/<file-name>.yml 对应。 |
messages.no-permission | 无权限时的提示。 |
messages.player-only | 非玩家执行命令时的提示。 |
module.yml
modules:
menu: true
system-shop: true
player-shop: true
global-market: true
auction: true
chestshop: true
transaction: true
cart: true
record: true
字段解释:
| 字段 | 说明 |
|---|---|
modules.menu | 是否启用导航菜单模块。 |
modules.system-shop | 是否启用系统商店。 |
modules.player-shop | 是否启用玩家商店。 |
modules.global-market | 是否启用全球市场。 |
modules.auction | 是否启用拍卖行。 |
modules.chestshop | 是否启用箱子商店。 |
modules.transaction | 是否启用面对面交易。 |
modules.cart | 是否启用购物车。 |
modules.record | 是否启用账本记录。 |
最实用的理解方式是:这里控制的是“模块总开关”。如果你把某个模块关掉,即使该模块目录里的配置还在,入口也不会正常工作。
database.yml
Database:
Type: SQLITE
SQLite:
File: 'Data/data.db'
MySQL:
Host: '127.0.0.1'
Port: 3306
Database: 'matrixshop'
Username: 'root'
Password: 'password'
Maximum-Pool-Size: 10
Redis:
Enabled: false
Host: '127.0.0.1'
Port: 6379
Password: ''
Channels:
Invalidate: 'matrixshop:invalidate'
Sync: 'matrixshop:sync'
字段解释:
| 字段 | 说明 |
|---|---|
Database.Type | 当前想使用的后端类型。默认是 SQLITE。 |
SQLite.File | SQLite 数据文件路径。 |
MySQL.* | MySQL 连接参数。 |
Maximum-Pool-Size | 连接池大小。 |
Redis.Enabled | 当前配置层可见,但实际实现里更偏预留字段。 |
Redis.Channels.* | Redis 频道名称,仍建议视为预留配置。 |
当前文档仍建议把
SQLITE和MYSQL作为主要选项来理解,Redis 不要当作稳定主存储来写运营说明。
Economy/currency.yml
这是 Matrix 系列当前的共享货币定义文件,主入口位于:
plugins/MatrixLib/Economy/currency.yml
运行时会同步到 MatrixShop 与 MatrixStorage 的同路径文件。
vault:
Mode: vault
Display-Name: '金币'
Symbol: '$'
Decimal: true
playerpoints:
Mode: playerpoints
Display-Name: '点券'
Decimal: false
字段解释:
| 字段 | 说明 |
|---|---|
Mode | 货币模式,可写 vault、playerpoints 或 PlaceholderAPI 占位符。 |
Display-Name | 菜单和提示中显示的货币名。 |
Symbol | 可选符号。 |
Decimal | 是否允许小数。 |
Actions.Take / Give / Deny | 自定义货币的结算与余额不足动作。 |
货币优先级
当前版本的货币 key 解析顺序是:
- 商品级
- 商店级
- 模块级
- 默认回退
vault
具体表现:
SystemShop:商品级currency> 商店级Currency.Key> 模块级SystemShop/settings.ymlPlayerShop / GlobalMarket / Auction / Transaction:商店级Currency.Key> 模块级settings.ymlChestShop:模块级settings.ymlCart / Record:不配置经济
模块目录
默认资源目录如下:
Economy/Menu/SystemShop/PlayerShop/GlobalMarket/Auction/ChestShop/Transaction/Cart/Record/
大多数模块目录包含:
settings.ymlshops/*.ymlui/*.yml
SystemShop 还额外包含:
goods/*.yml
个别模块还带有额外文件:
ChestShop/signs.ymlRecord/retention.yml
并且有三个模块已经不再使用 shops/*.yml:
ChestShopCartRecord
settings.yml 和 shops/*.yml 的分工
settings.yml
负责模块级控制,例如:
- 命令候选关键字
- 模块开关
- 模块级货币 key
- 权限条件
- 运行参数
shops/*.yml
负责入口页或主视图,例如:
- 标题
- 菜单布局
- 静态按钮
- 动态槽位
- 商品模板
- 对
SystemShop/goods/*.yml的商品引用
同时,当前实现里 shopId 以文件名为准。
例如:
PlayerShop/shops/default.yml->defaultGlobalMarket/shops/default.yml->defaultAuction/shops/default.yml->defaultTransaction/shops/default.yml->default
不使用 shops/*.yml 的模块
这三个模块当前采用“模块级入口 + UI 文件”的结构:
ChestShopCartRecord
它们的入口命令、帮助文本和行为控制主要来自:
settings.ymlui/*.yml- 以及模块自身的运行时上下文
从哪里继续读
如果你正在处理货币、点券或自定义积分,请直接继续看:
从哪里继续读
如果你要改具体模块,请直接进入新的详细页: