提供: Minecraft Modding Wiki
(ページの作成:「==はじめに== <p> Minecraft Forge Universalから新しいEventシステムが組み込まれた. アノテーションと引数により実行されるメソッ...」) |
ModderKina (トーク | 投稿記録) (取り敢えず体裁だけ。) |
||
1行目: | 1行目: | ||
==はじめに== | ==はじめに== | ||
− | + | Minecraft Forge Universalから新しいEventシステムが組み込まれた。ある処理にこちらの用意した処理を割り込ませる機能であり、介入しづらいバニラの処理にも介入できるようになる。<br> | |
− | + | BukkitPluginのEventシステムやFMLの@ModなどもこのEventシステムと同じ概念である。<br> | |
− | < | + | 詳しく知りたい場合は、DI(依存性の注入)やAOP(アスペクト指向)などの概念、Struts2, SpringFrameworkなどの有名なフレームワークがキーワードとなるだろう。 |
− | < | + | |
− | |||
− | |||
==基本== | ==基本== | ||
− | + | メソッドにアノテーションと引数を指定すると、イベント発火に合わせて呼び出されるようになる。 | |
− | |||
− | |||
<source lang = "java"> | <source lang = "java"> | ||
− | @ | + | @SubscribeEvent |
− | public void | + | public void onSampleEvent(SampleEvent event) |
{ | { | ||
} | } | ||
</source> | </source> | ||
− | + | このメソッドはSampleEventクラスがpostされる箇所で呼び出される。メソッドを持つクラスは適切な箇所でMinecraftForgeのAPIを使って登録する必要がある。 | |
− | |||
− | |||
<source lang = "java"> | <source lang = "java"> | ||
− | MinecraftForge.EVENT_BUS.register(new | + | MinecraftForge.EVENT_BUS.register(new ForgeEventHook()) |
</source> | </source> | ||
− | + | MinecraftForge.EVENT_BUSに限っては、@EventBusSubscriberでクラスを注釈すれば自動的に登録され、静的メソッドであれば対応したタイミングに呼び出されるようになる。 | |
− | |||
− | |||
− | + | ここでは具体的なサンプルは扱わず、SampleEventというEventも存在しないが、Forgeのイベントの使い方の流れは大体このようであると認識して良い。 | |
− | |||
− | |||
− | |||
− | + | Minecraft Forgeの扱えるEventは[[Minecraft Forge API#イベント]]を参照すること。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2017年2月19日 (日) 18:48時点における版
はじめに
Minecraft Forge Universalから新しいEventシステムが組み込まれた。ある処理にこちらの用意した処理を割り込ませる機能であり、介入しづらいバニラの処理にも介入できるようになる。
BukkitPluginのEventシステムやFMLの@ModなどもこのEventシステムと同じ概念である。
詳しく知りたい場合は、DI(依存性の注入)やAOP(アスペクト指向)などの概念、Struts2, SpringFrameworkなどの有名なフレームワークがキーワードとなるだろう。
基本
メソッドにアノテーションと引数を指定すると、イベント発火に合わせて呼び出されるようになる。
@SubscribeEvent public void onSampleEvent(SampleEvent event) { }
このメソッドはSampleEventクラスがpostされる箇所で呼び出される。メソッドを持つクラスは適切な箇所でMinecraftForgeのAPIを使って登録する必要がある。
MinecraftForge.EVENT_BUS.register(new ForgeEventHook())
MinecraftForge.EVENT_BUSに限っては、@EventBusSubscriberでクラスを注釈すれば自動的に登録され、静的メソッドであれば対応したタイミングに呼び出されるようになる。
ここでは具体的なサンプルは扱わず、SampleEventというEventも存在しないが、Forgeのイベントの使い方の流れは大体このようであると認識して良い。
Minecraft Forgeの扱えるEventはMinecraft Forge API#イベントを参照すること。