資源包

資源包

資源包(Resource Pack)系統為材質包系統的API替代品,允許玩家更深度地自定義自己的Minecraft體驗。資源包允許玩家自定義材質模型音樂聲音、語言檔案、終末之詩、選單界面UI、閃爍標語的顯示本和字型,而不用修改任何代碼

基本介紹

  • 中文名:資源包
  • 外文名:Resource Pack
  • 登場作品Minecraft
Java版,行為,檔案結構,內容,語言,模型,音效,材質,動態材質,村民,顏色圖,雜項,文本,字型,基岩版,你知道嗎,

Java版

行為

自Java版1.14起默認的資源包配置。
資源包的選擇選單,展示了兩個已選的資源包(不包括默認資源包),一個不支持的資源包和其他各種可用的資源包。
資源包可以放置在.minecraft裡面的resourcepacks資料夾。每個資源包都是一個子資料夾或一個.zip檔案,這個檔案裡面有resourcepacks資料夾。它被放置在資料夾裡面後,就可以從選項選單中添加資源包,這個資源包可以從“可用的資源包”移動到“已選的資源包”。“已選的資源包”下面的默認資源會始終存在,並且不能被移除。
資源包會按照列表上的順序載入它們的資源。最下面的資源包(總是“默認”的那個)將會首先載入,然後每個資源包會代替上一個相同名稱的資源。默認資源包[編輯 | 編輯原始碼]
首先將資源包打包為resources.zip,然後將這個zip檔案放入地圖資料夾里就可以與地圖捆綁在一起了。當遊玩這個地圖時,資源包會自動出現於默認資源包的右上方。
通過向伺服器屬性檔案裡面resource-pack=一行更改為一個.zip檔案的下載連結就能在伺服器上設定默認資源包了。用戶仍然可以選擇使用或者選擇不下載這個資源包。
舊材質(材質更新前的)在名為“Programmer Art”的資源包中可用。

檔案結構

  • (資源包名稱)
  • pack.mcmeta
  • pack.png
  • assets
  • icons
  • icon_16x16.png
  • icon_32x32.png
  • minecraft.icns
(命名空間)
  • sounds.json
  • blockstates
  • (blockstate).json
font
  • (字型)
icons
  • icon_16x16.png
  • icon_32x32.png
  • minecraft.icns
lang
  • (語言).json
models
  • block
  • (模型).json
item
  • (模型).json
particles
  • (粒子).json
sounds
  • (聲音).ogg
shaders
  • post
  • (post).json
program
  • (fragment shader).fsh
  • (program).json
  • (vertex shader).vsh
texts
  • (文本).txt
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

內容

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(1.13:17w47b)中為3,在1.13(17w48a)至1.14.4(1.15:19w46b)中為4,在1.15(1.15-pre1)至1.16.1(1.16.2:1.16.2-pre3)中為5,在1.16.2(1.16.2-rc1)至1.16.5為6,在1.17(20w45a以上)則為7。
  • description:在資源包選單里要顯示的資源包名稱。該文字將會顯示為2行。如果文字太長,那么超長的部分就會被砍掉。
  • description: 包含一個原始JSON文本對象,它將在資源包選單中顯示為包描述。與string標籤description具有相同的行為,但是它們不能一起存在。
language:包含了要向語言選單里添加的附加語言。
  • A language 一個語言的語言代碼,其與資料夾里.lang的名字相同assets/minecraft/lang。
  • name:語言的完整名稱。
  • region:國家或地區名稱。
  • bidirectional:若為true,語言將會從右到左顯示。
根目錄也包含一個叫作pack.png的可選圖像,這個圖像將會在資源包選擇選單中作為資源包的縮略圖顯示。

語言

可以在資源包的assets/<命名空間>/lang資料夾內創建.json類型的語言檔案。每個檔案可以取代優先權低的或默認的同名檔案,或者創建由pack.mcmeta定義的新語言。
.json檔案里的每一行都是標準的JSON格式"標識符":"名稱",其後緊接一個逗號。
標識符是遊戲尋找的某個特性的名稱,它不應該被更改。
名稱是顯示的名稱內容。例如,默認語言檔案里的石頭是"block.minecraft.stone":"Stone",其中
block.minecraft.stone
Stone是標識符,
是顯示的名稱。空行會被忽略。檔案必須是正確的JSON語法,這意味著它以一個{開始,在每個鍵值對(最後一個除外)後有一個逗號,並以一個}結束。
語言檔案只需要添加資源包確實要修改的內容。任何不在資源包內的名稱都會從下面的包中載入,或者如果沒有包修改了名稱,則從默認資源中載入。

模型

模型是一些以JSON格式儲存的,擴展名為.json的檔案,這些檔案決定了方塊和物品的形狀和材質。
方塊使用assets/minecraft/blockstates的一個方塊狀態檔案,來決定每個變種要從中載入的模型。同時,每個物品都有一個物品模型來決定它的模型,這個模型會從一個方塊模型里載入,包含了它自己自定義的模型,或者使用默認的“平面”或“實體”模型。
如果沒有被覆蓋,那么在下面的資源包所使用的模型和方塊狀態仍然會被載入,這可能會導致一些材質和模型被上方的資源包使用,而沒有被再次載入。

音效

資源包載入檔案格式為.ogg或.fsb的附加音效。每個在資源包裡面的音效都會覆蓋下面的資源包。資源包包含一個sounds.json檔案,其位置在assets/minecraft里。與資源包其他的檔案不同,sounds.json會合併其上一個資源包的音效,而不是完全覆蓋每個sounds.json檔案。

