1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【マインクラフト(統合版)】カスタムレシピの作り方まとめ

Last updated at Posted at 2024-09-16

はじめに

ここでは以下のページでご紹介させて頂いたアドオンパックで実装しているオリジナルアイテムを例に挙げてカスタムレシピの作り方をご紹介します。

カスタムレシピはこの環境内で使っているオリジナルアイテムの取得手段の一つとして利用しています。

ルートテーブルと同じくカスタムレシピでも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)」
焼きさんま

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

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(単体レシピ)
{
    "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
{
    "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
        }
    }
}

無形レシピで使われるパラメータは以下の通りです。

【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”)を付けるようにしましょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?