Registory
- MOD オブジェクト (アイテム、ブロック、サウンドなど) を取得し、それらをゲームに知らせるプロセス
- ゲームで登録を必要とするほとんどのものは、ForgeRegistory で管理
- KeyValue の Map っぽいクラス
- Key : ResourceLocation
- 登録可能なオブジェクトごとに独自のレジストリがある。つまり、ジェネリッククラスによる実装っぽい?
- 同じ名前で登録しちゃうと後で登録したものが、前のものを上書きする
DeferredRegister
- オブジェクトを登録するためのクラス
- これを定義した後に、register で登録する
RegistryObject
Class RegistryObject https://nekoyue.github.io/ForgeJavaDocs-NG/javadoc/1.19/net/minecraftforge/registries/RegistryObject.html
DeferredRegisterに登録した結果を保存するっぽいので、単体で使うことはほぼなさそう 登録後に参照したい時に使うっぽい
RegisterEvent
DeferredRegisterを使う代わりに、Modの大元のクラスのコンストラクターの後に呼び出されるコールバック DeferredRegister だと Static で登録しておけば、登録を自動でしてくれるので、その代わりに手動でやる感じ
@SubscribeEvent
public void register(RegisterEvent event) {
event.register(ForgeRegistries.Keys.BLOCKS,
helper -> {
helper.register(new ResourceLocation(MODID, "example_block_1"), new Block(...));
// ...
}
);
}