提供: Minecraft Modding Wiki
移動先: 案内検索
(「初期化イベントを受け取る」wo)
(間違っていたサンプルコードの修正、サンプルコードのちょっとした方針の変更)
18行目: 18行目:
 
== 初期化イベントを受け取る ==
 
== 初期化イベントを受け取る ==
  
@Mod.EventHandlerアノテーションをメソッドにつけると、MODが読み込まれる時にそのメソッドが呼ばれるためその中で様々な処理を行えます。ただし、その引数はある特定のイベントを表すクラス一つのみでなければなりません。
+
@EventHandlerアノテーションをメソッドにつけると、MODが読み込まれる時にそのメソッドが呼ばれるためその中で様々な処理を行えます。ただし、その引数はある特定のイベントを表すクラス一つのみでなければなりません。
  
 
<source lang="java">
 
<source lang="java">
24行目: 24行目:
  
 
import net.minecraftforge.fml.common.Mod;
 
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.PreInitializationEvent;
 
import net.minecraftforge.fml.common.event.InitializationEvent;
 
import net.minecraftforge.fml.common.event.InitializationEvent;
30行目: 31行目:
 
@Mod(modid = "samplemod")
 
@Mod(modid = "samplemod")
 
public class Sample {
 
public class Sample {
 +
    @EventHandler
 
     public preInit(PreInitializationEvent event) {
 
     public preInit(PreInitializationEvent event) {
 
         // ...
 
         // ...
 
     }
 
     }
  
 +
    @EventHandler
 
     public init(InitializationEvent event) {
 
     public init(InitializationEvent event) {
 
         // ...
 
         // ...
 
     }
 
     }
  
 +
    @EventHandler
 
     public postInit(PostInitializationEvent event) {
 
     public postInit(PostInitializationEvent event) {
 
         // ...
 
         // ...
44行目: 48行目:
 
</source>
 
</source>
  
これが定番です。ただし、@Mod.EventHandlerアノテーションがついてさえいればメソッドの名前や引数の名前は自由で、「ある特定のイベントを表すクラス」というのもこれだけではありません。
+
これが定番です。ただし、@EventHandlerアノテーションがついてさえいればメソッドの名前や引数の名前は自由で、「ある特定のイベントを表すクラス」というのもこれだけではありません。
  
 
* [https://github.com/MinecraftForge/MinecraftForge/blob/b15269fde504dbe8837a540202a0947c1a5b3e62/src/main/java/net/minecraftforge/fml/common/Mod.java#L278-L303 公式ドキュメント(2017/12/13時点)]
 
* [https://github.com/MinecraftForge/MinecraftForge/blob/b15269fde504dbe8837a540202a0947c1a5b3e62/src/main/java/net/minecraftforge/fml/common/Mod.java#L278-L303 公式ドキュメント(2017/12/13時点)]

2018年1月20日 (土) 18:32時点における版

ここでは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 preInit(PreInitializationEvent event) {
        // ...
    }

    @EventHandler
    public init(InitializationEvent event) {
        // ...
    }

    @EventHandler
    public postInit(PostInitializationEvent event) {
        // ...
    }
}

これが定番です。ただし、@EventHandlerアノテーションがついてさえいればメソッドの名前や引数の名前は自由で、「ある特定のイベントを表すクラス」というのもこれだけではありません。