主题
音效系统
服务端配置 + 网络下发 + 客户端统一混音与上下文切换。
架构总览
音效系统覆盖以下域:
- 自动域:
ambient、area、dungeon、combat - 事件域:
quest_accept / quest_complete / quest_fail与自定义events - 手动域:
scene上下文切换、手动play/stop - UI 域:客户端脚本
Sound.play / Sound.playAt / Sound.stop
Quick Start
1. 服务端配置一个事件音效
yaml
# /plugins/Behemiron/sound/OtherSounds/example.yml
events:
QuestAccept:
sound: ui/quest_accept
bus: ui
volume: 1
pitch: 12. 服务端触发
kotlin
SoundServerAPI.playEvent(player, "QuestAccept")或 Kether:
kether
sound event QuestAccept3. 客户端 UI 脚本播放
js
Sound.play("ui/confirm")关键规则
- 音效路径必须使用
sound/目录下的相对路径,如ui/confirm。 - 禁止写前缀:
namespace:、sound/、sounds/。 - 总线(
bus)建议使用:environment、combat、quest、dungeon、ui、effect、system、vanilla(大小写不敏感)。 source使用 MinecraftSoundSource枚举值(如MASTER、MUSIC、AMBIENT)。
模块清单
| 子模块 | 职责 | 链接 |
|---|---|---|
| 配置与规则 | 服务端目录、字段、默认值、合法写法 | 配置与规则 |
| UI 音效 API | 客户端脚本 Sound.* 接口 | UI 音效 API |
| 服务端脚本触发 | Kether sound 指令 | Kether |