Appearance
扩展模组总览
文档版本:基于 2026-06-01 代码分析
概述
chenxi_rfm_addition(扩展模组)是逃走中核心模组的可选扩展,提供广播板语音播报、充能方块红石控制、小游戏(骰子/心算读秒/抽签)、语音群组和跑道方块等功能。扩展模组强依赖 chenxi_rfm 核心模组,直接引用其权限 API、命令谓词和配置工具物品 ID。
模块关系
mermaid
graph TB
subgraph Core["chenxi_rfm 核心模组"]
PermAPI["NfaPermissionApi<br/>权限API"]
CmdPred["NfaCommandPredicates<br/>命令谓词"]
CfgTool["config_tool<br/>配置工具物品ID"]
end
subgraph Addition["chenxi_rfm_addition 扩展模组"]
Broadcast["广播板<br/>语音播报+GUI"]
Charge["充能方块<br/>充能/输出双模式"]
Minigames["小游戏<br/>骰子·心算读秒·抽签"]
VoiceGroup["语音群组<br/>持久群组管理"]
Track["跑道方块<br/>6种定向跑道"]
Conductor["红石导体<br/>伪装+传导"]
Alarm["红石警报器<br/>红石灯变体"]
end
Addition --> Core
Broadcast --> PermAPI
Minigames --> PermAPI
VoiceGroup --> CmdPred
Charge --> CfgTool桥接方式
| 方式 | 说明 |
|---|---|
| 直接类引用 | 导入 NfaPermissionApi(权限检查)、NfaCommandPredicates(指令权限)、NfaPermissionService(权限服务) |
| 资源键硬编码 | 检查物品 ID 是否为 chenxi_rfm:config_tool |
| 内部接口注入 | BroadcastPadBlockEntity.VoiceBridge 通过 setter 注入 BroadcastPadVoiceManager |
| 事件总线复用 | ServerLifecycleEvents、ServerMinigameEvents 注册到 NeoForge.EVENT_BUS |
注册表一览
方块(12个)
| 注册名 | 类 | 功能 |
|---|---|---|
charge_block | ChargeBlock | 充能/输出双模式,5级红石输出 |
redstone_alarm | RedstoneAlarmBlock | 红石警报器(RedstoneLampBlock子类) |
broadcast_pad | BroadcastPadBlock | 2×1 广播面板,3状态机 |
dice_panel | DicePanelBlock | 2×3 骰子显示面板 |
redstone_conductor | RedstoneConductorBlock | 红石导体(伪装+传导) |
nfa_running_track_block | Block | 跑道基础方块 |
nfa_running_track_line_block | DirectionalRunningTrackBlock | 定向跑道线 |
nfa_running_track_lines_block | DirectionalRunningTrackBlock | 定向跑道双线 |
nfa_running_track_angle_block | DirectionalRunningTrackBlock | 定向跑道转角 |
nfa_running_track_vertex_block | DirectionalRunningTrackBlock | 定向跑道顶点 |
nfa_running_track_center_block | DirectionalRunningTrackBlock | 定向跑道中心 |
nfa_running_track_circle_block | DirectionalRunningTrackBlock | 定向跑道圆弧 |
方块实体(4个)
| 注册名 | 类 |
|---|---|
charge_block | ChargeBlockEntity |
broadcast_pad | BroadcastPadBlockEntity |
dice_panel | DicePanelBlockEntity |
redstone_conductor | RedstoneConductorBlockEntity |
音效(3个)
| 注册名 | 用途 |
|---|---|
alarm | 警报器循环音效 |
broadcast_start | 广播开始音效 |
broadcast_end | 广播结束音效 |
网络包(6个)
| Payload | 方向 | 用途 |
|---|---|---|
OpenBroadcastPadConfigPayload | S→C | 服务端下发配置、客户端打开广播面板配置 GUI |
UpdateBroadcastPadConfigPayload | C→S | 客户端提交修改后的广播面板配置 |
SyncBroadcastPadVoiceStartPayload | S→C | 同步语音广播开始 |
SyncBroadcastPadVoiceStopPayload | S→C | 同步语音广播停止 |
OpenChargeBlockConfigPayload | S→C | 服务端下发配置、客户端打开充能方块配置 GUI |
UpdateChargeBlockConfigPayload | C→S | 客户端提交修改后的充能方块配置 |
指令系统
扩展模组使用独立的根指令 /nfarfm(区别于核心模组的 /nfa):
| 指令 | 权限 | 说明 |
|---|---|---|
/nfarfm chargeblock place <pos> | GAME_ADMIN | 在指定位置放置充能方块 |
/nfarfm chargeblock set <pos> | GAME_ADMIN | 配置充能方块参数 |
/nfarfm minigames dice start/stop/throw/points | GAME_ADMIN | 骰子小游戏管理 |
/nfarfm minigames mental start/stop/mark/list | GAME_ADMIN | 心算读秒管理 |
/nfarfm group add/remove/list | GAME_ADMIN | 持久语音群组管理 |
/nfarfm roll start/stop/draw | GAME_ADMIN | 抽签管理 |
面板系统继承层次
扩展模组定义了可复用的面板方块基类:
AbstractPanelBlock (抽象基类)
├── SinglePartPanelBlock (单部件)
├── TwoPartPanelBlock (双部件: MAIN + EXTENSION)
│ └── BroadcastPadBlock (广播面板)
├── ThreePartPanelBlock (三部件: LEFT + CENTER + RIGHT)
└── TwoByThreePanelBlock (2×3六部件)
└── DicePanelBlock (骰子面板)所有面板实现 PanelDisplayTextProvider 接口,提供 getDisplayState() 返回两行文本和颜色。
注意事项
- 强依赖核心模组:扩展模组不可独立运行
- 配置独立:使用自己的
ConfigManager(路径config/nfa_rfm_addition/) - 语音依赖 Simple Voice Chat:广播板和语音群组功能需要 SVC 模组
- 与核心模组的 config_tool 交互:广播板和充能方块用核心模组的配置工具右键打开配置 GUI