NakanishiのForge1.20.1のJavaMod開発講座

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

JavaでMinecraftのModを作ろう☆ GUIブロック編⑤ 〜Menuクラスを登録しよう〜

こんばんは。Nakanishiです。

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

Kazushi_Nakanishiのこっそりサーバー

一緒にゆるくMod制作を楽しみませんか?
初心者も大歓迎です。

※)日本語での会話ができる方のみ参加可能です。
  条件に合わない方は参加をご遠慮ください。

 

 

前回のおさらい

仮のMenuクラスを作りました。

JavaでMinecraftのModを作ろう☆ GUIブロック編④ 〜仮のMenuクラスを作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座

今回は仮のMenuクラスを登録して、赤線が消えるまで進めようと思います。

 

 

①Menu登録クラスを作ろう

名前は【NakanishiModMenuTypes】にしました。

 

まず、登録する為の窓口を作ってあげます。
例)

public static final DeferredRegister<MenuType<?>> MENU_TYPES = DeferredRegister.create(ForgeRegistries.MENU_TYPES, Nakanishi_Mod.MOD_ID);

 

次に【PaleOakBarrelMenu】を登録していきます。

例)

public static final RegistryObject<MenuType<PaleOakBarrelMenu>> PALE_OAK_BARREL_MENU = MENU_TYPES.register("pale_oak_barrel_menu",
                    () -> new MenuType<>(PaleOakBarrelMenu::new));

 

ここで赤線が引かれますが、これは【PaleOakBarrelMenu】のコンストラクタが【protected】になっている為と、Containerを受け取るコンストラクタを設定していない為なので、それを修正すれば直ります。

ついでに、引数も渡しておきます。

 

なので、【PaleOakBarrelMenu】を開いてもらって、修正をします。

例)

public class PaleOakBarrelMenu extends AbstractContainerMenu {
    public PaleOakBarrelMenu(int id, Inventory playerInventory, Container container) {
        super(NakanishiModMenuTypes.PALE_OAK_BARREL_MENU.get(), id);
    }

 

赤線の消えたPaleOakBarrelMenu

これで【PaleOakBarrelMenu】の赤線は消えますが、登録クラスの赤線はまだ消えていません。

 

なので、もう1つコンストラクタを渡してあげます。

例)

public PaleOakBarrelMenu(int id, Inventory playerInventory, FriendlyByteBuf buf) {
        this(id, playerInventory, new SimpleContainer(27));
    }

 

FriendlyByteBufを受け取るコンストラクタを追加した画面

これで登録クラスの赤線も消えます。

💡ポイント

SimpleContainer(27)はコンテナに27スロット設定しますという意味です

 

 

次に登録クラスの締めの文章を入力します。

例)

public static void register(IEventBus eventBus) {
        MENU_TYPES.register(eventBus);
    }

 

 

最後にメインクラスにMenu登録クラスを登録して完了です。

例)

NakanishiModMenuTypes.MENU_TYPES.register(bus);

 

 

ここまでお疲れ様でした☆

 

もしこの記事が参考になった、または「JavaでMod制作を始めてみたい!」と思っていただけたら、ぜひ読者登録をお願いします。
それではまた次回お会いしましょう。
ここまでお読みいただき、ありがとうございました。

 

次回記事

JavaでMinecraftのModを作ろう☆ GUIブロック編⑥ 〜Screenクラスを仮で作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座