- 版权类型
- 转载
- 插件中文名称
- 语音聊天转换
- 插件英文名称
- voice-bridge
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- Leaves
- 其他核心
- 语言支持
- 多语言
- 适配版本(Java)
- 1.21
[MD]
**Voice Bridge**
这是一个服务端 Paper 插件,用于桥接 Simple Voice Chat 和 Plasmo Voice 之间的近距离语音聊天,使使用不同语音模组的玩家能够互相听见对方。
## 工作原理
Simple Voice Chat (SVC) 和 Plasmo Voice (PV) 均使用 Opus 编码音频,格式为 48 kHz、单声道、20 毫秒帧。Voice Bridge 会拦截来自各模组 API 的音频数据包并将其转发给另一方——**无需转码**。结果是实现了低延迟、跨模组的近距离语音聊天,且 CPU 开销极小。
```text
SVC 玩家 ──► SVC API ──► Voice Bridge ──► PV API ──► PV 玩家
PV 玩家 ──► PV API ──► Voice Bridge ──► SVC API ──► SVC 玩家
```
## 需求
* Paper 1.21.4+ (或 Folia)
* Java 21+
* Simple Voice Chat (服务端插件)
* Plasmo Voice (服务端插件)
## 安装
1. 在你的 Paper 服务器上安装 Simple Voice Chat 和 Plasmo Voice。
2. 下载 `voice-bridge-<版本>.jar`。
3. 将其放入服务器的 `plugins/` 目录中。
4. 重启服务器。
## 源码编译
```bash
./gradlew build
```
编译后的插件 jar 文件位于 `build/libs/` 目录下。
## 运行开发服
```bash
# 使用 Mojang 映射(用于调试)
./gradlew runDevBundleServer
# 使用混淆(类似生产环境)
./gradlew runServer
```
## 配置
首次运行后,会在 `plugins/voice-bridge/` 目录下生成 `config.yml`:
```yaml
bridge:
enabled: true # 启用/禁用桥接
debug: false # 启用调试日志
proximity:
default-distance: 48.0 # 默认语音距离(单位:格)
whisper-multiplier: 0.33 # 耳语距离 = 默认距离 * 倍率
max-distance: 128.0 # 允许的最大语音距离
audio:
passthrough: true # Opus 透传(推荐)
force-transcode: false # 强制转码(尚未实现)
```
### 每个世界的距离覆盖
你可以为特定世界覆盖默认的语音距离:
```yaml
proximity:
world-overrides:
world_nether: 24.0 # 下界世界
world_the_end: 64.0 # 末地世界
```
## 命令
| 命令 | 描述 |
| :--- | :--- |
| `/voicebridge status` | 显示桥接状态、指标和配置 |
| `/voicebridge players` | 列出活跃的桥接会话 |
| `/voicebridge reload` | 重载配置文件 |
| `/voicebridge debug [on\|off]` | 切换调试日志 |
**别名:** `/vb`
**权限:** `voicebridge.admin` (默认:OP)
## 架构
```text
┌────────────────────────────────────────────────┐
│ VoiceBridgePlugin │
├───────────┬───────────┬────────────┬───────────┤
│ SvcAdapter│ PvAdapter │ AudioRelay │ Session │
│ │ │ │ Manager │
├───────────┴───────────┴────────────┴───────────┤
│ SpatialMapper │ BridgeConfig │ BridgeMetrics │
└────────────────────────────────────────────────┘
```
* **SvcAdapter** — 通过 `VoicechatPlugin` 集成 Simple Voice Chat
* **PvAdapter** — 通过 `@Addon` / `AddonInitializer` 集成 Plasmo Voice
* **AudioRelay** — 中央路由器,在适配器之间转发音频帧
* **SessionManager** — 追踪每个玩家使用的模组
* **SpatialMapper** — 在 SVC 的 float 距离和 PV 的 short 距离之间进行转换
## 已知限制
* 不支持群组/频道桥接(仅限近距离语音聊天)。
* 转码模式尚未实现(仅支持透传)。
* 在某些极端情况下,仅使用 SVC 的玩家可能无法收到 PV 玩家的音频。
[/MD]