创新互联MinecraftWiki教程:Java版[]
本文章介绍的是纹理包(旧译材质包)的替代品。关于其他用法,请见“
包”。

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、网站建设、怀仁网络推广、成都小程序开发、怀仁网络营销、怀仁企业策划、怀仁品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供怀仁建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
左侧为默认纹理,右侧为自定义资源包(Rodrigo's Pack 8x)
资源包(Resource Pack)系统允许玩家自定义纹理、模型、音乐、声音、语言,终末之诗、闪烁标语、鸣谢名单等文本和字体,而不用修改任何代码。
目录
- 1 Java版
- 1.1 行为
- 1.1.1 默认资源包
- 1.2 文件结构
- 1.3 内容
- 1.3.1 语言
- 1.3.2 模型
- 1.3.3 音效
- 1.3.4 纹理
- 1.3.4.1 动态纹理
- 1.3.4.2 村民
- 1.3.4.3 颜色图
- 1.3.4.4 杂项
- 1.3.5 文本
- 1.3.6 字体
- 1.3.6.1 默认纹理
- 1.3.6.2 GNU Unifont
- 1.3.6.3 Emoji表情字符
- 1.3.6.4 阴影
- 1.3.7 发光文字
- 1.3.8 纹理表
- 1.3.9 着色器
- 1.4 资源包模板
- 1.1 行为
- 2 基岩版
- 3 历史
- 4 你知道吗
- 5 画廊
- 6 另见
- 7 参考
Java版[ ]
行为[ ]
默认的资源包配置
资源包可以放置在.Minecraft里面的resourcepacks文件夹。每个资源包都是一个子文件夹或一个.zip文件,这个文件里面有resourcepacks文件夹。它被放置在文件夹里面后,就可以从选项菜单中添加资源包,这个资源包可以从“可用的资源包”移动到“已选的资源包”。“已选的资源包”下面的默认资源会始终存在,并且不能被移除。
资源包会按照列表上的顺序加载它们的资源。最底部的资源包将会首先加载,然后每个资源包会代替上层相同名称的资源。
默认资源包[ ]
资源包可以与世界捆绑在一起,首先将资源包打包为resources.zip,然后将这个zip文件放入世界文件夹中。当游玩这个世界时,资源包会自动出现在默认资源包的右上方。 通过向服务器属性文件里面resource-pack=一行更改为一个.zip文件的下载链接就能在服务器上设置默认资源包。用户仍然可以选择使用或者选择不下载这个资源包。
旧纹理(1.14之前)在名为“Programmer Art”的资源包中可用。当游戏收到新纹理时,这些纹理不会更新。
文件结构[ ]
| 列表 |
|---|
|
assets目录下也可以有多个不同的命名空间目录。
内容[ ]
此段落需要更新。
理由:需要补充23w31a的更改(多版本支持)。
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(17w47b)为
3 - 1.13(17w48a)到1.14.4(19w46b)为
4 - 1.15(1.15-pre1)到1.16.1(1.16.2-pre3)为
5 - 1.16.2(1.16.2-rc1)到1.16.5为
6 - 1.17(20w45a)到1.17.1(21w38a)为
7 - 1.18(21w39a)到1.18.2为
8 - 1.19(22w11a)到1.19.2为
9 - 1.19.3快照22w42a 到22w44a为
11 - 1.19.3(22w45a到1.19.4快照23w07a)为
12 - 1.19.4(1.19.4-pre1到1.20快照23w13a)为
13 - 1.20快照23w14a到23w16a为
14 - 1.20(23w17a)到1.20.1为
15 - 1.20.2快照23w31a为
16 - 1.20.2快照23w32a到1.20.2-pre1为
17 - 1.20.2(1.20.2-pre2)及以上为
18
- 1.6.1(13w24a)到1.8.9为
- description:在资源包菜单里要显示的资源包名称。该文本将会显示为2行。如果文本太长则会被截断。
- description: 包含一个原始JSON文本对象,它将在资源包菜单中显示为包描述。与
string标签description具有相同的行为,但是它们不能一起存在。
- pack_format:资源包版本。如果这个数值与当前需要的数值不匹配,游戏就会显示一个错误,进行附加确认后游戏才会加载资源包。
- language:包含了要向语言菜单里添加的附加语言。
- 语言的语言代码,与对应文件夹
assets/minecraft/lang的同名json文件。- name:语言的完整名称。
- region:国家或地区名称。
- bidirectional:若为true,语言将会从右到左显示。
- 语言的语言代码,与对应文件夹
- filter:包过滤器。
- block:指定要忽略的内容。低优先级资源包的内容若匹配其中指定的内容,则对应内容会被游戏忽略。
- :一段指定内容。可以使用正则表达式。
- namespace:要匹配的命名空间。若省略则匹配所有命名空间。
- path:要匹配的路径。若省略则匹配所有路径。
- :一段指定内容。可以使用正则表达式。
- block:指定要忽略的内容。低优先级资源包的内容若匹配其中指定的内容,则对应内容会被游戏忽略。
- pack:保存资源包的信息
根目录也包含一个叫作pack.png的可选图像,这个图像将会在资源包选择菜单中作为资源包的缩略图显示。
语言[ ]
可以在资源包的assets/<命名空间>/lang文件夹内创建.json类型的语言文件。每个文件可以取代优先级低的或默认的同名文件,或者创建由pack.mcmeta定义的新语言。
.json文件里的每一行都是标准的JSON格式。这意味着它以一个{开始,在每个键值对(最后一个除外)后有一个逗号,并以一个}结束,且空行会被忽略。语言文件的格式为"标识符":"名称",其后紧接一个逗号。标识符是游戏寻找的某个特性的名称,名称是显示的名称内容。例如,默认语言文件里的石头是"block.minecraft.stone":"Stone",其中block.minecraft.stone是标识符,Stone是显示的名称。除此之外,也可以自定义识别符与其对应的名称,并通过JSON文本将其显示。若指定的识别符在当前语言中无法找到对应的名称,则会使用en_us语言的名称。若en_us也不存在对应名称,则直接显示识别符。
语言文件只需要添加资源包确实要修改的内容。任何不在资源包内的名称都会从下面的包中加载,或者如果没有包修改了名称,则从默认资源中加载。
模型[ ]
主条目: 模型
模型是以JSON格式的文件,它决定了方块和物品的形状和纹理。
方块使用assets/minecraft/blockstates的方块状态文件,来决定每个变种要从中加载的模型。同时,每个物品在 assets/minecraft/models/item中都有一个物品模型来决定它的模型,它要么会从一个方块模型里加载,包含了它自己自定义的模型,要么使用默认的“平面”或“实体”模型。
除非被上面的资源包覆盖,在下面的资源包所使用的模型和方块状态仍然会被加载,这可能会导致一些纹理和模型不再被加载。
音效[ ]
资源包加载文件格式为.ogg的附加音效。每个资源包里面的音效都会覆盖下面的资源包。资源包包含一个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
- 为每一帧指定附加数据
- 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)。[需要更多信息]
- hat:村民种类的帽子图层是否仍完整渲染(默认),或者不(
- villager:包含纹理数据。
如果文件夹中不存在对应的.mcmeta文件,而纹理文件中存在纹理,则游戏将加载默认设置,而不是从下方的资源包里加载.mcmeta文件。
颜色图[ ]
颜色图是一个 256×256 像素的图片,用于告诉游戏在每个生物群系要使用的颜色。它们位于assets/minecraft/textures/colormap里。游戏包含2张颜色图,foliage.png为树叶(除了白桦和云杉)和藤蔓着色;grass.png为草和草方块着色。颜色图可以通过移除个别方块上的tintindex标签而被禁用。
杂项[ ]
assets/minecraft/textures/misc里的纹理支持JSON格式储存的.mcmeta文件来向纹理应用附加效果。文件的位置与纹理的位置处于同一目录,与纹理的文件名也相同。例如,文件pumpkinblur.png对应的属性文件的文件名为pumpkinblur.png.mcmeta。
- 根标签
- texture:包含了纹理的数据
- blur:指定从近距离观察时是否导致纹理模糊。默认为
false。 - clamp:指定是否在原来的情况下以伸展纹理代替平铺纹理。默认为
false。 - mipmaps:纹理的自定义mipmap值。
- blur:指定从近距离观察时是否导致纹理模糊。默认为
- texture:包含了纹理的数据
如果资源包里纹理文件对应的.mcmeta文件缺失,那么游戏将会加载默认设置,而不是从下一个资源包中继续加载.mcmeta文件。
文本[ ]
在assets/minecraft/texts里有3个UTF-8编码的.txt文件和1个.json文件,储存着游戏用于显示且不可翻译的文本。
文件end.txt包含终末之诗的文本,使用格式化代码中的颜色代码来区分两个讲话人,其中文本PLAYERNAME将会被玩家名称代替。该文件的内容显示完毕后,接着就会显示credits.json的内容。
文件postcredits.txt包含制作人员名单显示完毕后出现的引言。
文件splashes.txt包含标题屏幕上的闪烁标语文本,每条闪烁标语之间使用换行符分隔开。
文件credits.json包含Minecraft制作人员名单的文本及格式。
- 根标签
- :制作人员名单中的一个部分。
- section:此部分的标题。
- disciplines:各个部门。
- :一个部门的信息。
- discipline:部门名称,如“Design”“Programming”“Audio”等。
- titles:职位列表。
- :职位列表中的一个职位。
- title:此职位的名称。如“Technical Director”“Game Developers”“Software Engineers”等。
- names:职员列表。
- :一位职员的姓名。
- :职位列表中的一个职位。
- :一个部门的信息。
- :制作人员名单中的一个部分。
字体[ ]
字体描述文件是位于资源包中assets/目录下的JSON文件。该文件内含提供每个字符对应的资源位置和额外信息的列表。minecraft:default给出了默认字体,而minecraft:alt给出了附魔台所用的默认字体。 提供字体时的资源位置应当包含文件扩展名。
- 根标签
- providers:提供加入该字体的信息的列表。
- :提供字体的信息。内容取决于“type”标签的值。
- type:该字形提供器的信息,可为以下选项之一。
- bitmap:位图字体
- file:欲使用文件的资源位置,以
assets/开始。/textures - height:可选。该字符的高度,以像素为单位。可以为负。该标签与源纹理中使用的区域不相关,仅用于重新调整显示结果。
- ascent:该字体的上伸高度(基线至最高点的距离),以像素为单位。 这个值会使得字体的显示结果出现垂直偏移。
- chars:一个字符串列表,包含该字体替换的字符及其在纹理中的位置。列表所有元素的字符数必须相同。该列表中的一项元素对应纹理等距分割的一行,每一个元素中的字符对应等距的一列。
- file:欲使用文件的资源位置,以
- ttf:TrueType字体和部分OpenType字体。
- file:
assets/目录下的字体文件的资源位置。/font - shift:该字形提供器的字体偏移。
- :左侧偏移
- :下方偏移
- size:欲渲染的字形大小。
- oversample:欲渲染的分辨率。
- skip:欲排除的字符串或字符串数组。
- file:
- space:将指定的字符显示为空格。
- advances:指定空格字符和对应宽度。
- <任意字符>:该空格的宽度。
- advances:指定空格字符和对应宽度。
- unihex:GNU Unifont字体。
- hex_file:
assets/目录下的字体文件的资源位置。必须为zip文件,其中包含以.hex为后缀名的字体文件。/font - size_overrides:指定一部分字符不使用自动检测的宽度。
- :指定宽度的字符区域和宽度信息。
- from:指定宽度区域的起始代码点(包含)。
- to:指定宽度区域的终止代码点(包含)。
- left:字形最左边列的位置,在此列左边的部分不进行渲染。
- right:字形最右边列的位置,在此列右边的部分不进行渲染。
- :指定宽度的字符区域和宽度信息。
- hex_file:
- reference:引用其他字体描述文件,每个文件只会加载一次,不会重复加载。
- id:
assets/目录下的字体描述文件的资源位置。/font
- id:
- bitmap:位图字体
- type:该字形提供器的信息,可为以下选项之一。
- :提供字体的信息。内容取决于“type”标签的值。
- providers:提供加入该字体的信息的列表。
字体纹理表会基于每行中的字符个数自动缩放。为了与Unicode块保持一致,部分纹理表可能为16个字符宽。
默认纹理[ ]
默认纹理的字体文件包含一个白色字符的网格,这些字符会在游戏需要时自动被游戏上色。字符大小会根据含有Alpha值的最后一行像素自动决定。由于字体的检测方式,因此用含有5% Alpha颜色填充字符的背景部分将会导致把字符渲染为全宽度,字符也没有可见的背景。默认字体的大小为8×8像素,而accented.png为18×18像素。
- 字形0x20(空格)到0x7E(波浪号)显示标准ASCII字符。
- 字形0x7F(<控制字符>)到0xFF(带分音符的y)显示代码页437字符。
默认字体纹理位于assets/minecraft/textures/font/ascii.png。其中包含如下非字母字符:
░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌▐▀ ≡ ± ≥ ≤ ⌠ ⌡ ÷ ≈ ° ∙ · √ ⁿ ² ■
assets/minecraft/textures/nonlatin_european.png中的纹理表包含了许多带重音号的字符和绝大多数Minecraft支持的符号。其中包含以下非字母字符:
⧈ ¢ ¤ ¥ © ® µ ¶ ¼ ½ ¾ · ‐ ‚ † ‡ • ‱ ′ ″ ‴ ‵ ‶ ‷ ‹ › ※ ‼ ‽ ⁂ ⁈ ⁉ ⁋ ⁎ ⁏ ⁑ ⁒ ⁗ ℗ − ∓ ∞ Є ʬ ⭐ ⸘ ⸮ ⸵ ⸸ ⹁ ⹋ ⥝ ᘔ Ɛ ⅋ ⏏ ⏩ ⏪ ⏭ ⏮ ⏯ ⏴ ⏵ ⏶ ⏷ ⏸ ⏹ ⏺ ⏻ ⏼ ⏽ ⭘ ▲ ▶ ▼ ◀ ● ◦ ◘ � ¦ ⅔ ⌛ ⌚ ↔ ⇒ ⇏ ⇔ ⇵ ∀ ∃ ∄ ∉ ∋ ∌ ⊂ ⊃ ⊄ ⊅ ∧ ∨ ⊻ ⊼ ⊽ ∥ ≢ ⋆ ∑ ⊤ ⊥ ⊢ ⊨ ≔ ∁ ∴ ∵ ∛ ∜ ∂ ⋃ ⊆ ⊇ □ △ ▷ ▽ ◁ ◆ ◇ ○ ◎ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ∫ ∮ ∝ ⌀ ⌂ ⌘ 〒 ɼ
assets/minecraft/textures/font/accented.png中包含一份辅助纹理。其支持绝大多数基础重音号字符、希腊字母和西里尔字母,还包含一些封闭的数字字母及其他符号。除了非符号之外,还包含以下字符:
⓪ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⅒ ⅘
显示标准银河字母(附魔字体)时的字体文件是assets/minecraft/textures/font/ascii_sga.png。
GNU Unifont[ ]
主条目: 字体§GNU Unifont
Minecraft使用GNU Unifont字体作为未提供纹理的字符的备选字体。字体存储在assets/minecraft/font/unifont.zip中。使用的Unifont字体版本为v15.0.06。它提供对CJK字符和其他文字的支持。
Emoji表情字符[ ]
从1.15开始,Minecraft可以支持 UTF-16 序列的表情字符,或 Unicode辅助平面中的任何字符。
为了在字体文件的 char数组中正确读取Emoji表情字符,字符可以:
- 从其UTF-16代码点分为两个UTF-8代码点(代理);如
1F603 -> D83D DE03 - 直接输入
第一种方法用于标准字体文件,但两者都同样有效。 要将字符转换为代理对,可以使用以下等式,其中C是十进制中的代码点:
- 高代理(第一个):
((C − 65536) − (C % 1024)) ÷ 1024 + 55296 - 低代理(第二个):
(C % 1024) + 56320
从1.17.1开始,Minecraft默认支持以下Emoji表情字符:
???? ???? ???? ⏳
阴影[ ]
每个字符下方都会出现一个阴影。 该阴影是字符位图的副本,亮度减去了90%,并且相对于其间距位于字符西南方向的12.5%。无论字符的纹理的分辨率如何,阴影始终移动12.5%。在默认字体(assets/minecraft/textures/font/ascii.png) 中,阴影相当于向下和向右移动1个像素。
发光文字[ ]
对告示牌使用荧光墨囊会导致文字创建其自身的八个副本,类似阴影,在所有的八个方向上,这会导致告示牌上的字体看起来有很粗的轮廓。
纹理表[ ]
通常情况下,Minecraft将多个纹理单独储存而非储存在纹理表中。当前仅有的例外是地图图标[1],经验球和矿车[2]。
着色器[ ]
主条目: 着色器
着色器是资源包改变游戏渲染方式的一种方式。 它们是用OpenGL着色器语言 (GLSL) 编写的。
资源包模板[ ]
原版资源包的文件结构:
| 列表 |
|---|
|
