カスタムレシピ:成形、不定形、そしてすべての木材を列挙する代わりにタグを使用する方法
成形レシピがクラフトできない場合、通常はキーが間違っているか、パターンがパディングされています。ここでは、JSON、8つのレシピを1つにまとめるタグのトリック、そしてテスト方法を紹介します。
レシピは、データパックファイルの中でも最も簡単に書けるものの一つですが、同時に微妙に間違えやすいものでもあります。なぜなら、壊れたレシピはサイレントに失敗し、クラフトグリッドが何も反応しなくなるからです。
成形レシピ (Shaped recipe)
{
"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 recipe)
{
"type": "minecraft:crafting_shapeless",
"ingredients": ["minecraft:stone", "minecraft:coal"],
"result": { "id": "minecraft:torch", "count": 4 }
}
順序は関係ありません。重複するアイテムはそれぞれ一度ずつリストする必要があります。石炭が2つ必要なら、2つのエントリが必要です。
タグで複数のレシピを一つにまとめる
8種類の板材に対して8つのレシピを用意する代わりに:
"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 を受け取ります。石切り (stonecutting) は単一の材料と数を取ります。
テスト
/reload を実行してからグリッドを試してください。何も起こらない場合:
- リロード時のチャットを確認してください — 不正な形式のJSONはそこで報告されます。
/recipe give @s <namespace>:<recipe>を実行してください — レシピIDが間違っている場合、エラーが発生し、ファイルが全く読み込まれていないことがわかります。- レシピのアンロックはレシピの存在とは別です。レシピは、レシピ本に表示されなくてもグリッドで機能します。
Datapack JSON Builders でキーとタグがチェックされたレシピ、プレディケート、キットのJSONを作成してください。