资源包(Resource Pack)系统为材质包系统的API替代品,允许玩家更深度地自定义自己的
Minecraft体验。资源包允许玩家自定义
材质、
模型、
音乐、
声音、语言文件、
终末之诗、菜单界面UI、闪烁标语的显示
文本和字体,而不用修改任何
代码。
Java版
行为
自Java版1.14起默认的资源包配置。
资源包的选择菜单,展示了两个已选的资源包(不包括默认资源包),一个不支持的资源包和其他各种可用的资源包。
资源包可以放置在.minecraft里面的resourcepacks文件夹。每个资源包都是一个子文件夹或一个.zip文件,这个文件里面有resourcepacks文件夹。它被放置在文件夹里面后,就可以从选项菜单中添加资源包,这个资源包可以从“可用的资源包”移动到“已选的资源包”。“已选的资源包”下面的默认资源会始终存在,并且不能被移除。
资源包会按照列表上的顺序加载它们的资源。最下面的资源包(总是“默认”的那个)将会首先加载,然后每个资源包会代替上一个相同名称的资源。默认资源包[编辑 | 编辑源代码]
首先将资源包打包为resources.zip,然后将这个zip文件放入地图文件夹里就可以与地图捆绑在一起了。当游玩这个地图时,资源包会自动出现于默认资源包的右上方。
通过向服务器属性文件里面resource-pack=一行更改为一个.zip文件的下载链接就能在服务器上设置默认资源包了。用户仍然可以选择使用或者选择不下载这个资源包。
旧材质(材质更新前的)在名为“Programmer Art”的资源包中可用。
文件结构
(命名空间)
font
icons
lang
models
item
particles
sounds
shaders
program
texts
textures
colormap
effect
entity
environment
font
gui
container
presets
title
item
map
misc
mob_effect
models
painting
particle
内容
Minecraft是通过根目录里的pack.mcmeta来识别一个资源包的,这个文件的格式为JSON格式。
language:包含了要向语言菜单里添加的附加语言。
根目录也包含一个叫作pack.png的可选图像,这个图像将会在资源包选择菜单中作为资源包的缩略图显示。
语言
可以在资源包的assets/<命名空间>/lang文件夹内创建.json类型的语言文件。每个文件可以取代优先级低的或默认的同名文件,或者创建由pack.mcmeta定义的新语言。
标识符是游戏寻找的某个特性的名称,它不应该被更改。
Stone是标识符,
是显示的名称。空行会被忽略。文件必须是正确的JSON语法,这意味着它以一个{开始,在每个键值对(最后一个除外)后有一个逗号,并以一个}结束。
语言文件只需要添加资源包确实要修改的内容。任何不在资源包内的名称都会从下面的包中加载,或者如果没有包修改了名称,则从默认资源中加载。
模型
模型是一些以JSON格式储存的,扩展名为.json的文件,这些文件决定了方块和物品的形状和材质。
方块使用assets/minecraft/blockstates的一个方块状态文件,来决定每个变种要从中加载的模型。同时,每个物品都有一个物品模型来决定它的模型,这个模型会从一个方块模型里加载,包含了它自己自定义的模型,或者使用默认的“平面”或“实体”模型。
如果没有被覆盖,那么在下面的资源包所使用的模型和方块状态仍然会被加载,这可能会导致一些材质和模型被上方的资源包使用,而没有被再次加载。
音效
资源包加载文件格式为.ogg或.fsb的附加音效。每个在资源包里面的音效都会覆盖下面的资源包。资源包包含一个sounds.json文件,其位置在assets/minecraft里。与资源包其他的文件不同,sounds.json会合并其上一个资源包的音效,而不是完全覆盖每个sounds.json文件。
材质
要让方块或物品材质正常显示,那么它们的宽度和高度必须相等(如果是动态材质,那么高度要是宽度的倍数);否则,只会显示黑紫方格交错的材质。对于其他多数材质,文件会被简单的拉伸,以符合所需的尺寸。
多数固体方块会把任何透明的地方变成完全不透明的。一些拥有类似于拼贴的透明区域方块(类似于草),会把所有不透明度低于10%的像素变成全透明像素,其他像素变成完全不透明像素。其他方块渲染材质会保留半透明区域。所有的半透明的物品和任何方块/实体,都会默认支持半透明。
如果一个材质文件不存在于任何的资源包(包括默认资源包)中,那么这个材质将会显示为一个黑紫方格交错的材质。
动态材质
方块和物品材质支持动态材质,在图片的每一帧的下面放置另外一帧就能做成动态材质了。动态材质是被一个在相同目录,相同名称,以JSON格式存储的.mcmeta文件进行控制。例如,stone.png的.mcmeta文件的文件名是stone.png.mcmeta。
如果资源包里没有.mcmeta文件,并且材质是动态的,那么游戏将会认为这个材质不是动态材质,不会从下一个包继续加载.mcmeta文件。如果一个维度不相同的材质没有其对应的.mcmeta文件,那么这个材质将会显示为黑紫方格交错的材质。
村民
其材质assets/minecraft/textures/entity/villager
和assets/minecraft/textures/entity/zombie_villager里。支持后缀名为.mcmeta的JSON格式文件用于指明可应用于帽子层的附加效果,位于相同目录,与对应材质文件有相同名称。例如,文件profession/farmer.png可以附带具有一个名为profession/farmer.png.mcmeta的文件。
如果文件夹中不存在对应的.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。
如果资源包里材质文件对应的.mcmeta文件缺失,那么游戏将会加载默认设置,而不是从下一个资源包中继续加载.mcmeta文件。
文本
在assets/minecraft/texts里的3个 UTF-8 格式的.txt文件储存了游戏要用来显示的文本。
文件end.txt含有终末之诗的文本,使用了样式代码的颜色代码来区分2个讲话人,文本PLAYERNAME将会被玩家名称代替。在展示完了这个文件的内容后,接着就会显示credits.txt的内容。
字体
字体文件指位于资源包中assets//font目录下的JSON文件。该文件内含提供每个字符对应的资源位置和额外信息的列表。
minecraft:default给出了默认字体,而minecraft:alt给出了附魔台所用的默认字体。 提供字体时的资源位置应当包含文件扩展名。
legacy_unicode: 旧版Unicode字体。该字体格式已废弃且仅在“强制Unicode字体”选项打开时才会优先使用。
ttf: TrueType字体.[需要更多信息]
size: 欲渲染的字体大小。
oversample: 欲渲染的分辨率。
skip: 欲排除的字符串或字符串数组。
字体材质表会基于每行中的字符个数自动缩放。为了与Unicode块保持一致,部分材质表可能为16个字符宽。
基岩版
与皮肤类似,可以在基岩版中购买或制作资源包。iOS用户截至Alpha 0.15.0可以使用.mcpack和.mcworld文件在系统上下载资源包。打开这些文件后,游戏会自动导入它们,而无需使用文件管理应用。
你知道吗