カスタムレシピ:定形・不定形、そして木材を全部並べずにタグでまとめる方法
定形レシピがクラフトできないときは、たいていキーの指定が間違っています。ここではJSONの中身、ゲームがパターンから自動で取り除いてくれる部分、13個のレシピを1つにまとめるタグの裏技、そしてテスト方法を解説します。
レシピはデータパックの中でも特に書きやすいファイルですが、同時にさりげなく間違えやすいものでもあります。壊れたレシピは静かに失敗する——クラフトグリッドがただ何もしないだけだからです。
定形 (Shaped)
{
"type": "minecraft:crafting_shaped",
"pattern": [ "SSS", "S S", "SSS" ],
"key": { "S": "minecraft:stone" },
"result": { "id": "minecraft:furnace", "count": 1 }
}
失敗のほとんどを引き起こす3つのルール:
patternのすべての文字はkeyに存在しなければならない。ただし空白は例外で、これは空を意味します。- パターンは相対的であり、絶対的ではない。 ゲームは端の空白行・空白列を取り除くので、2×2を空白で埋めて3×3にしてもグリッドのどこでもクラフトできます——ただし2行2列で書いたほうが分かりやすいです。
- すべての行は同じ長さでなければならない。
["SS", "S"]は無効です。
不定形 (Shapeless)
{
"type": "minecraft:crafting_shapeless",
"ingredients": ["minecraft:stone", "minecraft:coal"],
"result": { "id": "minecraft:torch", "count": 4 }
}
順序は関係ありません。重複はそれぞれ1回ずつ記載する必要があります——石炭2個なら2エントリです。
タグで一族を1つのレシピにまとめる
13種類の板材のために13個のレシピを書く代わりに:
"key": { "P": "#minecraft:planks" }
# はアイテムタグを示します。#minecraft:planks、#minecraft:logs、#minecraft:wool、#minecraft:stone_crafting_materials など、すでに何十種類も存在します。自分で定義するには1ファイルで済みます:
data/<namespace>/tags/item/my_metals.json
{ "values": ["minecraft:iron_ingot", "minecraft:gold_ingot"] }
tags/item/ に注目——単数形が item、複数形が tags です。この不整合は実際に存在します。
コンポーネント付きの結果
"result": {
"id": "minecraft:diamond_sword",
"count": 1,
"components": { "minecraft:custom_name": "Excalibur", "minecraft:enchantments": { "sharpness": 5 } }
}
これが、MODなしでカスタムアイテムをクラフト可能にする方法です。
その他のレシピタイプ
crafting_shaped と crafting_shapeless は数あるうちの2つです。他にも利用可能:smelting、blasting、smoking、campfire_cooking、stonecutting、smithing_transform、smithing_trim。調理系は cookingtime と experience を取り、石切りは単一の材料と個数を取ります。
テスト
/reload を実行してからグリッドを試してください。何も起こらない場合:
/reloadの後にゲームログ (latest.log) を確認する——不正なJSONはチャットではなくそこに報告されます。/recipe give @s <namespace>:<recipe>——レシピIDが間違っていればこれがエラーを出し、ファイルがまったく読み込まれていないことが分かります。- レシピの解放はレシピの存在とは別です。レシピブックに一度も表示されなくても、グリッドでは機能します。
レシピ、述語、キットのJSONは、キーとタグをチェック済みのデータパックJSONビルダーで作成しましょう。