001 package org.bukkit.plugin; 002 003 import org.bukkit.event.*; 004 005 /** 006 * Stores relevant information for plugin listeners 007 */ 008 public class RegisteredListener { 009 private final Listener listener; 010 private final EventPriority priority; 011 private final Plugin plugin; 012 private final EventExecutor executor; 013 private final boolean ignoreCancelled; 014 015 public RegisteredListener(final Listener listener, final EventExecutor executor, final EventPriority priority, final Plugin plugin, final boolean ignoreCancelled) { 016 this.listener = listener; 017 this.priority = priority; 018 this.plugin = plugin; 019 this.executor = executor; 020 this.ignoreCancelled = ignoreCancelled; 021 } 022 023 /** 024 * Gets the listener for this registration 025 * 026 * @return Registered Listener 027 */ 028 public Listener getListener() { 029 return listener; 030 } 031 032 /** 033 * Gets the plugin for this registration 034 * 035 * @return Registered Plugin 036 */ 037 public Plugin getPlugin() { 038 return plugin; 039 } 040 041 /** 042 * Gets the priority for this registration 043 * 044 * @return Registered Priority 045 */ 046 public EventPriority getPriority() { 047 return priority; 048 } 049 050 /** 051 * Calls the event executor 052 * 053 * @param event The event 054 * @throws EventException If an event handler throws an exception. 055 */ 056 public void callEvent(final Event event) throws EventException { 057 if (event instanceof Cancellable){ 058 if (((Cancellable) event).isCancelled() && isIgnoringCancelled()){ 059 return; 060 } 061 } 062 executor.execute(listener, event); 063 } 064 065 /** 066 * Whether this listener accepts cancelled events 067 * 068 * @return True when ignoring cancelled events 069 */ 070 public boolean isIgnoringCancelled() { 071 return ignoreCancelled; 072 } 073 }