Update README.md

This commit is contained in:
Coloryr committed 2026-11-02 17:52:22 +08:00
1 parent 4560231e3e
commit c976858ae0
1 file changed
+247 -109
+247 -109
View File
@@ -2,7 +2,7 @@
![AllMusic](https://socialify.git.ci/Coloryr/AllMusic/image?description=1&font=Inter&forks=1&logo=https%3A%2F%2Fgithub.com%2FColoryr%2FAllMusic%2Fblob%2Fmain%2Fserver%2Fneoforge_26_1%2Fsrc%2Fmain%2Fresources%2Ficon.png%3Fraw%3Dtrue&name=1&owner=1&pattern=Signal&stargazers=1&theme=Auto)
![](https://img.shields.io/badge/Version-3.1.4-blue?style=for-the-badge)
![](https://img.shields.io/badge/Version-4.2.9-blue?style=for-the-badge)
![](https://img.shields.io/github/actions/workflow/status/Coloryr/AllMusic/client.yml?style=for-the-badge)
![](https://img.shields.io/github/actions/workflow/status/Coloryr/AllMusic/server.yml?style=for-the-badge)
![](https://img.shields.io/github/actions/workflow/status/Coloryr/AllMusic/onejar.yml?style=for-the-badge)
@@ -15,12 +15,13 @@
**注:需要配合客户端Mod使用**
**1.7.10和1.12.2没有技术更新**
**不兼容旧版客户端Mod,需要新版客户端Mod**
**如果面板服有问题,请自己去问服务器商给不给你用**
**如果面板服有问题,请自己去问服务器商给不给你用**
**4.0服务器只能跟4.0客户端用,不兼容3.0的服务器或客户端**
插件支持的服务器
- Paper
- Folia
- BungeeCord
- Velocity
模组支持的服务器
@@ -32,14 +33,20 @@
1. 安装AllMusic_Server
Paper服务器
复制`[paper]AllMusic_Server-4.0.0.jar`到你的`plugins`文件夹
复制`[paper]AllMusic_Server-4.2.9.jar`到你的`plugins`文件夹
Folia服务器
复制`[folia]AllMusic_Server-4.2.9.jar`到你的`plugins`文件夹
Velocity服务器
复制`[velocity]AllMusic_Server-4.0.0.jar`到你的`plugins`文件夹
复制`[velocity]AllMusic_Server-4.2.9.jar`到你的`plugins`文件夹
BungeeCord服务器
复制`[bungeecord]AllMusic_Server-4.2.9.jar`到你的`plugins`文件夹
Forge/Fabric/NeoForge类服务器
复制`[xxx-xxx]AllMusic_Server-4.0.0.jar`到你的`mods`文件夹
复制`[xxx-xxx]AllMusic_Server-4.2.9.jar`到你的`mods`文件夹
注:Release页面下载的文件名会把方括号换成点,比如`paper.AllMusic_Server-4.2.9.jar`,和上面是同一个文件
2. 安装客户端mod
复制`[xxx-xxx]AllMusic_Client-4.0.0`到客户端的`mods`文件夹
复制`[xxx-xxx]AllMusic_Client-4.2.9.jar`到客户端的`mods`文件夹
重启客户端
如果你是单人游戏使用或者联机使用OneJar版本
@@ -47,13 +54,236 @@ Forge/Fabric/NeoForge类服务器
## 音乐API
AllMusic不会内置音乐api,你想要正常使用需要自己安装
这里提供一个参考api https://github.com/Coloryr/netapi
`allmusic\api`文件夹放音乐api构建出来的jar,需要重启插件才能加载
`allmusic_server/api`(插件端为`plugins/AllMusic/api`)文件夹放音乐api构建出来的jar,需要重启插件才能加载
## 构建
1. 安装JDK25、Git
2. 使用 `git submodule update --init --recursive` 初始化项目
3. 使用 `gradlew :server:buildServer` 构建服务器
4. 使用 `gradlew :client:buildClient` 构建客户端
> 群组服(BungeeCord/Velocity)模式下,音乐API要放在**代理端**,因为放歌的是代理端
## 日志
所有日志都输出到**服务端控制台**(同时写入`logs/latest.log`),统一带`[AllMusic]`前缀:
- 插件端(Paper/Folia/BungeeCord/Velocity):使用 MiniMessage 颜色输出
- 模组端(Forge/Fabric/NeoForge):输出到对应模组日志,颜色会被去掉
启动时会依次打印插件版本、配置文件版本、语言文件版本、注册的音乐API,最后是`已启动-4.0.0`
| 日志 | 说明 |
| --- | --- |
| `没有注册音乐` | `api`文件夹里没有音乐API,放入API的jar后重启 |
| `配置文件config.json错误,已覆盖` | 配置文件损坏或字段缺失,已被默认配置覆盖 |
| `请及时更新配置文件` | `config.json`里的`version`和插件不匹配,建议删除后重新生成 |
| `语言文件版本号错误,运行可能会发生问题` | `message.json`版本和插件不匹配,删除后重载 |
| `没有找到目标服务器` | 顶层模式下没有找到`economy.backend`配置的后端服 |
| `经济数据请求超时` | 顶层模式下后端服没有在1秒内返回经济结果 |
插件数据目录(配置、语言、缓存、运行时数据都在这里):
| 平台 | 目录 |
| --- | --- |
| Paper / Folia | `plugins/AllMusic` |
| BungeeCord | `plugins/AllMusic` |
| Velocity | `plugins/allmusic` |
| Forge / Fabric / NeoForge | 服务端根目录下的`allmusic_server` |
| 文件 | 说明 |
| --- | --- |
| `config.json` | 主配置文件 |
| `message.json` | 语言/提示文本文件 |
| `cookie.json` | 网易云cookie池(音乐API使用) |
| `hud.json` | 默认HUD布局 |
| `music.json` | 空闲歌单 |
| `ban.json` | 禁歌/禁点歌玩家/禁播服务器列表 |
| `players/` | 每个玩家的HUD布局(`玩家名.json`) |
| `api/` | 音乐API的jar |
## 指令表
主指令为`/music`,别名以各平台注册为准。
### 玩家指令
| 指令 | 说明 |
| --- | --- |
| `/music <音乐ID/网易云分享链接>` | 用默认API点歌 |
| `/music <音乐API> <音乐ID>` | 指定API点歌 |
| `/music help` | 查看帮助 |
| `/music list` | 查看歌曲队列 |
| `/music cancel [序号]` | 取消自己的点歌,不带序号时取消自己最早的一首 |
| `/music vote` | 发起切歌投票 |
| `/music vote cancel` | 取消自己发起的切歌投票 |
| `/music agree` | 同意当前投票 |
| `/music push [序号]` | 发起插歌投票(把自己的歌插到下一首) |
| `/music push cancel` | 取消自己发起的插歌投票 |
| `/music mute` | 不再参与点歌,再输入一次恢复 |
| `/music mute list` | 不接收空闲歌单的歌,再输入一次恢复 |
| `/music search <歌名>` | 用默认API搜索歌曲 |
| `/music searchapi <音乐API> <歌名>` | 指定API搜索歌曲 |
| `/music select <序号>` | 选择搜索结果 |
| `/music nextpage` | 搜索结果下一页 |
| `/music lastpage` | 搜索结果上一页 |
| `/music join` | 重新接收当前正在播放的歌曲(重连/切服后使用) |
### HUD 指令
| 指令 | 说明 |
| --- | --- |
| `/music hud enable [true/false]` | 打开/关闭全部HUD,不带参数为切换 |
| `/music hud reset` | 重置全部HUD为默认布局 |
| `/music hud alpha <0~1>` | 设置全部HUD透明度 |
| `/music hud <info/lyric/state/pic> enable [true/false]` | 打开/关闭单个HUD |
| `/music hud <info/lyric/state/pic> reset` | 重置单个HUD |
| `/music hud <info/lyric/state/pic> pos <x> <y>` | 设置单个HUD位置 |
| `/music hud <info/lyric/state/pic> dir <对齐方式>` | 设置单个HUD对齐方式 |
| `/music hud <info/lyric/state/pic> alpha <0~1>` | 设置单个HUD透明度 |
| `/music hud info/lyric color <颜色HEX>` | 设置文字颜色,如`FFAA00` |
| `/music hud info/lyric/state shadow [true/false]` | 设置文字阴影 |
| `/music hud info/lyric/state gap <像素>` | 设置行间距/文字到进度条间距 |
| `/music hud info/lyric maxwidth <像素>` | 设置最大宽度,超出滚动 |
| `/music hud info loop [true/false]` | 设置信息是否循环滚动 |
| `/music hud pic size <像素>` | 设置封面尺寸 |
| `/music hud pic rotate [true/false]` | 设置封面旋转 |
| `/music hud pic speed <数值>` | 设置封面旋转速度(每多少毫秒转1度) |
对齐方式取值:`TOP_LEFT`、`TOP_CENTER`、`TOP_RIGHT`、`LEFT`、`CENTER`、`RIGHT`、`BOTTOM_LEFT`、`BOTTOM_CENTER`、`BOTTOM_RIGHT`
### 管理员指令
管理员指`config.json`里`adminList`中的玩家、OP或者控制台。
| 指令 | 说明 |
| --- | --- |
| `/music reload` | 重读配置文件和语言文件 |
| `/music next` | 强制切歌 |
| `/music ban <ID>` | 禁止点这首歌 |
| `/music ban <音乐API> <ID>` | 禁止点这首歌(指定API) |
| `/music unban <ID>` | 解禁这首歌 |
| `/music unban <音乐API> <ID>` | 解禁这首歌(指定API) |
| `/music banplayer <玩家>` | 禁止某位玩家点歌 |
| `/music unbanplayer <玩家>` | 解禁某位玩家 |
| `/music delete <序号>` | 删除队列中的歌曲 |
| `/music addlist <歌单ID>` | 添加歌单到空闲列表 |
| `/music addlist <音乐API> <歌单ID>` | 添加歌单到空闲列表(指定API) |
| `/music clearlist` | 清空空闲歌单 |
| `/music clearban` | 清空禁歌列表 |
| `/music clearbanplayer` | 清空禁点歌玩家列表 |
| `/music test <ID>` | 测试歌曲解析并输出播放地址 |
| `/music test <音乐API> <ID>` | 测试歌曲解析(指定API) |
## 权限
仅在`config.json`里`needPermission`为`true`时检查权限。
| 权限 | 说明 |
| --- | --- |
| `allmusic.addmusic` | 点歌 |
| `allmusic.search` | 搜歌、翻页、选择搜索结果 |
| `allmusic.push` | 插歌 |
| `allmusic.vote` | 发起投票/同意投票 |
> 管理员指令不检查上面的权限,只判断`adminList`、OP或者控制台。
## 配置文件
配置文件采用json格式,需要遵守json编写的格式规范
旧版的`maxPlayList`/`maxPlayerList`已经移到`limit`,`minVote`/`voteTime`已经移到`vote`,`musicBR`已移除(音质由音乐API决定),旧配置建议删除后重新生成
```json
{
"lyricDelay": 0,
"defaultAddMusic": 0,
"ktvLyricDelay": 0,
"adminList": ["color_yr"],
"playListSwitch": true,
"playListRandom": true,
"playListEscapeDeep": 40,
"sendLyric": true,
"needPermission": false,
"topAPI": false,
"mutePlayMessage": false,
"muteAddMessage": false,
"showInBar": false,
"showClick": true,
"ktvMode": true,
"version": "402",
"economy": {
"backend": "server1",
"vault": true
},
"funConfig": {
"rain": true,
"rainRate": 10
},
"limit": {
"messageLimit": false,
"messageLimitSize": 20,
"listLimit": false,
"listLimitSize": 10,
"infoLimit": false,
"infoLimitSize": 20,
"musicTimeLimit": false,
"maxMusicTime": 600,
"limitText": "...",
"maxPlayList": 10,
"maxPlayerList": 10
},
"cost": {
"searchCost": 20,
"addMusicCost": 10,
"useCost": false
},
"vote": {
"minVote": 3,
"voteTime": 30,
"voteListSize": 10
},
"defaultApi": "netapi",
"sendDelay": 1000,
"joinDelay": 1000,
"lyricReplace": {},
"fixSongTime": 0
}
```
| 字段 | 默认值 | 说明 |
| --- | --- | --- |
| `lyricDelay` | `0` | 歌词延迟,单位毫秒 |
| `defaultAddMusic` | `0` | 默认点歌方式,`0`直接点歌、`1`搜歌 |
| `ktvLyricDelay` | `0` | KTV模式歌词延迟,单位毫秒 |
| `adminList` | `["color_yr"]` | 管理员名单(不区分大小写) |
| `playListSwitch` | `true` | 玩家点歌后是否直接从空闲歌单切到玩家歌曲 |
| `playListRandom` | `true` | 空闲歌单是否随机播放 |
| `playListEscapeDeep` | `40` | 空闲歌单多少首之内不重复 |
| `sendLyric` | `true` | 是否发送歌词到客户端 |
| `needPermission` | `false` | 是否检查`allmusic.*`权限 |
| `topAPI` | `false` | 顶层模式,用于和BC/Velocity代理交换数据(群组服开启,代理端放歌) |
| `mutePlayMessage` | `false` | 是否不广播播放信息 |
| `muteAddMessage` | `false` | 是否不广播点歌信息 |
| `showInBar` | `false` | 播放信息是否显示在action bar |
| `showClick` | `true` | 是否显示`[点我]`操作,1.7.10客户端不支持点击事件,可设为`false` |
| `ktvMode` | `true` | 是否启用KTV歌词 |
| `version` | `"402"` | 配置文件版本号,不要手动改 |
| `economy.backend` | `"server1"` | 顶层模式下转发经济请求的后端服名字 |
| `economy.vault` | `true` | 是否挂钩Vault |
| `funConfig.rain` | `true` | 是否启用随机下雨 |
| `funConfig.rainRate` | `10` | 随机下雨概率(百分比) |
| `limit.messageLimit` | `false` | 是否限制广播消息长度 |
| `limit.messageLimitSize` | `20` | 广播消息最大长度 |
| `limit.listLimit` | `false` | 是否限制歌曲列表长度 |
| `limit.listLimitSize` | `10` | 歌曲列表最大长度 |
| `limit.infoLimit` | `false` | 是否限制信息长度 |
| `limit.infoLimitSize` | `20` | 信息最大长度 |
| `limit.musicTimeLimit` | `false` | 是否限制歌曲时长 |
| `limit.maxMusicTime` | `600` | 允许的最长歌曲,单位秒 |
| `limit.limitText` | `"..."` | 超长时替换的文本 |
| `limit.maxPlayList` | `10` | 队列最大歌曲数 |
| `limit.maxPlayerList` | `10` | 单个玩家最大点歌数,`0`为不限制 |
| `cost.searchCost` | `20` | 搜歌花费 |
| `cost.addMusicCost` | `10` | 点歌花费 |
| `cost.useCost` | `false` | 是否启用花钱点歌 |
| `vote.minVote` | `3` | 投票通过所需最小人数 |
| `vote.voteTime` | `30` | 投票时间,单位秒 |
| `vote.voteListSize` | `10` | 投票队列最大数量 |
| `defaultApi` | `"netapi"` | 默认音乐API的ID |
| `sendDelay` | `1000` | HUD信息刷新间隔,单位毫秒 |
| `joinDelay` | `1000` | 玩家进服后延迟多久开始发送歌曲,单位毫秒 |
| `lyricReplace` | `{}` | 歌词正则替换表,`{"正则": "替换"}` |
| `fixSongTime` | `0` | 歌曲总时长修正,单位毫秒(加到歌曲长度上,提前/延后切歌) |
## PAPI变量
> %allmusic_now_music_name% 歌曲名字
@@ -67,100 +297,8 @@ AllMusic不会内置音乐api,你想要正常使用需要自己安装
> %allmusic_lyric% 歌词
> %allmusic_tlyric% 翻译的歌词
## 配置文件说明
配置文件采用json格式,需要遵守json编写的格式规范
- maxPlayList 最大歌曲数
- maxPlayerList 一个玩家最大可点数量,0代表不限制
- minVote 最小通过投票数
- voteTime 投票时间
- lyricDelay 歌曲延迟,单位毫秒
- defaultAddMusic 默认添加歌曲方式,1为搜歌
- ktvLyricDelay KTV模式歌词延迟,单位毫秒
- adminList 管理员列表
- playListSwitch 是否玩家点歌后是否直接从空闲歌单切换至玩家歌曲
- playListRandom 是否空闲歌单随机播放
- sendLyric 是否发送歌词到客户端
- needPermission 是否指令需要权限
- topAPI 是否启用顶层模式,用于和BC交换数据
- mutePlayMessage 是否不发送播放信息
- muteAddMessage 是否不发送点歌信息
- showInBar 是否将信息限制在bar处
- showClick 是否显示[点我]操作,1.7.10客户端不支持点击事件,可设为false关闭
- ktvMode 是否启用KTV歌词
- musicBR 歌曲音质
- version 配置文件版本号
- economy 经济扩展配置
- mysqlUrl 目前无用
- backend 目前无用
- vault 是否使用vault插件
- funConfig 娱乐选项
- rain 是否启用随机下雨
- rainRate 随机下雨概率
- limit 限制设置
- messageLimit 是否启用广播消息长度限制
- messageLimitSize 广播消息限制长度
- listLimit 是否启用歌曲列表长度限制
- listLimitSize 歌曲列表限制长度
- infoLimit 是否启用信息长度限制
- infoLimitSize 信息长限制长度
- musicTimeLimit 是否启用歌曲长度限制
- maxMusicTime 限制最长歌曲长度,单位秒
- limitText 限制长度替换文本
- cost 花费相关配置
- searchCost 搜歌花费
- addMusicCost 点歌花费
- useCost 启用花费
- sendDelay Hud信息更新延迟
- defaultApi 默认音乐API
## 指令说明
普通玩家指令
- /music [音乐ID/网易云分享链接] 点歌
- /music [音乐API] [音乐ID] 点歌
- /music stop 停止播放歌曲
- /music list 查看歌曲队列
- /music cancel [序号] 取消你的点歌
- /music vote 投票切歌
- /music vote cancel 取消发起的切歌
- /music push [序号] 投票将歌曲插入到队列头
- /music push cancel 取消发起的插歌
- /music mute 不再参与点歌,再输入一次恢复
- /music mute list 不接收空闲列表点歌,再输入一次恢复
- /music search [歌名] 搜索歌曲
- /music searchapi [音乐API] [歌名] 搜索歌曲
- /music select [序列] 选择歌曲
- /music nextpage 切换下一页歌曲搜索结果
- /music lastpage 切换上一页歌曲搜索结果
- /music hud enable 启用/关闭全部界面
- /music hud reset 重置全部界面
- /music hud [位置] enable 启用关闭单一界面
- /music hud [位置] pos [x] [y] 设置某个界面的位置
- /music hud [位置] dir [对齐方式] 设置某个界面的对齐方式
- /music hud [位置] color [颜色HEX] 设置某个界面的颜色
- /music hud [位置] reset 重置单一界面
- /music hud pic size [尺寸] 设置图片尺寸
- /music hud pic rotate [开关] 设置图片旋转模式
- /music hud pic speed [数值] 设置图片旋转速度
管理员指令
- /music reload 重读配置文件
- /music next 强制切歌
- /music ban [ID] 禁止点这首歌
- /music ban [音乐API] [ID] 禁止点这首歌
- /music unban [ID] 解禁点这首歌
- /music unban [音乐API] [ID] 解禁点这首歌
- /music banplayer [ID] 禁止某位玩家点歌
- /music unbanplayer [ID] 解禁某位玩家点歌
- /music delete [序号] 删除队列中的歌曲
- /music addlist [歌单ID] 添加歌单到空闲列表
- /music clearlist 清空空闲歌单
- /music clearban 清空禁止点歌列表
- /music clearbanplayer 清空禁止点歌玩家列表
- /music test [ID] 测试歌曲内容解析
- /music test [音乐API] [ID] 测试歌曲内容解析
若开启权限后
- 点歌需要权限`allmusic.addmusic`
- 搜歌需要权限`allmusic.search`
- 插歌需要权限`allmusic.push`
- 投票切歌需要权限`allmusic.vote`
## 构建
1. 安装JDK25、Git
2. 使用 `git submodule update --init --recursive` 初始化项目
3. 使用 `gradlew :server:buildServer` 构建服务器
4. 使用 `gradlew :client:buildClient` 构建客户端