提供: Minecraft Modding Wiki
2012年11月13日 (火) 16:51時点におけるReginn666 (トーク | 投稿記録)による版 (ページの作成:「==はじめに== <p>  Minecraft Forge Universalから新しいEventシステムが組み込まれた. アノテーションと引数により実行されるメソッ...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

はじめに

 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