提供: Minecraft Modding Wiki
はじめに
Minecraft Forge Universalから新しいEventシステムが組み込まれた. アノテーションと引数により実行されるメソッドを動的に割り込ませる機能であり, 割り込みタイミングによってはItemやEntity側でやるよりもよりスマートに(より保守しやすい)コードで実装できるのが特徴である.
BukkitPluginのEventシステムやFMLの@ModなどもこのEventシステムと同じ概念である. より詳しく知りたい場合のキーワードとして, DI(依存性の注入)やAOP(アスペクト指向)などの概念, Struts2, SpringFrameworkなどが有名なフレームワークとしてある.
基本
基本はFMLの基本と同じである. すなわちイベント時に呼び出されるメソッドにアノテーションと引数を指定する.
@ForgeSubScribe public void sampleEvent(Event event) { }
このメソッドはEventクラスが生成される箇所で呼び出される. なお, メソッドを持つクラスは適切な箇所でMinecraftForgeのAPIを使って登録する必要がある.
MinecraftForge.EVENT_BUS.register(new ForgeEventClass())
もちろんここでは具体的なサンプルは扱わない. Eventクラスは実際にはどこかで呼ばれることはないし, クラス名も適当である. しかし, Forgeのイベントは概ねこの呼び出し方ということを把握しておく必要がある.
Forgeが扱えるイベント一覧
MinecraftForge 6.3.0.363時点, なおこれはイベントに関わるクラスを列挙したものである.
- net.minecraftforge.event
- CommandEvent
- net.minecraftforge.event.world
- ChunkEvent
- ChunkDataEvent
- WorldEvent
- net.minecraftforge.event.entity
- EntityEvent
- PlaySoundAtEntityEvent
- net.minecraftforge.event.entity.living
- LivingEvent
- LivingAttackEvent
- LivingDeathEvent
- LivingDropsEvent
- LivingFallEvent
- LivingHurtEvent
- LivingSetAttackTargetEvent
- LivingSpecialSpawnEvent
- net.minecraftforge.event.entity.minecart
- MinecartEvent
- MinecartCollisionEvent
- MinecartInteractEvent
- MinecartUpdateEvent
- net.minecraftforge.event.entity.player
- PlayerEvent
- AttackEntityEvent
- ArrowNockEvent
- ArrowLooseEvent
- EntityInteractEvent
- BonemealEvent
- EntityItemPickupEvent
- FillBucketEvent
- PlayerDestroyItemEvent
- PlayerSleepInBedEvent
- PlayerDropsEvent
- UseHoeEvent
- net.minecraftforge.event.entity.item
- ItemEvent
- ItemExpireEvent
- ItemTossEvent