该教材将帮助你定位声音目录,并说明Java版声音文件是如何储存的

译者注:本教程以正版启动器默认的游戏目录为主(即游戏存储在%Appdata%/.minecraft中,如使用其他第三方启动器,默认目录一般为你的第三方启动器目录下的.minecraft中)。

声音目录 (1.7.2后版本)

1.7.2版本后声音文件在位于 indexes 目录下:

1.8 Mac OS X: ~/Library/Application Support/minecraft/assets/indexes/1.8.json

1.11 Mac OS X: ~/Library/Application Support/minecraft/assets/indexes/1.11.json

声音文件在Java版1.7.2 (准确的说为 13w42a) 与以上版本后将以Hash值的方式散步到不同的目录里,位于:

Windows: %AppData%\.minecraft\assets\objects

Mac OS X: ~/Library/Application Support/minecraft/assets/objects

Linux: ~/.minecraft/assets/objects

找到同在“assets”文件夹下的文件夹“indexes”,在那里声音文件被sounds.json文件索引并记录。选择你要的版本并用记事本之类的编辑器打开它。打开后,它看起来是这样的:

"sounds/music/menu/menu1.ogg": {
"hash": "c157c56846f0e50620f808fecd9d069423dd6c41",
"size": 1744657
},

从这里,我们可以确定 menu1.ogg 的Hash值(或标记)为c157c56846f0e50620f808fecd9d069423dd6c41。在 objects 目录下搜索该字符串,你应该会找到一个与该字符串相同文件名的文件。这个文件就是"menu1.ogg",为游戏主界面播放的音乐之一。文件名前两个字符("c1")也能够匹配到相应的目录,知道这一点将能够帮助你快速的定位到指定文件。

定位文件后,你可以通过支持.ogg格式的媒体播放器测试它,保证它是你要找的文件。如果不能播放,试一试添加.ogg扩展名。如果还是不行,试一试别的音频文件扩展名(比如.wav)或者这就不是一个声音文件。

注:如果你不小心从初始目录中编辑或删除了这些文件,启动器将会在下一次启动时自动帮你重新下载。(启动游戏时你必须保持网络连接,否则声音目录可能不会被重置,并且导致错误。)

提取 Minecraft 音乐(OSX脚本)

在Mac系统上:

建立一个新文件(以终端操作为例)

vi minecraft-music-extractor.sh
#!/bin/sh
#
# Description: Minecraft Music Extractor
MINECRAFT_ASSETS_DIR="/Users/YOURUSERNAMEHERE/Library/Application Support/minecraft/assets"
OUTPUT_DIR="/Users/YOURUSERNAMEHERE/Desktop"
JSON_FILE="/Users/YOURUSERNAMEHERE/Library/Application Support/minecraft/assets/indexes"
for ENTRY in `cat $JSON_FILE | python -c 'import sys,json; from pprint import pprint; data = json.load(sys.stdin); pprint(data);' | grep music | awk -F\' '{print $2 "," $6}'`
do
echo "Processing $ENTRY..."
FILENAME=`echo $ENTRY | cut -d, -f1 | sed 's:.*/::'`
FILEHASH=`echo $ENTRY | cut -d, -f2`
#Locate the file in the assets directory structure
FULLPATH_HASHFILE=`find "$MINECRAFT_ASSETS_DIR" -name $FILEHASH`
#Copy the file
cp "$FULLPATH_HASHFILE" "$OUTPUT_DIR/$FILENAME"
done
Update the variables (e.g. MINECRAFT_ASSETS_DIR) with your correct directory paths
Run the script

旧版本的声音目录 (pre-1.7)

如果你的游戏版本在1.7.2以前,声音目录将如下:

Windows: %AppData%\.minecraft\assets 或 %AppData%\.minecraft\assets\virtual\legacy

Mac OS X: ~/Library/Application Support/minecraft/assets 或 ~/Library/Application Support/minecraft/assets/virtual/legacy

Linux: ~/.minecraft/assets 或 ~/.minecraft/assets/virtual/legacy

如果你同时有新旧两种版本,新版本与旧版本的声音文件都将存在。旧版本目录仅适用于 pre-1.7 版本。

在 .minecraft\assets\virtual\legacy\sounds中,有13个子目录:

ambient: 环境与雨/雷

damage: 玩家受伤的声音

dig: 打破方块

fire: 火的声音

firework: 烟花效果音

liquids: 水或熔岩等液体的声音

minecart: 矿车移动的声音

mob: 生物的声音

music: C418编曲的背景音乐

random: 吃东西到爆炸等各种音效

records: 唱片的音乐

step: 脚步声

tile: 活塞

如果你直接在声音目录中对声音编辑、新增或移除,且在连接到网路时执行启动器并启动Minecraft,将会自动重新下载并还原任何你在声音目录下所做的更改, 删除你的工作,这项情况适用于新的和旧的声音目录。在启动游戏前断开网络连接不会还原任何更改,但不建议这样做。安全储存自定义声音的最佳方法是创建自己的资源包。