清單檔案

出自Minecraft基岩版开发Wiki

清單檔案(Manifest)是 Minecraft 用於判定某個資料夾是否為一個附加包的檔案,該檔案中儲存了這個包的一些基本組態資訊,如包型別、包版本、描述、UUID 等等。Minecraft 會在執行時嘗試載入包儲存路徑下所有子資料夾中的清單檔案,若含有且成功載入,則該資料夾會被遊戲判定為一個包。

清單檔案以JSON檔案的形式被放置於附加包的根目錄下,檔案名必須manifest.json

數據結構[編輯]

屬性名稱 描述
format_version 定義了清單的目前版本。除非有需要,否則請勿變更。
header 清單的標頭物件,用於定義包的一些基本資訊。
屬性名稱 數據型別 描述
base_game_version Vector[ a, b, c] 世界模板所需的基本遊戲版本,格式為[主版本,副版本,修訂版](x.x.x)。遊戲將據此決定要使用的遊戲資源和行為包版本。
description String 關於附加包的簡短説明。它會出現在遊戲中附加包名稱的下方,建議保持在1行以內。
name String 該附加包的名稱。
lock_template_options Boolean 用於阻止玩家修改世界的選項。(任何世界模板都需要此選項。)
pack_scope String 用於限制附加包的顯示範圍,填寫為 world 可以僅在世界設定界面中顯示附加包而不會在全域資源中顯示。
uuid String 一種特殊的識別碼,是一種區分附加包的好方法。建議使用uuid生成器來生成以保證其獨特性。
version Vector[ a, b, c]或SemVer String 附加包的版本號,格式為[主版本,副版本,修訂版](x.x.x)匯入同一個附加包時會用到,如果新的附加包版本更高,那麼就替換為新版本;如果新的附加包版本低於舊版,則忽略。
min_engine_version Vector[ a, b, c] 此為能使用本附加包的Minecraft的最低引擎版本,可以透過它確定附加包是否能向下相容。
modules 描述了附加包的模組。
屬性名稱 數據型別 描述
uuid String 一種特殊的識別碼,格式同 header 。注意,每個模組的的 uuid 都應該各不相同。
description String 關於此模組的簡短説明,建議保持在 1 行以內。
version Vector[ a, b, c] 此模組的版本號,格式同 header
type String 模組的型別,一般填 data
dependencies 描述了此附加包所依賴的附加包,如果此包不存在,則會出現錯誤。
屬性名稱 數據型別 描述
uuid String 所依賴的附加包中的唯一識別碼,它應該和所依賴的附加包 header 中的 uuid 完全一致。
version Vector[ a, b, c]或SemVer String 你所依賴的附加包的版本。注意,此版本應該和所依賴的附加包中的清單檔案匹配。
capabilities 用於定義附加包的功能範圍。
屬性名稱 描述
experimental_custom_ui 啟用實驗性自訂UI功能。
chemistry 啟用教育版功能。
raytraced 啟用光線追蹤功能。
metadata 儲存了附加包的有關資料資訊。
屬性名稱 數據型別 描述
authors Array 附加包作者的名字。
license String 附加包的版權證書。
url String 附加包的網站主頁。

模組型別[編輯]

清單檔案的模組中,type屬性的值決定了此模組的型別。不同型別的模組擁有着不同的標識能力,目前主要分為兩類,一是用於標識附加包的型別,不同型別的附加包在載入時會被遊戲放置在不同的檔案目錄下;二是用於標識該附加包所啟用的一些特殊功能。在匯入附加包時,遊戲會取得該包擁有的所有模組,根據不同型別的模組對附加包的型別及需要啟用的一些特殊功能進行判定,並做出相應操作。下表列出了type可填的值。

包型別 描述
資源包 "resources" 擁有該模組的附加包會被遊戲判定為資源包,該包會被放在數據儲存目錄的resource_packs資料夾中,並顯示在遊戲全域資源或資源包選單中。在載入該包時,遊戲會以資源包的讀取方式來讀取該包。
行為包 "data" 擁有該模組的附加包會被遊戲判定為行為包,該包會被放在數據儲存目錄的behavior_packs資料夾中,並顯示在遊戲行為包選單中。在載入該包時,遊戲會以行為包的讀取方式來讀取該包。
外觀包 "skin_pack" 擁有該模組的附加包會被遊戲判定為外觀包,該包會被放在數據儲存目錄的skin_packs資料夾中,並顯示在自訂角色的「經典外觀」的「已擁有」一欄中,玩家可在遊戲中使用外觀包中的外觀。在載入該包時,遊戲會以外觀包的讀取方式來讀取該包。
世界模板 "world_template" 擁有該模組的附加包會被遊戲判定為世界模板包,該包會被放在數據儲存目錄的world_templates資料夾中,並顯示在遊戲世界模板選單中。載入該包時,遊戲會以世界模板的讀取方式來讀取該包。此型別包的清單檔案中可以包含lock_template_options屬性。
- "script" 擁有該模組的附加包,可啟用官方提供的新腳本API,由該模組中entry屬性決定遊戲執行腳本時的入口檔案,language屬性決定語言。一般與data模組共用。
- "interface" 加入該模組的附加包在裝載進世界後不可卸下。
- "persona_piece" 擁有該模組的附加包可用於定義外觀部件

範例[編輯]

行為包

{
  "format_version": 1,
  "header": {
    "description": "Example behavior pack",
    "name": "Vanilla Behavior Pack",
    "uuid": "ee649bcf-256c-4013-9068-6a802b89d756",
    "version": [1, 0, 0]
  },
  "modules": [
    {
      "description": "Example behavior pack module",
      "type": "data",
      "uuid": "fa6e90c8-c925-460f-8155-c8a60b753caa",
      "version": [1, 0, 0]
    }
  ],
  "dependencies": [
    {
      "uuid": "66c6e9a8-3093-462a-9c36-dbb052165822",
      "version": [1, 0, 0]
    }
  ]
}

資源包

{
  "format_version": 1,
  "header": {
    "description": "Example resource pack",
   "name": "Vanilla Resource Pack",
   "uuid": "66c6e9a8-3093-462a-9c36-dbb052165822",
   "version": [1, 0, 0],
   "min_engine_version": [1, 2, 6]
  },
  "modules": [
    {
      "description": "Example resource pack",
      "type": "resources",
      "uuid": "743f6949-53be-44b6-b326-398005028819",
      "version": [1, 0, 0]
    }
  ]
}

世界模板

{
  "format_version": 1,
  "header": {
    "name": "Example world",
    "uuid": "d3ce13f3-0a18-4286-aa91-3e82792d23f8",
    "lock_template_options": true
    "version": [1, 0, 0]
  },
  "modules": [
    {
      "type": "world_template",
      "uuid": "f7785f25-7583-42d1-895d-fce59df6b474",
      "version": [1, 0, 0]
    }
  ]
}

外觀包

{
  "format_version": 1,
  "header": {
    "name": "Persona",
    "uuid": "86efe7ee-a28e-4d6c-9892-8a0270257554",
    "version": [1, 0, 0]
  },
  "modules": [
    {
      "type": "skin_pack",
      "uuid": "e204cca7-36e6-4c8a-8872-8689ad16ded5",
      "version": [1, 0, 0]
    }
  ]
}