sounds.json (sound_definitions.json in Bedrock Edition) is a file used by the sound system in resource packs which tells the sound system what sound files to play when a sound event is triggered by one or more in-game events. This file is located in assets/minecraft in resource packs, and the default file is located in .minecraft/assets/objects (assets/resource_packs/vanilla/sounds on Bedrock Edition), and its hashed name can be found by looking it up in the file .minecraft/assets/indexes/<version>.json.
Since file .minecraft/assets/objects is obfuscated, one can find in Tutorials/Sound directory some methods to extract the sound.json and the sound directory, where all sounds and music are stored.
This file is stored in JSON format, but is represented here using NBT.
[NBT Compound / JSON Object] The root Object.
[NBT Compound / JSON Object]Sound Event: A sound event. The name is usually separated in categories (such as entity.enderman.stare). All default sound events are listed in the table below. (To get a different namespace than minecraft the file must be under a different namespace; not defining it here.)
[Boolean] replace: true/false. Used only in resource packs. True if the sounds listed in sounds should replace the sounds listed in the default sounds.json for this sound event. False if the sounds listed should be added to the list of default sounds. Optional. If undefined, defaults to "false".
[String] subtitle: Translated as the subtitle of the sound if Show Subtitles is enabled ingame. Accepts formatting codes and displays them properly in-game. Optional.
[NBT List / JSON Array] sounds: The sound files this sound event uses. One of the listed sounds is randomly selected to play when this sound event is triggered. Optional.
[String] The path to a sound file from the "namespace/sounds" folder (excluding the .ogg file extension). Uses forward slashes. The namespace defaults to minecraft but it can be changed by prepending a namespace and separating it with a :.
[NBT Compound / JSON Object] A sound file. This Object is used only when the sound requires additional Strings.
[String] name: The path to this sound file from the "namespace/sounds" folder (excluding the .ogg file extension). The namespace defaults to minecraft but it can be changed by prepending a namespace and separating it with a :. Uses forward slashes instead of backslashes. May instead be the name of another sound event (according to value of "type"). If the sound file has one channel (mono), it can be played locationally (sound volume decreases the farther you are from the source). If the file has two channels (stereo), the volume does not change (for example music, ambient sounds). Names are also not allowed to contain whitespace characters.[1]
[Float] volume: The volume for playing this sound. Value is a decimal greater than 0.0.[1] If undefined, defaults to 1.0.
[Float] pitch: Plays the pitch at the specified value. Value is a decimal greater than 0.0.[1] If undefined, defaults to 1.0, but higher and lower values can be chosen.
[Int] weight: The chance that this sound is selected to play when this sound event is triggered. Defaults to 1. An example: putting 2 in for the value would be like placing in the name twice. Only accepts integers.
[Boolean] stream: true/false. True if this sound should be streamed from its file. It is recommended that this is set to "true" for sounds that have a duration longer than a few seconds to avoid lag. Used for all sounds in the "music" and "record" categories (except Note Block sounds), as (almost) all the sounds that belong to those categories are over a minute long. Optional. If undefined, defaults to "false". Setting this to false allows many more instances of the sound to be ran at the same time while setting it to true only allows 4 instances (of that type) to be ran at the same time.
[Int] attenuation_distance: Modify sound reduction rate based on distance. Used by portals, pistons, beacons, and conduits. Defaults to 16.
[Boolean] preload: true/false. True if this sound should be loaded when loading the pack instead of when the sound is played. Used by the underwater ambience. Defaults to "false".
[String] type: Two values are available: "file" and "event"; "file" causes the value of "name" to be interpreted as the name of a file, while "event" causes the value of "name" to be interpreted as the name of an already defined event. If undefined, defaults to "file".
An example of a pre-1.10 sounds.json can be found here.
Dinnerbone's pre-1.10 specifications can be found here.
[String] format_version: Always set to 1.14.0 or 1.20.20.
[NBT Compound / JSON Object] sound_definitions
[NBT Compound / JSON Object]Sound Event: A sound event. The name is usually separated in categories (such as mob.endermen.stare or step.stone). All default sound events are listed in the table below.
[String] category: What volume slider affects this sound event. Can be ui, music, record, weather, hostile, neutral, player, block, ambient, voice or sound. Defaults to "sound".
[Int][Float] min_distance: The distance at which the sound's volume starts to attenuate (fade off)
[Int][Float] max_distance: The distance at which the sound can no longer be heard.
[NBT List / JSON Array] sounds: The sounds used by this sound event.
[String] name: The path to this sound file from the resource pack folder (excluding the file extension).
[NBT Compound / JSON Object]
[String] name: The path to this sound file from the resource pack folder (excluding the file extension).
[Boolean] stream: true/false. True if this sound should be streamed from its file. It is recommended that this is set to "true" for sounds that have a duration longer than a few seconds to avoid lag. Used for all sounds in the "music" and "record" categories (except Note Block sounds), as (almost) all the sounds that belong to those categories are over a minute long. Optional. If undefined, defaults to "false".
[Boolean] is3D:
[Float] volume: The volume for playing this sound. If undefined, defaults to 1.0.
[Float] pitch: The pitch for playing this sound. If undefined, defaults to 1.0.
[Int] weight: The chance that this sound is selected to play when this sound event is triggered. Defaults to 1. An example: putting 2 in for the value would be like placing in the name twice. Only accepts integers.
[Boolean] load_on_low_memory: Deprecated.
[String] subtitle: Unused.
Old
[NBT Compound / JSON Object] The root Object. Same as sound_definitions from the tree above.
A sound event is linked to one or more in-game events. Two sound events may share the same sound file, but correspond to different in-game events and/or belong to different sound categories. A few valid sound events aren't included in sounds.json, while others don't have an in-game event associated with them. Any sound event that lacks an in-game event can be played only with /playsound or by using a note block below a player head with the note_block_sound block entity tag set. All default sound events, the sounds they use, the category they belong to, the subtitle that plays at that event, and the in-game events they are triggered by are listed in the following table.
Please help improve this page. The talk page may contain suggestions.
An unused sound event is any sound embedded into Minecraft that does not have a trigger without plugins or mods. They do not have a defined frequency of amplification, or anything else a generic, used sound would use. Also, they do not have subtitles until they are used from a trigger in the vanilla game.[2] These do not usually have a corresponding translation key.
↑ Jump up to: abNo bug reports have been made for this case, however given the resolution of most others the lack of a subtitle is implied to be intentional
A block sound type is a set of sounds that blocks use when they are broken, placed, hit, fallen on, stepped on, jumped from,[Bedrock Edition only] or landed on.[Bedrock Edition only]
↑ Jump up to: abcFailure to follow this guideline in at least one entry will result in the entire sounds.json being ignored, in favor of vanilla sounds.