sounds.json是一個由資源包的聲音系統使用的檔案。當一個或多個遊戲內事件觸發了一個聲音事件時,聲音系統會根據該檔案的內容來決定播放哪個音效。該檔案應該放置於資源包的assets/<命名空間>/目錄下。在該檔案中定義的聲音事件可以透過形如<命名空間>:<聲音事件名>的命名空間ID來調用。
遊戲預設的該檔案放置在.minecraft/assets/objects(基岩版在assets/resource_packs/vanilla/sounds)目錄下,它的檔案名可以在.minecraft/assets/indexes/<遊戲版本>.json檔案中查詢。
檔案結構
檔案用JSON格式儲存,但在這裏使用NBT的圖示來表示。
Java版
- :根對象。
- 聲音事件名:一個聲音事件。聲音事件名通常是按照類別以點(
.)分割的(例如entity.enderman.stare)。下方有表格列出了所有遊戲自帶的聲音事件。(如果你想要為該聲音事件設定minecraft以外的命名空間,應當把sounds.json檔案放置在相應命名空間的目錄下,而不是在這裏定義。)- replace:可選。如果設定為
true,在sounds中定義的音效列表會替換掉優先級更低的資源包中為該聲音事件定義的音效。設定為false則會補充到原來的音效列表中,而不是直接替換。如果不指定,預設為false。 - subtitle:可選。如果遊戲中開啟了「顯示字幕」選項,遊戲將會在該聲音事件被播放時將該字串翻譯為聲音字幕。
- sounds:可選。該聲音事件使用的音效檔案列表。當該聲音事件被觸發時,遊戲會從此列表定義的音效檔案中隨機選取一個播放。
- : 從
assets/<命名空間>/sounds/資料夾到此音效檔案的路徑。應使用正斜線(/)分割路徑。 - : 一個代表音效檔案的對象。如果你需要定義更多參數的話再用這個對象定義,否則用上面的字串格式即可。
- name:從
assets/<命名空間>/sounds/資料夾到此聲音檔案的路徑,或著是另一個聲音事件的命名空間ID。 - volume:播放此聲音時的音量。值為0.0到1.0的小數。未定義時預設為1.0。
- pitch:以確定的值播放音調。未定義時預設為1.0。可以調至更高或更低。
- weight:此聲音事件觸發時此聲音被播放的相對權重。預設為1。例如,設為2相當於此檔案在列表中出現兩次。
- stream:設定為
true則此聲音會以流式播放。當聲音較長時最好設為true來避免卡頓。所有的music和record分類的音效(除了音階盒)都使用流式播放,因為它們的長度都達到一分多鐘(最長達八分多鐘)。未指定則預設為false。 - attenuation_distance: 基於距離的音效大小衰減率。用於傳送門、烽火台和海靈核心。預設為16。
- preload:若設定為
true,則該音效檔案會在載入資源包時就載入,而不是在播放音效的時候再載入。用於水下環境音效。預設為false。 - type:可選
sound或event。file表明name中定義的是檔案名,event表明name中定義的是聲音事件名。未指定則預設為sound。
- name:從
- : 從
- replace:可選。如果設定為
- 聲音事件名:一個聲音事件。聲音事件名通常是按照類別以點(
Dinnerbone的關於此檔案的編寫規範。
基岩版
sound_definitions.json或music_definitions.json
- : 根對象。
- format_version:目前值為
1.14.0,表示自村莊與掠奪以來使用的標準格式。 - sound_definitions:對聲音事件的定義。
- :單個聲音事件,通常會分為一類(例如
mob.endermen.stare或step.stone)。預設的聲音事件會在下方列出。- category:控制聲音音量滑條的分類。
master、music、record、weather、hostile、neutral、player、block、bucket、bottle、ambient、voice、sound。預設值為sound。 - min_distance:聲音開始衰減的距離。預設值為0。
- max_distance:聲音完全聽不見的距離。預設值為16。
- min_delay:聲音事件觸發後經過多長時間才會播放(最小值),單位為秒。只有music_definitions.json才會使用此參數。預設值為0。
- max_delay:聲音事件觸發後經過多長時間才會播放(最大值),單位為秒。只有music_definitions.json才會使用此參數。預設值為0。
- sounds:聲音事件所使用的具體音效。
- name:該音效在資源包中的路徑(不包含拓展名)。若詳細定義了每個音效的具體參數,則會使用下方的組件。
-
- name:該音效在資源包中的路徑(不包含拓展名)。
- stream:當該聲音為流式播放時為true。預設值為false。
- is3D:是否以立體聲播放。
- volume:聲音的音量。預設值為1.0。可以是一個區間以表示範圍。
- pitch:聲音的音高。預設值為1.0。可以是一個區間以表示範圍。
- weight:聲音的權重,即觸發該音效時間後單個聲音會被播放的機率,例如值為2時相當於將該音效重複定義了1次。預設值為1。
- load_on_low_memory:是否預載。預載的音效可以在低記憶體裝置上播放。
- subtitle:未使用的值。
- category:控制聲音音量滑條的分類。
- :單個聲音事件,通常會分為一類(例如
- format_version:目前值為
sounds.json
- : 根對象。
- :聲音事件的集合名。值可以是
individual_event_sounds、block_sounds、entity_sounds、interactive_sounds。- :二級集合名,用於表示某一類方塊的共同音效集合,例如
stone和wood。- volume:聲音的音量。預設值為1.0。可以是一個區間以表示範圍。
- pitch:聲音的音高。預設值為1.0。可以是一個區間以表示範圍。
- events:具體的聲音事件命名空間ID的集合。
- :系統音效類型,例如
item.use.on。預設值和聲音事件命名空間ID保持一致。- sound:單個聲音事件命名空間ID,例如
use.stone。作為簡寫,該參數有時候會直接以命名空間ID為值。- volume:聲音的音量。預設值為1.0。可以是一個區間以表示範圍。此值與二級集合的同一參數為乘積關係,以表示該聲音最終的音量。
- pitch:聲音的音高。預設值為1.0。可以是一個區間以表示範圍。此值與二級集合的同一參數為乘積關係,以表示該聲音最終的音高。
- sound:單個聲音事件命名空間ID,例如
- :系統音效類型,例如
- :二級集合名,用於表示某一類方塊的共同音效集合,例如
- :聲音事件的集合名。值可以是
聲音事件
一個聲音事件是和遊戲事件聯繫在一起的。多個聲音事件可能對應不同的遊戲事件或屬於不同的聲音分類,但它們共用同一個聲音檔案。小部分的有效聲音檔案並沒有出現於sounds.json,而其他則沒有相對應的遊戲事件。任何缺少遊戲事件的聲音事件都僅能透過/playsound指令播放。所有預設的聲音事件,它們使用的聲音,它們屬於的類別,以及觸發它們的遊戲事件將在下表中列出。
Java版資料值
[編輯]
基岩版資料值
[編輯]
方塊聲音種類
聲音系統可以使被踩到、被放置、被破壞的方塊產生相應的聲音。
歷史
| Java版 | |||||
|---|---|---|---|---|---|
| 1.7.2 | 13w42a | 加入了sounds.json。 | |||
| 1.9 | 15w43a | 變更了許多聲音的id,之前的id可以從sounds.json/Java版1.9前上查看。 | |||
| 15w43b | 加入了「subtitle」字段。 | ||||
| 16w02a | 加入了「voice」聲音事件類別。 | ||||
| 1.10 | 移除了「category」字段。[1] | ||||
| 1.13 | 18w10a | 加入了「preload」字段。 | |||
| 攜帶版 | |||||
| 1.0.4 | 1.0.4.1 | 加入了sounds.json、sound_definitons.json和music_definitons.json。 | |||
參考
| 版本 | |||||||
|---|---|---|---|---|---|---|---|
| 開發週期 |
| ||||||
| 技術 |
| ||||||
| 多人遊戲 | |||||||
| 遊戲訂製 | |||||||
| 版本 |
| ||||||
|---|---|---|---|---|---|---|---|
| 開發 |
| ||||||
| 技術性 | |||||||
| 多人遊戲 | |||||||
| 特色功能 | |||||||