TOP > チュートリアル一覧 > Minecraft MOD でブロックを追加する方法 1.12.2の場合
更新:2018年5月2日 投稿2018年4月24日

今回は、Minecraft JE版 1.12.2 用のMOD製作チュートリアルです。
ブロックの追加方法について、実際に鎮守府MODのソースを見ながら解説をしていきます。
なお、記事中のリンク先に載せたソースは、説明の混乱を避けるために不要な部分を削除してあります。鎮守府MODのソースは GitHub で公開していますので、気になる方はそちらをご覧ください。
1.ブロック1つを追加する場合
まずは、鎮守府MOD の【空箱(木)】を例にして、ブロック追加のチュートリアルをします。
1-1.クラスの相関関係イメージ
ChinjufuMod[1.12.2] では、ブロックを追加するためのクラスを役割に応じて分割しており、クラスの参照を利用して画像のような関係を作っています。
アイテムと異なり、ブロックには材質や効果音などの性質があるため、必ずクラス(=ブロックなどの設計図)をともないます。
さて、1.10.2 では、MOD のインスタンスを行う ChinjufuMod.java にすべてを集める関係を作っていました。しかし、1.12.2では RegisterEvent を使ってアイテムの登録をするため、上の画像のような形に変わっています。
また、1.12.2 のレシピは resources へ移動するため、基本的には使わない RecipeHandler.java と CraftingChinjufuMod.java は点線にしてあります。
ここで注意が必要なのは、Minecraft のブロックは Block と ItemBlock の2つの側面を持っているため、それぞれに登録が要ることです。
Block としての側面 | 建築などでワールドへ置けるブロックとして |
RegistryEvent.Register<Block>を使って登録 | |
ItemBlock としての側面 | 破壊時のドロップやインベントリで使うアイテムとして |
RegistryEvent.Register<Item>を使って登録 |
1-2.役割に応じた分割結果としての11枚
各クラスの役割は以下の通りです。
ChinjufuMod.java | Modのインスタンス(=製品)を生成する |
Reference.java | よく参照する値の管理 |
ProxyInterface.java | CommonProxyで扱うメソッドを約束 |
CommonProxy.java | サーバーでの処理 |
ClientProxy.java | クライアントでの処理 |
RegistrationHandler.java ※リンクは後述する 1-3 にて |
ブロックと ItemBlock を登録を行う |
ChinjufuModBlocks.java | ブロックと ItemBlock の登録を管理 |
BlockEmptyBox.java | ブロック個別の設計図 |
ChinjufuModItems.java | ItemBlock の登録で使用 |
RecipeHandler.java | レシピの登録 ※1.12.2では基本的に不使用 |
CraftingChinjufuMod.java | レシピ個別の設計図 ※1.12.2では基本的に不使用 |
初めて Minecraft の MOD製作をされる方は「11枚も使うの?」と思うかもしれません。また、やろうと思えば「ItemChawan.java」の1枚にまとめることも可能です。
しかし、アイテムを復数追加することを考えると、役割ごとにクラスを分ける方が作業は楽になります。
1-3.実際のクラス関係と各ソースへのリンク
さらに鎮守府MODでは、ソースの管理のしやすさを考えて画像のような書き方をしています。
ソースは、イメージマップの各リンク先にのせています。※ウィンドウ最大化推奨
説明を付け加えると、下記することを行っています。内部クラスに関しては、リンク先のソースを見てもらった方が分かりやすいと思います。
・RegisterEvent を扱う RegistrationHandler.java を分割
・Block の登録を行う部分を ChinjufuModBlocks.java の内部クラスにする
・Block の描画を登録する部分を ClientProxy.java の内部クラスにする
・ChinjufuModItems.java の内部クラスを使って ItemBlock の登録を行う
ItemBlock の登録では、アイテムの登録を行う RegistryEvent.Register<Item> を利用します。そのため、アイテムの登録を管理する ChinjufuModItems.java の内部クラスである RegistrationHandler.java を使って、ItemBlock の登録を行っています。
2.復数のブロックを追加する場合
鎮守府MOD の【空箱(木)】を追加した状態から、さらに鎮守府MOD の【鋼材ブロック】を追加していきます。
2-1.クラスの相関と各ソースへのリンク
復数のアイテムを追加する場合、ChinjufuMod[1.12.2] のクラスの相関関係は下図のようになります。
ソースは、イメージマップの各リンク先にのせています。※ウィンドウ最大化推奨
あらかじめクラスを役割ごとに分割してあるため、アイテム単体の追加から変化するのは赤くした2枚のクラスだけで、他は触る必要がありません。
もし、BlockEmptyBox.javaで1枚、BlockSteelBlock.javaで1枚とやっていくと、重複するコードをそれぞれのクラスに書く必要がでてきます。
まとめ
ここまでの作業で実行テストをおこなうと、画像のような状況になっているはずです。
1.12.2 ではレシピも resources に移動しますが、バニラのクリエイティブタブへの割り振りをしておくと、ブロックを登録できているかどうかの確認は簡単にできます。
このチュートリアルは参考になりましたか? シェアはこちらをご利用ください。
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
