/** * Prioritized event notification - Ensuring that this listener will be the first to receive * notification.<br> * Also this method interrupts notification to other listeners and taking over return if somehow * it wasn't the first one to set.<br> * This method will be invoked as soon a a creature dies.<br> * This listener is registered into global players container. * * @param event * @return termination return preventing the base code execution if needed. */ @RegisterEvent(EventType.ON_CREATURE_KILL) @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) @Priority(Integer.MAX_VALUE) public TerminateReturn onPlayerDeath(OnCreatureKill event) { if (event.getTarget().isGM()) { _log.log( Level.INFO, getClass().getSimpleName() + ": Player: " + event.getTarget() + " was prevented from dying!"); return new TerminateReturn(true, true, true); } return null; }
// Annotation listener registration @RegisterEvent(EventType.ON_CREATURE_KILL) @RegisterType(ListenerRegisterType.NPC) @Id(20432) @Id(22228) public void onCreatureKill(OnCreatureKill event) { _log.log( Level.INFO, getClass().getSimpleName() + ": " + event.getClass().getSimpleName() + " invoked attacker: " + event.getAttacker() + " target: " + event.getTarget()); }
/** * Prioritized event notification <br> * This method will be invoked as soon as creature from level range between 1 and 10 dies.<br> * This listener is registered into individual npcs container. * * @param event */ @RegisterEvent(EventType.ON_CREATURE_KILL) @RegisterType(ListenerRegisterType.NPC) @NpcLevelRange(from = 1, to = 10) @Priority(100) public void OnCreatureKill(OnCreatureKill event) { // 70% chance to drop if (Rnd.get(100) >= 70) { return; } // Make sure a player killed this monster. if ((event.getAttacker() != null) && event.getAttacker().isPlayable() && event.getTarget().isAttackable()) { final L2Attackable monster = (L2Attackable) event.getTarget(); monster.dropItem( event.getAttacker().getActingPlayer(), new ItemHolder(57, Rnd.get(100, 1000))); } }