NakanishiのForge1.20.1のJavaMod開発講座

MoreCropsDelightの作者、NakanishiがMod制作について書いていきます。

JavaでMinecraftのModを作ろう☆ GUIブロック編⑥ 〜Screenクラスを仮で作ろう〜

こんばんは。Nakanishiです。

Discordサーバーを運営中です。

Kazushi_Nakanishiのこっそりサーバー

一緒にゆるく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_);
    }

Menuクラスを紐づけた画面

パラメータと引数が仮のものになっているので、ここを直してあげます。
例)

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