2015-03-25 17:43:16 +01:00
# VaultAPI - Abstraction Library API for Bukkit Plugins - ![Travis-ci](https://travis-ci.org/MilkBowl/VaultAPI.svg?branch=master)
2014-05-09 04:07:01 +02:00
2014-05-28 15:53:06 +02:00
How to use with maven: note that the VaultAPI version is 2 numerals, unlike Vault versions which are 3. The 2 numerals in the VaultAPI will always correspond to the 2 beginning numerals in a Vault version to make it clear what versions your plugin will for sure work with.
2014-05-17 20:05:29 +02:00
```
< repositories >
< repository >
< id > vault-repo< / id >
2016-08-03 03:08:02 +02:00
< url > http://nexus.hc.to/content/repositories/pub_releases< / url >
2014-05-17 20:05:29 +02:00
< / repository >
< / repositories >
< dependencies >
< dependency >
< groupId > net.milkbowl.vault< / groupId >
< artifactId > VaultAPI< / artifactId >
2016-08-03 03:08:02 +02:00
< version > 1.6< / version >
2014-05-17 20:05:29 +02:00
< scope > provided< / scope >
< / dependency >
< / dependencies >
2014-05-09 04:07:01 +02:00
2014-05-17 20:05:29 +02:00
```
2014-05-09 04:07:01 +02:00
## Why Vault?
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!
## License
Copyright (C) 2011 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 / > .
## Building
2014-05-17 20:05:29 +02:00
VaultAPI comes with all libraries needed to build from the current branch.
2014-05-09 04:07:01 +02:00
## Implementing Vault
Implementing Vault is quite simple. It requires getting the Economy, Permission, or Chat service from the Bukkit ServiceManager. See the example below:
```java
package com.example.plugin;
import java.util.logging.Logger;
import net.milkbowl.vault.chat.Chat;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
public class ExamplePlugin extends JavaPlugin {
private static final Logger log = Logger.getLogger("Minecraft");
2017-02-28 20:07:32 +01:00
private static Economy econ = null;
private static Permission perms = null;
private static Chat chat = null;
2014-05-09 04:07:01 +02:00
@Override
public void onDisable() {
log.info(String.format("[%s] Disabled Version %s", getDescription().getName(), getDescription().getVersion()));
}
@Override
public void onEnable() {
if (!setupEconomy() ) {
log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
getServer().getPluginManager().disablePlugin(this);
return;
}
setupPermissions();
setupChat();
}
private boolean setupEconomy() {
if (getServer().getPluginManager().getPlugin("Vault") == null) {
return false;
}
RegisteredServiceProvider< Economy > rsp = getServer().getServicesManager().getRegistration(Economy.class);
if (rsp == null) {
return false;
}
econ = rsp.getProvider();
return econ != null;
}
private boolean setupChat() {
RegisteredServiceProvider< Chat > rsp = getServer().getServicesManager().getRegistration(Chat.class);
chat = rsp.getProvider();
return chat != null;
}
private boolean setupPermissions() {
RegisteredServiceProvider< Permission > rsp = getServer().getServicesManager().getRegistration(Permission.class);
perms = rsp.getProvider();
return perms != null;
}
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
if(!(sender instanceof Player)) {
log.info("Only players are supported for this Example Plugin, but you should not do this!!!");
return true;
}
Player player = (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()))));
2014-05-17 20:05:29 +02:00
EconomyResponse r = econ.depositPlayer(player, 1.05);
2014-05-09 04:07:01 +02:00
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));
}
return true;
} else if(command.getLabel().equals("test-permission")) {
// Lets test if user has the node "example.plugin.awesome" to determine if they are awesome or just suck
if(perms.has(player, "example.plugin.awesome")) {
sender.sendMessage("You are awesome!");
} else {
sender.sendMessage("You suck!");
}
return true;
} else {
return false;
}
}
2017-02-28 20:07:32 +01:00
public static Economy getEcononomy() {
return econ;
}
public static Permission getPermissions() {
return perms;
}
public static Chat getChat() {
return chat;
}
2014-05-09 04:07:01 +02:00
}
```