TOP > チュートリアル一覧 > Minecraft MOD でレシピを追加する方法 1.12.2の場合
投稿:2018年5月15日

今回は、Minecraft JE版 1.12.2 用のMOD製作チュートリアルです。
1.12.2 では、作業台レシピがリソースに移動するなど、大きな仕様変更が入りました。1.12.2 におけるレシピの追加方法について、鎮守府MODのソースを見ながら解説をしていきます。
鎮守府MODのソースは GitHub で公開していますので、気になる方はそちらをご覧ください。
1.リソースで追加する作業台レシピ
Minecraft 1.12.2 では、作業台を使うレシピを .jsonファイル で記述して、リソースに入れるようになっています。
レシピがリソースとなるため、アイテムやブロックとは RegistryName または UnlocalizedName で紐付けされます。ちなみに鎮守府MODは、ModelResourceLocation(item.getRegistryName(), “inventory“) といったソースを使っており、RegistryName による紐付けを行っています。
追加要素が多い場合などで漏れなくレシピを用意するには、itemパッケージの .jsonファイルをコピーペーストして、中身をレシピに書き換えるのが良いでしょう。
1-1.定形レシピの追加
まずは、定形レシピのチュートリアルです。
クラフトに必要な素材だけでなく、作業台スロットに置くときの形までを指定するレシピを定形レシピと呼んでいます。1.12.2 における定形レシピは、次のようなソースになります。
・鋼材ブロック
recipes/block_steel_block.json
|
・空箱(木)
recipes/block_empty_box.json
|
“type”:・・・レシピの型の宣言で、定形であるため shaped
“group”:・・・レシピブックでの分類に使う
“pattern”:・・・3×3のスロットで置く形を指示。何も置かない箇所は半角スペース
“key”:・・・”pattern”で使ったアルファベットに対応させて素材を指示
“item”:・・・素材アイテムのほか、ブロックも ItemBlock として処理を行うため item:で指示
“data”:・・・木材や原木、羊毛など、メタデータ値があるときに使う
“result”:・・・クラフトで出来るものを指示
“count”:・・・クラフトで出来るものの数量
1-2.不定形レシピの追加
次は、不定形レシピのチュートリアルです。
不定形レシピとは、クラフトに必要な素材だけを指示して、作業台スロットで置く形は指示しないレシピのことです。
・ハンバーグ生地
recipes/item_kiji_burg.json
|
“type”:・・・レシピの型の宣言で、定形であるため shapeless
“group”:・・・レシピブックでの分類に使う
“ingredients”:・・・クラフトに必要な素材を指示する
“item”:・・・素材アイテムのほか、ブロックも ItemBlock として処理を行うため item:で指示
“data”:・・・原木や羊毛など、メタデータ値があるときに使う
“result”:・・・クラフトで出来るものを指示
“count”:・・・クラフトで出来るものの数量
1-3.特殊なレシピについて
作業台レシピの中には、次のような特殊なものもあります。
1-3-1.アイテムの耐久値を消費するレシピ
野菜を切るための包丁や瓶入りの調味料など、リアルに近いクラフトを考えていると、クラフトを繰り返すたびに耐久値や容量が減っていくアイテムを作りたくなる場合があります。そんな時に使うのが、耐久値を消費するレシピです。
レシピで記述するのは、「アイテムの耐久値を消費する」ことだけです。そのため、別途、クラスの方 でも耐久最大値や耐久値を消費していく処理を記述する必要があります。
鎮守府MODでは、紙と提督ノ決裁印の耐久値とを消費して、工廠指示書 (item_work_order) をクラフトするレシピで使っています。
・工廠指示書
recipes/item_workorder.json
|
“data”: 32767 を使うことで、素材の耐久値を消費するレシピとなります。
1-3-2.鉱石辞書を使ったレシピ
アルミニウムや錫、サファイアなど、Minecraft には素材アイテムを増やす Mod も多く、これらの素材アイテムを共通化する鉱石辞書という仕組みもあります。
そのため、レシピには、次のように鉱石辞書を利用した記述方法があります。
・フライパン
recipes/block_food_frypan.json
|
素材を { “type”: “forge:ore_dict”, “ore”: “ingotAluminium” } と記述することで、鉱石辞書のアルミニウムインゴットを素材とするレシピとなります。
レシピで記述するのは、「鉱石辞書にある○○を素材に使う」ことだけです。そのため、自分のMODで追加する素材アイテムを鉱石辞書へ登録するには、別途、クラス の方で記述が必要となります。
1-3-3.素材アイテムに別パターンを持つレシピ
オークの木材でもシラカバの木材でもクラフトできるチェストのように、素材アイテムに別パターンを持っているレシピを作ることも可能です。
鎮守府MODでは、生成物と素材アイテムの実装順が前後したため、しめ縄や鏡餅、門松が素材アイテムに別パターンを持っています。
・鏡餅
recipes/block_kagamimochi.json
|
鏡餅では、素材Xに小麦を使うパターンと米を使うパターンの2つがあります。ソースには、”X”: [ { “item”: “minecraft:wheat”, “data”: 0 }, { “item”: “chinjufumod:item_kome”, “data”: 0 } ] と記述をしています。
2.クラスで追加する定形レシピ
1.12.2のレシピは基本的にリソースの方で追加していきますが、クラスでも追加することが可能です。
鎮守府MODには、バニラのアイテムをクラフトするレシピがあり、これらをクラスの方で記述しています。
例として、草ブロックから粘土を作るレシピと、空薬莢を鉄インゴットに戻すレシピを挙げています。
CraftingChinjufuMod.java
|
RecipeHandler.java
ChinjufuMod.java
※不定形レシピは、ソースが複雑になる上に、鎮守府MODでも使用していないため割愛します。
3.かまどを使う精錬レシピはクラスで追加
続いて、かまどを使うレシピを追加するチュートリアルです。
かまどを使う精錬レシピについては、クラスで追加を行います。
ソースでは、素材と精錬されるアイテムのほか、精錬で得られる経験値を記述します。アイテムに関して数量やメタデータ値を入れる場合は、(アイテム, 数量, メタデータ値)のようにコンマで区切ります。
例として、マッチが骨粉になるレシピと、成形した粘土(茶碗)を茶碗に精錬するレシピを挙げています。
SmeltingChinjufuMod.java
|
RecipeHandler.java
ChinjufuMod.java
まとめ
1.12.2 からレシピの追加にリソースを使うようになったこともあり、チュートリアルも長くなりました。
クラスを使った作業台レシピの追加に関しては、必要がなければ覚えなくても良い部分です。まずは基本となるリソースを使って追加する作業台レシピと、クラスを使って追加するかまどレシピの追加方法に慣れていきましょう。
ソースの書き方について、鎮守府MODが改行をしている箇所は、バニラのそれとは異なっています。
minecraft/recipes/acacia_door.json
バニラでの記述 { 私の記述方法 { |
Minecraft はソース内の改行箇所を大して気にしないことから、「私はこの方が読みやすい」という自分の癖を優先しています。MOD製作では、改行位置の変更やコメントアウトを使った注釈を入れると、ソースも扱いやすくなると思います。
このチュートリアルは参考になりましたか? シェアはこちらをご利用ください。
Was this tutorial helpful? Please use here for market share.
当サイトは年間6,480円のサーバー代がかかるため、投げ銭をしてもらえると助かります。
This site costs 6,480 yen per year for server fee. It will be helpful if you make a donation.
Bitcoinで投げ銭をする Bitcoin donations
MONAで投げ銭をする MONA donations
