How to include the API with Maven:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.MilkBowl</groupId>
<artifactId>VaultAPI</artifactId>
<version>1.7</version>
<scope>provided</scope>
</dependency>
</dependencies>How to include the API with Gradle:
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
compileOnly "com.github.MilkBowl:VaultAPI:1.7"
}Note: The VaultAPI version has 2 numbers (major.minor), unlike Vault, which has 3. The 2 numbers in the VaultAPI will always correspond to the 2 beginning numbers in a Vault version to make it clear what versions your plugin will for sure work with.
I have no preference which library suits your plugin and development efforts best. Really, I thought a central suite (rather...Vault) of solutions was the the proper avenue than focusing on a single category of plugin. That's where the idea for Vault came into play.
So, what features do I think you'll like the most?
- No need to include my source code in your plugin
- Broad range of supported plugins
- Choice!
Copyright (C) 2011-2018 Morgan Humes morgan@lanaddict.com
Vault is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Vault is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with Vault. If not, see http://www.gnu.org/licenses/.
VaultAPI comes with all libraries needed to build from the current branch.
Implementing Vault is quite simple. It requires getting the Economy, Permission, or Chat service from the Bukkit ServiceManager. See the example below:
packagecom.example.plugin;
importnet.milkbowl.vault.chat.Chat;
importnet.milkbowl.vault.economy.Economy;
importnet.milkbowl.vault.economy.EconomyResponse;
importnet.milkbowl.vault.permission.Permission;
importorg.bukkit.command.Command;
importorg.bukkit.command.CommandSender;
importorg.bukkit.entity.Player;
importorg.bukkit.plugin.RegisteredServiceProvider;
importorg.bukkit.plugin.java.JavaPlugin;
publicclassExamplePluginextendsJavaPlugin {
privatestaticEconomyecon = null;
privatestaticPermissionperms = null;
privatestaticChatchat = null;
@OverridepublicvoidonDisable() {
getLogger().info(String.format("[%s] Disabled Version %s", getDescription().getName(), getDescription().getVersion()));
}
@OverridepublicvoidonEnable() {
if (!setupEconomy() ) {
getLogger().severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
getServer().getPluginManager().disablePlugin(this);
return;
}
setupPermissions();
setupChat();
}
privatebooleansetupEconomy() {
if (getServer().getPluginManager().getPlugin("Vault") == null) {
returnfalse;
}
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
if (rsp == null) {
returnfalse;
}
econ = rsp.getProvider();
returnecon != null;
}
privatebooleansetupChat() {
RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
chat = rsp.getProvider();
returnchat != null;
}
privatebooleansetupPermissions() {
RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
perms = rsp.getProvider();
returnperms != null;
}
publicbooleanonCommand(CommandSendersender, Commandcommand, StringcommandLabel, String[] args) {
if(!(senderinstanceofPlayer)) {
getLogger().info("Only players are supported for this Example Plugin, but you should not do this!!!");
returntrue;
}
Playerplayer = (Player) sender;
if(command.getLabel().equals("test-economy")) {
// Lets give the player 1.05 currency (note that SOME economic plugins require rounding!)sender.sendMessage(String.format("You have %s", econ.format(econ.getBalance(player.getName()))));
EconomyResponser = econ.depositPlayer(player, 1.05);
if(r.transactionSuccess()) {
sender.sendMessage(String.format("You were given %s and now have %s", econ.format(r.amount), econ.format(r.balance)));
} else {
sender.sendMessage(String.format("An error occured: %s", r.errorMessage));
}
returntrue;
} elseif(command.getLabel().equals("test-permission")) {
// Lets test if user has the node "example.plugin.awesome" to determine if they are awesome or just suckif(perms.has(player, "example.plugin.awesome")) {
sender.sendMessage("You are awesome!");
} else {
sender.sendMessage("You suck!");
}
returntrue;
} else {
returnfalse;
}
}
publicstaticEconomygetEconomy() {
returnecon;
}
publicstaticPermissiongetPermissions() {
returnperms;
}
publicstaticChatgetChat() {
returnchat;
}
}