Description This util downloads files specified by the plugin. Now you no longer need to worry if server owners downloaded ProtocolLib, Vault, or any other plugin that you may need. Code: The class can be found at this Github page HERE. To download a plugin, simply use these two lines line: Code: if(!Bukkit.getPluginManager().isPluginEnabled(PLUGIN NAME)) new DependencyDownloader(MAIN, ID ); Where: PLUGIN NAME is the name of the plugin. This is to prevent plugins from redownloading the dependency if the dependency is already on the server. MAIN is the main class's instance. If this is in the main class, replace it with "this" ID is the project id. You can either use the raw int ID for the project or, if the dependency is in the project list, use ProjectID.<PROJECT NAME>. Here is an example of this, where we are downloading ProtocolLib Code: if(!Bukkit.getPluginManager().isPluginEnabled("ProtocolLib")) new DependencyDownloader(this, ProjectID.PROTOCOLLIB); How this works: This utils was based off of @ArsenArsen 's auto updater. This works almost the same as the updater, but with half the code. Thanks for not getting any say in what I do with your code and now seeing me rip up most of it for this. Basically what happens is Get a response from servermods Get the last file in the response Store files MD5, name and release type, as known as channel Download it If its MD5 is incorrect, check if line one says that it was moved If it does repeat download for moved files URL Otherwise download failed If its not on the allowed channels list or has a skip tag, repeat the whole process for the next one Changelog: 1.0: Initial post.