本站文本內容除另有聲明外,均在知識共享 署名-非商業性使用-相同方式共享 3.0 協議下提供。(詳情…本站文本內容除另有聲明外,均在知識共享 署名-非商業性使用-相同方式共享 3.0 協議下提供。(詳情…中文Minecraft Wiki是完全公開的。請勇於擴充與修正內容!中文Minecraft Wiki是完全公開的。請勇於擴充與修正內容!Minecraft中文Wiki微博正在更新!或許有興趣去看看?Minecraft中文Wiki微博正在更新!或許有興趣去看看?想與其他用戶進行編輯上的溝通?社區專頁正是為此創建的。想與其他用戶進行編輯上的溝通?社區專頁正是為此創建的。翻譯或創建頁面之前,不妨看看譯名標準化Wiki條例頁面。翻譯或創建頁面之前,不妨看看譯名標準化Wiki條例頁面。需要管理員的協助?在管理員告示板留言也許可以幫到您。需要管理員的協助?在管理員告示板留言也許可以幫到您。

資源包

来自Minecraft Wiki
跳轉至: 導航搜索

資源包(Resource pack)系統爲材質包系統的API代替物,允許玩家更深度地自定義自己的Minecraft体验。資源包允许玩家自定义材質、模型、音樂、音效、語言文件、終末之詩閃爍標語的顯示文本和字體,而不用修改任何代碼。

行爲[編輯 | 編輯源代码]

Java版1.14起默认的資源包配置
資源包的选择菜单,展示了两个已选的資源包(不包括默认資源包)和其他各种可用的資源包

資源包可以放置在.minecraft裏面的resourcepacks文件夾。每个資源包都是一个子文件夾或一个.zip文件,這個文件裏面有resourcepacks文件夾。它被放置在文件夾裏面後,就可以從選項菜单中添加資源包,这个資源包可以从“可用的資源包”移動到“已选的資源包”。“已选的資源包”下面的默認資源会始终存在,并且不能被移除。

資源包会按照列表上的顺序加载它们的资源。最下面的資源包(总是“默认”的那个)将会首先加载,然后每个資源包会代替上一个相同名稱的资源。

默认資源包[編輯 | 編輯源代码]

把資源包打包爲resources.zip的文件夾并且直接放到地图文件夾里面就可以與地图捆绑在一起了。当游玩这个地图时,資源包会自动出现在默认資源包的右上方。

通过向服务器屬性文件里面resource-pack=一行更改爲一個.zip文件的下载链接就能在服务器上設置默认資源包了。用户仍然可以选择使用或者选择不下载这个資源包。

Java版[編輯 | 編輯源代码]

在Java版中‌,旧材質(1.14前的)在名爲“Programmer Art”的資源包中可用。

基岩版[編輯 | 編輯源代码]

皮膚類似,可以在基岩版中购买或制作資源包。iOS用户截至Alpha 0.15.0可以使用.mcpack.mcworld文件在系统上下载資源包。打开这些文件后,遊戲会自动导入他们,而无需使用文件系统。

原主機版[編輯 | 編輯源代码]

原主機版,混搭包(等于資源包)作爲可下载內容可以在Xbox marketplace/Playstation store或从遊戲中的可下载內容段落中下载。混搭包通常会包含一个皮膚包和一個主題世界。

內容[編輯 | 編輯源代码]

Minecraft是通过根目錄里的pack.mcmeta来识别一个資源包的,这个文件的格式爲JSON格式。


  • 根標簽

    •  pack:保存資源包的信息

      •  pack_format:資源包版本。如果这个数值與当前需要的数值不匹配,则資源包就会显示一个错误,进行附加确认后才能加载資源包。在1.6.11.8.9中需要的數值爲1,在1.91.10.22,在1.111.12.2中爲3,在1.131.14.44

      •  description:在資源包菜单里要显示的資源包名稱。该文字将会显示爲2行。如果文字太长,那么超长的部分就会被砍掉。

    •  language:包含了要向語言菜单里添加的附加語言

      •  A language 一个語言的語言代码,其與文件夾里.lang的名字相同assets/minecraft/lang

        •  name:語言的完整名稱

        •  region:國家或地區名稱

        •  bidirectional:若爲true,語言将会从右到左显示。

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

制作[編輯 | 編輯源代码]

資源包必须具有特定的結構,以便minecraft能够识别和加载单个资源。Internet資源包中有时没有此結構,因此无法显示在[菜单/選項/資源包选择列表]中或无法工作。可能吧。然后有一个特殊的安装说明(如果这个結構被尊重的话,这实际上是不必要的),或者你必须尝试使它们适应所需的結構。資源包必须具有以下結構:

  • 完整的資源包必须位于文件夾中。此包文件夾的名稱也是出现在选择列表中的包的名稱。通常,包文件夾是压缩的zip文件,但也可以是未压缩的。
  • 資源包文件夾必须包含定义文件pack.mcmeta,其中包含有关包的常規信息。如果此文件丢失或內容不正确,将无法识别資源包。
  • 也可以爲包提供一个显示在选择列表中的“图标”。图标必须命名爲pack.png,并且必须與pack.mcmeta文件一起出现在包文件夾中。如果图标丢失,一个标准图标将出现在下拉列表中(與minecraft爲自己的默認資源使用的图标相同)。图标应该是正方形,并且至少有64×64像素的大小,否则它看起来是像素化的。
  • 在資源包文件夾中,必须存在名爲assets的子文件夾(英文表示stock data)。它包含具有相应资源文件的资源子文件夾。所有资源子文件夾及其內容都是可选的。如果缺少资源子文件夾或资源文件,则将从minecraft默認資源加载该资源。如果存在其他子文件夾或文件,则minecraft没有意义,将被忽略。如果文件包含语法错误(缺少括号、逗号过多、块或项的ID名稱未知等),则将忽略该文件。
  • Minecraft图标是默認資源,但不能通过資源包进行更改。

結構[編輯 | 編輯源代码]

資源包文件夾


  • 資源包名稱

    • pack.png:
      資源包的图标。

    • pack.mcmeta:
      定義文件。

    • assets:
      资源文件夾。

      • minecraft:
        Minecraft的資源。

        • sounds.json:
          用于将聲音事件與聲音文件链接的文本文件。

        • blockstates:
          參考相关的方塊模型修改了方塊狀態文件。

        • font:
          更改了字體包。

        • lang:
          改變語音文件。Minecraft文本的翻譯。

        • models:
          修改模型用于块和对象的三维表示(這裏是子文件夾)。

        • shaders:
          更改图形过滤器(此处爲子文件夾).

        • sounds:
          更改聲音(此处爲子文件夾)。

        • texts:
          修改了材質包,其內容未包含在語言文件中。

        • textures:
          更改資源包(此处爲子文件夾)。

      • realms:
        Minecraft領域的資源。

        • lang:
          爲Minecraft Realms修改語言包。

        • textures:
          改变了Minecraft Realms的材質(這裏是子文件夾)。

      • own-namespace:
        對于自己的資源,您可以自己創建命名空間上。在單獨的命名空間中,原版遊戲中只能使用以下資源:

        • sounds.json:
          用于将聲音事件與聲音文件链接的文本文件。

        • sounds:
          聲音文件。

語言[編輯 | 編輯源代码]

語言源文件的获取方式

在最新的1.13版本中,語言文件的位置需要从/.minecraft/assets/indexes/中对应版本的json中寻找,比如要在1.13.2版本中找到中文簡體,则需在打开json后搜索zh_cn,之后看到如下代码:

 "minecraft/lang/zh_cn.json": 
{
"hash": "b91966bf26b0d692226dc8a09d23c90008fda270",
"size": 310384
}

然後記住hash右側的前兩位

回到.minecraft\assets\objects目錄下,找到名爲hash前两位的文件夾,找到hash后的文件名的文件,打开后就是对应的語言文件,

語言文件中,首位行加入{},然后每行结尾需加入英文逗号以作爲分隔,比如泥土

    "block.minecraft.dirt": "\u6ce5\u571f",

其中block.minecraft.dirt爲泥土的标识符,是遊戲用于寻找某些东西的名稱的标识符,这个标识符不应该被改变,而\u6ce5\u571f则是“泥土”的Unicode编码,可以将此编码改爲其他中文翻译的编码以改变该方塊在遊戲内的名稱

可以在資源包的assets/minecraft/lang文件夾里创建对应类型的.json語言文件。每个文件都将会取代默认的或排序在更低位的資源包的同名文件,或者它会根据pack.mcmeta的定义,创建一个新的語言。

只需要在語言文件里添加上要改变的显示名稱的那一行就可以了,所有不在資源包裏面的名字都将会从下面的其他資源包里加载。如果所有的資源包都没有改变这个名稱的话,将会加载默认的名稱。

方塊模型[編輯 | 編輯源代码]

方塊模型是一些以JSON格式储存的,扩展名爲.json的文件,这些文件决定了方塊和物品的形状和材質。

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

如果没有被覆盖,那么在下面的資源包所使用的模型和方塊狀態仍然会被加载,这可能会导致一些材質和模型被上方的資源包使用,而没有被再次加载。

音效[編輯 | 編輯源代码]

資源包加载文件格式爲.ogg的附加音效。每一个在資源包裏面的音效都将会被下面的資源包覆盖。資源包包含一个sounds.json文件,其位置在assets/minecraft里。不像資源包裏面的其他文件,sounds.json会合并下面的和上面的資源包的音效,而不是完全覆盖每个sounds.json文件。

材質[編輯 | 編輯源代码]

无效或材質丢失时使用的“丢失的材質”。

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

多数固体方塊会把任何透明的地方变成完全不透明的。剩余的方塊和多数的实体材質一起会允许材質有空白区域。所有的半透明的物品和任何方塊/实体,都会默认支持半透明。

如果一个材質文件在任何的資源包(包括默认的)中都不存在,那么这个材質将会显示爲一个黑紫方格交错的材質。(
 #f800f8和
 #000000)


动态材質[編輯 | 編輯源代码]

方塊和物品材質支持动态材質,在每一帧的下面放置另外一帧就能做成动态材質了。动态材質是被一个在相同目錄,相同名稱,以JSON格式存储的.mcmeta文件進行控制。例如,stone.png.mcmeta文件的文件名是stone.png.mcmeta


  • 根標簽

    •  animation:包含了动态材質的數據的標簽

      •  interpolate:若爲 true,Minecraft 将会在帧與帧之间生成一张间隔时间大于1的帧。默认爲false

      •  frametime:設置在每个遊戲刻内每一帧的时间增量。默认爲1

      •  frames:一个帧列表。帧的显示顺序默认爲从上至下。

        • 指定开始播放的帧的位置,最上面的一帧爲 0

        •  A frame 爲每一帧指定附加數據

          •  index:指定开始播放的帧的位置,最上面的一帧爲 0

          •  time:這一幀的顯示時間(單位:刻),覆蓋上面的“frametime”。

如果資源包里没有.mcmeta文件,并且材質是动态的,那么遊戲将会认爲这个材質不是动态材質,不会从下一个包继续加载.mcmeta文件。如果一个维度不相同的材質没有其对应的.mcmeta文件,那么这个材質将会显示爲黑紫方格交错的材質。

顔色圖[編輯 | 編輯源代码]

顔色圖是一个 256×256 像素的图片,用于告诉遊戲在每个生物群系要使用的颜色。它们的位置在assets/minecraft/textures/colormap里。遊戲包含2张顔色圖,一张是foliage.png,指定植物如葉子(除了桦木和雲杉木)和藤蔓的顔色;還有一張是grass.png,指定草方塊的颜色。顔色圖可以通过移除个别方塊上的tintindex標簽而被禁用。

字體[編輯 | 編輯源代码]

字體文件包含一个白色字符的网格,这些字符会在遊戲需要时自动被Minecraft上色。字符大小会根据含有Alpha值的最后一行像素自动决定。由于探明了字體的检测方式,因此用含有1% Alpha颜色填充字符的背景部分将会导致把字符渲染爲全宽度,字符也没有可见的背景。

屬性[編輯 | 編輯源代码]

assets/minecraft/textures/misc里的材質支持用一个以JSON格式储存的.mcmeta文件来向材質应用附加效果。文件的位置與材質的位置处于同一目錄,與材質的文件名也一样,除了.mcmeta後綴。例如,文件pumpkinblur.png对应的屬性文件的文件名爲pumpkinblur.png.mcmeta


  • 根標簽

    •  texture:包含了材質的數據

      •  blur:指定从近距离观察时是否导致材質模糊。默认爲false

      •  clamp:指定是否在原来的情况下以伸展材質代替平铺材質。默认爲false

如果資源包里材質文件对应的.mcmeta文件缺失,那么遊戲将会加载默认設置,而不是从下一个資源包中继续加载.mcmeta文件。

文字[編輯 | 編輯源代码]

assets/minecraft/texts里的3个 UTF-8 格式的.txt文件儲存了遊戲要用來顯示的文字。

文件end.txt含有終末之詩的文字,使用了樣式代碼的顔色代碼來區分2個講話人,文字PLAYERNAME将会被玩家名稱代替。在展示完了这个文件的內容后,接着就会显示credits.txt的內容。

文件splashes.txt含有使用了換行符分隔的遊戲閃爍標語。每个閃爍標語都可以用不同的文字代替,而这些閃爍標語将会代替默认的閃爍標語。

文件层次結構[編輯 | 編輯源代码]

曆史[編輯 | 編輯源代码]

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/musicassets/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
攜帶版(Alpha)
0.15.0 加入了塑料資源包和城市資源包。
0.15.7 加入了自然資源包。
0.15.8 加入了幻想資源包。
0.16.2 加入了卡通資源包。
攜帶版
1.0.3 加入了糖果資源包。

你知道嗎[編輯 | 編輯源代码]

  • 动态材質屬性文件同时也包含附加的“width:”和“height:”標簽来决定要平铺的像素大小,但是它们在原版遊戲中没有效果,并且只被一些Mod材質使用。[2]

另見[編輯 | 編輯源代码]

參考[編輯 | 編輯源代码]

  1. MC-17673
  2. https://twitter.com/Dinnerbone/status/552241757497622529