【レシピの作り方】
はじめに
カスタムレシピはこの環境内で使っているオリジナルアイテムの取得手段の一つとして利用しています。
ここでは本環境内で実装しているオリジナルアイテムを例に挙げてカスタムレシピの作り方をご紹介します。
※ルートテーブルと同じくカスタムレシピでもJSON形式で記載しますのでJSONの仕様を理解している前提で話を進めます。
ここでは本環境内で実装しているオリジナルアイテムを例に挙げてカスタムレシピの作り方をご紹介します。
※ルートテーブルと同じくカスタムレシピでもJSON形式で記載しますのでJSONの仕様を理解している前提で話を進めます。
定義ファイルの所在
ビヘイビアパックのルートディレクトリ直下にある
例えばバニラのビヘイビアパックの場合は以下の構成になっています。
レシピを定義しているディレクトリ
この中に大量の定義ファイルが格納されています。
これに対して本環境の構成は以下の通り。
本環境のビヘイビアパック内の定義ファイル
ご覧のように本環境での定義ファイルは上記の9つのみです。
これら以外の定義ファイルはバニラのデータがデフォルトとして自動的に適用されるので気にする必要はありません。
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)」

レシピファイルの内容は以下の通りです。
furnace_sanma.json
炉のレシピで使われるパラメータは以下の通りです。
一般的には
今回は以下の4つを指定しています。
精練イメージは以下の通り。
このレシピで必要になるアイテムは以下の通りです。
▼精錬前のアイテム「生さんま(customize:sanma)」

▼精錬後のアイテム「焼きさんま(customize:cooked_sanma)」

レシピファイルの内容は以下の通りです。
furnace_sanma.json
{ "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つを指定しています。
-
furnace(かまど)
-
smoker(燻製器)
-
campfire(焚き火)
-
soul_campfire(魂の焚き火)
input
精錬前のアイテム名を指定します。output
精錬後のアイテム名を指定します。精練イメージは以下の通り。
-
かまどの場合
-
smoker(燻製器)
-
campfire(焚き火)
焼きあがったらポップコーンのように跳ねた後アイテムドロップ状態になります。
-
soul_campfire(魂の焚き火)
焚き火の時と同様にポップコーンのように跳ねた後アイテムドロップ状態になります。
形状レシピ
ここでは作業台を使った「不動の杖」のレシピをご紹介します。
このレシピで必要になるアイテムは以下の2点と木の棒です。
▼不動の魔石(customize:immovable_stone)

▼浮遊の羽(customize:floating_feather)

「不動の杖」のレシピは以下の3パターンで定義しています。
▼パターン①(immovable_rod.json)

▼パターン②(immovable_rod_symmetry.json)

▼パターン③(immovable_rod_symmetry.json)

レシピファイルの内容は以下の通りです。
immovable_rod.json(単体レシピ)
immovable_rod_symmetry.json(左右対称レシピ)
形状レシピで使われるパラメータは以下の通りです。
数字の小さい方が優先度が高くなり、優先度が最も高い定義ファイルが適用されます。
但しそれはdescriptionパラメータの
単体レシピ(immovable_rod.json)と左右対称レシピ(immovable_rod_symmetry.json)とでは、それぞれで異なる識別子を指定しているので複数のパターンを共存させています。
慣習的に木材素材の場合は"#"が使われているようなので、今回もそれに倣って指定しています。
キーに指定する文字については、スペース文字以外であれば基本的に何を指定しても問題ないようです。
一般的には
このレシピで必要になるアイテムは以下の2点と木の棒です。
▼不動の魔石(customize:immovable_stone)

▼浮遊の羽(customize:floating_feather)

「不動の杖」のレシピは以下の3パターンで定義しています。
▼パターン①(immovable_rod.json)

▼パターン②(immovable_rod_symmetry.json)

▼パターン③(immovable_rod_symmetry.json)

レシピファイルの内容は以下の通りです。
immovable_rod.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" } } }
immovable_rod_symmetry.json(左右対称レシピ)
{ "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
- アイテムの数量
無形レシピについて
形状レシピの派生版のようなものですが、同じように作業台をはじめ他のレシピアイテム等を使ってアイテムの配置には関係のない無形のレシピを作る事ができます。
ここでは「いなずまの剣」のレシピを例に挙げてご紹介します。

▼レシピパターン

レシピファイルの内容は以下の通りです。
thunder_sword_by_stone.json

▼レシピパターン

レシピファイルの内容は以下の通りです。
thunder_sword_by_arrow.json
無形レシピである事を表す識別子は
無形レシピで使われるパラメータは以下の通りです。
数字の小さい方が優先度が高くなり、優先度が最も高い定義ファイルが適用されます。
但しそれはdescriptionパラメータの
「召雷の魔石」を使ったレシピ(thunder_sword_by_stone.json)と「いなずまの矢」を使ったレシピ(thunder_sword_by_arrow.json)とでは、それぞれで異なる識別子を指定しているので複数のパターンを共存させています。
※数量を指定した場合、1スロットに複数個のアイテムを配置しても認識してくれませんので、”1スロット=1アイテム”で配置する必要があります。
一般的には
ここでは「いなずまの剣」のレシピを例に挙げてご紹介します。
「召雷の魔石」を消費する場合
▼必要な素材
▼レシピパターン

レシピファイルの内容は以下の通りです。
thunder_sword_by_stone.json
{ "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 } } }
「いなずまの矢」を消費する場合
▼必要な素材
▼レシピパターン

レシピファイルの内容は以下の通りです。
thunder_sword_by_arrow.json
{ "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 } } }
無形レシピである事を表す識別子は
minecraft:recipe_shapeless
です。無形レシピで使われるパラメータは以下の通りです。
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
- アイテムの数量
おわりに
マインクラフトのバージョン
カスタムアイテムの場合、アイテム名の前には必ずネームスペース(今回の場合は”customize”)を付けるようにしましょう。
1.21.31
時点のformat_version
の現在の最新は1.20.10
です。カスタムアイテムの場合、アイテム名の前には必ずネームスペース(今回の場合は”customize”)を付けるようにしましょう。