こんばんは。Nakanishiです。
Discordサーバーを運営中です。
一緒にゆるくMod制作を楽しみませんか?
初心者も大歓迎です。
※)日本語での会話ができる方のみ参加可能です。
条件に合わない方は参加をご遠慮ください。
前回のおさらい
仮のBarrelBlockを作りました。
JavaでMinecraftのModを作ろう☆ GUIブロック編① 〜仮のブロックを作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座
今回はBlockEntityというクラスを仮の形で作っていこうと思います。
例えば樽やかまどのように、中にアイテムを保持するブロックは必ずBlockEntityを持っています
※)今回の記事は応用編なので、基礎編を読んでいる前提です。
まずBlockEneityの説明ですが、GUIブロックの中身やデータを保存するクラスになります。
BlockEneityがないままで仮にGUI表示が出来たとして、BlockEneityがなければただのスクリーンでしかありません。
なので、GUIブロックには必須のクラスとなります。
①BlockEntityのクラスを作ろう
名前は【PaleOakBarrelBlockEntity】にしました。

樽やチェストのようなブロックは【RandomizableContainerBlockEntity】というクラスを使います。

【RandomizableContainerBlockEntity】というクラスはインベントリと持ち、必要ならダンジョンのチェストのように、ランダム生成も出来るコンテナ用のブロックのクラスになります。
赤線が引かれているのは必要な引数とメソッドが足りない為です。
赤線のところで右クリックをして【Show Context Actions】を選択します。
そうしたらまず、【Implement methods】をして、最低限必要なメソッドを表示させてあげてください。

この画面が出たら【OK】で大丈夫です。
そうすると5つの@Overrideが出て、メソッドが表示されます。
それでも赤線が引かれていると思いますので、また【Show Context Actions】を選択して、【Creat constructor matching super】を選んであげてください。

このままでも良いのですが、パラメータと引数が仮表示になっているので整えてあげます。
例)
protected PaleOakBarrelBlockEntity(BlockPos pos, BlockState state) {
super(pos, state);
}

赤線が引かれているのは引数が足りないからであって、まだ入力出来ないので大丈夫です。BlockEneityを登録した後に修正します。
次に【setItems】と【createMenu】のメソッドの仮の引数を直してあげます。
setItems例)
@Override
protected void setItems(NonNullList<ItemStack> items) {
}
createMenu例)
@Override
protected AbstractContainerMenu createMenu(int id, Inventory playerInventory) {
return null;
}

これで仮のBlockEntityのクラスは一旦完成です。
赤線が引かれていますが、次回修正します。
ここまでお疲れ様でした☆
次回は今回作ったBlockEneityのクラスを登録して、赤線が消えるまでしようと思います。
もしこの記事が参考になった、または「JavaでMod制作を始めてみたい!」と思っていただけたら、ぜひ読者登録をお願いします。
それではまた次回お会いしましょう。
ここまでお読みいただき、ありがとうございました。
【次回記事】
JavaでMinecraftのModを作ろう☆ GUIブロック編③ 〜仮のBlockEneityを登録しよう〜 - NakanishiのForge1.20.1のJavaMod開発講座