材質

要讓方塊或物品材質正常顯示,那么它們的寬度和高度必須相等(如果是動態材質,那么高度要是寬度的倍數);否則,只會顯示黑紫方格交錯的材質。對於其他多數材質,檔案會被簡單的拉伸,以符合所需的尺寸。
多數固體方塊會把任何透明的地方變成完全不透明的。一些擁有類似於拼貼的透明區域方塊(類似於草),會把所有不透明度低於10%的像素變成全透明像素,其他像素變成完全不透明像素。其他方塊渲染材質會保留半透明區域。所有的半透明的物品和任何方塊/實體,都會默認支持半透明。
如果一個材質檔案不存在於任何的資源包(包括默認資源包)中,那么這個材質將會顯示為一個黑紫方格交錯的材質。

動態材質

方塊和物品材質支持動態材質,在圖片的每一幀的下面放置另外一幀就能做成動態材質了。動態材質是被一個在相同目錄,相同名稱,以JSON格式存儲的.mcmeta檔案進行控制。例如,stone.png的.mcmeta檔案的檔案名稱是stone.png.mcmeta。
  • 根標籤
  • animation:包含了動態材質的數據的標籤
  • interpolate:若為 true,Minecraft 將會在幀與幀之間生成一張間隔時間大於1的幀。默認為false。
  • width:方塊的寬度,以直接比例而不是像素為單位。這在原版中沒有使用,但是可以被mod使用以具有不是完整正方形的幀。
  • height:方塊的高度,以直接比例而不是像素為單位。這在原版中沒有使用,但是可以被mod使用以具有不是完整正方形的幀。
  • frametime:設定在每個遊戲刻內每一幀的時間增量。默認為1。
  • frames:一個幀列表。幀的顯示順序默認為從上至下。
  • 指定開始播放的幀的位置,最上面的一幀為 0
  • A frame 為每一幀指定附加數據
  • index:指定開始播放的幀的位置,最上面的一幀為 0
  • time:這一幀的顯示時間(單位:刻),覆蓋上面的“frametime”。
如果資源包里沒有.mcmeta檔案,並且材質是動態的,那么遊戲將會認為這個材質不是動態材質,不會從下一個包繼續載入.mcmeta檔案。如果一個維度不相同的材質沒有其對應的.mcmeta檔案,那么這個材質將會顯示為黑紫方格交錯的材質。

村民

其材質assets/minecraft/textures/entity/villager
和assets/minecraft/textures/entity/zombie_villager里。支持後綴名為.mcmeta的JSON格式檔案用於指明可套用於帽子層的附加效果,位於相同目錄,與對應材質檔案有相同名稱。例如,檔案profession/farmer.png可以附帶具有一個名為profession/farmer.png.mcmeta的檔案。
如果資料夾中不存在對應的.mcmeta檔案,而材質檔案中存在材質,則遊戲將載入默認設定,而不是從下方的資源包里載入.mcmeta檔案。

顏色圖

顏色圖是一個 256×256 像素的圖片,用於告訴遊戲在每個生物群系要使用的顏色。它們的位置在assets/minecraft/textures/colormap里。遊戲包含2張顏色圖,一張是foliage.png,指定植物如樹葉(除了樺木和雲杉木)和藤蔓的顏色;還有一張是grass.png,指定草和草方塊的顏色。顏色圖可以通過移除個別方塊上的tintindex標籤而被禁用。

雜項

assets/minecraft/textures/misc里的材質支持用一個以JSON格式儲存的.mcmeta檔案來向材質套用附加效果。檔案的位置與材質的位置處於同一目錄,與材質的檔案名稱也一樣,除了.mcmeta後綴。例如,檔案pumpkinblur.png對應的屬性檔案的檔案名稱為pumpkinblur.png.mcmeta。
  • 根標籤
  • texture:包含了材質的數據
  • blur:指定從近距離觀察時是否導致材質模糊。默認為false。
  • clamp:指定是否在原來的情況下以伸展材質代替平鋪材質。默認為false。
  • mipmaps:材質的自定義mipmap值。
如果資源包里材質檔案對應的.mcmeta檔案缺失,那么遊戲將會載入默認設定,而不是從下一個資源包中繼續載入.mcmeta檔案。

文本

在assets/minecraft/texts里的3個 UTF-8 格式的.txt檔案儲存了遊戲要用來顯示的文本。
檔案end.txt含有終末之詩的文本,使用了樣式代碼的顏色代碼來區分2個講話人,文本PLAYERNAME將會被玩家名稱代替。在展示完了這個檔案的內容後,接著就會顯示credits.txt的內容。

字型

字型檔指位於資源包中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個字元寬。

基岩版

與皮膚類似,可以在基岩版中購買或製作資源包。iOS用戶截至Alpha 0.15.0可以使用.mcpack和.mcworld檔案在系統上下載資源包。打開這些檔案後,遊戲會自動導入它們,而無需使用檔案管理套用。

你知道嗎

  • JavaAlpha v1.2.2到1.14使用的默認資源包的pack.png是Java版Alpha v1.2.2中種子3257840388504953787在坐標約x=49,z=0的截圖,它在2020年9月5日 4:04(UTC)被“Minecraft@Home”社區的玩家發現。此時,距離它的發布已經過去了近10年的時間。

相關詞條

熱門詞條

聯絡我們