mirror of
https://github.com/MilkBowl/VaultAPI.git
synced 2024-11-14 22:45:30 +01:00
164 lines
5.9 KiB
Markdown
164 lines
5.9 KiB
Markdown
# VaultAPI - Abstraction Library API for Bukkit Plugins - [![](https://travis-ci.org/MilkBowl/VaultAPI.svg?branch=master)](https://travis-ci.org/MilkBowl/VaultAPI)
|
|
|
|
How to include the API with Maven:
|
|
```
|
|
<repositories>
|
|
<repository>
|
|
<id>vault-repo</id>
|
|
<url>http://nexus.hc.to/content/repositories/pub_releases</url>
|
|
</repository>
|
|
</repositories>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>net.milkbowl.vault</groupId>
|
|
<artifactId>VaultAPI</artifactId>
|
|
<version>1.7</version>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
```
|
|
|
|
**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.
|
|
|
|
## 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-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/>.
|
|
|
|
## Building
|
|
VaultAPI comes with all libraries needed to build from the current branch.
|
|
|
|
## 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");
|
|
private static Economy econ = null;
|
|
private static Permission perms = null;
|
|
private static Chat chat = null;
|
|
|
|
@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()))));
|
|
EconomyResponse r = 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));
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
|
|
public static Economy getEconomy() {
|
|
return econ;
|
|
}
|
|
|
|
public static Permission getPermissions() {
|
|
return perms;
|
|
}
|
|
|
|
public static Chat getChat() {
|
|
return chat;
|
|
}
|
|
}
|
|
```
|