Minecraft Wiki

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

了解更多

Minecraft Wiki
Advertisement
Disambig gray.svg  本文章介紹的是紋理包(舊譯材質包)的替代品。關於其他用法,請見「」。

左側為預設紋理,右側為自訂資源包(Rodrigo's Pack 8x)。

資源包(Resource Pack)系統允許玩家自訂紋理、模型音樂聲音語言終末之詩閃爍標語、鳴謝名單等文字和字體,而不用修改任何代碼。

Java版[]

行為[]

預設的資源包配置。

資源包可以放置在.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檔案。

紋理[]

無效或紋理丟失時使用的「丟失的紋理」。

要讓方塊或物品紋理正常顯示,那麼它們的寬度和高度必須相等(如果是動態紋理,那麼高度要是寬度的倍數);否則,只會顯示黑紫方格交錯的紋理。對於其他多數紋理,檔案會被拉伸以符合所需的尺寸。

多數固體方塊會把任何透明的地方變成完全不透明的。一些擁有類似於拼貼的透明區域方塊(如玻璃)會把所有不透明度低於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資源包現在和世界模板分離,並能在現存世界中獨立更新。

你知道嗎[]

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]

畫廊[]

另見[]

參考[]

Advertisement