I just found a couple of cool and useful tools that help greatly in developing all sorts of plugins. By the end of this tutorial, I hope you shall have an understanding of what these tools do, how to use them, and maybe even use them in the future. They are ordered in list of most useful to least useful. FindBugs Link: http://findbugs.sourceforge.net/ FindBugs is a program developed by the Maryland University to help in tracking down bugs. You give it the BukkitAPI.jar, craftbukkit.jar, and yourPlugin.jar, and it is guaranteed to find at least 5 bugs in it. Don't take this personally, however, as alot of these 'bugs' are just dodgy code, switches without default case, etc. Occasionally, however it will find more serious bugs, such as memory leaks, unhandled exceptions, and so on. ---- Eclipse and/or Netbeans and/or IntelliJ Links: http://www.eclipse.org/downloads/ | http://netbeans.org/downloads/ | http://www.jetbrains.com/idea/ Well... Obviously. I personally recommend Eclipse Juno, as it has some handy features. Take this scenario: you have 100 variables in a class. You have a method that needs a variable. You type in the class the variable is in name, and Eclipse tries to guess which variable is most useful to you, based on how you have used it, and the name of the argument in the function. Very cool. Don't know much about Netbeans, though, but it seems to be like Eclipse, but with a very nice GUI designer. I have used IntelliJ briefly, I can say that it loads hundreds times faster than Eclipse or Netbeans. ---- JD-GUI Link: http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JD-GUI.shtml JD-GUI is a decompiler, that takes .class files and decompiles them for you in a nice GUI. All you do is download it, run the executable, hit the little folder button, and select your class files! Unlike other decompilers such as JAD, JD-GUI will never screw up and return source code full of gotos. While gotos exist in bytecode, they don't in the Java language. JD-GUI understands that, JAD doesn't. All in all a very useful tool in many scenarios, if you lost the source of your plugin but still have its jar, or if you want to take a "peak" into a plugin for LEARNING (and ONLY learning) purposes. ---- MCP Link: http://mcp.ocean-labs.de/index.php/MCP_Releases A very useful tool if you wish to modify the net.minecraft.server classes. It deobfuscates and inserts nice comments into the code to tell you what each function does. There is a README.txt inside the download, and that explains how to install it. ---- Proguard Link: http://proguard.sourceforge.net/ Proguard is amazing, in many ways. It has 2 main utilities: optimization, shrinking. Particularly useful if you think your code is inefficient: Proguard will sort things out on a bytecode level. Additionally, you can also run the shrinker. Trust me, its useful. To see what to expect, take a look at the chart on this page, and be amazed. ---- Saros Plugin for Eclipse Link: http://www.saros-project.org/ Its basically a Google Docs for Eclipse. Its not updated for Juno, however, so if you plan on using it you must use Eclipse Indigo. ---- Youtube! Link: You should probably already know... http://www.youtube.com I swear, there is some very good music on Youtube that can keep you motivated as you crawl through piles of exceptions. Take this one, for example. While listening to that, even writing a 'Hello World' program in Visual Basic makes you feel like a bad arse. ---- Conclusion And thats it! Some other useful things to mention would be the Bukkit forums, StackOverFlow (for any code related problem), Egit and Maven plugin for Eclipse, and having a Github account and repository for your plugins. That way you'll never have to decompile your own jars. Hope that helped!