/playsound 播放音效
播放指定音效给目标玩家,支持音源位置、音量、音高与最小音量调节
为指定玩家播放音效。音效从可选的音源位置发出,并可调节音量、音高与最小音量。基岩版与 Java 版的语法不同:玩家参数与音源位置参数均可选,且没有 Java 版的「音源类别」(source)参数。
原理
/playsound 的 <音效> 参数并不是音频文件的路径,而是「音效定义」(sound definition)的标识符。游戏引擎在播放前会去原版资源包或附加包的 sound_definitions.json 中查找这个标识符,每个定义可以映射到一个或多个音频文件,并附带默认音高、音量以及用于随机挑选的权重(weight)等属性。因此当你执行 random.explode 时,引擎实际是从该定义关联的一组爆炸音频里按权重随机选中一个播放;附加包只要在 sound_definitions.json 中注册新的定义,就能让 /playsound 播放自定义音效。
这条命令本质上是向目标玩家的客户端发送一次「播放音效」请求,属于一次性事件,不会在世界中生成持续存在的音源。音源位置(position)决定「可听球体」的球心,而 volume 决定球体的半径:在基岩版中,volume 为 1 时对应约 16 格半径的可听范围,为 4 时约 64 格。玩家与球心的距离越远,听到的音量按距离衰减,直到球体边缘衰减为静音;球体之外的玩家默认听不到任何声音。
对于落在可听球体之外的玩家,minimumVolume 决定他们是否仍能隐约听到。当该值大于 0 时,游戏会把音源重新定位到距离该玩家约 2 格的位置,并按 minimumVolume 的响度播放,从而实现「近处清晰、远处微弱」的全局提示;当它等于 0(默认值)时,球体外的玩家完全静音。
pitch 参数同时控制音高与播放速度。音效引擎通过改变音频采样率来变调,而采样率改变必然带来播放时长的变化,因此音高值也就是速度倍率:pitch 为 2 时声音高一个八度且播放速度加倍,为 0.5 时低一个八度且速度减半。基岩版接受 0 到 256 之间的取值,0 表示静音。
语法
/playsound <音效> [玩家] [音源位置: x y z] [音量] [音高] [最小音量]
参数
<音效>— 字符串。要播放的音效定义 ID,如random.explode、note.pling。它不是音频文件名,而是原版资源包或附加包sound_definitions.json中注册的标识符,必须是不含空格的单个单词,或用双引号包裹。[玩家]— 选择器(玩家类型)。指定由谁听到该音效,只能是玩家名或玩家类型选择器(@p、@a、@s、@r、@e[type=player])。省略时默认为命令执行者。在命令方块中执行时没有默认玩家,建议显式指定。[音源位置]— 坐标(x y z)。音效在空间中发出的位置,决定可听球体的球心。支持绝对坐标以及~、^相对坐标。省略时默认为执行者所在位置。[音量]— 浮点数。控制音效可被听到的范围(可听球体半径),取值 1 时约 16 格,4 时约 64 格;小于 1 时音量减轻,0 表示静音。它更像「传播距离」而非简单的响度倍率。默认 1.0。[音高]— 浮点数(0–256)。同时控制音高与播放速度,2 表示高一个八度且速度加倍,0.5 表示低一个八度且速度减半,0 表示静音。超过 256 或小于 0 都会按默认值 1 处理。默认 1.0。[最小音量]— 浮点数(0.0–1.0)。位于可听球体之外的玩家听到的最小响度。大于 0 时,球体外的玩家会在距离自己约 2 格处听到以该响度播放的音效;为 0(默认值)时球体外玩家完全听不到。
常用音效 ID
以下为原版常用音效定义 ID(均已验证存在于原版 sound_definitions.json)。完整列表可参考 playsoundlist.xyz,附加包也可注册自定义 ID。
| 音效 ID | 说明 |
|---|---|
random.explode | 爆炸 |
random.levelup | 经验等级提升 |
random.orb | 拾取经验球 |
random.pop | 短促的「啵」声 |
random.click | 按钮点击 |
random.anvil_land | 铁砧落地 |
random.anvil_use | 使用铁砧 |
random.anvil_break | 铁砧损坏 |
random.fizz | 嘶嘶声(灭火、液体反应) |
random.eat | 进食 |
random.burp | 打嗝 |
random.drink | 饮水 |
random.chestopen | 箱子打开 |
random.chestclosed | 箱子关闭 |
random.enderchestopen | 末影箱打开 |
random.enderchestclosed | 末影箱关闭 |
random.door_open | 门打开 |
random.door_close | 门关闭 |
random.wood_click | 木板点击 |
random.glass | 玻璃碎裂 |
random.break | 方块破坏 |
random.splash | 入水 / 溅水 |
random.bowhit | 弹射物击中 |
random.totem | 不死图腾激活 |
ambient.weather.thunder | 雷声 |
ambient.weather.rain | 雨声 |
fire.ignite | 点火 |
fire.fire | 火焰燃烧 |
mob.wither.spawn | 凋灵生成 |
mob.enderdragon.growl | 末影龙咆哮 |
mob.enderdragon.death | 末影龙死亡 |
mob.zombie.say | 僵尸叫声 |
mob.zombie.remedy | 僵尸村民治愈 |
mob.villager.yes | 村民同意交易 |
mob.villager.haggle | 村民议价 |
note.harp | 音符盒竖琴 |
note.pling | 音符盒叮咚 |
note.bass | 音符盒低音 |
note.bit | 音符盒电子音 |
示例
给最近玩家播放爆炸声:
/playsound random.explode @p
给最近的一名玩家播放一次爆炸声。音量、音高均取默认值 1.0,音源默认为执行者位置,可听范围约 16 格。
给所有玩家播放升级音效:
/playsound random.levelup @a
给所有在线玩家各播放一次经验升级音效,常用于向全体玩家广播提示。
在指定坐标播放雷声:
/playsound ambient.weather.thunder @a 100 64 100
以坐标 (100, 64, 100) 为音源播放雷声,所有玩家都能听到。离该坐标越近越响,超过约 16 格后逐渐听不到。
调节音量与音高:
/playsound note.pling @p ~ ~ ~ 0.5 2.0
在最近玩家的位置播放音符盒叮咚声,音量 0.5(可听范围缩小到约 8 格),音高 2.0(高一个八度、播放速度加倍)。要指定音量时,必须先给出音源位置的 3 个坐标,这里用 ~ ~ ~ 表示执行者位置。
全图警报音效(指定最小音量):
/playsound mob.wither.spawn @a 0 64 0 2.0 1.0 0.3
在坐标 (0, 64, 0) 处播放凋灵生成声,音量 2.0(可听半径约 32 格),最小音量 0.3。即使玩家在 32 格之外,也能以 0.3 的响度隐约听到,适合制作全图警报。
基岩版注意
- 需要 OP 等级 1,且世界必须开启作弊。
- 玩家参数只接受玩家类型:
@e选择器不带type=player时不可用,需写成@e[type=player]或改用@a。 - 与 Java 版的差异:基岩版没有「音源类别」(source)参数,Java 版用它指定音量归属类别(如
master、music、block);基岩版音高取值范围为 0–256,Java 版为 0.0–2.0。 - 要指定音量或音高时,必须先给出音源位置的 3 个坐标,不能空着占位;可用
~ ~ ~表示执行者位置。 - 基岩版没有 Java 版的
/stopsound命令,音效无法在播放中途被命令停止。 - 版本兼容:
/playsound自携带版 1.0.5 起就已加入。较旧版本的语法可能要求玩家参数必填(待验证具体版本号)。
常见问题
为什么执行后没有听到声音?
依次检查:音效 ID 是否拼写正确且存在于原版或附加包的 sound_definitions.json 中;volume 是否为 0(0 表示静音);pitch 是否为 0(0 表示静音);世界是否开启作弊、你的 OP 等级是否达到 1。
音量调成 2 或 4 会变得更响吗?
不会更响。基岩版中 volume 控制的是「可听球体」的半径而不是响度:取值 1 约 16 格、4 约 64 格。数值越大,能让越远的玩家听到,但球心处的响度不变。想让远处玩家也能隐约听到,应配合 minimumVolume 使用。
为什么用 @e 选择器会报错?
因为 [玩家] 参数要求玩家类型,@e 会同时选中非玩家实体而导致目标无效。请改用 @a、@p 等玩家选择器,或写成 @e[type=player]。
可以让音效循环播放当背景音乐吗?
/playsound 每次只触发一次音效,不会自动循环。若要循环播放,可把命令放在重复命令方块中并配合红石控制启停,或用脉冲信号按游戏刻反复触发。