Appearance
小游戏
文档版本:基于 2026-06-01 代码分析
概述
扩展模组提供三个内置小游戏:骰子游戏(投掷虚拟骰子达到目标点数)、心算读秒(5轮制,玩家猜测经过的时间)和抽签(设定数字范围,玩家抽取唯一号码)。小游戏配置支持数据包自定义(data/<namespace>/minigames/ 路径)。
一、骰子游戏
状态机
等待(WAITING) → 滚动(ROLLING) → 结果显示(RESULT) → 成功/失败(SUCCESS/FAILURE) → 等待流程
- 管理员
/nfarfm minigames dice start启动 - 玩家
/nfarfm minigames dice throw投掷骰子 - 系统随机生成点数,与目标点数比较
- 达到目标 → 成功;未达到 → 可继续投掷
- 管理员
/nfarfm minigames dice stop停止
骰子面板
DicePanelBlock(2×3 面板)显示当前游戏状态- 通过
DicePanelBlockEntity的setDisplayStateSupplier()注入显示数据
指令
| 指令 | 说明 |
|---|---|
dice start | 启动骰子游戏 |
dice stop | 停止骰子游戏 |
dice throw | 玩家投掷骰子 |
dice points set <value> | 设置目标点数 |
dice points show | 显示当前点数 |
二、心算读秒
机制
- 5 轮制,系统计时(使用
System.currentTimeMillis()) - 玩家需要在心中默数指定秒数,在认为时间到达时按标记
- 全服标题显示游戏状态
流程
- 管理员设置列表(参与者、目标秒数)
/nfarfm minigames mental start开始- 系统静默计时,玩家
mark标记 - 最接近目标时间的玩家获胜
- 结束后显示排名
指令
| 指令 | 说明 |
|---|---|
mental start | 开始心算读秒 |
mental stop | 停止 |
mental mark | 玩家标记当前时间 |
mental list add/delete/clear/show | 管理参与者列表 |
mental showtime <seconds> | 设置显示延迟 |
三、抽签
机制
管理员设定数字范围(如 1-100),玩家执行抽取获得唯一号码。
指令
| 指令 | 说明 |
|---|---|
roll start | 开始抽签 |
roll stop | 停止抽签 |
roll draw | 玩家抽取号码 |
数据包集成
小游戏的配置可通过数据包 data/<namespace>/minigames/ 路径自定义(MinigameDatapackReloadListener 监控 minigames 目录):
| 相对路径 | 用途 | JSON 关键字段 |
|---|---|---|
minigames/dice/config | 骰子目标点数 | target_points(正整数) |
minigames/mental_countdown/config | 心算读秒目标秒数 | target_seconds(5 个正整数的数组,总和必须 = 60) |
minigames/common_logic | 公共逻辑配置 | success_function、failure_function(函数 ID 字符串) |
注:
dice/config在代码中已支持(MinigameDatapackState.java:80),DataPacks 示例目录中暂无骰子预设文件。
关键文件
| 文件 | 说明 |
|---|---|
com/chenxi/chenxi_rfm_addition/server/minigames/DiceMinigameManager.java | 骰子游戏管理器 |
com/chenxi/chenxi_rfm_addition/server/minigames/MentalCountdownManager.java | 心算读秒管理器 |
com/chenxi/chenxi_rfm_addition/server/roll/RollSessionManager.java | 抽签管理器 |
com/chenxi/chenxi_rfm_addition/common/block/DicePanelBlock.java | 骰子显示面板 |
com/chenxi/chenxi_rfm_addition/server/minigames/datapack/MinigameDatapackReloadListener.java | 数据包重载 |
com/chenxi/chenxi_rfm_addition/server/config/minigames/PersistentMentalCountdownSavedData.java | 心算读秒持久化 |
注意事项
- 心算读秒使用系统时间(非游戏 tick),精度受服务器时钟影响
- 抽签确保每个号码唯一(不重复抽取)
- 数据包配置修改后通过
/reload或自动检测生效 - 所有小游戏权限要求 GAME_ADMIN