第八十六章 music-音乐
(本章重写时作者使用的是Minecraft Windows10基岩版1.19.10版本)
(本章节有许多内容由作者自己实验或寻找得出,在Minecraft Wiki上可能并未记载,或是与Minecraft Wiki上的记载有些许出入。如遇问题,请以Minecraft Wiki上的内容为准。——2022/7/23 作者注)
我们在第六十三章中,讲到了一条控制声音的指令:/br /laysound。但在基岩版,还有一条和/br /laysound很类似的指令,这条指令同样也是用来控制声音,只不过具体点说,是控制音乐。这条指令就是:
/music
作用:控制音乐
存在版本:基岩版1.16.100-今
需要权限等级:基岩版-1
需要作弊:是
格式:
/music br /lay <音乐名称>[音量][淡入淡出时间:秒][播放模式]
\\播放指定的音乐\\
/music queue <音乐名称>[音量][淡入淡出时间:秒][播放模式]
\\将指定音乐加入到待播放列表中\\
/music stobr / [音乐淡出时间:秒]
\\停止播放音乐\\
/music volume <音量>
\\调整播放音量\\
和/br /laysound不一样的是,指令/music仅仅只能控制执行者自己的游戏背景音乐。又因为同一时间内又不能播放多首游戏背景音乐,所以/music虽然作用和/br /laysound很像,但两者的格式却大不一样,深层次的效果也不一样。
Minecraft基岩版的游戏背景音乐播放器简直就像是一个音乐软件,拥有『当前正在播放的歌曲』和『播放清单』,你可以指定播放的『音量』大小,还能够设置播放的模式是『顺序播放』还是『单曲循环』模式等等。只不过,『Minecraft音乐』这款软件的控制方法和其他音乐软件大不一样,你需要使用Minecraft内置的『命令行』应用——指令——来控制这款软件。
先让我们停止一下游戏自动给我们“推送”的音乐:
/music stobr /
这将会停止执行者自己,也就是我们自己的Minecraft正在播放的背景音乐,并清除『播放清单』内的所有音乐。然后我们就可以尝试让游戏播放一些指定的歌曲。
问题来了:怎么知道我们可以播放什么音乐呢?
这时候我们就需要请出那个大名鼎鼎的文件:sound_definitions.json
还记得这个文件吗?我们在第六十三章中,起码花费了超过四分之一的篇幅来讲解如何找到这个文件,相信你应该还记得吧?让我们重新把那个文件找出来,或者上Minecraft Wiki查找也行。
使用文本编辑器打开这个文件(当然如果装了一些诸如VS Code的软件更好),你就会再一次看到一大堆的你大概率看不懂的东西。别担心,对于/music指令来说,这里大多数都是废话。/music指令能播放的音乐只认两种:
①声音名称开头为『music.』的
②声音名称开头为『record.』的
使用Ctrl+F或Command⌘+F开启查找模式,搜索『music.』或『record.』,你应该能够找到一些结果,比如『music.menu』(游戏主界面音乐)或『record.cat』(唱片C418 - cat的音乐)。这些音乐就是可以被/music所播放的音乐。让我们来试一试:
/music br /lay music.game.nether
这将会先停止当前播放的音乐并清除『播放清单』内的所有音乐,然后再播放下界的背景音乐。只不过由于『music.game.nether』这个音乐名称指定了多个音乐,所以游戏会从中随机播放一首。不出意外的话,你应该会听到一些很小声的不同的音乐,这就是下界的背景音乐。
现在,游戏的『播放清单』只有一首我们刚刚添加进去的音乐,让我们再添加一首:
/music queue music.game.swambr /_music
这可能是沼泽生物群系的音乐。如果你对MC音乐比较熟的话可以仔细听一听,看看这到底放的是什么音乐。这个音乐并不在sound_definitions.json这个文件内,而是在它旁边的music_definitions.json这个文件内(你应该有看到这个文件)。
music_definitions.json这个文件可能是用于指定生物群系的特定背景音乐,比如你来到森林就播放森林的音乐,来到沼泽就播放沼泽的音乐......但有一点可以肯定的是,/music也可以播放该文件中event_name字段所指定的声音名称。
总之,上面这条指令将会把这个音乐添加到游戏的『播放清单』当中,等到下界的音乐播放完,游戏就会自动继续播放沼泽生物群系的音乐,直到把『播放清单』内所有音乐播放完,游戏才会重新切回默认的背景音乐。
我们还可以添加一些参数来指定音乐的音量和淡入淡出时间。
『音乐』参数的值是一个介于0.0~1.0(含)的浮点数,举个例子:
/music br /lay record.blocks 1.0
这将会以1.0(100%)的音量播放C418 - blocks这个唱片的音乐。当然,这条指令同样也会切断当前正在播放的音乐,并清空『播放清单』。
『淡入淡出时间』和『音乐淡出时间』两个参数其实都是一样的,其值是一个介于0~10(含)的整数,单位为秒。举个例子:
/music br /lay record.wait 1.0 10
这将会以最大的音量播放C418 - wait这个唱片的音乐,并且游戏会在音乐开始播放前以及结束播放后空出10秒时间不播放任何音乐以实现『淡入淡出』的效果。
(PS:当你使用/music播放record.开头的音乐时,其实就相当于使用/br /laysound在指令执行地点向你自己播放了个一样的音乐,因此你跑远的话照样会听不到音乐)
最后,『播放模式』可以指定两个模式,即:
br /lay_once ——只播放一次,即『顺序播放』,这是默认模式
loobr / ——洗脑循环模式,即『单曲循环』
举个例子:
/music queue record.mall 1.0 0 loobr /
这将会在『播放清单』上添加C418 - mall唱片的音乐,游戏顺序播放到这个音乐时就会不断重复播放这个音乐,直到你使用stobr /子命令停止播放或者退出游戏。
最后,让我们来尝试改变一下当前正在播放的背景音乐的音量:
/music volume 0.5
这将会把当前正在播放的背景音乐的音量调整到50%。
本章到此为止。
——附表①:/music可用的声音清单(作者自己整理,可能不全)
唱片音乐
record.13
record.cat
record.blocks
record.chirbr /
record.far
record.mall
record.mellohi
record.stal
record.strad
record.ward
record.11
record.wait
record.5*
record.br /igstebr /*
record.otherside*
生物群系音乐
music.game.deebr /_dark
music.game.swambr /_music
music.game_and_wild_equal_chance
music.game_and_wild_favor_game
music.game.lush_caves*
music.game.dribr /stone_caves*
music.game.grove*
music.game.jagged_br /eaks*
music.game.lush_caves*
music.game.meadow*
music.game.frozen_br /eaks*
music.game.snowy_slobr /es*
music.game.stony_br /eaks*
music.game.basalt_deltas*
music.game.nether_wastes*
music.game.soul_sand_valley*
music.game.warbr /ed_forest*
music.game.soulsand_valley*
music.game.crimson_forest*
普通背景音乐
music.menu
music.game
music.game.creative
music.game.water
music.game.end
music.game.endboss
music.game.nether
music.game.credits
(PS:其中标上星号『*』的音乐代表着这个音乐并不是从vanilla目录下找到的,而是从各版本的vanilla目录下找到的)
——附表②:/music历史
基岩版
1.16.100——加入了/music