こんばんは。Nakanishiです。
Discordサーバーを運営中です。
一緒にゆるくMod制作を楽しみませんか?
初心者も大歓迎です。
※)日本語での会話ができる方のみ参加可能です。
条件に合わない方は参加をご遠慮ください。
前回のおさらい
仮のBlockEntityのクラスを作りました。
JavaでMinecraftのModを作ろう☆ GUIブロック編② 〜仮のBlockEneityのクラスを作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座
今回は登録をして、BlockEneityのクラスの赤線を消すところまでしようと思います。
①BlockEntityの登録クラスを作ろう
名前は【NakanishiModBlockEntity】にしました。

まず、登録する為の窓口を作ってあげます。
例)
public static final DeferredRegister<BlockEntityType<?>> BLOCK_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, Nakanishi_Mod.MOD_ID);

💡ポイント
・<?>はどのBlockEntityでも扱えるようにするという意味です。
・Nakanishi_Modは自分のメインクラスを指定してください。
ここまで書けましたら、早速【PaleOakBarrelBlockEntity】を登録していこうと思います。
例)
public static final RegistryObject<BlockEntityType<PaleOakBarrelBlockEntity>> PALE_OAK_BARREL = BLOCK_ENTITIES.register("pale_oak_barrel",
() -> BlockEntityType.Builder.of(PaleOakBarrelBlockEntity::new,
NakanishiModBlocks.Blocks.PALE_OAK_BARREL.get()).build(null));

ここで::newが赤線が引かれているのは、まだ【PaleOakBarrelBlockEntity】が【protected】になっているからです。
なので、【PaleOakBarrelBlockEntity】を修正していきます。
現段階で【PaleOakBarrelBlockEntity】がこうなっていると思います。
public class PaleOakBarrelBlockEntity extends RandomizableContainerBlockEntity {
protected PaleOakBarrelBlockEntity(BlockPos pos, BlockState state) {
super(pos, state);
}
ここの【protected】を【public】に変える事で、登録文の赤線が消えます。
例)
public PaleOakBarrelBlockEntity(BlockPos pos, BlockState state) {
super(pos, state);
}

これで登録文の::newの赤線が消えます。
次にまだ【PaleOakBarrelBlockEntity】に赤線が出ているので、必要な引数を渡して赤線を消していこうと思います。
例)
super(NakanishiModBlockEntity.PALE_OAK_BARREL.get(), pos, state);

これで【PaleOakBarrelBlockEntity】の赤線が消えて、仮のBlockEneityのクラスが完成となります。
最後にメインクラスに登録クラスと記入して、今回は完了となります。
例)
NakanishiModBlockEntity.BLOCK_ENTITIES.register(bus);
ここまでお疲れ様でした☆
次回はブロックの中身とプレイヤーのインベントリをつなぐ“橋渡し”となる、Menuクラスを仮で作っていこうと思います。
もしこの記事が参考になった、または「JavaでMod制作を始めてみたい!」と思っていただけたら、ぜひ読者登録をお願いします。
それではまた次回お会いしましょう。
ここまでお読みいただき、ありがとうございました。
【次回記事】
JavaでMinecraftのModを作ろう☆ GUIブロック編④ 〜仮のMenuクラスを作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座