在制作资源包的时候,我们经常会去 客户端核心 的jar文件中寻找资源,但是其实有一部分资源并不存放在那个jar当中,就比如 语言文件、音频文件,那这些文件存放在哪里了呢,这些文件其实是被重命名成了一个类似"乱码"的文件,这个所谓的"乱码"其实就是这个文件的 hash值,然后存放在了 assets 目录下,那我们接下来就以 中文语言文件 举例,带大家找到我们需要找的这一部分文件。

那首先我们就要去 assets 目录下,一般情况下存放在 .minecraft/assets/ 这个位置,如果开了版本隔离有可能存放在 .minecraft/version/<对应的游戏版本文件夹>/assets/。

找到这个目录后内部的结构大概是这样的:

indexes 下存放的是版本的资源对应关系,记录了每个资源文件对应了哪个 hash值。

objects 下存放的是所有的资源文件。

skins 下存放的是玩家皮肤的资源文件。

然后我们首先访问 indexes,这里每一个文件都对应了一个游戏版本的资源hash值映射关系,我们这里不介绍怎么找到对应版本的文件,我们只介绍如何找到资源。

打开我们需要的映射文件后里面类似这样:

是一个很长的 json文件,我们直接搜索我们需要的文件,我们这里搜索 zh_cn:

我们这里就找到了 zh_cn.json 这个文件对应的hash值为 f9aa1e...。

接下来我们就可以去 objects 目录下找到这个文件了,而 objects 目录的结构如下:

里面是 <hash值的前两位>/hash值 的方式存放文件的,所以我们要去找 f9aa1e... 这个文件就要去 f9 目录下,找到这个文件:

找到这个文件后,将其重命名回它原本的文件后缀,即可读取内部内容: