本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 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]

另見[編輯 | 編輯原始碼]

參考[編輯 | 編輯原始碼]