hogepiyo

かつてはマイクラのModを作っていたがひざに矢を受けた

Forge Eventについて

概要

1.3以降のForgeから, 従来のHandlerの多くがEventに変更された. インタフェースを継承し, 実装するHandlerと異なり, Eventはアノテーションによって呼び出されるメソッドが指定される. Bukkit PluginのEventHandlerと同じ形式でもある.

基本的な使い方

ForgeのEventはForgeSubscribeアノテーションを付与したメソッドと, そのメソッドが呼ばれたいEventを引数にする必要がある. たとえば

public class EventHooks {
    @ForgeSubScribe
    public void hoge(Event event) {
        // プレイヤーが他のEntityを攻撃したときに挟みたい処理
    }
}

なお, Eventは登録しないと呼ばれない. 登録はModの初期化等で行う.

MinecraftForge.EVENT_BUS.register(new EventHooks());

また, Bukkit PluginのEventHandlerと同様に, 優先度(priority)が設定可能

@ForgeSubscribe(priority = EventPriority.HIGH)

ForgeSubscribeにはもうひとつreceiveCanceledという引数がある(デフォルトではfalse). BukkitPluginと同じなら, trueにした場合, Eventキャンセル時にEventを受け付けない.