资源包
资源包(Resource pack)系统为材质包系统的API替代品,允许玩家更深度地自定义自己的Minecraft体验。资源包允许玩家自定义材质、模型、音乐、声音、语言文件、终末之诗、菜单界面UI、闪烁标语的显示文本和字体,而不用修改任何代码。
目录
Java版[编辑 | 编辑源代码]
行为[编辑 | 编辑源代码]

资源包可以放置在.minecraft
里面的resourcepacks
文件夹。每个资源包都是一个子文件夹或一个.zip
文件,这个文件里面有resourcepacks
文件夹。它被放置在文件夹里面后,就可以从选项菜单中添加资源包,这个资源包可以从“可用的资源包”移动到“已选的资源包”。“已选的资源包”下面的默认资源会始终存在,并且不能被移除。
资源包会按照列表上的顺序加载它们的资源。最下面的资源包(总是“默认”的那个)将会首先加载,然后每个资源包会代替上一个相同名称的资源。
默认资源包[编辑 | 编辑源代码]
首先将资源包打包为resources.zip
,然后将这个zip文件放入地图文件夹里就可以与地图捆绑在一起了。当游玩这个地图时,资源包会自动出现在默认资源包的右上方。
通过向服务器属性文件里面resource-pack=
一行更改为一个.zip
文件的下载链接就能在服务器上设置默认资源包了。用户仍然可以选择使用或者选择不下载这个资源包。
旧材质(材质更新前的)在名为“Programmer Art”的资源包中可用。
文件结构[编辑 | 编辑源代码]
|
assets
目录下也可以有多个不同的(命名空间)
目录。
内容[编辑 | 编辑源代码]
Minecraft是通过根目录里的pack.mcmeta
来识别一个资源包的,这个文件的格式为JSON格式。
- 根标签
- pack:保存资源包的信息
- pack_format:资源包版本。如果这个数值与当前需要的数值不匹配,则资源包就会显示一个错误,进行附加确认后才能加载资源包。在1.6.1(13w24a)至1.8.9中需要的数值为
1
,在1.9(15w31a)至1.10.2中为2
,在1.11(16w32a)至1.12.2(1.13:17w47b)中为3
,在1.13(17w48a)至1.14.4(1.15:19w46b)中为4
,在1.15(1.15-pre1)至1.16.1(1.16.2:1.16.2-pre3)中为5
,在1.16.2(1.16.2-rc1)至1.16.5为6
,在1.17(20w45a以上)则为7
。 - description:在资源包菜单里要显示的资源包名称。该文字将会显示为2行。如果文字太长,那么超长的部分就会被砍掉。
- description: 包含一个原始JSON文本对象,它将在资源包菜单中显示为包描述。与
string
标签description
具有相同的行为,但是它们不能一起存在。
- pack_format:资源包版本。如果这个数值与当前需要的数值不匹配,则资源包就会显示一个错误,进行附加确认后才能加载资源包。在1.6.1(13w24a)至1.8.9中需要的数值为
- language:包含了要向语言菜单里添加的附加语言。
- A language 一个语言的语言代码,其与文件夹里
.lang
的名字相同assets/minecraft/lang
。- name:语言的完整名称。
- region:国家或地区名称。
- bidirectional:若为true,语言将会从右到左显示。
- A language 一个语言的语言代码,其与文件夹里
- pack:保存资源包的信息
根目录也包含一个叫作pack.png
的可选图像,这个图像将会在资源包选择菜单中作为资源包的缩略图显示。
语言[编辑 | 编辑源代码]
可以在资源包的assets/<命名空间>/lang
文件夹内创建.json
类型的语言文件。每个文件可以取代优先级低的或默认的同名文件,或者创建由pack.mcmeta
定义的新语言。
.json
文件里的每一行都是标准的JSON格式"标识符":"名称"
,其后紧接一个逗号。标识符
是游戏寻找的某个特性的名称,它不应该被更改。名称
是显示的名称内容。例如,默认语言文件里的石头是"block.minecraft.stone":"Stone"
,其中block.minecraft.stone
是标识符,Stone
是显示的名称。空行会被忽略。文件必须是正确的JSON语法,这意味着它以一个{
开始,在每个键值对(最后一个除外)后有一个逗号,并以一个}
结束。
语言文件只需要添加资源包确实要修改的内容。任何不在资源包内的名称都会从下面的包中加载,或者如果没有包修改了名称,则从默认资源中加载。
模型[编辑 | 编辑源代码]
模型是一些以JSON格式储存的,扩展名为.json
的文件,这些文件决定了方块和物品的形状和材质。
方块使用assets/minecraft/blockstates
的一个方块状态文件,来决定每个变种要从中加载的模型。同时,每个物品都有一个物品模型来决定它的模型,这个模型会从一个方块模型里加载,包含了它自己自定义的模型,或者使用默认的“平面”或“实体”模型。
如果没有被覆盖,那么在下面的资源包所使用的模型和方块状态仍然会被加载,这可能会导致一些材质和模型被上方的资源包使用,而没有被再次加载。
音效[编辑 | 编辑源代码]
资源包加载文件格式为.ogg
或.fsb
的附加音效。每个在资源包里面的音效都会覆盖下面的资源包。资源包包含一个sounds.json
文件,其位置在assets/minecraft
里。与资源包其他的文件不同,sounds.json
会合并其上一个资源包的音效,而不是完全覆盖每个sounds.json
文件。
材质[编辑 | 编辑源代码]
要让方块或物品材质正常显示,那么它们的宽度和高度必须相等(如果是动态材质,那么高度要是宽度的倍数);否则,只会显示黑紫方格交错的材质。对于其他多数材质,文件会被简单的拉伸,以符合所需的尺寸。
多数固体方块会把任何透明的地方变成完全不透明的。一些拥有类似于拼贴的透明区域方块(类似于草),会把所有不透明度低于10%的像素变成全透明像素,其他像素变成完全不透明像素。其他方块渲染材质会保留半透明区域。所有的半透明的物品和任何方块/实体,都会默认支持半透明。
如果一个材质文件不存在于任何的资源包(包括默认资源包)中,那么这个材质将会显示为一个黑紫方格交错的材质。(
#f800f8和
#000000)
- 动态材质
方块和物品材质支持动态材质,在图片的每一帧的下面放置另外一帧就能做成动态材质了。动态材质是被一个在相同目录,相同名称,以JSON格式存储的.mcmeta
文件进行控制。例如,stone.png
的.mcmeta
文件的文件名是stone.png.mcmeta
。
- 根标签
- animation:包含了动态材质的数据的标签
- interpolate:若为 true,Minecraft 将会在帧与帧之间生成一张间隔时间大于1的帧。默认为
false
。 - width:方块的宽度,以直接比例而不是像素为单位。这在原版中没有使用,但是可以被mod使用以具有不是完整正方形的帧。
- height:方块的高度度,以直接比例而不是像素为单位。这在原版中没有使用,但是可以被mod使用以具有不是完整正方形的帧。
- frametime:设置在每个游戏刻内每一帧的时间增量。默认为
1
。 - frames:一个帧列表。帧的显示顺序默认为从上至下。
- 指定开始播放的帧的位置,最上面的一帧为 0
- A frame 为每一帧指定附加数据
- index:指定开始播放的帧的位置,最上面的一帧为 0
- time:这一帧的显示时间(单位:刻),覆盖上面的“frametime”。
- interpolate:若为 true,Minecraft 将会在帧与帧之间生成一张间隔时间大于1的帧。默认为
- animation:包含了动态材质的数据的标签
如果资源包里没有.mcmeta
文件,并且材质是动态的,那么游戏将会认为这个材质不是动态材质,不会从下一个包继续加载.mcmeta
文件。如果一个维度不相同的材质没有其对应的.mcmeta
文件,那么这个材质将会显示为黑紫方格交错的材质。
- 村民
其材质assets/minecraft/textures/entity/villager
和assets/minecraft/textures/entity/zombie_villager
里。支持后缀名为.mcmeta
的JSON格式文件用于指明可应用于帽子层的附加效果,位于相同目录,与对应材质文件有相同名称。例如,文件profession/farmer.png
可以附带具有一个名为profession/farmer.png.mcmeta
的文件。
- 根标签
- villager:包含材质数据。
- hat:村民种类的帽子图层是否完整渲染(默认为
full
),或者不(partial
)。
- hat:村民种类的帽子图层是否完整渲染(默认为
- villager:包含材质数据。
如果文件夹中不存在对应的.mcmeta
文件,而材质文件中存在材质,则游戏将加载默认设置,而不是从下方的资源包里加载.mcmeta
文件。
- 颜色图
颜色图是一个 256×256 像素的图片,用于告诉游戏在每个生物群系要使用的颜色。它们的位置在assets/minecraft/textures/colormap
里。游戏包含2张颜色图,一张是foliage.png
,指定植物如树叶(除了桦木和云杉木)和藤蔓的颜色;还有一张是grass.png
,指定草和草方块的颜色。颜色图可以通过移除个别方块上的tintindex
标签而被禁用。
- 杂项
assets/minecraft/textures/misc
里的材质支持用一个以JSON格式储存的.mcmeta
文件来向材质应用附加效果。文件的位置与材质的位置处于同一目录,与材质的文件名也一样,除了.mcmeta
后缀。例如,文件pumpkinblur.png
对应的属性文件的文件名为pumpkinblur.png.mcmeta
。
- 根标签
- texture:包含了材质的数据
- blur:指定从近距离观察时是否导致材质模糊。默认为
false
。 - clamp:指定是否在原来的情况下以伸展材质代替平铺材质。默认为
false
。 - mipmaps:材质的自定义mipmap值。
- blur:指定从近距离观察时是否导致材质模糊。默认为
- texture:包含了材质的数据
如果资源包里材质文件对应的.mcmeta
文件缺失,那么游戏将会加载默认设置,而不是从下一个资源包中继续加载.mcmeta
文件。
- 字体
字体文件包含一个白色字符的网格,这些字符会在游戏需要时自动被游戏上色。字符大小会根据含有Alpha值的最后一行像素自动决定。由于字体的检测方式,因此用含有5% Alpha颜色填充字符的背景部分将会导致把字符渲染为全宽度,字符也没有可见的背景。
- 字形0x20(空格)到0x7E(波浪号)显示标准ASCII字符。
- 字形0x7F到0xFF显示Codepage 437字符(在基岩版1.11+中不再是这种情况)。
字体文件位于assets/minecraft/textures/font/ascii.png
。
显示附魔时使用的字体文件是assets/minecraft/textures/font/ascii_sga.png
。
文本[编辑 | 编辑源代码]
在assets/minecraft/texts
里的3个 UTF-8 格式的.txt
文件储存了游戏要用来显示的文本。
文件end.txt
含有终末之诗的文本,使用了样式代码的颜色代码来区分2个讲话人,文本PLAYERNAME
将会被玩家名称代替。在展示完了这个文件的内容后,接着就会显示credits.txt
的内容。
文件splashes.txt
含有使用了换行符分隔的游戏闪烁标语。每个闪烁标语都可以用不同的文本代替,而这些闪烁标语将会代替默认的闪烁标语。
资源包模板[编辑 | 编辑源代码]
原版资源包的文件结构:
列表 |
---|
|
基岩版[编辑 | 编辑源代码]
与皮肤类似,可以在基岩版中购买或制作资源包。iOS用户截至Alpha 0.15.0可以使用.mcpack
和.mcworld
文件在系统上下载资源包。打开这些文件后,游戏会自动导入它们,而无需使用文件管理应用。
历史[编辑 | 编辑源代码]
Java版 | |||||
---|---|---|---|---|---|
1.6.1 | 13w24a | 加入了资源包,取代了材质包的功能。Minecraft Texture Ender是Mojang提供的,用于把可编译的1.5材质包转换为资源包。 | |||
1.6.2 | 修复了当使用HD字体时字体扭曲的问题。[1] | ||||
1.7.2 | 13w36a | 加入了一次应用多个资源包的能力。 | |||
13w42a | 把文件从assets/minecraft/music 移动到assets/minecraft/sounds/music ,assets/minecraft/sound 里的文件也移动到assets/minecraft/sounds 。 | ||||
1.7.4 | 13w48a | 移除了更改Mojang徽标的能力。 | |||
1.8 | 14w06a | 加入了更改方块模型的能力。 | |||
14w07a | 资源包现在可以绑定在一张地图上了。 | ||||
14w25a | 模型格式现在支持自定义物体模型。 | ||||
现在可以分别指定方块和物品的材质。 | |||||
加入了用于动态材质的interpolate 标签。 | |||||
1.8.8 | pre | 如果资源包版本是错误的,则资源包现在会显示一个错误。此时,资源包需要的版本号是1 。 | |||
1.9 | 15w31a | 由于模型系统中的更改(例如项目标记、多部分以及对显示标记的更改),资源包版本号已更改为2 。
而且使用具有过时显示标签的资源包将导致模型看起来异常放大,并且不会在手中旋转被操纵的方块,同时库存中的方块被替换为2D材质。这类似于模型没有显示标签时发生的情况。请看这里的例子。 | |||
1.11 | 16w32a | 资源包版本号被更改为3 ,这个版本需要资源包的所有文件的文件名使用小写字母。 | |||
1.13 | 17w43a | 默认资源包现在可以像其他资源包一样上下移动位置了。 | |||
17w48a | 由于扁平化,资源包版本号被更改为4 。 | ||||
1.14 | 18w45a | 由于旧材质在材质更新中被新的取代,现在在资源包菜单中加入了"Programmer Art – The classic look of Minecraft"。 | |||
19w06a | 明显提升了资源包加载的速度。[2] | ||||
1.15 | pre1 | 由于之前快照中旗帜图案、盾牌、附魔光效与箱子等贴图机制的改动,资源包版本更改为5 。 | |||
1.16 | pre7 | 加入了大量新字母,其中包括此前尚未加入的一些拉丁文、亚美尼亚文连字和格鲁吉亚字母。 | |||
1.16.2 | rc1 | 由于MC-197275,资源包版本号更改为6 。 | |||
Java版(即将到来) | |||||
1.17 | 20w45a | 由于部分材质文件名称的更改,资源包版本号变更为7 。 | |||
携带版Alpha | |||||
0.15.0 | 加入了塑料资源包和城市资源包。 | ||||
0.15.7 | 加入了自然资源包。 | ||||
0.15.8 | 加入了幻想资源包。 | ||||
0.16.2 | 加入了卡通资源包。 | ||||
携带版 | |||||
1.0.3 | 加入了糖果资源包。 | ||||
基岩版 | |||||
1.10.0 | beta 1.10.0.3 | 资源包现在和世界模板分离,并能在现存世界中独立更新。 |
你知道吗[编辑 | 编辑源代码]
- Java版Alpha v1.2.2到1.14使用的默认资源包的pack.png是Java版Alpha v1.2.2中种子3257840388504953787在坐标约x=49,z=0的截图,它在2020年9月5日 4:04(UTC)[3]被“Minecraft@Home”社区的玩家发现。此时,距离它的发布已经过去了近10年的时间。[4]
参见[编辑 | 编辑源代码]
参考[编辑 | 编辑源代码]
- ↑ MC-17673
- ↑ “It should have already affected resource pack loading! It's all the same thing internally.” – @Dinnerbone,2019年2月7日
- ↑ https://discord.com/channels/720723932738486323/734822247235059793/752017401587040277
Tomlacko.dat 2020年9月6日4:08(UTC)
Fun fact, the seed was found at 4:04 UTC
404 seednotfound :kekw~1: - ↑ https://youtu.be/wZGPg6Ckp3Q
帮助 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
游戏定制 | |||||||||||||||||
版本 |
| ||||||||||||||||
游戏 |
| ||||||||||||||||
影片 |
| ||||||||||||||||
书籍 |
| ||||||||||||||||
其他媒介 | |||||||||||||||||
活动 |
| ||||||||||||||||
官方周边 | |||||||||||||||||
杂项 |