package tc.oc.commons.bukkit.event;
import java.lang.reflect.AnnotatedElement;
import java.util.Optional;
import java.util.function.Consumer;
import org.bukkit.event.EventPriority;
import tc.oc.minecraft.api.event.Listener;
public interface EventSubscriber<E> {
Class<Listener> listener();
EventKey<E> key();
default Class<E> event() {
return key().event();
}
Optional<AnnotatedElement> element();
default EventPriority priority() {
return key().priority();
}
boolean ignoreCancelled();
Consumer<E> bindTo(Listener listener);
}