跳到主要内容

配置结构

当前 MatrixShop 的配置不是“一个总配置文件解决所有问题”,而是四层:

  1. 顶层全局文件
  2. 统一经济定义
  3. 模块目录
  4. 模块内部的 settings.ymlshops/*.ymlui/*.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.FileSQLite 数据文件路径。
MySQL.*MySQL 连接参数。
Maximum-Pool-Size连接池大小。
Redis.Enabled当前配置层可见,但实际实现里更偏预留字段。
Redis.Channels.*Redis 频道名称,仍建议视为预留配置。

当前文档仍建议把 SQLITEMYSQL 作为主要选项来理解,Redis 不要当作稳定主存储来写运营说明。

Economy/currency.yml

这是 Matrix 系列当前的共享货币定义文件,主入口位于:

plugins/MatrixLib/Economy/currency.yml

运行时会同步到 MatrixShopMatrixStorage 的同路径文件。

vault:
Mode: vault
Display-Name: '金币'
Symbol: '$'
Decimal: true

playerpoints:
Mode: playerpoints
Display-Name: '点券'
Decimal: false

字段解释:

字段说明
Mode货币模式,可写 vaultplayerpoints 或 PlaceholderAPI 占位符。
Display-Name菜单和提示中显示的货币名。
Symbol可选符号。
Decimal是否允许小数。
Actions.Take / Give / Deny自定义货币的结算与余额不足动作。

货币优先级

当前版本的货币 key 解析顺序是:

  1. 商品级
  2. 商店级
  3. 模块级
  4. 默认回退 vault

具体表现:

  • SystemShop:商品级 currency > 商店级 Currency.Key > 模块级 SystemShop/settings.yml
  • PlayerShop / GlobalMarket / Auction / Transaction:商店级 Currency.Key > 模块级 settings.yml
  • ChestShop:模块级 settings.yml
  • Cart / Record:不配置经济

模块目录

默认资源目录如下:

  • Economy/
  • Menu/
  • SystemShop/
  • PlayerShop/
  • GlobalMarket/
  • Auction/
  • ChestShop/
  • Transaction/
  • Cart/
  • Record/

大多数模块目录包含:

  • settings.yml
  • shops/*.yml
  • ui/*.yml

SystemShop 还额外包含:

  • goods/*.yml

个别模块还带有额外文件:

  • ChestShop/signs.yml
  • Record/retention.yml

并且有三个模块已经不再使用 shops/*.yml

  • ChestShop
  • Cart
  • Record

settings.ymlshops/*.yml 的分工

settings.yml

负责模块级控制,例如:

  • 命令候选关键字
  • 模块开关
  • 模块级货币 key
  • 权限条件
  • 运行参数

shops/*.yml

负责入口页或主视图,例如:

  • 标题
  • 菜单布局
  • 静态按钮
  • 动态槽位
  • 商品模板
  • SystemShop/goods/*.yml 的商品引用

同时,当前实现里 shopId 以文件名为准

例如:

  • PlayerShop/shops/default.yml -> default
  • GlobalMarket/shops/default.yml -> default
  • Auction/shops/default.yml -> default
  • Transaction/shops/default.yml -> default

不使用 shops/*.yml 的模块

这三个模块当前采用“模块级入口 + UI 文件”的结构:

  • ChestShop
  • Cart
  • Record

它们的入口命令、帮助文本和行为控制主要来自:

  • settings.yml
  • ui/*.yml
  • 以及模块自身的运行时上下文

从哪里继续读

如果你正在处理货币、点券或自定义积分,请直接继续看:

从哪里继续读

如果你要改具体模块,请直接进入新的详细页: