附加包

From Minecraft基岩版开发Wiki

附加包(Add-on)Mojang官方支援的一種能夠改變遊戲執行規則的檔案。

附加包一般由資源包行為包兩部分構成。資源包儲存了遊戲中的音效字型紋理檔案UI檔案模型動畫繪製閃爍標語以及語言檔案;行為包儲存了遊戲中的實體方塊物品配方戰利品表交易列表函式指令、以及生物生成規則

版本控制[edit]

附加包需要透過不同的版本號來決定相應部分的讀取方式。

基版本[edit]

格式版本[edit]

格式版本普遍存在於附加包中,它用於確定目前檔案的讀取方式,通常是由三位數字組成的字串(例如"format_version": "1.13.0"),有時又是陣列。錯誤的格式版本可能會導致遊戲無法正常讀取該檔案的內容,並拋出內容記錄資訊;錯誤的清單檔案格式版本會導致遊戲在附加包資訊中拋出警告或直接無法讀取。

附加包版本[edit]

附加包版本由附加包的作者自訂,它是清單檔案中header物件裡的一個名為version的陣列,由三個整陣列成(例如"version": [1,0,0])。附加包版本定義了這個附加包的版本,它會在附加包被成功讀取後顯示到附加包清單資訊介面中。

遊戲內的清單資訊介面。

它還會影響附加包的升級和依賴。

模組版本[edit]

子包[edit]

子包(Subpack)用於為附加包加入可選的載入內容。

子包檔案放置在附加包根目錄下的subpacks資料夾內,其中每個資料夾為一個子包,子包內的檔案結構與該附加包的檔案結構相同,載入了子包後遊戲將把該子包中的內容覆蓋原附加包的內容。例如在子包資料夾中新建一個/textures/blocks路徑並向其內加入一張名為stone.png的圖片,那麼遊戲將在載入了該子包後將其加入到原附加包中一併載入或覆蓋原有的stone.png貼圖。下方舉例了一個基本的子包結構:

  •  <附加包>.mcpack
    •  manifest.json
    •  pack_icon.png
    •  subpacks
      •  <subpack_0>
        • ……
      •  <subpack_1>
      •  <subpack_2>
      •  ……
    • ……
附加包的設定介面

加入了子包的附加包會在該附加包的選項中顯示按鈕,點擊後會開啟附加包設定介面,滑動解像度‌[原文如此]滑塊即可變更該附加包使用的子包。

語法[edit]

子包由清單檔案定義並顯示在該附加包的設定選項中。透過向清單檔案中加入subpacks欄位可對子包進行定義。下方給出了範例及相關註釋:

{
  "format_version": 2,
  "header": {
    "description": "",
    "name": "example_pack",
    "uuid": "e2a8a535-de94-42bc-99b3-07b73c76adf5",
    "version": [ 1, 0, 0 ],
    "min_engine_version": [ 1, 16, 0 ]
  },
  "modules": [
    {
      "description": "",
      "type": "resources",
      "uuid": "bbb9e40d-c8a6-44cb-b50f-2a2d33801bf3",
      "version": [ 1, 0, 0 ]
    }
  ],
  "subpacks":[
    {
      "folder_name":"subpack_0", //String类型,该子包的文件夹名称。
      "name":"Low", //String类型,该子包在游戏子包设置界面中显示的名称。
      "memory_tier":1 //Int类型,该子包所需内存,数字从小到大所需内存依次升高。
    },
    {
      "folder_name":"subpack_1",
      "name":"Medium",
      "memory_tier":2
    },
    {
      "folder_name":"subpack_2",
      "name":"High",
      "memory_tier":3
    }
  ] //Array类型,可选,添加该字段后可定义该附加包的子包。
}

匯入[edit]

自動匯入[edit]

附加包檔案可被Minecraft識別[注 1]對應後綴並自動匯入遊戲。以下是Minecraft可識別的附加包檔案後綴:

包型別 檔案後綴[注 2]
匯入路徑
Win10版 安卓版
資源包 .mcpack %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\resource_packs /sdcard/Android/data/com.mojang.minecraftpe/files/games/com.mojang/resource_packs[注 3]
行為包 .mcpack %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\behavior_packs /sdcard/Android/data/com.mojang.minecraftpe/files/games/com.mojang/behavior_packs[注 3]
附加包(含資源包和行為包)[注 4] .mcaddon (內部檔案分別為資源包和行為包的路徑) (內部檔案分別為資源包和行為包的路徑)
外觀包 .mcpack %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\skin_packs /sdcard/Android/data/com.mojang.minecraftpe/files/games/com.mojang/skin_packs[注 3]
世界模板 .mctemplate %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\world_templates /sdcard/Android/data/com.mojang.minecraftpe/files/games/com.mojang/world_templates[注 3]

在Win10版中,雙擊檔案即可啟動遊戲並自動匯入;在安卓版中,點擊檔案開啟為「其他」(在其他第三方檔案管理器中稱呼可能不同,例如:「更多」、「型別」等。),選擇Minecraft圖示即可啟動遊戲並自動匯入。

