こんばんは。Nakanishiです。
Discordサーバーを運営中です。
一緒にゆるくMod制作を楽しみませんか?
※)日本語での会話ができる方のみ参加可能です。
条件に合わない方は参加をご遠慮ください。
前回のおさらい
CropBlock(ブロック)のCLASSファイルを完成させました。
JavaでMinecraftのModを作ろう☆ 農業編② 〜CropBlock(ブロック)のCLASSファイルを作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座
今回はSeedItem(アイテム)のCLASSファイルを作っていこうと思います。
①CLASSファイルを編集しよう
JavaでMinecraftのModを作ろう☆ 食料編① 〜フードプロパティを追加しよう〜 - NakanishiのForge1.20.1のJavaMod開発講座
編集するアイテムは上記の記事で作った【Prismarine Carrot】を編集します。

この状態では植えれるアイテムになっていない為、【Item】を変更する必要があります。
基本、作物には【ItemNameBlockItem】というものを使います。
これは名前をブロック側から持ってくるというクラスになります。
ですが、JadeやWTHITに安定して対応させるためには、今まで通り両方の翻訳を用意しておくと安心です。
それでは変更をしていきましょう。
例)
extends ItemNameBlockItem

変更することで赤線が引かれますが、これは対応するブロックを指定していないだけなので、安心してください。
ここで
public Item_Prismarine_Carrot() {
super(new Item.Properties()
.food(NakanishiModFoods.PRISMARINE_CARROT)
);
}
ごと消して、仮のパラメータと引数を表示し直す方法もありますが、今回は追記の方法を紹介します。
例)
super(NakanishiModBlocks.Blocks.PRISMARINE_CARROTS.get(),
new Item.Properties()
.food(NakanishiModFoods.PRISMARINE_CARROT)
);

これで【Prismarine Carrot】が耕地に植えれるアイテムになりました。
💡補足
実は【ItemNameBlockItem】は【BlockItem】同様、CLASSファイルを制作しなくても登録する方法があります。実際に【Farmer’s Delight】等では、アイテムのCLASSファイルを用意していません。
ただし、この方法だとアイテムに細かい設定(特殊な挙動やカスタムプロパティなど)を入れられなくなります。
そのため、記事ではCLASSファイルを作成する方法を紹介しています。個人的にもこちらをおすすめします。
これで完成といきたいのですが、まだ設定をしないといけない事があります。

テクスチャの余白の部分が黒く塗りつぶされています。
これはレイヤーの透過処理を設定していない為に起きている現象です。
なので今からレイヤーを設定するCLASSファイルを作っていきます。
②レイヤーを設定するCLASSファイルを作ろう
任意ですが、【client】の【Package】を作って管理しておくと管理が楽になります。
CLASSファイル名は【ClientSetup】にしました。

まず、public class ClientSetupの前に以下の文を入力します。
例)
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)

次にpublic class ClientSetup内に以下の文を入力します。
例)
@SubscribeEvent

これでimport文にimport net.minecraftforge.eventbus.api.SubscribeEvent;が追加されていることを確認してください。
これだけだと@SubscribeEventに赤線が引かれているので、以下の文を追記します。
例)
public static void onClientSetup(FMLClientSetupEvent event){}

これで赤線が全て消えます。ここから【Prismarine Carrots】を登録していきます。
例)
ItemBlockRenderTypes.setRenderLayer(NakanishiModBlocks.Blocks.PRISMARINE_CARROTS.get(),
RenderType.cutout());

これで登録は完了なのですが、setRenderLayerに赤線が引かれてしまっています。
これはこの構文が近いうちに使えなくなるかもしれないよ。という警告の赤線なので、エラーとは違います。バージョンアップの際に違う書き方をしなきゃいけないかもしれない。というだけで、現段階では問題はありません。
ですが、毎回警告が出るのは鬱陶しいので、その警告を打ち消す文を入力します。
@Modの前の行に以下の文を入力してください。
例)
@SuppressWarnings({ "unchecked", "removal" })

これで警告が打ち消されるので、毎回警告が出る事がなくなります。
それでは、もう1度動作確認をしてみましょう。

これで透過処理が通り、黒塗りの部分がなくなりました。
ただ、この段階ではまだ何もドロップしないので、次回の記事で【loot_table】の設定をして収穫が無事に出来るか、成長するかを確認していこうと思います。
ここまでお疲れ様でした☆
もしこの記事が参考になった、または「JavaでMod制作を始めてみたい!」と思っていただけたら、ぜひ読者登録をお願いします。
それではまた次回お会いしましょう。
ここまでお読みいただき、ありがとうございました。
【次回記事】
JavaでMinecraftのModを作ろう☆ 農業編④ 〜農作物(ニンジン)を完成させよう〜 - NakanishiのForge1.20.1のJavaMod開発講座