教學:製作附加包/配方

出自Minecraft基岩版开发Wiki
配方
系列教學
所屬系列
難易度
初級
前置知識
適用版本
國際版
實踐裝置
Windows
所需軟件

在閱讀本教學前,請先確保自身已有一定的附加包基礎。在瀏覽完本教學之後,你將學會如何自訂配方。

概述[編輯]

配方使遊戲元素更加豐富,並為許多內容加入了取得途徑。在學習了自訂物品方塊後,您已經為遊戲加入了一些新元素,現在將嘗試學習透過自訂配方來為它們加入取得的途徑。

配方儲存在行為包的recipes資料夾中。

在這之前[編輯]

加入自訂配方首先需要了解一下自訂配方 行為部分的基本結構。 自訂配方組態檔的數據結構如下:

{
  "format_version": "1.12",
  "各配方适用组件": {
    "description": {  },//描述
    "tags": [ ],//标签(适用方块)
  }
}

如上,配方組態檔基本由描述、配方類別、配方輸入、配方材料與配方輸出五部分內容構成,而配方輸入、配方材料和配方輸出需要定義各型別配方自有的元件才能被定義。下面對上述基本內容進行了簡要闡述:
描述 (description) 物件儲存了用於描述該配方的基礎資訊,其數據結構如下:

//...
"description": {
  "identifier": "配方的赋命名空间标识符"
},
//...

該屬性用於在應用於某個世界的所有包中唯一標識配方。配方識別碼沒有名稱空間要求,只要單個包中沒有兩個相同的配方識別碼可以匹配即可。
配方標籤(tags)陣列儲存了用於描述該配方適用於哪種配方功能方塊,其內容如下:

//...
"tag": [
  "crafting_table",//说明该配方可适用于原版工作台
  ...//可多选
]
//...

你已經掌握了配方組態檔基本概念,接下來是各個配方的細微差異

合成配方[編輯]

有序配方[編輯]

主條目:有序配方

有序配方定義了一個需要固定合成形狀的配方,須使用"minecraft:recipe_shaped"才能被定義。

有序配方特殊的是需要定義形狀,因此和其他配方的定義格式不同,在於多了樣式陣列和各組成部分的定義,以下是詳細描述:

樣式 (pattern) 陣列儲存了用於描述該配方的排列樣式,其內容中有多組字串,每組字串代表合成表中的一行,字串由1-3個字元組成,每個字元在該配方中代表一個物品。 如果您需要將某一格留空,請使用空格,如果某一列為空,請刪除代表本列的空格。 下面是一個配方的樣式範例

    "pattern": [
      "XX",
      "X#",
      " #"
    ]

此配方代表一個類似於原版斧頭的配方排列方式。 配方材料(key)物件儲存了用於描述該配方樣式中的字元代表的物品,物品可以透過字串引用或items物件,字串引用的內容如下:

"字符":"物品的赋命名空间标识符:物品特殊值"//:物品特殊值为可选项,不填则所有特殊值均可

items物件的內容如下:

      "字符": {
        "item": "物品赋命名空间标识符"
        "data": "物品特殊值,支持Molang,可选项"
        "count": "物品数量,可选项"//此处不可用,物品数量仅在items对象作为工作台配方的合成结果时可用。
      }

下面是原版斧頭的配方

{
  "format_version": "1.12",
  "minecraft:recipe_shaped": {
    "description": {
    "identifier": "minecraft:diamond_axe"
    },
    "tags": [ "crafting_table" ],
    "pattern": [
      "XX",
      "X#",
      " #"
    ],
    "key": {
      "#": {
        "item": "minecraft:stick"
      },
      "X": {
        "item": "minecraft:diamond"
      }
    },
    "result": {
      "item": "minecraft:diamond_axe"
    }
  }
}

結果 (result) 物件儲存了用於描述該配方的製作連接嘅物品,物品可以透過字串引用或items物件,引用方法同上。

無序配方[編輯]

主條目:無序配方

無序配方與有序配方的基本結構同理,只不過將"minecraft:recipe_shaped"元件替換成"minecraft:recipe_shapeless"元件以實現無序配方。

以下是原版合成打火石無序配方的json檔案:

{
  "format_version": "1.12",
  "minecraft:recipe_shapeless": {
    "description": {
    "identifier": "minecraft:flint_and_steel"
    },
    "tags": [ "crafting_table" ],
    //与有序配方不同处
    "ingredients": [
      {
        "item": "minecraft:iron_ingot"
      },
      {
        "item": "minecraft:flint"
      }
    ],
    "result": {
      "item": "minecraft:flint_and_steel"
    }
  }
}

由此可見,無序配方與有序配方的不同處是將"pattern""key"的子元件替換成"ingredients"的子元件。

"ingredients"子元件只需要建立若干個json物件存放"item"元件,輸入需要物品的賦命名空間識別碼即可。

熔爐配方[編輯]

主條目:熔爐配方

熔爐配方同理,也是替換成熔爐配方所適用的"minecraft:recipe_furnace"元件。

下面以原版生雞肉透過熔爐等烹飪獲得烤雞的json檔案為例:

{
  "format_version": "1.12",
  "minecraft:recipe_furnace": {
    "description": {
    "identifier": "minecraft:furnace_chicken"
    },
    "tags": ["furnace", "smoker", "campfire", "soul_campfire"],
    //与其他配方不同处
    "input": "minecraft:chicken",//输入
    "output": "minecraft:cooked_chicken"//输出
  }
}

由此可見,熔爐配方僅需加入"input""output"元件,再輸入需要物品的賦命名空間識別碼即可。

釀造配方[編輯]

主條目:釀造配方
釀造配方與其他配方類似,不過會依據原版特性細分,具體如下:

藥水容器型別配方[編輯]

此為藥水改變瓶子型別的配方組態,須加入"minecraft:recipe_brewing_container"元件。 此為原版藥水透過火藥煉成飛濺型藥水的json組態檔:

{
"format_version": "1.12",
"minecraft:recipe_brewing_container": {
"description": {
  "identifier": "minecraft:brew_potion_sulphur"
  },
  "tags": [ "brewing_stand" ],
  "input": "minecraft:potion",
  "reagent": "minecraft:gunpowder",
  "output": "minecraft:splash_potion"
  }
}

藥水效果配方[編輯]

此為合成藥水效果的配方,須加入"minecraft:recipe_brewing_mix"元件決定該配方。 以下是原版粗製藥水用烈焰粉合成力量藥水的json組態檔:

{
"format_version": "1.12",
"minecraft:recipe_brewing_mix": {
"description": {
  "identifier": "minecraft:brew_awkward_blaze_powder"
  },
  "tags": [ "brewing_stand" ],
  "input": "minecraft:potion_type:awkward",
  "reagent": "minecraft:blaze_powder",
  "output": "minecraft:potion_type:strength"
  }
}

由此可見,釀造配方與熔爐配方類似,只不過增加了"reagent"子元件指定加工物。

< 方塊 | 戰利品表 >