提供: Minecraft Modding Wiki
細 (→様々なイベントを受け取る: 改善) |
(メソッドの返値の明示、及びFMLInitializationEventのクラス名の修正) |
||
32行目: | 32行目: | ||
public class Sample { | public class Sample { | ||
@EventHandler | @EventHandler | ||
− | public preInit(PreInitializationEvent event) { | + | public void preInit(PreInitializationEvent event) { |
// ... | // ... | ||
} | } | ||
@EventHandler | @EventHandler | ||
− | public init( | + | public void init(FMLInitializationEvent event) { |
// ... | // ... | ||
} | } | ||
@EventHandler | @EventHandler | ||
− | public postInit(PostInitializationEvent event) { | + | public void postInit(PostInitializationEvent event) { |
// ... | // ... | ||
} | } |
2018年2月14日 (水) 22:08時点における版
ここではMODのメインクラスの作り方を解説します。
必要最低限のコード
MODのエントリポイントとなる@Modアノテーションが付いたクラスのみがある状態です。何の処理も行えないのですがMod一覧には表示されます。
package info.minecraftjp; import net.minecraftforge.fml.common.Mod; @Mod(modid = "samplemod") public class Sample {}
初期化イベントを受け取る
@EventHandlerアノテーションをメソッドにつけると、MODが読み込まれる時にそのメソッドが呼ばれるためその中で様々な処理を行えます。ただし、その引数はある特定のイベントを表すクラス一つのみでなければなりません。
package info.minecraftjp; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.event.PreInitializationEvent; import net.minecraftforge.fml.common.event.InitializationEvent; import net.minecraftforge.fml.common.event.PostInitializationEvent; @Mod(modid = "samplemod") public class Sample { @EventHandler public void preInit(PreInitializationEvent event) { // ... } @EventHandler public void init(FMLInitializationEvent event) { // ... } @EventHandler public void postInit(PostInitializationEvent event) { // ... } }
これが定番です。ただし、@EventHandlerアノテーションがついてさえいればメソッドの名前や引数の名前は自由で、「ある特定のイベントを表すクラス」というのもこれだけではありません。
様々なイベントを受け取る
@EventBusSubscriberアノテーションをクラスにつけるとさらに別の種類のイベントを受け取ることが出来ます。イベントを受け取るためには@SubscribeEventアノテーションをstaticメソッドにつけてください。
package info.minecraftjp; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.event.PreInitializationEvent; import net.minecraftforge.fml.common.event.InitializationEvent; import net.minecraftforge.fml.common.event.PostInitializationEvent; @Mod(modid = "samplemod") @EventBusSubscriber public class Sample { @EventHandler public preInit(PreInitializationEvent event) { // ... } @EventHandler public init(InitializationEvent event) { // ... } @EventHandler public postInit(PostInitializationEvent event) { // ... } @SubscribeEvent public static registerItem(RegistryEvent.Register<Item> event) { // ... } }