public RegisteredEventListener(Method listenerMethod, Listener listener){
		//Attempt to get the EventListener annotation on this method
		EventListener listenerAnnotation = listenerMethod.getAnnotation(EventListener.class);
		if(listenerAnnotation == null){
			//No annotation, throw exception
			throw new IllegalArgumentException("Listener method does not have an EventListener annotation.");
		}
		//Get priority and ignoreCancelled values from the annotation
		priority = listenerAnnotation.priority();
		ignoresCancelled = listenerAnnotation.ignoreCancelled();
		//Get the parameter types of the method
		Class<?>[] listenerMethodParameters = listenerMethod.getParameterTypes();
		//Verify that the parameters of the method are valid for an event-handling method
		if(listenerMethodParameters.length != 1 || !Event.class.isAssignableFrom(listenerMethodParameters[0])){
			//Parameters are invalid, throw exception
			throw new IllegalArgumentException("Listener method signature invalid. Does not have a single Event subclass parameter.");
		}
		//Store the type of the Event-subclass parameter in eventType
		eventType = (Class<? extends Event>)listenerMethodParameters[0];
		//Store the listener method in listenerMethod
		this.listenerMethod = listenerMethod;
		//Make sure that listenerMethod is accessible
		if(!listenerMethod.isAccessible()){
			listenerMethod.setAccessible(true);
		}
		//Store the listener object in listener
		this.listener = listener;
	}