HasResultなEvent
概要
EventのクラスにCancelable以外にEvent.HasResultアノテーションが付与されいてるEventがある. たとえば骨粉で成長促進させるためのEvent,
@Cancelable @Event.HasResult public class BonemealEvent extends PlayerEvent { ... }
HasResultアノテーションは, CancelableにおけるsetCanceled()と同様に, setResult()メソッドを呼べる. このメソッドはEventの結果を通知するメソッドで, 端的にいえばEventが成功したらsetResult(ALLOW), 失敗したらsetResult(DENY)にする.
実例
新しく追加した苗木を, BonemealEventで成長促進させるとしよう. 骨粉で右クリックしたブロックが追加した苗木なら, glowTree()などを呼んでsetResult(Event.Result.ALLOW)する. そうでない場合はsetResult(Event.Result.DENY)する.
@ForgeSubScribe public void onBonemealUsed(BonemealEvent event) { if (event.blockID == newSapling.blockID) { if (!world.isRemote) { newSapling.growTree(); event.setResult(Event.Result.ALLOW); } } event.setResult(Event.Result.DENY); }