自動匯入可能會面臨匯入失敗的問題,遊戲會在匯入後在畫面頂部顯示相關的提示資訊。下方列出了可能遇到的問題及解決方案:

  • 缺少清單檔案:加入正確的清單檔案即可。
  • 附加包重複:該版本的附加包已經匯入過了,無需再次匯入。若是更新附加包,則需將附加包版本(清單檔案中"version"物件的值)調高。
  • 清單檔案格式錯誤:檢查清單檔案格式。清單檔案中"type"物件的值可能不正確,對照包型別表"type"物件的值修改正確。
  • 遊戲版本不適配:清單檔案中"min_engine_version"物件中填寫的遊戲版本號大於了目前遊戲的版本,降級遊戲或修改"min_engine_version"物件的值至適配版本即可。

手動匯入[edit]

部分附加包可能存在命名不規範和檔案結構不規範的問題,這往往會導致自動匯入失敗,此時我們需要手動匯入。

附加包通常打包為一個修改了後綴的壓縮檔。手動匯入需我們先將檔案解壓(部分平台需要先將檔案後綴改為.zip才能解壓),然後將解壓後的檔案按照上表放到對應資料夾即可。如果檔案未壓縮,則直接將檔案放入對應資料夾。

除了透過檔案後綴名來辨別包型別,我們還可以透過檔案名來辨別。如果檔案名中包含「BE」、「BEH」、「BP」、「behavior」等字樣,則該檔案多為行為包;如果檔案名中包含「RE」、「RES」、「RP」、「resource」等字樣,則該檔案多為資源包。若無法透過檔案名來辨別包型別,還可以透過包中的清單檔案(檔案名:manifest.json)來辨別。開啟manifest.json,找到物件"type",其值決定了該包的型別。根據包型別將檔案放入對應資料夾即可。

  1. 檔案後綴僅決定該檔案能否被Minecraft識別並匯入,不能決定該檔案的包型別。包型別由清單檔案"type"的值決定。
  2. 一般情況下,附加包作者都會根據包型別使用對應的檔案後綴,這樣更便於使用者分清檔案的包型別,但並不一定使用表中列出的對應檔案後綴。
  3. 3.0 3.1 3.2 3.3 1.18.0.21之前的路徑:
    • 資源包:/sdcard/games/com.mojang/resource_packs
    • 行為包:/sdcard/games/com.mojang/behavior_packs
    • 外觀包:/sdcard/games/com.mojang/skin_packs
    • 世界模板:/sdcard/games/com.mojang/world_templates
  4. 資源包和附加包需以資料夾的形式放在附加包檔案內,不能有多餘嵌套資料夾。
    •  <pack_name.mcaddon>
      •  <behavior_pack>
        •  manifest.json
        •  pack_icon.png
        • ……
      •  <resource_pack>
        •  manifest.json
        •  pack_icon.png
        • ……

使用[edit]

附加包匯入遊戲後,其中資源包可在設定的「全域資源」一欄找到(若資源包清單檔案"pack_scope"的值為world,則不會在此處顯示)。在此啟動的資源包將在整個遊戲中使用,例如遊戲主介面、單人存檔、多人聯機、伺服器(多人遊戲中如果伺服器端啟用了「強制紋理」則資源包將無法生效)。

在世界設定中,「資源包」和「行為包」兩欄分別可以設定該世界中使用的資源包行為包,設定後不會作用於除此世界外的其他地方。勾選「資源包」選單中的「要求玩家接受資源包才能加入」選項可以使此世界只使用「資源包」選單中啟動了的資源包,而不會受「全域資源」中已啟動的資源包的影響。

已匯入的外觀包會在自訂角色中「經典外觀」目錄的「已擁有」一欄顯示,玩家可以在此處選擇並使用外觀包中的外觀。

點擊世界列表選單欄中的「新建」按鈕,在「建立」選單下方「匯入的模板」處會顯示已匯入的世界模板。點擊世界模板進入世界設定可建立該模板中的世界,若清單檔案中"lock_template_options"的值為true,則「遊戲選項」選單將會被鎖上,點擊「解鎖模板世界選項」按鈕可將該選單解鎖,但修改模板世界設定可能會導致遊戲體驗不能到達作者預期效果。

遊戲設定的「儲存」選單中列出了所有的附加包,在此處可以管理和檢視已擁有附加包。

你知道嗎[edit]

  • 不同的平台有不同的路徑長度限制。算上包或世界的路徑,平台會計算匯入到Minecraft裡的目錄長度。如果長度超出限制,包會匯入失敗並且會變成無效狀態。正因如此,我們建議:保持路徑長度為70字元或更少,即從包或世界模板的根目錄到一個檔案的最長路徑長度應該只能有70字元長。路徑中的每一部分(目錄或檔案名)必須小於60字元。否則,一些平台將無法識別這一部分。

Template:ModFormat Template:Navbox Addon