Proxyクラス→クリエイティブタブ追加→追加アイテムの登録までをやります。

Mod用パッケージ私の場合はmoonrosemod.ritualmagicの下の階層に新たにパッケージフォルダを作成。moonrosemod.ritualmagic.proxyの中にCommonProxyクラスを作成。

それから同じくproxyフォルダの中にClientProxyクラスとServerProxyクラスを作成。

ClientProxyとServerProxyクラスはCommonProxyクラスを継承します。

modのメインのクラスRitualMagicクラス

環境整備のところでやったものに赤枠の構文を足します。

青枠はクリエイティブタブのインスタンス化で下記のクラスを作成してから記述します。

RitualMagicTabクラス

クリエイティブタブのアイコンですがまだ独自のものを追加していない場合は

仮に既存のマイクラのアイコンを指定しておきます。

ここまででproxy~クリエイティブタブの追加までは終わりです。

langファイルにクリエイティブタブの追記を忘れずにやっておかないと

itemGroup.ritualmagic_tab と表示されるままです。

 

次に無機能アイテムの登録です。

登録の仕方は二通りありますがアイテム用のクラス作成までは同じです。

これも人によって色々やり方があります。無機能アイテムならクラスもなにも

マイクラのアイテムクラスを使用すればいいのですが登録をいっぺんにやりたいので

無機能アイテムもクラスを作成します。

まずitemフォルダをmoonrosemod.ritualmagicの下の階層に作成して

その中にitem関連のクラスを作成していきます。

インターフェースIModelItemを作成。

新規作成のところにインターフェースもあるのでそれを選択して名前は自分がわかるものなら

好きにつければいいですが大抵インターフェースの頭文字はIがついています。

記述はこれだけです。メソッド名は好きなのをどうぞ。

 

無機能アイテムのクラスを作成

Itemクラスを継承 先ほど作成したインターフェースも継承させます。

Itemクラスを継承しているので必要な部分だけオーバライド。

unlocalizednameとregistrynameは必須。クリエイティブタブは必須じゃないけど

指定しないとどこのタブにも入っていない状態になる。

引数にunlocalizednameを設定しておきます。

自分のクリエイティブタブに入れるように指定していますが条件を設定すれば

~の場合は自分のタブに~の場合はその他へみたいにもできる。

先ほど作成したインターフェースのメソッドの実装が必須なので実装します。

テクスチャの指定メソッドです。

 

登録するクラスを作成

 

まず1つ目の登録のやりかたForgeRegistriesクラスを利用するやりかたです。

ArrayListはインスタンスを格納するための配列みたいなもの。

後から要素を足したり引いたりできるとても便利なものです。

addは末尾に要素を追加。add(int)は指定した番号に要素を挿入。

set(int)は指定した番号の要素を上書き。

get(int)は指定した番号の要素を取り出す。

size()は格納されている要素数を返す。

indexOf()は指定要素が何番目にあるか検索

Iterator<> iterator() 要素を順に処理するイテレータを返す。

remove(int) 指定の番号の要素を削除

clear()全要素を削除

これで追加したいアイテムをどんどん入れていきます。

後はfor~を使って順番に登録とテクスチャの指定もします。

ここでは省略していますがlangファイルやJsonファイル、pngファイルなどもちゃんと整えておく。

 

CommonProxyでこのメソッドを呼び出して初めて反映されます。

 

eventで登録

インポートに気を付ける複数候補が出てくるので間違えないようにする。

iteratorはArrayListを扱うのに使います。同じjava.utilパッケージなので他のものをインポート

しないようにします。

Iteratorのメソッド hasNext()次の要素を指せるか調査しさせればtrue。

なのでtrueの間は~を繰り返せに使用しているのです。

要素を取り出せる間は登録を繰り返せということです。

next()は次の要素を指しその内容を返すメソッドです。

for~のところは同じですがメソッドの引数が違いますので注意です。

event系のメソッドは後にインスタンス化して使用する。

次にCommonProxyでitemRegister();を呼び出す。

preInitでなければならない。

メインクラスのRitualMagicクラスのpreInitで

赤枠の記述を追加する。引数はインスタンスを入れる。

thisは自身のインスタンスをさしているので別クラスにある場合は別クラスのインスタンスを

いれる。

クリエイティブタブは上記の場所(メインのクラス内)でインスタンス化するとマイクラの後、他のmodの前に他のクラスだと一番最後にタブの位置がくるようです。

アイテムの並びが記述順にならないのが不思議。

jeiでは記述順に並んでいるのだが~(;´Д`)

 

ロゴ用の絵を描いてもらったので差し替えました。

加工したのは私ですが元の絵は描いてもらったのです。

私にはこういうセンスが皆無なので(-_-;)

ざっくりとした注文にもかかわらずいいものに仕上がってきたのでわたくしは大喜び♪

太陽と月と薔薇とグリモア的なので影絵っぽいのという注文です(;´∀`)