カスタムレシピのメモ書き

カスタムレシピ

いくつかのアイテムを他のアイテムに変換するための設定JSON。データパックで指定可能。

以下のレシピを好きに作れる。

  • インベントリでのクラフト
  • 作業台でのクラフト
  • かまどでの製錬
  • 燻製器での製錬
  • 溶鉱炉での製錬
  • 焚き火での製錬
  • 石切り台でのクラフト

カスタムレシピの置き場所

datapack/<データパック>/data/<パック>/recipes/<レシピ名>.json

もしもバニラの挙動を置き換える場合は、

datapack/<データパック>/data/minecraft/recipes/<置き換える対象>.json

JSONの内容

共通のプロパティ

{
    "type": "minecaraft:crafting_shaped",
    "group": "x"
}
プロパティ 説明 定義値 必須
type クラフトのタイプ。
このタイプによって他のプロパティが異なる。
- crafting_shaped : 形が固定のクラフトレシピ
- crafting_shapeless : 形が自由なクラフトレシピ
- smelting : かまどのレシピ
- smoking : 燻製器のレシピ
- blasting : 溶鉱炉のレシピ
- campfire_cooking : 焚き火のレシピ
- stonecutting : 石切り台のレシピ
string
group 複数のレシピを1つにまとめるタグ。
ここが同じ文字のレシピは、1つのレシピヘルパーとして扱われる。
(インベントリのレシピを見た時に1つにまとめられる)
string

形が固定なクラフトのプロパティ

作業台やインベントリで使える形が固定のクラフトレシピのみ。

{
    "pattern": [
        " A ",
        "BBB"
    ],
    "key": {
        "A": {
            "item": "minecraft:stone"
        },
        "B": {
            "tag": "x:stones"
        }
    },
    "result": {
        "item": "minecraft:diamond",
        "count": 2
    }
}
プロパティ 説明 定義値 必須
pattern レシピの形。
任意の1文字で種類を配置する。
空白は何も置かないという設定。
list
key patternで使った文字に割り当てるアイテム。
アイテムIDitemもしくはアイテムタグtagを指定可能。
object
result.item クラフト後のアイテム。 string
result.count クラフト後のアイテムの数。 number

形が自由なクラフト共通のプロパティ

作業台やインベントリで使える配置が決まっていないクラフトレシピのみ。

{
    "ingredients": [
        {
            "item": "minecraft:stone"
        },
        {
            "tag": "x:armors"
        }
    ],
    "result": {
        "item": "minecraft:diamond",
        "count": 2
    }
}
プロパティ 説明 定義値 必須
ingredients クラフトに使うアイテム。
アイテムIDitemもしくはアイテムタグtagを指定可能。
list
result.item クラフト後のアイテム。 string
result.count クラフト後のアイテムの数。 number

製錬のクラフト共通のプロパティ

かまど、燻製器、溶鉱炉、焚き火のクラフトレシピ。

{
    "ingredient": [
        {
            "item": "minecraft:stone"
        },
        {
            "tag": "x:armors"
        }
    ],
    "result": "minecraft:diamond",
    "experience": 0.1,
    "cookingtime": 200
}
プロパティ 説明 定義値 必須
ingredient クラフトに使うアイテム。
アイテムIDitemもしくはアイテムタグtagを指定可能。
list
result クラフト後のアイテム。 string
experience クラフト完了時に経験値を取得できる確率。
0~1の間で指定。
number
cookingtime クラフト完了までかかる時間(tick)。 number

石切りのクラフトのプロパティ

石切り台のクラフトレシピ。

{
    "ingredient": [
        {
            "item": "minecraft:stone"
        },
        {
            "tag": "x:armors"
        }
    ],
    "result": "minecraft:diamond",
    "count": 1
}
プロパティ 説明 定義値 必須
ingredient クラフトに使うアイテム。
アイテムIDitemもしくはアイテムタグtagを指定可能。
list
result クラフト後のアイテム。 string
count クラフト後のアイテムの数。 number

サンプル

時計のクラフトレシピ

{
  "type": "minecraft:crafting_shaped",
  "pattern": [
    " # ",
    "#X#",
    " # "
  ],
  "key": {
    "#": {
      "item": "minecraft:gold_ingot"
    },
    "X": {
      "item": "minecraft:redstone"
    }
  },
  "result": {
    "item": "minecraft:clock"
  }
}

金インゴットの製錬レシピ

{
  "type": "minecraft:smelting",
  "ingredient": {
    "item": "minecraft:gold_ore"
  },
  "result": "minecraft:gold_ingot",
  "experience": 1.0,
  "cookingtime": 200
}

レシピの覚え方

パック名をminecraftにして、バニラの情報を書き換える

デフォルトの挙動が変わるので注意

コマンドでレシピを覚える

## レシピを覚える
recipe give @p x:original_recipe

進捗でレシピを覚える

{
    :
    "rewards": {
        "recipes": ["x:original_recipe"]
    }
}

クラフト後のアイテムにNBTを指定する

現状、クラフト元のアイテムやクラフト後のアイテムにはNBTを指定できません。

なので、多少強引ではありますが、クラフト後のアイテムだけでもNBTを指定するために、進捗を使って強制的にアイテムの置き換えを行います。

アイテムのクラフト結果を「知識の本にする」

{
    :
    "result": {
        "item": "minecraft:knowledge_book"
    }
}

進捗で「レシピ開放」を検知してファンクションを呼び出す

{
    "criteria": {
        "placeholder": {
            "trigger": "minecraft:recipe_unlocked",
            "conditions": {
                "recipe": "x:original_recipe"
            }
        }
    },
    "rewards": {
        "function": "x:unlock_recipe"
    }
}

ファンクションで「知識の本」を取り替える

# 知識の本を消す
clear @s knowledge_book
# アイテムを渡す
give @s (アイテム)
# 再度トリガーをかけるため、進捗を取り消す
advancement revoke @s only x:advancement
# レシピも消しておく
recipe take @s x:recipe