介绍
Music
Music 是一款服务端 Fabric 模组,可通过 Simple Voice Chat 播放 URL 音乐流。它专为服务器共享音乐而设计,支持播放队列、保存的播放列表、导入 YouTube 播放列表、指定播放对象、个人关闭收听,以及通过 Lavaplayer/youtube-source 使用 YouTube OAuth。
功能
- 通过 Simple Voice Chat 静态音频频道播放音乐流。
- 支持 YouTube、YouTube Music、YouTube 播放列表链接,以及 Lavaplayer 支持的其他远程来源。
- 将粘贴的 YouTube 播放列表链接展开为单首歌曲。
- 显示标题、创作者、请求者、时长、队列位置和播放诊断信息。
- 清理 YouTube 主题频道的创作者名称,因此
Artist - Topic会显示为Artist。 - 全服务器共享同一条音乐流。
- 全局队列支持跳过、重复播放和随机播放。
- 持久保存的播放列表。
- 按秒向前或向后 seek。
- 指定或排除玩家的控制选项。
- 玩家可自行使用
/music leave和/music join。 - Simple Voice Chat 中的“Music”音量类别,可单独调整客户端音量。
- 全局服务器音量控制。
要求
- Fabric Loader。
- 服务器上已安装 Simple Voice Chat。
- 想收听音乐流的客户端已安装 Simple Voice Chat。
- 安装的模组文件支持对应的 Minecraft 版本。
此模组负责控制服务器上的音乐,但玩家只能通过 Simple Voice Chat 连接收听。
安装
- 在服务器上安装 Fabric Loader。
- 在服务器上安装 Simple Voice Chat。
- 将此模组安装到服务器的
mods文件夹中。 - 想收听音乐流的玩家必须在客户端安装 Simple Voice Chat。
- 启动服务器并运行
/music help。
快速开始
/music now
/music play https://www.youtube.com/watch?v=VIDEO_ID 10
/music queue add https://music.youtube.com/watch?v=NEXT_VIDEO_ID
/music queue add https://www.youtube.com/playlist?list=PLAYLIST_ID
/music queue list
如果 YouTube 要求登录或阻止播放,请按照服务器日志中的提示完成 OAuth 设备登录。
工作原理
- 玩家运行
/music play、将 URL 加入队列,或启动已保存的播放列表。 - Lavaplayer 会加载该 URL。
- YouTube 链接由
youtube-source处理。 - 模组会将编码后的音频帧发送到 Simple Voice Chat 静态音频频道。
- 指定的听众会收听同一条音乐流。
每台服务器只有一条正在播放的全局音乐流。使用 /music play 启动新曲目会替换当前播放内容并清空运行时队列。
YouTube OAuth
YouTube 可能会阻止自动播放客户端。此模组支持通过 youtube-source 使用 YouTube OAuth。
配置文件:
config/music.json
重要字段:
{
"youtubeOAuthEnabled": true,
"youtubeOAuthRefreshToken": "",
"youtubeOAuthSkipInitialization": false
}
首次登录流程:
- 启动服务器。
- 运行
/music play <youtube-url>。 - 查看服务器日志中的 Google 设备登录代码。
- 在浏览器中完成登录。
- 刷新令牌会保存到
config/music.json。
YouTube 登录适用于整个服务器,而非单个玩家。请妥善保管 music.json,因为其中可能包含 OAuth 刷新令牌。建议使用备用 YouTube 账号。
命令
运行:
/music help
/music help queue
/music help playlist
/music help target
/music help volume
所有人
/music help
/music now
/music queue list
/music leave
/music join
/music leave将玩家从音乐串流中移除。/music join取消个人退出设置。- 个人音量由 Simple Voice Chat 客户端中的“Music”滑块控制。
播放
所有玩家:
/music play <url>
/music play <url> <volume>
/music stop
/music pause
/music resume
/music skip
/music forward <seconds>
/music backward <seconds>
/music volume <1-100>
/music repeat off
/music repeat one
/music repeat queue
/music shuffle on
/music shuffle off
行为:
/music play <url>立即开始播放并清空运行时队列。/music play <youtube-playlist-url>开始播放播放列表中的第一首曲目,并将其余曲目加入队列。/music play <url> <volume>开始播放,并将全局音量从1设置为100。/music forward <seconds>将当前曲目快进。/music backward <seconds>将当前曲目倒回。/music repeat one重复播放当前曲目。/music repeat queue循环播放队列。/music shuffle on随机选择队列中的曲目。
队列
所有玩家:
/music queue add <url>
/music queue remove <index>
/music queue clear
/music skip
所有人均可查看:
/music queue list
队列行为:
- 服务器重启后,运行时队列不会保存。
/music queue add <url>添加一首曲目到队列末尾。/music queue add <youtube-playlist-url>展开播放列表,并将其中每首歌曲添加到队列末尾。- 队列元数据会在后台加载,因此新项目可能会短暂显示为
title loading。 - YouTube 创作者名称末尾的
- Topic将不会显示。 - 如果元数据加载失败,网址仍会保留在队列中,播放时仍会尝试读取。
输出示例:
[Music] Queue:
1. Song Title - Creator Name | 3:22 | requested by PlayerName | added 16:21:05
2. title loading: https://www.youtube.com/watch?v=... | requested by PlayerName
已保存的播放列表
所有玩家:
/music playlist list
/music playlist create <name>
/music playlist delete <name>
/music playlist show <name>
/music playlist add <name> <url>
/music playlist remove <name> <index>
/music playlist play <name>
/music playlist queue <name>
播放列表行为:
- 播放列表保存在
config/music-playlists.json。 - 播放列表名称只能是单个单词。
/music playlist add <name> <url>添加一首曲目。/music playlist add <name> <youtube-playlist-url>导入 YouTube 播放列表中的所有歌曲。/music playlist play <name>替换当前播放内容并开始播放该播放列表。/music playlist queue <name>将已保存的播放列表追加到当前队列末尾。
示例:
/music playlist create lobby
/music playlist add lobby https://www.youtube.com/watch?v=SONG_1
/music playlist add lobby https://www.youtube.com/playlist?list=PLAYLIST_ID
/music playlist play lobby
目标选择
所有玩家:
/music target all
/music target only <players>
/music target add <players>
/music target remove <players>
/music target show
/music exclude add <players>
/music exclude remove <players>
/music exclude clear
目标选择顺序:
- 已连接的 Simple Voice Chat 客户端。
- 如果已设置,则应用包含筛选条件。
- 应用排除筛选条件。
- 玩家通过
/music leave设置的个人退出选项。
个人退出设置始终优先。/music target all 不会强制已退出的玩家收听。
示例:
/music target all
/music target only Steve
/music target add Alex
/music exclude add Steve
/music exclude clear
配置文件
主配置:
config/music.json
保存 YouTube OAuth 设置、循环/随机播放设置、目标筛选条件、排除项和玩家的自主退出设置。
播放列表配置:
config/music-playlists.json
保存的播放列表名称和曲目条目。
播放列表示例结构:
{
"playlists": {
"lobby": [
{
"url": "https://www.youtube.com/watch?v=SONG_1",
"title": "Song Title",
"creator": "Creator Name",
"requestedByName": "server",
"durationMillis": 202000
}
]
}
}
服务器运行期间,请使用命令而不是编辑播放列表文件。
URL 支持
较可靠的链接:
- YouTube 普通观看链接。
- YouTube Music 观看链接。
- YouTube 和 YouTube Music 播放列表链接。
- Lavaplayer 支持的直接音频文件 URL。
- 部分可提取音频的直接视频 URL。
可靠性较低的链接:
- Spotify 页面链接。
- 私人视频或有年龄限制的视频。
- 受地区限制的视频。
- 被机器人检测机制拦截的 YouTube 链接。
不支持的 URL 应显示聊天错误,而不是导致服务器崩溃。
命令权限
所有玩家都可以使用每个 /music 命令,包括会更改服务器播放状态的命令:
- 播放、停止、暂停、继续、跳过、快进、快退。
- 添加/移除/清空队列。
- 创建/删除/添加/移除/播放/排入队列播放列表。
- 目标和排除筛选条件。
- 循环、随机播放、全局音量。
自助操作和查看命令:
/music help/music now/music queue list/music leave/music join
故障排除
显示正在播放,但没人听得到音乐
运行:
/music now
/music target show
检查以下事项:
- Simple Voice Chat 已连接。
- 语音目标/监听者数量不为
0。 - 玩家没有运行
/music leave。 - 玩家未被
/music exclude排除。 - 客户端 Simple Voice Chat 的“Music”滑块不为
0%。 - 全局音量没有设置得太低。
YouTube 提示登录或机器人验证
在 config/music.json 中启用 OAuth 并重启,然后运行:
/music play <youtube-url>
按照服务器日志中显示的步骤完成设备登录。之后,应该会保存 youtubeOAuthRefreshToken。
队列名称显示为“正在加载”或“未知”
元数据会异步加载。请稍等几秒后运行:
/music queue list
如果元数据仍显示为未知,说明 Lavaplayer 无法解析该 URL 的元数据。模组仍会在轮到该 URL 播放时尝试播放。
将目标设为全部后,有玩家听不到音乐
检查该玩家是否主动退出:
/music target show
玩家可以通过以下方式重新加入:
/music join
个人退出设置的优先级高于目标筛选条件。
备注
- 此模组不会将歌曲下载到磁盘。
- 如果 YouTube 屏蔽客户端或更改播放器行为,播放仍可能失败。
- YouTube 主题频道作者名称会经过清理后再显示;例如,
Artist - Topic会变为Artist。 - OAuth 能提高 YouTube 的可靠性,但建议使用备用 YouTube 账号。
- 尚未实现服务端按玩家分别设置音量;个人音量请使用 Simple Voice Chat 客户端的“Music”滑块调整。
常见问题
Simple Voice Chat Music Addon 支持哪些 Minecraft 版本?
Simple Voice Chat Music Addon 支持 Minecraft Java 版 1.21–26.3,共 17 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。
Simple Voice Chat Music Addon 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅服务端。
评论
登录后评论和评分