はじめに
ここでは以下のページでご紹介させて頂いたアドオンパックで実装しているオリジナルアイテムを例に挙げてカスタムレシピの作り方をご紹介します。
カスタムレシピはこの環境内で使っているオリジナルアイテムの取得手段の一つとして利用しています。
ルートテーブルと同じくカスタムレシピでもJSON形式で記載しますのでJSONの仕様を理解している前提で話を進めます。
定義ファイルの所在
ビヘイビアパックのルートディレクトリ直下にあるrecipes
というディレクトリ内で定義します。
例えばバニラのビヘイビアパックの場合は以下の構成になっています。
/<ビヘイビアパックのルート>
/recipes
この中に大量の定義ファイルが格納されています。
これに対してカスタムビヘイビアパックの構成は以下の通り。
/for-family
/recipes
furnace_sanma.json 「焼きさんま」の精錬レシピを定義しているファイル
hayabusa_sword_symmetry.json 「はやぶさの剣」の左右対象レシピを定義しているファイル
hayabusa_sword.json 「はやぶさの剣」の単体レシピを定義しているファイル
immovable_rod_symmetry.json 「不動の杖」の左右対象レシピを定義しているファイル
immovable_rod.json 「不動の杖」の単体レシピを定義しているファイル
thunder_sword_by_arrow.json 「いなずまの剣」の無形レシピ(いなずまの矢を消費)を定義しているファイル
thunder_sword_by_stone.json 「いなずまの剣」の無形レシピ(召雷の魔石を消費)を定義しているファイル
thunder_sword_revised_by_arrow.json 「いなずまの剣改」の無形レシピ(いなずまの矢を消費)を定義しているファイル
thunder_sword_revised_by_stone.json 「いなずまの剣改」の無形レシピ(召雷の魔石を消費)を定義しているファイル
ご覧のようにこの環境での定義ファイルは上記の9つのみです。
これら以外の定義ファイルはバニラのデータがデフォルトとして自動的に適用されるので気にする必要はありません。
レシピの種類
レシピには大きく分けると以下の4種類があります。
- 炉のレシピ(minecraft:recipe_furnace)
- 形状レシピ(minecraft:recipe_shaped)
- 醸造レシピ(minecraft:recipe_brewing_container)
- 鍛冶レシピ(minecraft:recipe_smithing_transform)
ここでは「炉のレシピ」と「形状レシピ」、および「無形レシピ」の作り方をご紹介します。
炉のレシピ
以下の内容は「生さんま」を「焼きさんま」へ精錬するレシピです。
このレシピで必要になるアイテムは以下の通りです。
▼精錬前のアイテム「生さんま(customize:sanma)」
▼精錬後のアイテム「焼きさんま(customize:cooked_sanma)」
レシピファイルの内容は以下の通りです。
{
"format_version": "1.20.10",
"minecraft:recipe_furnace": {
"description": {
"identifier": "minecraft:furnace_sanma"
},
"unlock": [
{
"context": "AlwaysUnlocked"
}
],
"tags": ["furnace", "smoker", "campfire", "soul_campfire"],
"input": "customize:sanma",
"output": "customize:cooked_sanma"
}
}
炉のレシピで使われるパラメータは以下の通りです。
【description】
- ・identifier
- レシピの識別子を指定します。基本的に任意の文字列が指定可能です。
【unlock】
ここにはロックされているレシピを解除する条件を指定します。
一般的にはitem
というキーと共にロックの解除条件となるアイテム名を指定するようですが、今回はcontext
というキーにAlwaysUnlocked
を指定する事で常に解除された状態にしています。
【tags】
精練に使うブロックのタグ名を指定します。
今回は以下の4つを指定しています。
【input】
精錬前のアイテム名を指定します。
【output】
精錬後のアイテム名を指定します。
精練イメージは以下の通り。
-
かまどの場合
-
smoker(燻製器)
-
campfire(焚き火)
焼きあがったらポップコーンのように跳ねた後アイテムドロップ状態になります。
-
soul_campfire(魂の焚き火)
焚き火の時と同様にポップコーンのように跳ねた後アイテムドロップ状態になります。
形状レシピ
ここでは作業台を使った以下の「不動の杖」のレシピをご紹介します。
このレシピで必要になるアイテムは以下の2点と木の棒です。
▼不動の魔石(customize:immovable_stone)
▼浮遊の羽(customize:floating_feather)
これらのアイテムの詳細は以下のページでご紹介させて頂いております。
また、釣れるアイテムの例として以下のページでもご紹介させて頂いております。
「不動の杖」のレシピは以下の3パターンで定義しています。
▼パターン②(immovable_rod_symmetry.json)
▼パターン③(immovable_rod_symmetry.json)
レシピファイルの内容は以下の通りです。
{
"format_version": "1.20.10",
"minecraft:recipe_shaped": {
"description": {
"identifier": "minecraft:immovable_rod"
},
"tags": [ "crafting_table" ],
"assume_symmetry": false,
"priority": 1,
"pattern": [
"YXY",
" #",
" #"
],
"key": {
"#": {
"item": "minecraft:stick"
},
"X": {
"item": "customize:immovable_stone"
},
"Y": {
"item": "customize:floating_feather"
}
},
"unlock": [
{
"context": "AlwaysUnlocked"
}
],
"result": {
"item": "customize:immovable_rod"
}
}
}
{
"format_version": "1.20.10",
"minecraft:recipe_shaped": {
"description": {
"identifier": "customize:immovable_rod_symmetry"
},
"tags": [ "crafting_table" ],
"assume_symmetry": true,
"priority": 1,
"pattern": [
"XY",
"Y#",
" #"
],
"key": {
"#": {
"item": "minecraft:stick"
},
"X": {
"item": "customize:immovable_stone"
},
"Y": {
"item": "customize:floating_feather"
}
},
"unlock": [
{
"context": "AlwaysUnlocked"
}
],
"result": {
"item": "customize:immovable_rod"
}
}
}
形状レシピで使っているパラメータは以下の通りです。
【description】
- ・identifier
- レシピの識別子を指定します。基本的に任意の文字列が指定可能でpriorityパラメータと連動します。
【tags】
今回は作業台を使うのでcrafting_table
を指定しています。
【assume_symmetry】
- ・左右対称で使う場合
- trueを指定します。
- ・patternパラメータに定義したパターンのみ使う場合
- falseを指定します。
【priority】
同じアイテムのレシピが複数ファイルある場合、優先順を決める整数を指定します。
数字の小さい方が優先度が高くなり、優先度が最も高い定義ファイルが適用されます。
但しそれはdescriptionパラメータのidentifier
が同じ場合に適用されるルールなので、その識別子が異なる場合はその限りではありません。
単体レシピ(immovable_rod.json)と左右対称レシピ(immovable_rod_symmetry.json)とでは、それぞれで異なる識別子を指定しているので複数のパターンを共存させています。
【pattern】
keyパラメータで設定されているキーを使ってクラフト時の素材の配置パターンを指定します。
慣習的に木材素材の場合は"#"が使われているようなので、今回もそれに倣って指定しています。
【key】
patternパラメータで使用するためのキーと素材アイテム名をペアにした定義を指定します。
キーに指定する文字については、スペース文字以外であれば基本的に何を指定しても問題ないようです。
【unlock】
ここにはロックされているレシピを解除する条件を指定します。
一般的にはitem
というキーと共にロックの解除条件となるアイテム名を指定するようですが、今回はcontext
というキーにAlwaysUnlocked
を指定する事で常に解除された状態にしています。
【result】
クラフトの結果取得できるアイテムの属性情報を以下の形式で指定します。
- ・item
- アイテムID
- ・data
- アイテムのデータ値
- ・count
- アイテムの数量
※ここではデータ値を指定できますが、>> ルートテーブルの書き方のページでご紹介した方法で作ったカスタムアイテムは残念ながら指定できません(データ値が耐久値とすり替わってしまうようです)。また、関数指定などもできませんので注意が必要です。
無形レシピについて
形状レシピの派生版のようなものですが、同じように作業台をはじめ他のレシピアイテム等を使ってアイテムの配置には関係のない無形のレシピを作る事ができます。
ここでは以下のページでご紹介させて頂いた「いなずまの剣」のレシピを例に挙げてご紹介します。
「召雷の魔石」を消費する場合
レシピファイルの内容は以下の通りです。
{
"format_version": "1.20.10",
"minecraft:recipe_shapeless": {
"description": {
"identifier": "customize:thunder_sword_by_stone"
},
"tags": [ "crafting_table" ],
"priority": 0,
"ingredients": [
{
"item": "minecraft:netherite_sword",
"data": 0,
"count": 1
},
{
"item": "customize:thunder_stone",
"data": 0,
"count": 1
}
],
"unlock": [
{
"context": "AlwaysUnlocked"
}
],
"result": {
"item": "customize:thunder_sword",
"data": 0,
"count": 1
}
}
}
「いなずまの矢」を消費する場合
レシピファイルの内容は以下の通りです。
{
"format_version": "1.20.10",
"minecraft:recipe_shapeless": {
"description": {
"identifier": "customize:thunder_sword_by_arrow"
},
"tags": [ "crafting_table" ],
"priority": 0,
"ingredients": [
{
"item": "minecraft:netherite_sword",
"data": 0,
"count": 1
},
{
"item": "minecraft:arrow",
"data": 411,
"count": 1
}
],
"unlock": [
{
"context": "AlwaysUnlocked"
}
],
"result": {
"item": "customize:thunder_sword",
"data": 0,
"count": 1
}
}
}
無形レシピで使われるパラメータは以下の通りです。
【description】
- ・identifier
- レシピの識別子を指定します。基本的に任意の文字列が指定可能でpriorityパラメータと連動します。
【tags】
今回は作業台を使うのでcrafting_table
を指定しています。
【priority】
同じアイテムのレシピが複数ファイルある場合、優先順を決める整数を指定します。
数字の小さい方が優先度が高くなり、優先度が最も高い定義ファイルが適用されます。
但しそれはdescriptionパラメータのidentifier
が同じ場合に適用されるルールなので、その識別子が異なる場合はその限りではありません。
「召雷の魔石」を使ったレシピ(thunder_sword_by_stone.json)と「いなずまの矢」を使ったレシピ(thunder_sword_by_arrow.json)とでは、それぞれで異なる識別子を指定しているので複数のパターンを共存させています。
【ingredients】
素材として使用する以下のようなアイテムの属性情報をリスト形式で指定します。
- ・item
- アイテムID
- ・data
- アイテムのデータ値
- ・count
- アイテムの数量
形状レシピの時とは異なって、データ値や数量を指定できますので、>> ルートテーブルの書き方のページでご紹介した方法で作ったカスタムアイテムでも指定できます。
数量を指定した場合、1スロットに複数個のアイテムを配置しても認識してくれませんので、”1スロット=1アイテム”で配置する必要があります。
【unlock】
ここにはロックされているレシピを解除する条件を指定します。
一般的にはitem
というキーと共にロックの解除条件となるアイテム名を指定するようですが、今回はcontext
というキーにAlwaysUnlocked
を指定する事で常に解除された状態にしています。
【result】
クラフトの結果取得できるアイテムの属性情報を以下の形式で指定します。
- ・item
- アイテムID
- ・data
- アイテムのデータ値
- ・count
- アイテムの数量
ここでも形状レシピの場合と同じ理由で、>> ルートテーブルの書き方のページでご紹介した方法で作ったカスタムアイテムは残念ながら指定できません。また、関数指定などもできないようなので注意が必要です。
おわりに
マインクラフトのバージョン1.21.31
時点のformat_version
の現在の最新は1.20.10
です。
カスタムアイテムの場合、アイテム名の前には必ずネームスペース(今回の場合は”customize”)を付けるようにしましょう。