- 版权类型
- 原创
- 插件中文名称
- 光谱匹配
- 插件英文名称
- SpectrumMatch
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- 语言支持
- 多语言
- 前置组件
- SpectrumParty(https://www.minebbs.com/resources/spectrumparty.15171/)
- 适配版本(Java)
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
[MD]
# SpectrumMatch
SpectrumMatch 是基于 Kotlin + TabooLib 的统一匹配插件,负责将队伍按 modeId 排队、撮合并调用 SpectrumParty 的 GameAdapter 自动开局。插件本身不存储队伍数据,只依赖 SpectrumParty API。
## 默认配置
- `config.yml`
- `match.tickSeconds`: 撮合检测间隔(秒)
- `queue.maxLengthPerMode`: 每个模式最大队列长度
- `queue.leaderOnly`: 是否仅允许队长入队/出队
- `match-modes.yml`
- 规则配置文件,按 `modeId` 定义队伍人数、队伍数量、准备要求等
- 默认包含 `dummy_2v2`(使用 SpectrumParty DummyAdapter 的演示模式)
## 模式适配器注册(配置驱动)
SpectrumMatch 会根据 `match-modes.yml` 自动注册一个 `GameAdapter`(adapterId = `spectrummatch-config`),让 SpectrumParty 可以直接读取模式列表,无需在 SpectrumParty 内维护模式配置。
模式委托规则:
- 若 `options.adapterId` 指定了目标适配器,则使用该适配器处理 `validateStart/startSession`。
- 若未指定且没有找到现成适配器,则自动使用 SpectrumMatch 内置 `local` 适配器(直接生成 SessionRef)。
- 若找到同名 modeId 的适配器(如 DummyAdapter),则继续走该适配器逻辑。
可选参数(写在 `options` 下):
- `adapterId`: 目标适配器的 adapterId,写 `local` 表示使用 SpectrumMatch 内置直启适配器
- `displayName`: 模式展示名称
- `supportsDirectStart`: 是否支持直启(`true/false`)
- `supportsMatchmaking`: 是否支持匹配(`true/false`)
注意:上述 4 个参数仅用于模式注册,不会透传给 StartRequest,其余 `options` 会原样传递给适配器。
## 命令
- `/sm help` 查看帮助
- `/sm modes` 查看所有匹配模式
- `/sm queue <modeId>` 队长入队
- `/sm dequeue` 队长出队
- `/sm status` 查看队伍排队状态
- `/sm list <modeId>` 查看指定队列(管理员)
- `/sm reload` 重载配置与语言(管理员)
- `/sm admin force-match <modeId>` 强制撮合(管理员)
- `/sm admin clear <modeId>` 清空队列(管理员)
权限:
- `spectrummatch.use` 基础命令
- `spectrummatch.admin` 管理命令
## 常见问题
- 未注册模式:确认 SpectrumParty 内已注册对应 `modeId` 的 GameAdapter,或在 `options.adapterId` 指定适配器。
- 队伍人数不符:队伍人数必须满足 `teamSize`(默认不允许部分队伍)。
[/MD]