Updated: Newest PircBotX
Added: Bot ignores
Added: Dynamic listener system

All classes that wish to register listeners must:
  - Implement IRCListener and all its required methods
  - Register with ListenerHandler (done in RoyalBot.java)
  - All methods to behave as listeners must:
    - Have the Listener annotation
    - Have only one argument; that argument must be an Event (PircBotX)
    - It may return anything, but the return value will not be used, so void is recommended

This system works by first looping through all registered listeners. If the event is a channel event, it checks to see if the listener is disabled on that channel. If it is a user event, it checks to see if the user is ignored. Next, it loops through all methods in the listener. If the method does not have the Listener annotation, it is ignored. If the method takes more than one parameter, it is ignored. If the method’s parameter is not an Event, it is ignored. If the final Event isn’t the same as the method’s event (at this point, it’s checking to see if they’re the same subclass), it is ignored.

Finally, if it moves through all the checks, the method is called using the event. This change only requires listeners to stop extending ListenerAdapter<PircBotX> and to change the “@Override”s for the respective methods to “@Listener”s. YouTubeListener.java is an example of a valid listener.