TOP > チュートリアル一覧 > Minecraft MOD でアイテムを追加する方法 1.12.2の場合
更新:2018年4月27日 投稿:2018年4月18日

今回は、Minecraft JE版 1.12.2 用のMOD製作チュートリアルです。
アイテムの追加方法について、実際に鎮守府MODのソースを見ながら解説をしていきます。
Minecraftのアイテムは、大きく2つに分類できます。
・特性を持つアイテム・・・耐久値などがあるピッケルや剣
・特性を持たないアイテム・・・木の棒やインゴットなど
それぞれの追加方法について、項目を分けて説明をしていきます。
なお、記事中のリンク先に載せたソースは、説明の混乱を避けるために不要な部分を削除してあります。鎮守府MODのソースは GitHub で公開していますので、気になる方はそちらをご覧ください。
1.特性を持つアイテムの追加
まずは、鎮守府MOD の【茶碗】を例にして、クラス(=アイテムなどの設計図)を持っているアイテムの追加についてチュートリアルを進めます。
1-1.クラスの相関関係イメージ
ChinjufuMod[1.12.2] では、アイテムを追加するためのクラスを役割に応じて分割しており、クラスの参照を利用して画像のような関係を作っています。
さて、1.10.2 では、MOD のインスタンスを行う ChinjufuMod.java にすべてを集める関係を作っていました。しかし、1.12.2では RegisterEvent を使ってアイテムの登録をするため、上の画像のような形に変わっています。
1.10.2 に近い形でもできるとは思いますが、個人的には、RegisterEvent を使う方が分かりやすいと感じています。
また、1.12.2 のレシピは resources へ移動するため、基本的には使わない RecipeHandler.java と CraftingChinjufuMod.java は点線にしてあります。
1-2.役割に応じた分割結果としての10枚
各クラスの役割は以下の通りです。
ChinjufuMod.java | Modのインスタンス(=製品)を生成する |
Reference.java | よく参照する値の管理 |
ProxyInterface.java | CommonProxyで扱うメソッドを約束 |
CommonProxy.java | サーバーでの処理 |
ClientProxy.java | クライアントでの処理 |
RegistrationHandler.java ※リンクは後述する 1-3 にて |
アイテムの登録、アイテム描画の登録を行う |
TTimeItems.java | アイテムの登録を管理 |
ItemChawan.java | アイテム個別の設計図 |
RecipeHandler.java | レシピの登録 ※1.12.2では基本的に不使用 |
CraftingChinjufuMod.java | レシピ個別の設計図 ※1.12.2では基本的に不使用 |
初めて Minecraft の MOD製作をされる方は「10枚も使うの?」と思うかもしれません。また、やろうと思えば「ItemChawan.java」の1枚にまとめることも可能です。
しかし、アイテムを復数追加することを考えると、役割ごとにクラスを分ける方が作業は楽になります。
1-3.実際のクラス関係と各ソースへのリンク
さらに鎮守府MODでは、ソースの管理のしやすさを考えて画像のような書き方をしています。
ソースは、イメージマップの各リンク先にのせています。※ウィンドウ最大化推奨
説明を付け加えると、下記することを行っています。
・RegisterEvent を扱う RegistrationHandler.java を分割
・アイテムの登録を行う部分を TTimeItems.java の内部クラスにする
・アイテムの描画を登録する部分を ClientProxy.java の内部クラスにする
内部クラスに関しては、リンク先のソースを見てもらった方が分かりやすいと思います。
2.復数のアイテムを追加
次は、追加するアイテムが複数ある場合のチュートリアルです。
鎮守府MOD の【茶碗】は【成形された粘土(茶碗)】を焼いて作るため、【成形された粘土(茶碗)】を追加してみます。
2-1.クラスの関係と各ソースへのリンク
復数のアイテムを追加する場合、ChinjufuMod[1.12.2] のクラスの相関関係は下図のようになります。
ソースは、イメージマップの各リンク先にのせています。※ウィンドウ最大化推奨
あらかじめクラスを役割ごとに分割してあるため、アイテム単体の追加から変化するのは赤くした2枚のクラスだけで、他は触る必要がありません。
もし、ItemChawan.javaで1枚、ItemClay_Chawan.javaで1枚とやっていくと、重複するコードをそれぞれのクラスに書く必要がでてきます。
3.特性を持たないアイテムの追加
続いて、鎮守府MOD の【小麦粉】を例に、クラス(=アイテムなどの設計図)を持たないアイテムの追加について解説をします。
3-1.クラスの関係と各ソースへのリンク
ChinjufuMod[1.12.2] では、アイテムを追加するためのクラスを役割に応じて分割しており、クラスの参照を利用して画像のような関係を作っています。
ソースは、イメージマップの各リンク先にのせています。※ウィンドウ最大化推奨
まとめ
ここまでのチュートリアルに沿って実行テストをすると、画像のような状況になっているはずです。
最後に、RegisterEvent を使う手法に変えたことに関して。
私も、慣れている 1.10.2 をなぞった記述方法での対応を、当初は模索していました。しかし、Minecraft の register 周りが変わっており、クライアントでは動くもののサーバーでは動かないという形にしかできませんでした。
そんな中でたどり着いたのが RegisterEvent を使う手法で、こちらはすぐにマルチサーバーで動作する確認ができました。
開発当時の時点で「Minecraft 1.13 が出る」という話も聞いており、1.13が出た後に1.12.2版を出しても遅すぎると考えました。そのため、ChinjufuMod[1.12.2] は、すぐに採用できる RegisterEvent を使った手法に変えています。
個人的には、「配布をする以上、ユーザーに使ってもらうことに意味がある」という立場です。そのため、「動くならOK」という判断は必要だと思っています。
このチュートリアルは参考になりましたか? シェアはこちらをご利用ください。
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
