Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
无编辑摘要
→‎历史
(未显示13个用户的23个中间版本)
第1行: 第1行:
{{about|材质包的替代品|其他用法|包}}
+
{{about|纹理包(旧译材质包的替代品|其他用法|包}}
   
[[File:TexturesComparison.png|thumb|right|350px|左侧为默认材质,右侧为自定义资源包(Rodrigo's Pack 8x)。]]
+
[[File:TexturesComparison.png|thumb|right|350px|左侧为默认纹理,右侧为自定义资源包(Rodrigo's Pack 8x)。]]
   
'''资源包(Resource Pack)'''系统允许玩家自定义材质、[[模型]]、[[音乐]]、[[声音]]、[[语言]],[[终末之诗]]、[[闪烁标语]]、鸣谢名单等文本和字体,而不用修改任何代码。
+
'''资源包(Resource Pack)'''系统允许玩家自定义纹理、[[模型]]、[[音乐]]、[[声音]]、[[语言]],[[终末之诗]]、[[闪烁标语]]、鸣谢名单等文本和字体,而不用修改任何代码。
   
 
== Java版 ==
 
== Java版 ==
第18行: 第18行:
 
通过向服务器属性文件里面<code>resource-pack=</code>一行更改为一个<code>.zip</code>文件的下载链接就能在服务器上设置默认资源包。用户仍然可以选择使用或者选择不下载这个资源包。
 
通过向服务器属性文件里面<code>resource-pack=</code>一行更改为一个<code>.zip</code>文件的下载链接就能在服务器上设置默认资源包。用户仍然可以选择使用或者选择不下载这个资源包。
   
材质([[Java版1.14|1.14]]之前)在名为“Programmer Art”的资源包中可用。当游戏收到新材质时,这些材质不会更新。
+
纹理([[Java版1.14|1.14]]之前)在名为“Programmer Art”的资源包中可用。当游戏收到新纹理时,这些纹理不会更新。
   
 
=== 文件结构 ===
 
=== 文件结构 ===
第36行: 第36行:
 
****sounds.json
 
****sounds.json
 
****blockstates
 
****blockstates
*****''(blockstate)''.json
+
*****''(方块状态)''.json
 
**** gpu_warnlist.json
 
**** gpu_warnlist.json
 
****font
 
****font
*****''字体''
+
*****''(字体)''
 
****icons
 
****icons
 
*****icon_16x16.png
 
*****icon_16x16.png
第56行: 第56行:
 
*****''(声音)''.ogg
 
*****''(声音)''.ogg
 
****shaders
 
****shaders
  +
*****core
  +
******''(片元着色器)''.fsh
  +
******''(着色器程序)''.json
  +
******''(顶点着色器)''.vsh
  +
*****include
  +
******''(代码片段)''.glsl
 
*****post
 
*****post
******''(post)''.json
+
******''(着色器程序)''.json
 
*****program
 
*****program
******''(fragment shader)''.fsh
+
******''(片元着色器)''.fsh
******''(program)''.json
+
******''(着色器程序)''.json
******''(vertex shader)''.vsh
+
******''(顶点着色器)''.vsh
 
****texts
 
****texts
 
*****''(文本)''.txt
 
*****''(文本)''.txt
  +
*****''(文本)''.json
 
****textures
 
****textures
 
*****block
 
*****block
******''(材质)''.png
+
******''(纹理)''.png
 
*****colormap
 
*****colormap
******''(材质)''.png
+
******''(纹理)''.png
 
*****effect
 
*****effect
******''(材质)''.png
+
******''(纹理)''.png
 
*****entity
 
*****entity
******''(材质)''.png
+
******''(纹理)''.png
 
******''(实体种类)''
 
******''(实体种类)''
*******''(材质)''.png
+
*******''(纹理)''.png
 
*****environment
 
*****environment
******''(材质)''.png
+
******''(纹理)''.png
 
*****font
 
*****font
******''(材质)''.png
+
******''(纹理)''.png
 
*****gui
 
*****gui
******''(材质)''.png
+
******''(纹理)''.png
 
******advancements
 
******advancements
*******''(材质)''.png
+
*******''(纹理)''.png
 
*******backgrounds
 
*******backgrounds
********''(材质)''.png
+
********''(纹理)''.png
 
******container
 
******container
*******''(材质)''.png
+
*******''(纹理)''.png
 
*******creative_inventory
 
*******creative_inventory
********''(材质)''.png
+
********''(纹理)''.png
 
******presets
 
******presets
*******''(材质)''.png
+
*******''(纹理)''.png
 
******title
 
******title
*******''(材质)''.png
+
*******''(纹理)''.png
 
*******background
 
*******background
********''(材质)''.png
+
********''(纹理)''.png
 
*****item
 
*****item
******''(材质)''.png
+
******''(纹理)''.png
 
*****map
 
*****map
******''(材质)''.png
+
******''(纹理)''.png
 
*****misc
 
*****misc
******''(材质)''.png
+
******''(纹理)''.png
 
*****mob_effect
 
*****mob_effect
******''(材质)''.png
+
******''(纹理)''.png
 
*****models
 
*****models
 
******armor
 
******armor
*******''(材质)''.png
+
*******''(纹理)''.png
 
*****painting
 
*****painting
******''(材质)''.png
+
******''(纹理)''.png
 
*****particle
 
*****particle
******''(材质)''.png
+
******''(纹理)''.png
 
</div>
 
</div>
 
|}
 
|}
第122行: 第129行:
 
* {{nbt|compound}} 根标签
 
* {{nbt|compound}} 根标签
 
** {{nbt|compound|pack}}:保存资源包的信息
 
** {{nbt|compound|pack}}:保存资源包的信息
*** {{nbt|int|pack_format}}:资源包版本。如果这个数值与当前需要的数值不匹配,则资源包就会显示一个错误,进行附加确认后才能加载资源包。[[Java版1.6.1|1.6.1]]([[13w24a]]-[[Java版1.8.9|1.8.9]]为<code>1</code>,[[Java版1.9|1.9]]([[15w31a]])-[[Java版1.10.2|1.10.2]]为<code>2</code>,[[Java版1.11|1.11]]([[16w32a]])-[[Java版1.12.2|1.12.2]]([[17w47b]])为<code>3</code>,[[Java版1.13|1.13]]([[17w48a]])-[[Java版1.14.4|1.14.4]]([[19w46b]])为<code>4</code>,[[Java版1.15|1.15]]([[Java版1.15-pre1|1.15-pre1]])-[[Java版1.16.1|1.16.1]]([[Java版1.16.2-pre3|1.16.2-pre3]])为<code>5</code>,[[Java版1.16.2|1.16.2]]([[Java版1.16.2-rc1|1.16.2-rc1]])-[[Java版1.16.5|1.16.5]]为<code>6</code>,[[Java版1.17|1.17]]([[20w45a]]以上)为<code>7</code>。
+
*** {{nbt|int|pack_format}}:资源包版本。如果这个数值与当前需要的数值不匹配,则资源包就会显示一个错误,进行附加确认后才能加载资源包。[[Java版1.6.1|1.6.1]]([[13w24a]]) &ndash; [[Java版1.8.9|1.8.9]]为<code>1</code>,[[Java版1.9|1.9]]([[15w31a]]) &ndash; [[Java版1.10.2|1.10.2]]为<code>2</code>,[[Java版1.11|1.11]]([[16w32a]]) &ndash; [[Java版1.12.2|1.12.2]]([[17w47b]])为<code>3</code>,[[Java版1.13|1.13]]([[17w48a]]) &ndash; [[Java版1.14.4|1.14.4]]([[19w46b]])为<code>4</code>,[[Java版1.15|1.15]]([[Java版1.15-pre1|1.15-pre1]]) &ndash; [[Java版1.16.1|1.16.1]]([[Java版1.16.2-pre3|1.16.2-pre3]])为<code>5</code>,[[Java版1.16.2|1.16.2]]([[Java版1.16.2-rc1|1.16.2-rc1]]) &ndash; [[Java版1.16.5|1.16.5]]为<code>6</code>,[[Java版1.17|1.17]]([[20w45a]])&ndash;[[Java版1.17.1|1.17.1]]([[21w38a]])为<code>7</code>,[[Java版1.18|1.18]]([[21w39a]])以后为<code>8</code>。
 
*** {{nbt|string|description}}:在资源包菜单里要显示的资源包名称。该文本将会显示为2行。如果文本太长则会被截断。<!-- add an exact length -->
 
*** {{nbt|string|description}}:在资源包菜单里要显示的资源包名称。该文本将会显示为2行。如果文本太长则会被截断。<!-- add an exact length -->
 
*** {{nbt|compound|description}}: 包含一个[[命令#原始JSON文本|原始JSON文本]]对象,它将在资源包菜单中显示为包描述。与<code>string</code>标签<code>description</code>具有相同的行为,但是它们不能一起存在。
 
*** {{nbt|compound|description}}: 包含一个[[命令#原始JSON文本|原始JSON文本]]对象,它将在资源包菜单中显示为包描述。与<code>string</code>标签<code>description</code>具有相同的行为,但是它们不能一起存在。
第145行: 第152行:
 
{{main|模型}}
 
{{main|模型}}
   
模型是以JSON格式的文件,它决定了方块和物品的形状和材质
+
模型是以JSON格式的文件,它决定了方块和物品的形状和纹理
   
 
方块使用<code>assets/minecraft/blockstates</code>的方块状态文件,来决定每个变种要从中加载的模型。同时,每个物品在 <code>assets/minecraft/models/item</code>中都有一个物品模型来决定它的模型,它要么会从一个方块模型里加载,包含了它自己自定义的模型,要么使用默认的“平面”或“实体”模型。
 
方块使用<code>assets/minecraft/blockstates</code>的方块状态文件,来决定每个变种要从中加载的模型。同时,每个物品在 <code>assets/minecraft/models/item</code>中都有一个物品模型来决定它的模型,它要么会从一个方块模型里加载,包含了它自己自定义的模型,要么使用默认的“平面”或“实体”模型。
   
除非被上面的资源包覆盖,在下面的资源包所使用的模型和方块状态仍然会被加载,这可能会导致一些材质和模型不再被加载。
+
除非被上面的资源包覆盖,在下面的资源包所使用的模型和方块状态仍然会被加载,这可能会导致一些纹理和模型不再被加载。
   
 
==== 音效 ====
 
==== 音效 ====
第155行: 第162行:
 
资源包加载文件格式为<code>.ogg</code>的附加音效。每个资源包里面的音效都会覆盖下面的资源包。资源包包含一个<code>[[sounds.json]]</code>文件,其位于<code>assets/minecraft</code>中。与资源包其他的文件不同,<code>sounds.json</code>会合并其上一个资源包的音效,而不是完全覆盖上面的<code>sounds.json</code>文件。
 
资源包加载文件格式为<code>.ogg</code>的附加音效。每个资源包里面的音效都会覆盖下面的资源包。资源包包含一个<code>[[sounds.json]]</code>文件,其位于<code>assets/minecraft</code>中。与资源包其他的文件不同,<code>sounds.json</code>会合并其上一个资源包的音效,而不是完全覆盖上面的<code>sounds.json</code>文件。
   
==== 材质 ====
+
==== 纹理 ====
   
[[File:Missing Texture Block.png|150px|缩略图|无效或材质丢失时使用的“丢失的材质”。]]
+
[[File:Missing Texture Block.png|150px|缩略图|无效或纹理丢失时使用的“丢失的纹理”。]]
   
要让方块或物品材质正常显示,那么它们的宽度和高度必须相等(如果是[[#动态材质|动态材质]],那么高度要是宽度的倍数);否则,只会显示黑紫方格交错的材质。对于其他多数材质,文件会被拉伸以符合所需的尺寸。
+
要让方块或物品纹理正常显示,那么它们的宽度和高度必须相等(如果是[[#动态纹理|动态纹理]],那么高度要是宽度的倍数);否则,只会显示黑紫方格交错的纹理。对于其他多数纹理,文件会被拉伸以符合所需的尺寸。
   
多数固体方块会把任何透明的地方变成完全不透明的。一些拥有类似于拼贴的透明区域方块(如玻璃)会把所有不透明度低于10%的像素变成全透明像素,其他像素变成完全不透明像素。其他方块渲染材质会保留半透明区域。所有的半透明的物品和任何方块/实体都会默认支持半透明。
+
多数固体方块会把任何透明的地方变成完全不透明的。一些拥有类似于拼贴的透明区域方块(如玻璃)会把所有不透明度低于10%的像素变成全透明像素,其他像素变成完全不透明像素。其他方块渲染纹理会保留半透明区域。所有的半透明的物品和任何方块/实体都会默认支持半透明。
   
如果一个材质文件不存在于任何的资源包(包括默认资源)中,那么这个材质将会显示为一个({{Color|#f800f8}}{{Color|#000000}})方格交错的材质
+
如果一个纹理文件不存在于任何的资源包(包括默认资源)中,那么这个纹理将会显示为一个({{Color|#f800f8}})黑({{Color|#000000}})方格交错的纹理
   
===== 动态材质 =====
+
===== 动态纹理 =====
   
方块和物品材质支持动态材质,在图片的每一帧下方放置另外一帧即可。动态材质是被一个在相同目录,相同名称,以JSON格式存储的<code>.mcmeta</code>文件进行控制。例如,<code>stone.png</code>的<code>.mcmeta</code>文件的文件名是<code>stone.png.mcmeta</code>。
+
方块和物品纹理支持动态纹理,在图片的每一帧下方放置另外一帧即可。动态纹理是被一个在相同目录,相同名称,以JSON格式存储的<code>.mcmeta</code>文件进行控制。例如,<code>stone.png</code>的<code>.mcmeta</code>文件的文件名是<code>stone.png.mcmeta</code>。
   
 
<div class="treeview">
 
<div class="treeview">
 
* {{nbt|compound}} 根标签
 
* {{nbt|compound}} 根标签
** {{nbt|compound|animation}}:包含了动态材质的数据的标签
+
** {{nbt|compound|animation}}:包含了动态纹理的数据的标签
 
*** {{nbt|boolean|interpolate}}:若为 true,Minecraft 将会在帧与帧之间生成一张间隔时间大于1的帧。默认为<code>false</code>。
 
*** {{nbt|boolean|interpolate}}:若为 true,Minecraft 将会在帧与帧之间生成一张间隔时间大于1的帧。默认为<code>false</code>。
 
*** {{nbt|int|width}}:方块的宽度,以直接比例而不是像素为单位。<!--Dinnerbone originally stated it was in pixels, but later corrected himself on IRC-->这在原版中没有使用,但是可以被mod使用以具有不是完整正方形的帧。
 
*** {{nbt|int|width}}:方块的宽度,以直接比例而不是像素为单位。<!--Dinnerbone originally stated it was in pixels, but later corrected himself on IRC-->这在原版中没有使用,但是可以被mod使用以具有不是完整正方形的帧。
第183行: 第190行:
 
</div>
 
</div>
   
如果资源包里没有<code>.mcmeta</code>文件,则游戏将会认为这个材质不是动态材质,不会从下一个包继续加载<code>.mcmeta</code>文件。如果一个尺寸不相同的材质没有其对应的<code>.mcmeta</code>文件,那么这个材质将会显示为黑紫方格交错的材质
+
如果资源包里没有<code>.mcmeta</code>文件,则游戏将会认为这个纹理不是动态纹理,不会从下一个包继续加载<code>.mcmeta</code>文件。如果一个尺寸不相同的纹理没有其对应的<code>.mcmeta</code>文件,那么这个纹理将会显示为黑紫方格交错的纹理
   
 
===== 村民 =====
 
===== 村民 =====
   
来自<code>assets/minecraft/textures/entity/villager</code>和<code>assets/minecraft/textures/entity/zombie_villager</code>的材质支持后缀名为<code>.mcmeta</code>的JSON格式文件,用于指明可应用于帽子层的附加效果。文件和材质位于相同目录,与对应材质文件有相同名称。例如,文件<code>profession/farmer.png</code>可以附带具有一个名为<code>profession/farmer.png.mcmeta</code>的文件。
+
来自<code>assets/minecraft/textures/entity/villager</code>和<code>assets/minecraft/textures/entity/zombie_villager</code>的纹理支持后缀名为<code>.mcmeta</code>的JSON格式文件,用于指明可应用于帽子层的附加效果。文件和纹理位于相同目录,与对应纹理文件有相同名称。例如,文件<code>profession/farmer.png</code>可以附带具有一个名为<code>profession/farmer.png.mcmeta</code>的文件。
   
 
<div class="treeview">
 
<div class="treeview">
 
* {{nbt|compound}}根标签
 
* {{nbt|compound}}根标签
** {{nbt|compound|villager}}:包含材质数据。
+
** {{nbt|compound|villager}}:包含纹理数据。
 
*** {{nbt|string|hat}}:村民种类的帽子图层是否仍完整渲染(默认),或者不({{code|full}})。{{More info|What does partial do?}}
 
*** {{nbt|string|hat}}:村民种类的帽子图层是否仍完整渲染(默认),或者不({{code|full}})。{{More info|What does partial do?}}
 
</div>
 
</div>
   
如果文件夹中不存在对应的<code>.mcmeta</code>文件,而材质文件中存在材质,则游戏将加载默认设置,而不是从下方的资源包里加载<code>.mcmeta</code>文件。
+
如果文件夹中不存在对应的<code>.mcmeta</code>文件,而纹理文件中存在纹理,则游戏将加载默认设置,而不是从下方的资源包里加载<code>.mcmeta</code>文件。
   
 
===== 颜色图 =====
 
===== 颜色图 =====
第203行: 第210行:
 
===== 杂项 =====
 
===== 杂项 =====
   
<code>assets/minecraft/textures/misc</code>里的材质支持JSON格式储存的<code>.mcmeta</code>文件来向材质应用附加效果。文件的位置与材质的位置处于同一目录,与材质的文件名也相同。例如,文件<code>pumpkinblur.png</code>对应的属性文件的文件名为<code>pumpkinblur.png.mcmeta</code>。
+
<code>assets/minecraft/textures/misc</code>里的纹理支持JSON格式储存的<code>.mcmeta</code>文件来向纹理应用附加效果。文件的位置与纹理的位置处于同一目录,与纹理的文件名也相同。例如,文件<code>pumpkinblur.png</code>对应的属性文件的文件名为<code>pumpkinblur.png.mcmeta</code>。
   
 
<div class="treeview">
 
<div class="treeview">
 
* {{nbt|compound}} 根标签
 
* {{nbt|compound}} 根标签
** {{nbt|compound|texture}}:包含了材质的数据
+
** {{nbt|compound|texture}}:包含了纹理的数据
*** {{nbt|bool|blur}}:指定从近距离观察时是否导致材质模糊。默认为<code>false</code>。
+
*** {{nbt|bool|blur}}:指定从近距离观察时是否导致纹理模糊。默认为<code>false</code>。
*** {{nbt|bool|clamp}}:指定是否在原来的情况下以伸展材质代替平铺材质。默认为<code>false</code>。
+
*** {{nbt|bool|clamp}}:指定是否在原来的情况下以伸展纹理代替平铺纹理。默认为<code>false</code>。
*** {{nbt|int-array|mipmaps}}:材质的自定义mipmap值。
+
*** {{nbt|int-array|mipmaps}}:纹理的自定义mipmap值。
 
</div>
 
</div>
   
如果资源包里材质文件对应的<code>.mcmeta</code>文件缺失,那么游戏将会加载默认设置,而不是从下一个资源包中继续加载<code>.mcmeta</code>文件。
+
如果资源包里纹理文件对应的<code>.mcmeta</code>文件缺失,那么游戏将会加载默认设置,而不是从下一个资源包中继续加载<code>.mcmeta</code>文件。
   
 
==== 文本 ====
 
==== 文本 ====
   
在<code>assets/minecraft/texts</code>里有3个 UTF-8 格式的<code>.txt</code>文件,储存了游戏要用来显示的文本。
+
在<code>assets/minecraft/texts</code>里有2个 UTF-8 格式的<code>.txt</code>文件和1个<code>.json</code>文件,储存了游戏要用来显示的文本。
   
文件<code>end.txt</code>含有[[终末之诗]]的文本,使用了[[样式代码]]的颜色代码来区分2个讲话人,文本<code>PLAYERNAME</code>将会被玩家名称代替。展示完了这个文件的内容后,接着就会显示<code>credits.txt</code>的内容。
+
文件<code>end.txt</code>含有[[终末之诗]]的文本,使用了[[样式代码]]的颜色代码来区分2个讲话人,文本<code>PLAYERNAME</code>将会被玩家名称代替。展示完了这个文件的内容后,接着就会显示<code>credits.json</code>的内容。
   
 
文件<code>splashes.txt</code>含有使用了换行符分隔的游戏[[闪烁标语]]。每个闪烁标语都可以用不同的文本代替,而这些闪烁标语将会代替默认的闪烁标语。
 
文件<code>splashes.txt</code>含有使用了换行符分隔的游戏[[闪烁标语]]。每个闪烁标语都可以用不同的文本代替,而这些闪烁标语将会代替默认的闪烁标语。
  +
  +
文件<code>credits.json</code>含有对Minecraft团队的致谢信息。
  +
  +
<div class="treeview">
  +
* {{nbt|list}} 根标签
  +
** {{nbt|compound}}:一段致谢信息。
  +
*** {{nbt|string|section}}:段标题,通常类似于一个部门名称,如“Design”、“Programming”或“Audio”等。
  +
*** {{nbt|list|titles}}:将要显示的详细致谢列表。
  +
**** {{nbt|compound}}: 一个列表中的致谢项目。
  +
***** {{nbt|string|title}}:项目名称,通常类似于一个职称,如“Technical Director”、“Game Developers”或“Software Engineers”等。
  +
***** {{nbt|list|names}}:显示的人名。
  +
****** {{nbt|string}}:一个需要致谢的人名。
  +
</div>
   
 
==== 字体 ====
 
==== 字体 ====
第235行: 第255行:
 
***** ''bitmap'': 位图字体
 
***** ''bitmap'': 位图字体
 
****** {{nbt|string|file}}: 欲使用文件的资源位置,以<code>assets/<namespace>/textures</code>开始。
 
****** {{nbt|string|file}}: 欲使用文件的资源位置,以<code>assets/<namespace>/textures</code>开始。
****** {{nbt|int|height}}: 可选。该字符的高度,以像素为单位。可以为负。该标签与源材质中使用的区域不相关,仅用于重新调整显示结果。
+
****** {{nbt|int|height}}: 可选。该字符的高度,以像素为单位。可以为负。该标签与源纹理中使用的区域不相关,仅用于重新调整显示结果。
 
****** {{nbt|int|ascent}}: 该字体的上伸高度(基线至最高点的距离),以像素为单位。 这个值会使得字体的显示结果出现垂直偏移。
 
****** {{nbt|int|ascent}}: 该字体的上伸高度(基线至最高点的距离),以像素为单位。 这个值会使得字体的显示结果出现垂直偏移。
****** {{nbt|list|chars}}: 一个字符串列表,包含该字体替换的字符及其在材质中的位置。列表所有元素的字符数必须相同。该列表中的一项元素对应材质等距分割的一行,每一个元素中的字符对应等距的一列。
+
****** {{nbt|list|chars}}: 一个字符串列表,包含该字体替换的字符及其在纹理中的位置。列表所有元素的字符数必须相同。该列表中的一项元素对应纹理等距分割的一行,每一个元素中的字符对应等距的一列。
 
***** ''legacy_unicode'': 旧版Unicode字体。该字体格式已废弃且仅在“强制Unicode字体”选项打开时才会优先使用。
 
***** ''legacy_unicode'': 旧版Unicode字体。该字体格式已废弃且仅在“强制Unicode字体”选项打开时才会优先使用。
 
****** {{nbt|string|sizes}}: <code>assets/<namespace>/font</code>目录下的资源位置,给出一个描述每个字符的水平起讫位置(从0至15)的二进制文件。目标文件的拓展名必须为<code>.bin</code>。
 
****** {{nbt|string|sizes}}: <code>assets/<namespace>/font</code>目录下的资源位置,给出一个描述每个字符的水平起讫位置(从0至15)的二进制文件。目标文件的拓展名必须为<code>.bin</code>。
****** {{nbt|string|template}}: <code>assets/<namespace>/textures</code>目录下的资源位置,给出该字体应当使用的材质文件。游戏会将该标签中的<code>%s</code> 替换为被替换字符的十六进制代码的前两个字符,因此单个此种类的字体提供者可以指向多个贴图文件。
+
****** {{nbt|string|template}}: <code>assets/<namespace>/textures</code>目录下的资源位置,给出该字体应当使用的纹理文件。游戏会将该标签中的<code>%s</code> 替换为被替换字符的十六进制代码的前两个字符,因此单个此种类的字体提供者可以指向多个贴图文件。
 
***** ''ttf'': [[wzh:TrueType|TrueType字体]]。{{info needed|请测试OpenType字体。这种字体与TrueType类似,非常可能因Java支持。}}
 
***** ''ttf'': [[wzh:TrueType|TrueType字体]]。{{info needed|请测试OpenType字体。这种字体与TrueType类似,非常可能因Java支持。}}
 
****** {{nbt|string|file}}: <code>assets/<namespace>/font</code>目录下的TrueType字体文件的资源位置。
 
****** {{nbt|string|file}}: <code>assets/<namespace>/font</code>目录下的TrueType字体文件的资源位置。
第251行: 第271行:
 
</div>
 
</div>
   
字体材质表会基于每行中的字符个数自动缩放。为了与Unicode块保持一致,部分材质表可能为16个字符宽。
+
字体纹理表会基于每行中的字符个数自动缩放。为了与Unicode块保持一致,部分纹理表可能为16个字符宽。
   
===== 默认材质 =====
+
===== 默认纹理 =====
   
默认材质的字体文件包含一个白色字符的网格,这些字符会在游戏需要时自动被游戏上色。字符大小会根据含有Alpha值的最后一行像素自动决定。由于字体的检测方式,因此用含有5% Alpha颜色填充字符的背景部分将会导致把字符渲染为全宽度,字符也没有可见的背景。默认字体的大小为8×8像素,而<code>accented.png</code>为18×18像素。
+
默认纹理的字体文件包含一个白色字符的网格,这些字符会在游戏需要时自动被游戏上色。字符大小会根据含有Alpha值的最后一行像素自动决定。由于字体的检测方式,因此用含有5% Alpha颜色填充字符的背景部分将会导致把字符渲染为全宽度,字符也没有可见的背景。默认字体的大小为8×8像素,而<code>accented.png</code>为18×18像素。
   
 
* 字形0x20(空格)到0x7E(波浪号)显示标准ASCII字符。
 
* 字形0x20(空格)到0x7E(波浪号)显示标准ASCII字符。
 
* 字形0x7F(<控制字符>)到0xFF(带分音符的y)显示[[Wzh:代码页437|代码页437]]字符。
 
* 字形0x7F(<控制字符>)到0xFF(带分音符的y)显示[[Wzh:代码页437|代码页437]]字符。
   
默认字体材质位于<code>assets/minecraft/textures/font/ascii.png</code>。其中包含如下'''非字母'''字符:
+
默认字体纹理位于<code>assets/minecraft/textures/font/ascii.png</code>。其中包含如下'''非字母'''字符:
   
 
░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌▐▀ ≡ ± ≥ ≤ ⌠ ⌡ ÷ ≈ ° ∙ · √ ⁿ ² ■
 
░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌▐▀ ≡ ± ≥ ≤ ⌠ ⌡ ÷ ≈ ° ∙ · √ ⁿ ² ■
   
<code>assets/minecraft/textures/nonlatin_european.png</code>中的材质表包含了许多带重音号的字符和绝大多数'''Minecraft'''支持的符号。其中包含以下'''非字母'''字符:
+
<code>assets/minecraft/textures/nonlatin_european.png</code>中的纹理表包含了许多带重音号的字符和绝大多数'''Minecraft'''支持的符号。其中包含以下'''非字母'''字符:
   
 
⧈ ⚔ ☠ ¢ ¤ ¥ © ® µ ¶ ¼ ½ ¾ · ‐ ‚ † ‡ • ‱ ′ ″ ‴ ‵ ‶ ‷ ‹ › ※ ‼ ‽ ⁂ ⁈ ⁉ ⁋ ⁎ ⁏ ⁑ ⁒ ⁗ ℗ − ∓ ∞ ☀ ☁ ☈ Є ☲ ☵ ☽ ♀ ♂ ⚥ ♠ ♣ ♥ ♦ ♩ ♪ ♫ ♬ ♭ ♮ ♯ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ʬ ⚡ ⛏ ✔ ❄ ❌ ❤ ⭐ ⸘ ⸮ ⸵ ⸸ ⹁ ⹋ ⥝ ᘔ Ɛ ⅋ ⏏ ⏩ ⏪ ⏭ ⏮ ⏯ ⏴ ⏵ ⏶ ⏷ ⏸ ⏹ ⏺ ⏻ ⏼ ⏽ ⭘ ▲ ▶ ▼ ◀ ● ◦ ◘ ⚓ ⛨ � ☺ ☻ ¦ ☹ ⅔ ✉ ☂ ☔ ☄ ⛄ ☃ ⌛ ⌚ ⚐ ✎ ❣ ♤ ♧ ♡ ♢ ⛈ ☰ ☱ ☳ ☴ ☶ ☷ ↔ ⇒ ⇏ ⇔ ⇵ ∀ ∃ ∄ ∉ ∋ ∌ ⊂ ⊃ ⊄ ⊅ ∧ ∨ ⊻ ⊼ ⊽ ∥ ≢ ⋆ ∑ ⊤ ⊥ ⊢ ⊨ ≔ ∁ ∴ ∵ ∛ ∜ ∂ ⋃ ⊆ ⊇ □ △ ▷ ▽ ◁ ◆ ◇ ○ ◎ ☆ ★ ✘ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ∫ ∮ ∝ ⌀ ⌂ ⌘ 〒 ɼ
 
⧈ ⚔ ☠ ¢ ¤ ¥ © ® µ ¶ ¼ ½ ¾ · ‐ ‚ † ‡ • ‱ ′ ″ ‴ ‵ ‶ ‷ ‹ › ※ ‼ ‽ ⁂ ⁈ ⁉ ⁋ ⁎ ⁏ ⁑ ⁒ ⁗ ℗ − ∓ ∞ ☀ ☁ ☈ Є ☲ ☵ ☽ ♀ ♂ ⚥ ♠ ♣ ♥ ♦ ♩ ♪ ♫ ♬ ♭ ♮ ♯ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ʬ ⚡ ⛏ ✔ ❄ ❌ ❤ ⭐ ⸘ ⸮ ⸵ ⸸ ⹁ ⹋ ⥝ ᘔ Ɛ ⅋ ⏏ ⏩ ⏪ ⏭ ⏮ ⏯ ⏴ ⏵ ⏶ ⏷ ⏸ ⏹ ⏺ ⏻ ⏼ ⏽ ⭘ ▲ ▶ ▼ ◀ ● ◦ ◘ ⚓ ⛨ � ☺ ☻ ¦ ☹ ⅔ ✉ ☂ ☔ ☄ ⛄ ☃ ⌛ ⌚ ⚐ ✎ ❣ ♤ ♧ ♡ ♢ ⛈ ☰ ☱ ☳ ☴ ☶ ☷ ↔ ⇒ ⇏ ⇔ ⇵ ∀ ∃ ∄ ∉ ∋ ∌ ⊂ ⊃ ⊄ ⊅ ∧ ∨ ⊻ ⊼ ⊽ ∥ ≢ ⋆ ∑ ⊤ ⊥ ⊢ ⊨ ≔ ∁ ∴ ∵ ∛ ∜ ∂ ⋃ ⊆ ⊇ □ △ ▷ ▽ ◁ ◆ ◇ ○ ◎ ☆ ★ ✘ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ∫ ∮ ∝ ⌀ ⌂ ⌘ 〒 ɼ
   
<code>assets/minecraft/textures/font/accented.png</code>中包含一份辅助材质。其支持绝大多数基础重音号字符、希腊字母和西里尔字母,还包含一些封闭的数字字母及其他符号。除了非符号之外,还包含以下字符:
+
<code>assets/minecraft/textures/font/accented.png</code>中包含一份辅助纹理。其支持绝大多数基础重音号字符、希腊字母和西里尔字母,还包含一些封闭的数字字母及其他符号。除了非符号之外,还包含以下字符:
   
 
⚠ ⓪ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ☯ ☐ ☑ ☒ ⅒ ⅘
 
⚠ ⓪ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ☯ ☐ ☑ ☒ ⅒ ⅘
第275行: 第295行:
   
 
===== 旧版Unicode =====
 
===== 旧版Unicode =====
Minecraft使用[[wzh:Unifont|GNU Unifont字体]]作为未提供材质的字符的备选字体。每张字符表都按照<code>unicode_page_##</code>(##是从'''00'''至'''FF'''的十六进制数字)的格式存储。这些页面均为16×16像素,且在游戏中显得小而粗糙。这些字符并未正确地向左对齐。使用的Unifont字体版本为v9.0.04<ref>{{bug|MC-108045}}</ref>,并在1.16.5时即已经过时。它提供对[[wzh:CJK文字|CJK]]字符和其他文字的支持。
+
Minecraft使用[[wzh:Unifont|GNU Unifont字体]]作为未提供纹理的字符的备选字体。每张字符表都按照<code>unicode_page_##</code>(##是从'''00'''至'''FF'''的十六进制数字)的格式存储。这些页面均为16×16像素,且在游戏中显得小而粗糙。这些字符并未正确地向左对齐。使用的Unifont字体版本为v9.0.04<ref>{{bug|MC-108045}}</ref>,并在1.16.5时即已经过时。它提供对[[wzh:CJK文字|CJK]]字符和其他文字的支持。
   
 
===== Emoji表情字符 =====
 
===== Emoji表情字符 =====
第294行: 第314行:
   
 
===== 阴影 =====
 
===== 阴影 =====
<!--如果在[[选项]]中启用了“聊天阴影”选项,则-->每个字符下方都会出现一个阴影。 该阴影是字符位图的副本,亮度减去了90%,并且相对于其间距位于字符西南方向的12.5%。无论角色纹理的分辨率如何,阴影始终移动12.5%。在默认字体(<code>assets/minecraft/textures/font/ascii.png</code>) 中,阴影相当于向下和向右移动1个像素。
+
<!--如果在[[选项]]中启用了“聊天阴影”选项,则-->每个字符下方都会出现一个阴影。 该阴影是字符位图的副本,亮度减去了90%,并且相对于其间距位于字符西南方向的12.5%。无论字符的纹理的分辨率如何,阴影始终移动12.5%。在默认字体(<code>assets/minecraft/textures/font/ascii.png</code>) 中,阴影相当于向下和向右移动1个像素。
   
==== 材质表 ====
+
==== 纹理表 ====
通常情况下,Minecraft将多个材质单独储存而非储存在材质表中。当前仅有的例外是[[地图]]图标<ref>https://feedback.minecraft.net/hc/en-us/community/posts/360058199792-Split-up-map-icon-textures-into-individual-files</ref>,[[经验球]]和矿车<ref>https://feedback.minecraft.net/hc/en-us/community/posts/360058097892-Split-up-the-experience-orb-texture-file-into-individual-sprites</ref>。
+
通常情况下,Minecraft将多个纹理单独储存而非储存在纹理表中。当前仅有的例外是[[地图]]图标<ref>https://feedback.minecraft.net/hc/en-us/community/posts/360058199792-Split-up-map-icon-textures-into-individual-files</ref>,[[经验球]]和矿车<ref>https://feedback.minecraft.net/hc/en-us/community/posts/360058097892-Split-up-the-experience-orb-texture-file-into-individual-sprites</ref>。
   
 
==== 着色器 ====
 
==== 着色器 ====
第326行: 第346行:
 
***** {{nbt|compound}} 一个副渲染目标。
 
***** {{nbt|compound}} 一个副渲染目标。
 
****** {{nbt|string|name}}: 用于传递至“Program”JSON文件的副渲染目标的名称。
 
****** {{nbt|string|name}}: 用于传递至“Program”JSON文件的副渲染目标的名称。
****** {{nbt|string|id}}: 副渲染目标的标识符。 指向由<code>targets</code>定义的缓冲区或是指向<code>assets/<namespace>/textures/effect</code> (使用[[命名空间ID]]来引用)中的材质位置。
+
****** {{nbt|string|id}}: 副渲染目标的标识符。 指向由<code>targets</code>定义的缓冲区或是指向<code>assets/<namespace>/textures/effect</code> (使用[[命名空间ID]]来引用)中的纹理位置。
****** {{nbt|int|width}}:如果<code>id</code>引用材质则必须。以像素为单位给出材质的宽度。
+
****** {{nbt|int|width}}:如果<code>id</code>引用纹理则必须。以像素为单位给出纹理的宽度。
****** {{nbt|int|height}}: 如果<code>id</code>引用材质则必须。以像素为单位给出材质的高度。
+
****** {{nbt|int|height}}: 如果<code>id</code>引用纹理则必须。以像素为单位给出纹理的高度。
****** {{nbt|bool|bilinear}}: 如果<code>id</code>引用材质则必须。指定该图像使用的缩放算法为双线性或最近邻。
+
****** {{nbt|bool|bilinear}}: 如果<code>id</code>引用纹理则必须。指定该图像使用的缩放算法为双线性或最近邻。
 
**** {{nbt|list|uniforms}}: 用于重写“Program”JSON文件中<code>uniforms</code>列表的值。
 
**** {{nbt|list|uniforms}}: 用于重写“Program”JSON文件中<code>uniforms</code>列表的值。
 
***** {{nbt|compound}}: 一个统一变量(Uniform)参数。
 
***** {{nbt|compound}}: 一个统一变量(Uniform)参数。
第366行: 第386行:
 
</div>
 
</div>
 
-->
 
-->
  +
 
=== 资源包模板 ===
 
=== 资源包模板 ===
 
原版资源包的文件结构:
 
原版资源包的文件结构:
第378行: 第399行:
   
 
{{History|java}}
 
{{History|java}}
{{History||1.6.1|snap=13w24a|加入了资源包,取代了材质包的功能。[http://s3.amazonaws.com/Minecraft.Download/utilities/TextureEnder.jar Minecraft Texture Ender]是Mojang提供的,用于把可编译的1.5材质包转换为资源包。}}
+
{{History||1.6.1|snap=13w24a|加入了资源包,取代了纹理包的功能。[http://s3.amazonaws.com/Minecraft.Download/utilities/TextureEnder.jar Minecraft Texture Ender]是Mojang提供的,用于把可编译的1.5纹理包转换为资源包。}}
 
{{History||1.6.2|修复了当使用HD字体时字体扭曲的问题。<ref>{{bug|MC-17673}}</ref>}}
 
{{History||1.6.2|修复了当使用HD字体时字体扭曲的问题。<ref>{{bug|MC-17673}}</ref>}}
 
{{History||1.7.2|snap=13w36a|加入了一次应用多个资源包的能力。}}
 
{{History||1.7.2|snap=13w36a|加入了一次应用多个资源包的能力。}}
第386行: 第407行:
 
{{History|||snap=14w07a|资源包现在可以绑定在一张地图上了。}}
 
{{History|||snap=14w07a|资源包现在可以绑定在一张地图上了。}}
 
{{History|||snap=14w25a|模型格式现在支持自定义物体模型。
 
{{History|||snap=14w25a|模型格式现在支持自定义物体模型。
|现在可以分别指定方块和物品的材质
+
|现在可以分别指定方块和物品的纹理
|加入了用于动态材质的<code>interpolate</code>标签。}}
+
|加入了用于动态纹理的<code>interpolate</code>标签。}}
 
{{History||1.8.8|snap=pre|如果资源包版本是错误的,则资源包现在会显示一个错误。此时,资源包需要的版本号是<code>1</code>。}}
 
{{History||1.8.8|snap=pre|如果资源包版本是错误的,则资源包现在会显示一个错误。此时,资源包需要的版本号是<code>1</code>。}}
 
{{History||1.9|snap=15w31a|由于模型系统中的更改(例如项目标记、多部分以及对显示标记的更改),资源包版本号已更改为<code>2</code>。
 
{{History||1.9|snap=15w31a|由于模型系统中的更改(例如项目标记、多部分以及对显示标记的更改),资源包版本号已更改为<code>2</code>。
而且使用具有过时显示标签的资源包将导致模型看起来异常放大,并且不会在手中旋转被操纵的方块,同时库存中的方块被替换为2D材质。这类似于模型没有显示标签时发生的情况。请看[https://i.imgur.com/7wilQfO.png 这里]的例子。}}
+
而且使用具有过时显示标签的资源包将导致模型看起来异常放大,并且不会在手中旋转被操纵的方块,同时物品栏中的方块被替换为2D纹理。这类似于模型没有显示标签时发生的情况。请看[https://i.imgur.com/7wilQfO.png 这里]的例子。}}
 
{{History||1.11|snap=16w32a|资源包版本号被更改为<code>3</code>,这个版本需要资源包的所有文件的文件名使用小写字母。}}
 
{{History||1.11|snap=16w32a|资源包版本号被更改为<code>3</code>,这个版本需要资源包的所有文件的文件名使用小写字母。}}
 
{{History||1.13|snap=17w43a|默认资源包现在可以像其他资源包一样上下移动位置了。}}
 
{{History||1.13|snap=17w43a|默认资源包现在可以像其他资源包一样上下移动位置了。}}
 
{{History|||snap=17w48a|由于[[Java版1.13/扁平化|扁平化]],资源包版本号被更改为<code>4</code>。}}
 
{{History|||snap=17w48a|由于[[Java版1.13/扁平化|扁平化]],资源包版本号被更改为<code>4</code>。}}
{{History||1.14|snap=18w45a|由于旧材质在[[材质更新]]中被新的取代,现在在资源包菜单中加入了"Programmer Art – The classic look of Minecraft"。}}
+
{{History||1.14|snap=18w45a|由于旧纹理在[[纹理更新]]中被新的取代,现在在资源包菜单中加入了“Programmer Art – The classic look of Minecraft”。}}
 
{{History|||snap=19w06a|明显提升了资源包加载的速度。<ref>{{tweet|Dinnerbone|1093575528794214400|It should have already affected resource pack loading! It's all the same thing internally.|February 7th, 2019}}</ref>}}
 
{{History|||snap=19w06a|明显提升了资源包加载的速度。<ref>{{tweet|Dinnerbone|1093575528794214400|It should have already affected resource pack loading! It's all the same thing internally.|February 7th, 2019}}</ref>}}
 
{{History||1.15|snap=pre1|由于之前快照中[[旗帜图案]]、[[盾牌]]、[[附魔]]光效与[[箱子]]等贴图机制的改动,资源包版本更改为<code>5</code>。}}
 
{{History||1.15|snap=pre1|由于之前快照中[[旗帜图案]]、[[盾牌]]、[[附魔]]光效与[[箱子]]等贴图机制的改动,资源包版本更改为<code>5</code>。}}
 
{{History||1.16|snap=pre7|加入了大量新字母,其中包括此前尚未加入的一些拉丁文、亚美尼亚文连字和格鲁吉亚字母。}}
 
{{History||1.16|snap=pre7|加入了大量新字母,其中包括此前尚未加入的一些拉丁文、亚美尼亚文连字和格鲁吉亚字母。}}
 
{{History||1.16.2|snap=rc1|由于{{bug|MC-197275}},资源包版本号更改为<code>6</code>。}}
 
{{History||1.16.2|snap=rc1|由于{{bug|MC-197275}},资源包版本号更改为<code>6</code>。}}
 
{{History||1.17|snap=20w45a|由于部分纹理文件名称的更改,资源包版本号变更为<code>7</code>。}}
{{History|java upcoming}}
 
{{History||1.17|snap=20w45a|由于部分材质文件名称的更改,资源包版本号变更为<code>7</code>。}}
 
 
{{History|||snap=21w05a|在物品模型上使用多个替代时提高了性能。
 
{{History|||snap=21w05a|在物品模型上使用多个替代时提高了性能。
|toasts.png GUI材质bundle教程提供了一个新图标。}}
+
|toasts.png GUI纹理收纳袋教程提供了一个新图标。}}
  +
{{History|||snap=pre1|<code>assets/minecraft/texts</code>中的<code>credits.txt</code>被更改为<code>credits.json</code>,格式同时从纯文本变为有结构的JSON格式。}}
 
{{History|upcoming java}}
  +
{{History||1.18|snap=21w39a|资源包版本号变更为<code>8</code>,因为inventory.png现在包含一个额外的图示,用于物品栏中状态效果列表的精简版。}}
   
 
{{History|pocket alpha}}
 
{{History|pocket alpha}}
第418行: 第441行:
 
** 它在2020年9月5日 4:04(UTC)<ref>https://discord.com/channels/720723932738486323/734822247235059793/752017401587040277<br>Tomlacko.dat 2020年9月6日4:08(UTC)<br>Fun fact, the seed was found at 4:04 UTC<br>404 seed <del>not</del> found :kekw~1:</ref>被“Minecraft@Home”社区的玩家发现。此时,距离它的发布已经过去了近10年的时间。<ref>https://youtu.be/wZGPg6Ckp3Q</ref>
 
** 它在2020年9月5日 4:04(UTC)<ref>https://discord.com/channels/720723932738486323/734822247235059793/752017401587040277<br>Tomlacko.dat 2020年9月6日4:08(UTC)<br>Fun fact, the seed was found at 4:04 UTC<br>404 seed <del>not</del> found :kekw~1:</ref>被“Minecraft@Home”社区的玩家发现。此时,距离它的发布已经过去了近10年的时间。<ref>https://youtu.be/wZGPg6Ckp3Q</ref>
   
== Gallery ==
+
== 画廊 ==
 
<gallery>
 
<gallery>
 
Pack.png|旧版pack.png文件。
 
Pack.png|旧版pack.png文件。
 
Unknown server.png|当前仍在游戏中的灰度变种。用于未知服务器的图标。
 
Unknown server.png|当前仍在游戏中的灰度变种。用于未知服务器的图标。
NotchTexturePacks.png|Notch在材质包选择菜单中发布的第一张图像。
+
NotchTexturePacks.png|Notch在纹理包选择菜单中发布的第一张图像。
 
Default pack.png|默认资源包图标。
 
Default pack.png|默认资源包图标。
 
</gallery>
 
</gallery>

2021年10月12日 (二) 01:45的版本

Disambig gray  本文章介绍的是纹理包(旧译材质包)的替代品。关于其他用法,请见“”。
TexturesComparison

左侧为默认纹理,右侧为自定义资源包(Rodrigo's Pack 8x)。

资源包(Resource Pack)系统允许玩家自定义纹理、模型音乐声音语言终末之诗闪烁标语、鸣谢名单等文本和字体,而不用修改任何代码。

Java版

行为

SelectResourcepack

默认的资源包配置。

资源包可以放置在.minecraft里面的resourcepacks文件夹。每个资源包都是一个子文件夹或一个.zip文件,这个文件里面有resourcepacks文件夹。它被放置在文件夹里面后,就可以从选项菜单中添加资源包,这个资源包可以从“可用的资源包”移动到“已选的资源包”。“已选的资源包”下面的默认资源会始终存在,并且不能被移除。

资源包会按照列表上的顺序加载它们的资源。最底部的资源包将会首先加载,然后每个资源包会代替上层相同名称的资源。

默认资源包

资源包可以与世界捆绑在一起,首先将资源包打包为resources.zip,然后将这个zip文件放入世界文件夹中。当游玩这个世界时,资源包会自动出现在默认资源包的右上方。 通过向服务器属性文件里面resource-pack=一行更改为一个.zip文件的下载链接就能在服务器上设置默认资源包。用户仍然可以选择使用或者选择不下载这个资源包。

旧纹理(1.14之前)在名为“Programmer Art”的资源包中可用。当游戏收到新纹理时,这些纹理不会更新。

文件结构

  • (资源包名称)
    • pack.mcmeta
    • pack.png
    • assets
      • icons
        • icon_16x16.png
        • icon_32x32.png
        • minecraft.icns
      • (命名空间)
        • sounds.json
        • blockstates
          • (方块状态).json
        • gpu_warnlist.json
        • font
          • (字体)
        • icons
          • icon_16x16.png
          • icon_32x32.png
          • minecraft.icns
        • lang
          • (语言).json
        • models
          • block
            • (模型).json
          • item
            • (模型).json
        • particles
          • (粒子).json
        • sounds
          • (声音).ogg
        • shaders
          • core
            • (片元着色器).fsh
            • (着色器程序).json
            • (顶点着色器).vsh
          • include
            • (代码片段).glsl
          • post
            • (着色器程序).json
          • program
            • (片元着色器).fsh
            • (着色器程序).json
            • (顶点着色器).vsh
        • texts
          • (文本).txt
          • (文本).json
        • textures
          • block
            • (纹理).png
          • colormap
            • (纹理).png
          • effect
            • (纹理).png
          • entity
            • (纹理).png
            • (实体种类)
              • (纹理).png
          • environment
            • (纹理).png
          • font
            • (纹理).png
          • gui
            • (纹理).png
            • advancements
              • (纹理).png
              • backgrounds
                • (纹理).png
            • container
              • (纹理).png
              • creative_inventory
                • (纹理).png
            • presets
              • (纹理).png
            • title
              • (纹理).png
              • background
                • (纹理).png
          • item
            • (纹理).png
          • map
            • (纹理).png
          • misc
            • (纹理).png
          • mob_effect
            • (纹理).png
          • models
            • armor
              • (纹理).png
          • painting
            • (纹理).png
          • particle
            • (纹理).png

assets目录下也可以有多个不同的命名空间目录。

内容

Minecraft是通过根目录里的pack.mcmeta来识别,这个文件为JSON格式,其中包含以下信息:

  • 根标签
    •  pack:保存资源包的信息
    •  language:包含了要向语言菜单里添加的附加语言。
      • 语言的语言代码,与对应文件夹assets/minecraft/lang的同名json文件。
        •  name:语言的完整名称。
        •  region:国家或地区名称。
        •  bidirectional:若为true,语言将会从右到左显示。

根目录也包含一个叫作pack.png的可选图像,这个图像将会在资源包选择菜单中作为资源包的缩略图显示。

语言

可以在资源包的assets/<命名空间>/lang文件夹内创建.json类型的语言文件。每个文件可以取代优先级低的或默认的同名文件,或者创建由pack.mcmeta定义的新语言。

.json文件里的每一行都是标准的JSON格式"标识符":"名称",其后紧接一个逗号。标识符是游戏寻找的某个特性的名称,它不应该被更改。名称是显示的名称内容。例如,默认语言文件里的石头是"block.minecraft.stone":"Stone",其中block.minecraft.stone是标识符,Stone是显示的名称。空行会被忽略。文件必须是正确的JSON语法,这意味着它以一个{开始,在每个键值对(最后一个除外)后有一个逗号,并以一个}结束。

语言文件只需要添加资源包确实要修改的内容。任何不在资源包内的名称都会从下面的包中加载,或者如果没有包修改了名称,则从默认资源中加载。

模型

主条目:模型

模型是以JSON格式的文件,它决定了方块和物品的形状和纹理。

方块使用assets/minecraft/blockstates的方块状态文件,来决定每个变种要从中加载的模型。同时,每个物品在 assets/minecraft/models/item中都有一个物品模型来决定它的模型,它要么会从一个方块模型里加载,包含了它自己自定义的模型,要么使用默认的“平面”或“实体”模型。

除非被上面的资源包覆盖,在下面的资源包所使用的模型和方块状态仍然会被加载,这可能会导致一些纹理和模型不再被加载。

音效

资源包加载文件格式为.ogg的附加音效。每个资源包里面的音效都会覆盖下面的资源包。资源包包含一个sounds.json文件,其位于assets/minecraft中。与资源包其他的文件不同,sounds.json会合并其上一个资源包的音效,而不是完全覆盖上面的sounds.json文件。

纹理

Missing Texture Block

无效或纹理丢失时使用的“丢失的纹理”。

要让方块或物品纹理正常显示,那么它们的宽度和高度必须相等(如果是动态纹理,那么高度要是宽度的倍数);否则,只会显示黑紫方格交错的纹理。对于其他多数纹理,文件会被拉伸以符合所需的尺寸。

多数固体方块会把任何透明的地方变成完全不透明的。一些拥有类似于拼贴的透明区域方块(如玻璃)会把所有不透明度低于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”。

如果资源包里没有.mcmeta文件,则游戏将会认为这个纹理不是动态纹理,不会从下一个包继续加载.mcmeta文件。如果一个尺寸不相同的纹理没有其对应的.mcmeta文件,那么这个纹理将会显示为黑紫方格交错的纹理。

村民

来自assets/minecraft/textures/entity/villagerassets/minecraft/textures/entity/zombie_villager的纹理支持后缀名为.mcmeta的JSON格式文件,用于指明可应用于帽子层的附加效果。文件和纹理位于相同目录,与对应纹理文件有相同名称。例如,文件profession/farmer.png可以附带具有一个名为profession/farmer.png.mcmeta的文件。

  • 根标签
    •  villager:包含纹理数据。
      •  hat:村民种类的帽子图层是否仍完整渲染(默认),或者不(full)。[需要更多信息]

如果文件夹中不存在对应的.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值。

如果资源包里纹理文件对应的.mcmeta文件缺失,那么游戏将会加载默认设置,而不是从下一个资源包中继续加载.mcmeta文件。

文本

assets/minecraft/texts里有2个 UTF-8 格式的.txt文件和1个.json文件,储存了游戏要用来显示的文本。

文件end.txt含有终末之诗的文本,使用了样式代码的颜色代码来区分2个讲话人,文本PLAYERNAME将会被玩家名称代替。展示完了这个文件的内容后,接着就会显示credits.json的内容。

文件splashes.txt含有使用了换行符分隔的游戏闪烁标语。每个闪烁标语都可以用不同的文本代替,而这些闪烁标语将会代替默认的闪烁标语。

文件credits.json含有对Minecraft团队的致谢信息。

  • 根标签
    • :一段致谢信息。
      •  section:段标题,通常类似于一个部门名称,如“Design”、“Programming”或“Audio”等。
      •  titles:将要显示的详细致谢列表。
        • : 一个列表中的致谢项目。
          •  title:项目名称,通常类似于一个职称,如“Technical Director”、“Game Developers”或“Software Engineers”等。
          •  names:显示的人名。
            • :一个需要致谢的人名。

字体

字体文件是位于资源包中assets/<namespace>/font目录下的JSON文件。该文件内含提供每个字符对应的资源位置和额外信息的列表。minecraft:default给出了默认字体,而minecraft:alt给出了附魔台所用的默认字体。 提供字体时的资源位置应当包含文件扩展名。

  • 根标签
    •  providers: 提供加入该字体的信息的列表。
      • 提供字体的信息。内容取决于“type”标签的值。
        •  type: 该字体提供者的信息,可为以下选项之一。
          • bitmap: 位图字体
            •  file: 欲使用文件的资源位置,以assets/<namespace>/textures开始。
            •  height: 可选。该字符的高度,以像素为单位。可以为负。该标签与源纹理中使用的区域不相关,仅用于重新调整显示结果。
            •  ascent: 该字体的上伸高度(基线至最高点的距离),以像素为单位。 这个值会使得字体的显示结果出现垂直偏移。
            •  chars: 一个字符串列表,包含该字体替换的字符及其在纹理中的位置。列表所有元素的字符数必须相同。该列表中的一项元素对应纹理等距分割的一行,每一个元素中的字符对应等距的一列。
          • legacy_unicode: 旧版Unicode字体。该字体格式已废弃且仅在“强制Unicode字体”选项打开时才会优先使用。
            •  sizes: assets/<namespace>/font目录下的资源位置,给出一个描述每个字符的水平起讫位置(从0至15)的二进制文件。目标文件的拓展名必须为.bin
            •  template: assets/<namespace>/textures目录下的资源位置,给出该字体应当使用的纹理文件。游戏会将该标签中的%s 替换为被替换字符的十六进制代码的前两个字符,因此单个此种类的字体提供者可以指向多个贴图文件。
          • ttf: TrueType字体[需要更多信息]
            •  file: assets/<namespace>/font目录下的TrueType字体文件的资源位置。
            •  shift: 该字体提供者的字体偏移。
              • 左侧偏移
              • 下方偏移
            •  size: 欲渲染的字体大小。
            •  oversample: 欲渲染的分辨率。
            •  skip: 欲排除的字符串或字符串数组。

字体纹理表会基于每行中的字符个数自动缩放。为了与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

旧版Unicode

Minecraft使用GNU Unifont字体作为未提供纹理的字符的备选字体。每张字符表都按照unicode_page_##(##是从00FF的十六进制数字)的格式存储。这些页面均为16×16像素,且在游戏中显得小而粗糙。这些字符并未正确地向左对齐。使用的Unifont字体版本为v9.0.04[1],并在1.16.5时即已经过时。它提供对CJK字符和其他文字的支持。

Emoji表情字符

从1.15开始,Minecraft可以支持 UTF-16 序列的表情字符,或 Unicode辅助平面中的任何字符。

为了在字体文件的 char数组中正确读取Emoji表情字符,字符可以:

  • 从其UTF-16代码点分为两个UTF-8代码点(代理);如1F603 -> D83D DE03
  • 直接输入

第一种方法用于标准字体文件,但两者都同样有效。 要将字符转换为代理对,可以使用以下等式,其中C是十进制中的代码点:

  • 高代理(第一个):(C − 65536) ÷ (1024 + 55296)
  • 低代理(第二个):C − 65536

从1.16开始,Minecraft默认支持以下Emoji表情字符:

 🔥 🌊 🗡 🏹 🪓 🔱 🎣 🧪
阴影

每个字符下方都会出现一个阴影。 该阴影是字符位图的副本,亮度减去了90%,并且相对于其间距位于字符西南方向的12.5%。无论字符的纹理的分辨率如何,阴影始终移动12.5%。在默认字体(assets/minecraft/textures/font/ascii.png) 中,阴影相当于向下和向右移动1个像素。

纹理表

通常情况下,Minecraft将多个纹理单独储存而非储存在纹理表中。当前仅有的例外是地图图标[2]经验球和矿车[3]

着色器

主条目:着色器

着色器是资源包改变游戏渲染方式的一种方式。 它们是用OpenGL着色器语言 (GLSL) 编写的。

资源包模板

原版资源包的文件结构:

基岩版

主条目:附加包

皮肤类似,可以在基岩版中购买或制作资源包。iOS用户截至Alpha 0.15.0可以使用.mcpack.mcworld文件在系统上下载资源包。打开这些文件后,游戏会自动导入它们,而无需使用文件管理应用。

历史

Java版
1.6.113w24a加入了资源包,取代了纹理包的功能。Minecraft Texture Ender是Mojang提供的,用于把可编译的1.5纹理包转换为资源包。
1.6.2修复了当使用HD字体时字体扭曲的问题。[4]
1.7.213w36a加入了一次应用多个资源包的能力。
13w42a把文件从assets/minecraft/music移动到assets/minecraft/sounds/musicassets/minecraft/sound里的文件也移动到assets/minecraft/sounds
1.7.413w48a移除了更改Mojang徽标的能力。
1.814w06a加入了更改方块模型的能力。
14w07a资源包现在可以绑定在一张地图上了。
14w25a模型格式现在支持自定义物体模型。
现在可以分别指定方块和物品的纹理。
加入了用于动态纹理的interpolate标签。
1.8.8pre如果资源包版本是错误的,则资源包现在会显示一个错误。此时,资源包需要的版本号是1
1.915w31a由于模型系统中的更改(例如项目标记、多部分以及对显示标记的更改),资源包版本号已更改为2。 而且使用具有过时显示标签的资源包将导致模型看起来异常放大,并且不会在手中旋转被操纵的方块,同时物品栏中的方块被替换为2D纹理。这类似于模型没有显示标签时发生的情况。请看这里的例子。
1.1116w32a资源包版本号被更改为3,这个版本需要资源包的所有文件的文件名使用小写字母。
1.1317w43a默认资源包现在可以像其他资源包一样上下移动位置了。
17w48a由于扁平化,资源包版本号被更改为4
1.1418w45a由于旧纹理在纹理更新中被新的取代,现在在资源包菜单中加入了“Programmer Art – The classic look of Minecraft”。
19w06a明显提升了资源包加载的速度。[5]
1.15pre1由于之前快照中旗帜图案盾牌附魔光效与箱子等贴图机制的改动,资源包版本更改为5
1.16pre7加入了大量新字母,其中包括此前尚未加入的一些拉丁文、亚美尼亚文连字和格鲁吉亚字母。
1.16.2rc1由于MC-197275,资源包版本号更改为6
1.1720w45a由于部分纹理文件名称的更改,资源包版本号变更为7
21w05a在物品模型上使用多个替代时提高了性能。
toasts.png GUI纹理为收纳袋教程提供了一个新图标。
pre1assets/minecraft/texts中的credits.txt被更改为credits.json,格式同时从纯文本变为有结构的JSON格式。
Java版(即将到来)
1.1821w39a资源包版本号变更为8,因为inventory.png现在包含一个额外的图示,用于物品栏中状态效果列表的精简版。
携带版Alpha
0.15.0加入了第一个自定义游戏内资源包,塑料资源包和城市资源包。
基岩版
1.10.01.10.0.3资源包现在和世界模板分离,并能在现存世界中独立更新。

你知道吗

Alpha v1.2

pack.png截图所在的世界,加载于Alpha v1.2.2。

  • 旧版默认资源包的pack.png取自Java版Alpha v1.2.2,种子3257840388504953787[6]
    • 截图在坐标约x=49、z=0,面向RX=-119.23、RY=-8.297处拍摄。
    • 如何生成完全相同的世界并制作完全相同的截图:https://pastebin.com/CmsEKDev。[7]
    • 它在2020年9月5日 4:04(UTC)[8]被“Minecraft@Home”社区的玩家发现。此时,距离它的发布已经过去了近10年的时间。[9]

画廊

另见

参考