こんばんは。Nakanishiです。
Discordサーバーを運営中です。
一緒にゆるく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】の赤線は消えますが、登録クラスの赤線はまだ消えていません。
なので、もう1つコンストラクタを渡してあげます。
例)
public PaleOakBarrelMenu(int id, Inventory playerInventory, FriendlyByteBuf buf) {
this(id, playerInventory, new SimpleContainer(27));
}

これで登録クラスの赤線も消えます。
💡ポイント
・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開発講座