
Notica
在游戏中播放.nbs文件格式的音符盒歌曲!可在服务器和单人游戏中使用,兼容原版。优化歌曲播放并扩展Minecraft的音符八度范围。
查看大图Notica
一个 Fabric 模组,用于向玩家播放 .nbs 文件格式的音符盒歌曲。 此模组在服务端兼容原版,这意味着原版玩家无需安装此模组也能加入。 安装了此模组的玩家可以享受更低的网络占用以及更好的播放质量。
演示
功能
NBS 文件播放
在服务器或单人游戏中播放任何使用 Open Note Block Studio 创作的歌曲。
将 .nbs 文件放入 config/notica/songs 目录。
使用 /music play <song> for [players] 命令来播放歌曲。

注意:此模组不包含任何歌曲文件,你需要自行下载。 你可以在 Noteblock World 找到许多 NBS 歌曲。
客户端歌曲播放
在原版客户端连接中,每个音符都会通过单独的封包发送给玩家。 这会产生大量发送的封包,导致延迟并降低播放质量。
然而,如果玩家安装了此模组,歌曲的音符会被打包成块,并以更大但少得多的封包发送。 此过程类似于视频缓冲。

改进的播放质量
原版 Minecraft 存在一些限制,会影响歌曲的播放质量。 其一,音符只能在特定八度范围内播放(F#3 到 F#5)。 其二,声音在世界中必须具有整数位置,当玩家在播放期间移动时会导致音频失真。 此外,音符的立体声声像明显更差,因为音符位置被钳制到最近的整数值。
安装了 Notica 的客户端没有这些限制,因为音符直接通过 OpenAL(Minecraft: Java Edition 使用的音频引擎)播放。 歌曲播放听起来将与 Open Note Block Studio 中的播放相似。
自定义乐器
任何 Minecraft 声音都可以用作 .nbs 文件中的自定义乐器。 Notica 支持 nbs 文件格式规范(最高版本 5)的所有自定义乐器相关功能。
任意歌曲节奏
与其他服务端 nbs 播放器类似,Notica 不受特定歌曲节奏的限制。 此模组通过异步运行歌曲播放来确保歌曲播放时机准确。 封包发送不进行服务端线程同步,否则会将节奏再次限制为每秒 20 tick。
歌曲循环
NBS 格式版本 4 引入了循环选项,如开/关、最大循环次数和循环起始 tick。 此模组支持这些选项,并将相应地自动循环。
提示:如果歌曲无限循环,你可以在游戏内使用 /music stop 停止它。
扩展八度范围
如前所述,Minecraft 对音符音高施加了限制,将八度范围限制在 F#3 到 F#5。
安装了模组的玩家没有此限制,但原版玩家仍然受影响。
默认情况下,超出原版范围的音符会为原版玩家移调,以便能够播放。
原版客户端仍然可以通过安装扩展音符资源包来播放超出原版范围的音符。
可以通过使用 /music set extended_range true 启用扩展范围播放(仅限原版玩家)来安装额外音符资源包。
位置音乐播放
歌曲可以通过世界中的“扬声器”在特定位置播放。 扬声器可以具有固定位置,也可以附着到实体上。 如果扬声器的实体移动,歌曲也会随之移动。
多普勒效应
附着到实体的歌曲可以启用多普勒效应,该效应根据实体相对于玩家的运动来扭曲音频音高。 在模组设置中,这可以扩展为同时使用玩家的运动。 这将启用使用 OpenAL 的完整多普勒效应模拟。
命令
所有 /music 命令需要 OP 或上表中列出的相应权限。
播放
为自己播放歌曲:
/music play <song>
为特定玩家或所有在线玩家播放歌曲:
/music play MySong.nbs for @a
/music play MySong.nbs global
<song> 参数是相对于 config/notica/songs 目录的 .nbs 文件路径。Tab 补全会建议可用的文件。
使用 global 启动的歌曲也会自动为在歌曲运行期间加入服务器的玩家播放。
音量和播放选项
在监听者参数后指定 0.0 到 1.0 之间的音量:
/music play MySong.nbs for @a 0.7
有两种播放变体可用:individual 和 streamed。默认使用 streamed。
使用 individual 播放时,每个音符直接通过 Minecraft 的声音系统播放,该系统同时播放声音的数量限制为 256。此池与所有其他游戏声音共享。同时音符数量较多的歌曲在池满时可能会丢弃音符,在这种情况下其他游戏声音也可能被截断。
使用 streamed 播放时,自定义音频混合器从所有音符生成单个音频流。这可以处理任何同时音符数量的歌曲,同时保持高音质,并且不会干扰其他游戏声音。与 streamed 相比,具有大量立体声声像的歌曲在 individual 播放时听起来可能略有不同。
/music play MySong.nbs for @a 0.8 individual
/music play MySong.nbs for @a 0.8 streamed
流式播放还支持两种立体声混合模式:spatial(默认)和 equal_power:
/music play MySong.nbs for @a 0.8 streamed equal_power
歌曲 ID
每个活动歌曲都有一个 ID。当未给出显式 ID 时,ID 派生自文件名和运行命令的玩家名称。以这种方式启动歌曲会自动停止受影响监听者已在播放的任何歌曲。
要同时播放多首歌曲,请使用 id 关键字提供显式 ID。这也会跳过自动停止:
/music play Ambient.nbs for @a 0.5 individual id myserver:ambient
/music play Theme.nbs for @a 0.8 id myserver:theme
ID 也用于 /music stop 和 /music seek 来定位特定歌曲。
位置播放
歌曲可以通过世界中的固定位置扬声器或附着到移动实体的扬声器播放:
/music play MySong.nbs at position 100 64 200
/music play MySong.nbs at position 100 64 200 for @a
/music play MySong.nbs at entity @e[type=armor_stand,limit=1]
/music play MySong.nbs at entity @e[type=armor_stand,limit=1] for @a
在音量之后,你可以配置扬声器范围和半径。range(16 到 128)是可以听到歌曲的最大距离(以方块为单位)。radius(0 到 15)适用于立体声歌曲,决定左右扬声器声道在世界中放置的距离:
/music play MySong.nbs at position 0 64 0 for @a 0.8 64 8
使用单声道模式会将歌曲下混为单个点状声源。这使扬声器表现得像空间中的单个点,而不是展开的立体声对。请注意,下混会使声音稍微变轻。单声道是启用实体扬声器多普勒效应所必需的:
/music play MySong.nbs at position 0 64 0 for @a 0.8 streamed mono
多普勒效应
具有单声道流式播放的实体扬声器支持多普勒效应,该效应根据实体相对于每个监听者的速度来改变音高。这需要客户端安装 Notica:
/music play MySong.nbs at entity @e[type=minecart,limit=1] for @a 0.8 streamed mono doppler
停止
停止当前为你播放的所有歌曲:
/music stop
为特定玩家停止歌曲、停止服务器上的所有歌曲,或按 ID 停止特定歌曲:
/music stop for <players>
/music stop all
/music stop id <id>
/music stop for <players> <id>
使用 global 启动的歌曲只能通过 /music stop id 或 /music stop all 停止。
添加监听者
将玩家添加到已在播放的歌曲中,而无需重新启动它:
/music add <id> <players>
跳转
使用 s/sec 表示秒,m/min 表示分钟,或 t/ticks 表示 tick,跳转到歌曲中的特定位置。纯数字跳转到绝对位置;+ 或 - 前缀相对于当前位置跳转:
/music seek 1m30s
/music seek +10s
/music seek -30t
/music seek 50sec+3ticks
为特定玩家或特定歌曲跳转:
/music seek +10s <players>
/music seek +10s <players> <id>
客户端设置
这些命令对所有玩家可用,不需要任何权限。
设置你的个人播放音量(0 到 100 百分比):
/music set volume 75
启用扩展八度范围资源包(仅限原版玩家,请参阅扩展八度范围):
/music set extended_range true
权限
为了播放或停止音乐,你需要是服务器管理员(拥有 OP)或拥有相应的权限:
| 操作 | 所需权限 |
|---|---|
| 播放音乐 | notica.command.music.play |
| 播放位置歌曲 | notica.command.music.play.positional |
| 为他人播放音乐 | notica.command.music.play.other |
| 停止音乐 | notica.command.music.stop |
| 为他人停止音乐 | notica.command.music.stop.other |
| 跳转音乐 | notica.command.music.seek |
| 为他人跳转音乐 | notica.command.music.seek.other |
类似项目
- Nota,作者 PinkGoosik(Fabric、Quilt)
- NoteBlockAPI,作者 koca2000(Bukkit 及其衍生)
- NoteBlockMusicPlayer,作者 koca2000(Bukkit 及其衍生)
开发者 API
Notica 为开发者提供了一个 API,以便其他模组可以使用 Notica 的功能。 API 文档可在 GitHub 上找到。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。