こんばんは。Nakanishiです。
Discordサーバーを運営中です。
一緒にゆるくMod制作を楽しみませんか?
初心者も大歓迎です。
※)日本語での会話ができる方のみ参加可能です。
条件に合わない方は参加をご遠慮ください。
前回のおさらい
仮のMenuクラスを登録して赤線を消しました。
JavaでMinecraftのModを作ろう☆ GUIブロック編⑤ 〜Menuクラスを登録しよう〜 - NakanishiのForge1.20.1のJavaMod開発講座
今回はScreenクラスを仮で実装し、Menuクラスと紐づけるところまで行いたいと思います。
ScreenクラスはGUI画面担当のクラスになりまして、テクスチャを描画するクラスになります。
Menuクラスが中身担当、Screenクラスが見た目担当というイメージで良いと思います。
①仮のScreenクラスを作ろう
名前は【PaleOakBarrelScreen】にしました。

樽のScreenクラスは【AbstractContainerScreen】というクラスになります。
【AbstractContainerScreen】というクラスは、コンテナ(スロットを持つインベントリやブロック)に対応するGUI画面の基底クラスになります。

赤線が引かれているのは必要なパラメータと引数、メソッドがない為なので、
最低限のものをいつものやり方で出してあげてください。

コンストラクタの引数を渡していきますが、その前にクラスにMenuクラスを紐づけておきます。
例)
public class PaleOakBarrelScreen extends AbstractContainerScreen<PaleOakBarrelMenu>

そうすると第一引数に赤線が引かれます。
ここの赤線を消すため、Menuクラスを紐づけてあげます。
例)
public PaleOakBarrelScreen(PaleOakBarrelMenu p_97741_, Inventory p_97742_, Component p_97743_) {
super(p_97741_, p_97742_, p_97743_);
}

パラメータと引数が仮のものになっているので、ここを直してあげます。
例)
public PaleOakBarrelScreen(PaleOakBarrelMenu menu, Inventory playerInventory, Component title) {
super(menu, playerInventory, title);
}

次にメソッド(renderBg)の引数が仮のものになっているので、直してあげます。
例)
@Override
protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) {
}

ここまで出来たら、次にScreenクラスの登録を行います。
②Screenクラスを登録しよう
名前は【NakanishiModScreen】にしました。

まず、先頭にアノテーションを書いていきます。
例)
@Mod.EventBusSubscriber(modid = Nakanishi_Mod.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)

次にClientSetupするための構文を書きます。
例)
@SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event) {}

そうしたらonClientSetupの{}内に以下の構文を書いていきます。
例)
event.enqueueWork*1;

これで完全にMenuクラスとScreenクラスが紐づけられ、Screenクラスの登録も出来ました。
ここまでお疲れ様でした☆
もしこの記事が参考になった、または「JavaでMod制作を始めてみたい!」と思っていただけたら、ぜひ読者登録をお願いします。
それではまた次回お会いしましょう。
ここまでお読みいただき、ありがとうございました。
*1:) ->
MenuScreens.register(NakanishiModMenuTypes.PALE_OAK_BARREL_MENU.get(),
PaleOakBarrelScreen::new