自称中級者のMinecraft日記 Eclipseで艦これMOD(仮)に挑戦 防具の追加1 登録用Armorクラス
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

自称中級者のMinecraft日記 Eclipseで艦これMOD(仮)に挑戦 防具の追加1 登録用Armorクラス

2016-10-14 18:04
  • 6
<目 次>
開発環境の構築編
最初に書くメインクラスの基本形

防具の追加1 登録用Armorクラス
防具の追加2 Materialクラス
防具の追加3 個別クラス
防具の追加4 Proxy・実行テスト
防具の追加5 リソース、ローカライズ
防具の追加6 複数の防具を追加

アイテムの追加1 アイテムの登録まで
クリエイティブタブの追加
ブロックの追加1 ブロックの登録まで
レシピの追加1 作業台を使うクラフト
MODのリリーステストの準備
鉱石ブロック1 アイテムをドロップするブロック
鎮守府MOD の配布はじめました
――――――――――――――――――――――――――――――――――――――――

はじめに

MOD でアイテムやブロックを追加するには、アイテムやブロックの要素を設定するコードと、そのアイテムやブロックを登録するコードを書く必要があります。

この防具の追加では、吹雪型ダンボール艤装を Minecraft へ実装するのを目指すのですが、吹雪型だけの追加ならそれこそメインクラス1枚に要素と登録を詰め込んでしまえます。しかし、もともと「バニラのテクスチャを変えるだけなら4種類が限界で、追加数が足りない」ということから始まった MOD 制作であり、メインクラス1枚には収まりません。

霞型を追加したり、時雨型を追加したり、さらに燃料缶や弾薬箱といった防具意外を追加したりとなると、イメージとしてはこんな感じになっていきます。

要素ごとに個別クラスを作り、個別クラスを参照しにいくメインクラスで登録を引き受けるという形です。この場合、アイテムが増える度に、メインクラスのコード数が増えていきます。コード数が増えると、エラーが発生した時に原因を特定するのに時間が掛かりますし、単純に読み直すのがしんどくなっていきます。

そこで、メインクラスと個別クラスの間に登録クラスを挟むことで、メインクラスが大きくなることを抑えたいと思います。

このように登録を分散させると、メインクラスで増えていくコードは、登録クラスの参照を指示するコードだけで済みます。制作中にエラーが出た時に切り離しをし易いのも、役割を分散させることの利点です。

Armorクラス を書こう

ということで、防具登録用に Armorクラス を作ろうと思います。

Armor は、Minecraftの二分論では設置のできない Item に分類でき、Itemsという登録クラスでまとめることもあります。しかし、なるべく分散化させたいため、ChinjufuMOD では Armorクラスに分けて登録していきます。

まずは クラス を入れるための パッケージ を用意します。


パッケージの名前は「 init 」にしました。init は initialization の略です。他の名前でも良さそうですけど、initialization の中身であるため、ここは init とすることが多いようです。


init の中に、防具の登録を行うクラスとして「 ChinjufuModArmor 」を作ります。


ChinjufuModArmor の中は、initialization と register でこんな基本形になります。


ここに、それぞれを支援するメソッドを追加します。

registryNamename とする方が一般的なようでしたが、ブロックを追加する時などはregistryName の方が良いと感じているので、registryName を使っています。

次回以降に説明するクラスを含んでいますが、ここに吹雪型ダンボール艤装を登録すると、最終的に次のようになります。

public static Item FUBUKI_HELMET  でクラス内で用いる名前を固定値で宣言
FUBUKI_HELMET = registerItem(); でメソッドに対応させてアイテムを登録
registerRender(FUBUKI_HELMET); でアイテムのモデルを登録します

(つづく)
広告
×
また質問すみません。registerとgetRenderItemとModelResourceLocationとgetRegistryNameの波線がいくら直しても出るんですが1.8以上と1.7.10では構成が違うのですか?
23ヶ月前
×
1.7.10は詳しく触っていないので分かりませんが、かなり異なるのではないでしょうか。

http://minecraftjp.info/modding/index.php/1.7の防具追加

のほか、1.7.10用のModを作られている方のページをお探しください。
23ヶ月前
×
>>3わざわざすみません。地道にあさりながら作ることにします
23ヶ月前
×
失礼します。GameRegistry.register(~の、.registerに波線が出て、[型 GameRegistry のメソッド register(K) は引数 (Item, ResourceLocation)に適用できません]とメッセージが出ます。このエラーを解決するにはどうすればよいのでしょうか…
23ヶ月前
×
>>5
GameRegistry周辺は、2016年当時に使っていたこの方法を止めているので、こちらをご参照ください。

防具であれば、initのパッケージの中にある New_ChinjufuModArmor.java が該当します。

https://github.com/Ayutaki-Shou/ChinjufuMod3.x
23ヶ月前
×
>>6
ありがとうございます!参考にさせていただきます!
23ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。