概要
MODで追加したブロックやアイテムを作成するためのレシピを登録します。
データパックと同様の方法で登録するため、JSONの記述だけで済み、Javaを触る必要がありません。このページはほとんどデータパックの解説になります。
動作確認
2020年11月28日
- Minecraft 1.16.4
- Forge 35.1.0
解説
チタンブロックのレシピ
TitaniumMod/src/main/resources/data/titaniummod/recipes/titanium_block.json
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###",
"###"
],
"key": {
"#": {
"item": "titaniummod:titanium_ingot"
}
},
"result": {
"item": "titaniummod:titanium_block"
}
}
チタンインゴット9個からチタンブロック1個が作られる定形レシピです。
"type": "minecraft:crafting_shaped"
は、このファイルが定形レシピの記述であることを示します。
"pattern": [ "###", "###", "###" ]
は、#
に対応するアイテム9個を並べるよう指定します。
"key": { "#": { "item": "titaniummod:titanium_ingot" } }
は、pattern
の#
にチタンインゴットを対応させます。
"result": { "item": "titaniummod:titanium_block" }
は、レシピの完成品にチタンブロックを指定します。
チタンインゴットのレシピ
TitaniumMod/src/main/resources/data/titaniummod/recipes/titanium_ingot_from_titanium_block.json
{
"type": "minecraft:crafting_shapeless",
"group": "titanium_ingot",
"ingredients": [
{
"item": "titaniummod:titanium_block"
}
],
"result": {
"item": "titaniummod:titanium_ingot",
"count": 9
}
}
チタンブロック1個からチタンインゴット9個が作られる不定形レシピです。
"type": "minecraft:crafting_shapeless"
は、このファイルが不定形レシピの記述であることを示します。
"group": "titanium_ingot"
は、このレシピをグループtitanium_ingot
に入れます。今回はこの記述はなくても問題ありませんが、鉄塊と鉄ブロックから作られる鉄インゴットのように、複数のレシピをレシピブックでまとめて表示するために使う機能です。
"ingredients": [ { "item": "titaniummod:titanium_block" } ]
は、チタンブロックを1個、材料として指定します。
"result": { "item": "titaniummod:titanium_ingot", "count": 9 }
は、レシピの完成品にチタンインゴット9個を指定します。
レシピと進捗の関係
Minecraftのレシピは材料となるアイテムを入手した時などにレシピブックに記載されます。この仕様は、非表示の進捗を達成した報酬としてレシピ情報を解禁する形で実装されています。MODで追加したレシピをバニラのレシピと同様にレシピブックに登録するため、以下の進捗を追加しています。
チタンブロックのレシピの進捗
TitaniumMod/src/main/resources/data/titaniummod/advancements/recipes/building_blocks/titanium_block.json
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"titaniummod:titanium_block"
]
},
"criteria": {
"has_titanium_ingot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "titaniummod:titanium_ingot"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "titaniummod:titanium_block"
}
}
},
"requirements": [
[
"has_titanium_ingot",
"has_the_recipe"
]
]
}
チタンブロックのレシピをレシピブックに追加する条件を指定します。
"rewards": { "recipes": [ "titaniummod:titanium_block" ] }
は、進捗達成の報酬としてレシピ情報を指定します。
has_titanium_ingot
は、この進捗を達成する基準(criterion)の1つです。プレイヤーのインベントリが更新された時、チタンインゴットがあると満たされます。
has_the_recipe
は、この進捗を達成する基準の1つです。プレイヤーがコマンドなどの手段でレシピ情報を取得した時に満たされます。
"requirements": [ [ "has_titanium_ingot", "has_the_recipe" ] ]
は、2つの基準のうちどちらか1つを満たすことを、進捗達成の条件として要求します。
チタンインゴットのレシピの進捗
TitaniumMod/src/main/resources/data/titaniummod/advancements/recipes/misc/titanium_ingot_from_titanium_block.json
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"titaniummod:titanium_ingot_from_titanium_block"
]
},
"criteria": {
"has_titanium_block": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "titaniummod:titanium_block"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "titaniummod:titanium_ingot_from_titanium_block"
}
}
},
"requirements": [
[
"has_titanium_block",
"has_the_recipe"
]
]
}
チタンブロックからチタンインゴット9個を作るレシピをレシピブックに追加する条件を指定します。チタンブロックを所持するか、コマンドなどの手段でレシピ情報を取得した時に達成されます。
応用
進捗の記述は上と同様です。
複数種類の素材を要求する定形レシピ
金インゴット4個と鉄ブロック5個を並べてダイヤモンド2個を作るレシピです。
{
"type": "minecraft:crafting_shaped",
"pattern": [
"GIG",
"III",
"GIG"
],
"key": {
"G": {
"item": "minecraft:gold_ingot"
},
"I": {
"item": "minecraft:iron_block"
}
},
"result": {
"item": "minecraft:diamond",
"count": 2
}
}
複数の素材を要求する不定形レシピ
空色の染料2個と鉄インゴット1個からダイヤモンド1個を作るレシピです。
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
{
"item": "minecraft:light_blue_dye"
},
{
"item": "minecraft:light_blue_dye"
},
{
"item": "minecraft:iron_ingot"
}
],
"result": {
"item": "minecraft:diamond"
}
}
かまどと溶鉱炉の精錬レシピ
チタンブロックを精錬して鉄ブロックを作るレシピです。
recipes/iron_block.json
{
"type": "minecraft:smelting",
"ingredient": {
"item": "titaniummod:titanium_block"
},
"result": "minecraft:iron_block",
"experience": 0.35,
"cookingtime": 200
}
recipes/iron_block_from_blasting.json
{
"type": "minecraft:blasting",
"ingredient": {
"item": "titaniummod:titanium_block"
},
"result": "minecraft:iron_block",
"experience": 0.35,
"cookingtime": 100
}
過去の質問
ポーションをレシピの素材に指定する方法はありますか?
上述の方法では、水入り瓶を含めたすべてのポーションを、効果の区別なしに指定することしかできません。
ポーションはNBTにより効果を管理しています。NBTを扱うレシピは上述の手段では追加できないため、SpecialRecipe
を継承したクラスを作り、そのコンストラクタを引数にSpecialRecipeSerializer
のインスタンスを作ってIRecipeSerializer
としてForgeに登録する必要があります。