I have recently contributed this answer on this question at Stack Overflow. Then another user said: To compliment Francesco's answer, at the Bukkit forums we discourage using singleton pattern for the main class of your plugin because it leads to issues when reloading the plugin. We suggest using another class to hold necessary data such as a singleton, but not of the class that extends JavaPlugin. I personally use a Resources singleton class in all of my plugins for easy access, but I am able to reinstanciate the data in the Resource class on demand while doing so for the main class will run into major issues. Why are you discouraging using singleton pattern for getting the instance of the main class? How should this be done instead?