On this page I'm going to attempt a high level overview of JavaOp2. The concept is a little different from JavaOp or JBBot, so hopefully anybody who wants to use it will at least have a quick look over this document rather than asking questions that I answer here.


The vast majority of the bot is purely my own work. I used nobody else's Java work (who didn't write it specially for me -- see Contributers page). The only code I used that wasn't mine was CheckRevision and BrokenSHA1, but I personally ported those to Java. I am a firm believer in the Open Source Movement. If my code can help anybody, and if anybody who sees a problem with my code can help me, then I've won. I'm more than happy to accept contributions from anybody who's willing to help, and I'm more than happy to explain parts of my code to anybody who is interested. Please don't hesitate to contact me if you have any questions at all!


This bot was originally conceived by myself and a friend (MorsRedigo) while eating at Perkins. At first, we debated whether to write a bot in Java or in C++. Eventually we decided C++, because at the time I knew C++ much better than Java, and I had a feeling that Java wasn't powerful enough.

I did some work on it, and got a bot that could connect. But after christmas, I got a job where I was doing a lot of Java coding. I decided that I could do much better with Java, so I took a stab at it. Eventually, I got it to connect to Battle.net, and continued with it. Eventually, while travelling to BC to hook up with some friends, I had time to kill at the airport, and Fr0z3N had requested a stripped down version of JBBot. So I got rid of all the GUI code and a lot of other crap, structured it differently, and called it JavaOp. Tuberload joined me, and it was going well, but eventually I got the feeling I had coded myself into a corner. It was too hard to expand anything.

Eventually, I decided to start from scratch. I used several of my login and utility classes, but completely restructured it, and coded 95% from scratch. I based a lot of ideas for plugins and such on Gaim's code. The bot was totally plugin-oriented. Although it's still specific to Battle.net (I decided not to go that far), it is very easy to write powerful plugins for it. Everything from login to display to moderation is done through plugins, and the core is very small, just providing a way to communicate among co-existing plugins.


In JavaOp2, all configuration is (optionally) done through graphical utilities. The files that they output are text-only, and I have documented the format of each file. So any editing can be done through a commandline rather than using the tools.

The bot itself is completely plugin oriented. The core of the bot is fairly simple. All it really does is connect to battle.net and provide glue to attach the plugins together. The login, the display, and everything else is handled within plugins. A plugin can process events, packets, commands, and many other things. I will go over exactly what you can do with plugins in the appropriate section. For now, just understand that basically everything the bot does is a plugin, and many of the plugins are optional. If you want a bot to chat through, then you can get rid of the moderation, and if you want a bot for moderation, you can get rid of the output and display stuff, It is very flexible.

I hope after reading this you have a little bit of an idea how JavaOp2 works. If you want to get on with setting it up and configuring it, please read the Getting Started documentation.

Valid HTML 4.01! Valid CSS!