提供: Minecraft Modding Wiki
細 (→次にやった方がいいこと: リンク化) |
|||
33行目: | 33行目: | ||
@EventHandler | @EventHandler | ||
public void preInit(FMLPreInitializationEvent event) { | public void preInit(FMLPreInitializationEvent event) { | ||
− | // | + | // Minecraftを立ち上げて最初に呼ばれる処理アイテムやブロックなどの登録をする |
} | } | ||
@EventHandler | @EventHandler | ||
public void init(FMLInitializationEvent event) { | public void init(FMLInitializationEvent event) { | ||
− | // | + | // 2番めに呼ばれる処理色々書く |
} | } | ||
@EventHandler | @EventHandler | ||
public void postInit(FMLPostInitializationEvent event) { | public void postInit(FMLPostInitializationEvent event) { | ||
− | // | + | // 最後に呼ばれる処理他のmodとの連携に使う |
} | } | ||
} | } |
2021年8月15日 (日) 22:42時点における版
ここでは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.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @Mod(modid = "samplemod") public class Sample { @EventHandler public void preInit(FMLPreInitializationEvent event) { // Minecraftを立ち上げて最初に呼ばれる処理アイテムやブロックなどの登録をする } @EventHandler public void init(FMLInitializationEvent event) { // 2番めに呼ばれる処理色々書く } @EventHandler public void postInit(FMLPostInitializationEvent event) { // 最後に呼ばれる処理他のmodとの連携に使う } }
これが定番です。ただし、@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.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @Mod(modid = "samplemod") @EventBusSubscriber public class Sample { @EventHandler public void preInit(FMLPreInitializationEvent event) { // ... } @EventHandler public void init(FMLInitializationEvent event) { // ... } @EventHandler public void postInit(FMLPostInitializationEvent event) { // ... } @SubscribeEvent public static void registerItem(RegistryEvent.Register<Item> event) { // ... } }
次にやった方がいいこと
- @Modアノテーションの変数の設定
- mcmod.infoの設定