version.json是mojang提供的用於查詢單個版本資訊的清單檔案,其檔案名為<版本號>.json,通常儲存在.minecraft/versions/<版本号>資料夾下。用於啟動器下載某個特定的遊戲版本。
檔案下載
該檔案可以透過version_manifest.json檔案提供的URL下載。
檔案大體結構
version.json使用JSON結構來儲存及取出數據。下面列出了對其中主要JSON鍵值的解釋:
| 鍵 | 類型 | 説明 |
|---|---|---|
| arguments | Map | 參數列表,分為JVM及game類型為列表的子鍵,分別用於指定目前版本的JVM參數及遊戲參數,在1.13之前,該鍵由gameArguments代替。 |
| assetIndex | Map | 目前版本的資源檔案索引,包含其下載地址等資訊。 |
| assets | 字串 | 目前版本的資源檔案版本。 |
| downloads | Map | 包含用戶端及伺服器端下載地址等資訊。 |
| libraries | Map | 遊戲所有依賴庫,包含其下載地址等資訊。 |
| logging | Map | log4j組態檔,包含其下載地址等資訊。 |
| mainClass | 字串 | 主類名。 |
| releaseTime | 字串 | 使用ISO 8601格式化的數據,用於表示版本的發佈時間。 |
| time | 字串 | 使用ISO 8601格式化的數據,用於表示版本的更新時間。 |
| type | 字串 | 版本類型,可以是:release(正式版)、snapshot(快照)、old_beta(Beta版)或old_alpha(Alpha版)。 |
規則(rules)
arguments下的game和JVM鍵中可能不止有字串,也可能會是包含rules鍵的一個Map。像這樣包含rules的Map也可能出現在libraries列表中的每一項中。
rules通常會有以下內容:
| 鍵 | 類型 | 説明 |
|---|---|---|
| action | 字串 | 對目前項執行的操作,可以是allow(允許)或disallow(不允許),若滿足其餘鍵值,則執行該action。 |
| features | Map | 對應啟動器內設定,通常是一個布爾變數。 |
| os | Map | 目前系統相關的要求,有name(系統名稱)、version(系統版本)和arch(系統架構)。 |
資源索引
用於資源索引的json檔案的相關資訊儲存在assetIndex鍵中,擁有以下內容:
| 鍵 | 類型 | 説明 |
|---|---|---|
| id | 字串 | 資源索引的識別碼。 |
| size | 整型 | 資源索引檔案的檔案大小。 |
| totalSize | 整型 | 所有資源檔案的總大小。 |
| url | 字串 | 下載資源索引檔案的完整URL。 |
用戶端/伺服器端
用戶端和伺服器端的資訊分別儲存在downloads下的client和server兩個鍵,擁有以下相同格式的內容:
| 鍵 | 類型 | 説明 |
|---|---|---|
| sha1 | 字串 | 用戶端/伺服器端的sha1校驗碼。 |
| size | 整型 | 用戶端/伺服器端的檔案大小。 |
| url | 字串 | 下載用戶端/伺服器端的完整URL。 |
依賴庫
依賴庫檔案相關資訊以列表的形式儲存在libraries鍵下,幾乎都有downloads和name兩個鍵。downloads村粗了依賴庫檔案的下載相關資訊,而name是依賴庫的完整包名。
普通依賴庫檔案
普通的依賴庫檔案儲存在downloads鍵下的artifact中,擁有以下內容:
| 鍵 | 類型 | 説明 |
|---|---|---|
| path | 字串 | 普通依賴庫檔案相對於libraries資料夾的路徑。 |
| sha1 | 字串 | 普通依賴庫檔案的sha1校驗碼。 |
| size | 整型 | 普通依賴庫檔案的檔案大小。 |
| url | 字串 | 普通依賴庫檔案的完整URL。 |