An IRC, or Internet Relay Chat, bot made in java. It can handle most of the IRC protocol. The main protocol it lacks is DCC, which is used for direct file transfer between IRC clients. The original version ran on top of PircBot, which was more rigid than I liked. In addition to being more rigid it could not be on multiple servers at once.
I wanted to move away from having games and commands hard-coded into it. To do this I added an abstract class called Plugin that every plugin would inherit and had basic methods, like getting the name, version, and other things about the plugin. The plugin class also allowed plugins to be loaded in at run time, instead of having to compile everything into one jar.
I added individual listeners for things like messages, private messages, joins, and quits. This makes the plugins very flexible and allows them to only implement the functionality they needed. For example if a plugin only needed to listen to joins it would only need to implement the JoinListener and it would have access to all the joins the bot could see.
Some of the code could be made better, either by simplifying or by redoing it.