Minecraft MOD でアイテムを追加する方法 1.12.2の場合

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.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では、ソースの管理のしやすさを考えて画像のような書き方をしています。

ソースは、イメージマップの各リンク先にのせています。※ウィンドウ最大化推奨

特性のあるアイテム 1.12.2

Reference.java ChinjufuMod.java ProxyInterface CommonProxy.java ClientProxy.java, RegistrationHandler RecipeHandler.java CraftingChinjufuMod.java TTimeItems.java, RegistrationHandler ItemChawan.java

説明を付け加えると、下記することを行っています。

・RegisterEvent を扱う RegistrationHandler.java を分割
・アイテムの登録を行う部分を TTimeItems.java の内部クラスにする
・アイテムの描画を登録する部分を ClientProxy.java の内部クラスにする

内部クラスに関しては、リンク先のソースを見てもらった方が分かりやすいと思います。

 

2.復数のアイテムを追加

次は、追加するアイテムが複数ある場合のチュートリアルです。

鎮守府MOD の【茶碗】は【成形された粘土(茶碗)】を焼いて作るため、【成形された粘土(茶碗)】を追加してみます。

 

2-1.クラスの関係と各ソースへのリンク

復数のアイテムを追加する場合、ChinjufuMod[1.12.2] のクラスの相関関係は下図のようになります。

ソースは、イメージマップの各リンク先にのせています。※ウィンドウ最大化推奨

復数のアイテムを追加 1.12.2

Reference.java ChinjufuMod.java ProxyInterface CommonProxy.java ClientProxy.java, RegistrationHandler RecipeHandler.java CraftingChinjufuMod.java TTimeItems.java, RegistrationHandler ItemChawan.java ItemClay_Chawan.java

あらかじめクラスを役割ごとに分割してあるため、アイテム単体の追加から変化するのは赤くした2枚のクラスだけで、他は触る必要がありません。

もし、ItemChawan.javaで1枚、ItemClay_Chawan.javaで1枚とやっていくと、重複するコードをそれぞれのクラスに書く必要がでてきます。

 

3.特性を持たないアイテムの追加

続いて、鎮守府MOD の【小麦粉】を例に、クラス(=アイテムなどの設計図)を持たないアイテムの追加について解説をします。

 

3-1.クラスの関係と各ソースへのリンク

ChinjufuMod[1.12.2] では、アイテムを追加するためのクラスを役割に応じて分割しており、クラスの参照を利用して画像のような関係を作っています。

ソースは、イメージマップの各リンク先にのせています。※ウィンドウ最大化推奨

特性を持たないアイテム 1.12.2

 

Reference.java ChinjufuMod.java ProxyInterface CommonProxy.java ClientProxy.java, RegistrationHandler RecipeHandler.java CraftingChinjufuMod.java TTimeItems.java, RegistrationHandler

 

まとめ

ここまでのチュートリアルに沿って実行テストをすると、画像のような状況になっているはずです。

アイテム追加後のテスト 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

¥
Personal Info

Terms

Donation Total: ¥100

MONAで投げ銭をする MONA donations
MONAで投げ銭をする MONA donations. tipmonaとは?

コメントを残す

メールアドレスが公開されることはありません。

コメント

お名前

ウェブサイトURL

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください