Skip to content

广播板

文档版本:基于 2026-06-01 代码分析

概述

广播板(BroadcastPad)是扩展模组的一个 2×1 面板方块,支持管理员配置广播时长、冷却时长和音量,通过 Simple Voice Chat API 将管理员的语音实时广播到全服玩家。具有 READY → BROADCASTING → COOLDOWN 三状态机。


核心概念

三状态机

mermaid
stateDiagram-v2
    [*] --> READY : 初始状态
    READY --> BROADCASTING : 右键激活
    BROADCASTING --> COOLDOWN : 广播结束
    COOLDOWN --> READY : 冷却结束
状态行为
READY等待激活,方块正常显示
BROADCASTING语音广播中,播放开始音效
COOLDOWN冷却中,不可使用,显示剩余冷却时间

可配置参数

参数说明
广播时长一次广播的最大持续时间
冷却时长广播结束后需要等待的冷却时间
音量百分比广播音量(0-100%)

架构设计

mermaid
sequenceDiagram
    participant Admin as 管理员
    participant BE as BroadcastPadBlockEntity
    participant Voice as BroadcastPadVoiceManager
    participant API as SimpleVoiceChatAPI
    participant All as 全服玩家

    Admin->>BE: 右键方块
    BE->>BE: 从READY切换为BROADCASTING
    BE->>Voice: 开始语音广播
    Voice->>API: 创建广播音频通道
    API->>All: 广播管理员语音

    Note over BE: tick监听广播时长

    BE->>BE: 广播结束→COOLDOWN
    BE->>Voice: 停止语音广播
    Voice->>API: 关闭广播通道

    Note over BE: tick监听冷却时长

    BE->>BE: 冷却结束→READY

关键文件

文件说明
com/chenxi/chenxi_rfm_addition/common/block/BroadcastPadBlock.java2×1 面板方块
com/chenxi/chenxi_rfm_addition/common/block/BroadcastPadBlockEntity.java状态机+语音桥接
com/chenxi/chenxi_rfm_addition/server/voice/BroadcastPadVoiceManager.java语音广播管理器
com/chenxi/chenxi_rfm_addition/client/screen/BroadcastPadConfigScreen.java配置 GUI
com/chenxi/chenxi_rfm_addition/client/render/BroadcastPadBlockEntityRenderer.java两行文本渲染器
com/chenxi/chenxi_rfm_addition/client/voice/BroadcastPadVoiceClientHooks.javaOpenAL 增益控制
com/chenxi/chenxi_rfm_addition/common/network/payload/broadcast/4 个 Payload

关键流程

配置管理

  • 右键方块(手持核心模组的 config_tool)→ 打开配置 GUI
  • GUI 提供三个滑块:广播时长、冷却时长、音量百分比
  • 配置通过 UpdateBroadcastPadConfigPayload 同步到服务端
  • 服务端 BroadcastPadPayloadHandler 更新 BlockEntity 并标记 dirty

语音广播

  • BroadcastPadBlockEntity 通过 VoiceBridge 接口与 BroadcastPadVoiceManager 通信
  • 广播开始/停止时发送 SyncBroadcastPadVoiceStartPayload / SyncBroadcastPadVoiceStopPayload 给全服
  • 播放 broadcast_start / broadcast_end 音效

注意事项

  1. 需要 Simple Voice Chat 模组支持
  2. 使用核心模组的 config_tool 物品右键打开配置 GUI
  3. 广播期间方块显示"广播中"文字,冷却期间显示剩余时间
  4. 内部通过 VoiceBridge 接口解耦,方块实体不直接依赖语音 API

相关文档