diff --git a/README.md b/README.md index e2e71e5..088a363 100644 --- a/README.md +++ b/README.md @@ -18,18 +18,63 @@ How to include the API with Maven: ``` -How to include the API with Gradle: -```groovy -repositories { - maven { url 'https://jitpack.io' } -} -dependencies { - compileOnly "com.github.MilkBowl:VaultAPI:2.0" -} -``` - **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 VaultAPI2? +Multiple developers have been waiting for a pull request which +would increase performance (by using UUIDs) while at the same time, +I and a fellow creatorfromhell have been waiting for multicurrency support. +There's a bunch of multicurrency plugins and none of them have a bridge +that allows them to communicate with other plugins without having a hell +of a lot of code to maintain... +I (anjoismysign) took the iniciative to continue a what seems a dead repository. +I am open for new team members as long as the mission is to keep supporting +'legacy' plugins while improving the API. + +## What are legacy plugins? +They are plugins which were designed with the old VaultAPI in mind. +The idea is to not hardfork if not needed 👍🏻 + +## How to implement VaultAPI2? +Here two examples: + +```java + /** + * Checks if the economy provider is available. + * If using MultiEconomy, it will return the default economy provider. + * + * @return The economy provider, or null if not available. + */ + public static Economy hasEconomyProvider() { + if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) { + return null; + } + RegisteredServiceProvider economyServiceProvider = Bukkit.getServer().getServicesManager().getRegistration(Economy.class); + if (economyServiceProvider != null) + return economyServiceProvider.getProvider(); + RegisteredServiceProvider multiEconomyServiceProvider = + Bukkit.getServer().getServicesManager().getRegistration(MultiEconomy.class); + if (multiEconomyServiceProvider == null) + return null; + return multiEconomyServiceProvider.getProvider().getDefault(); + } + + /** + * @return True if the there's no economy provider registered and no multi-economy provider registered. + */ + public static boolean canRegisterEconomy() { + if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) { + return false; + } + RegisteredServiceProvider economyServiceProvider = Bukkit.getServer().getServicesManager().getRegistration(Economy.class); + if (economyServiceProvider != null) + return false; + RegisteredServiceProvider multiEconomyServiceProvider = + Bukkit.getServer().getServicesManager().getRegistration(MultiEconomy.class); + return multiEconomyServiceProvider == null; + } +``` + ## 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 @@ -69,10 +114,10 @@ package com.example.plugin; import java.util.logging.Logger; -import net.milkbowl.vault2.chat.Chat; -import net.milkbowl.vault2.economy.Economy; -import net.milkbowl.vault2.economy.EconomyResponse; -import net.milkbowl.vault2.permission.Permission; +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; @@ -81,7 +126,7 @@ 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; @@ -94,7 +139,7 @@ public class ExamplePlugin extends JavaPlugin { @Override public void onEnable() { - if (!setupEconomy() ) { + if (!setupEconomy()) { log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName())); getServer().getPluginManager().disablePlugin(this); return; @@ -102,7 +147,7 @@ public class ExamplePlugin extends JavaPlugin { setupPermissions(); setupChat(); } - + private boolean setupEconomy() { if (getServer().getPluginManager().getPlugin("Vault") == null) { return false; @@ -114,40 +159,40 @@ public class ExamplePlugin extends JavaPlugin { econ = rsp.getProvider(); return econ != null; } - + private boolean setupChat() { RegisteredServiceProvider rsp = getServer().getServicesManager().getRegistration(Chat.class); chat = rsp.getProvider(); return chat != null; } - + private boolean setupPermissions() { RegisteredServiceProvider 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)) { + 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")) { + + 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.getUniqueId())))); EconomyResponse r = econ.depositPlayer(player.getUniqueId(), 1.05); - if(r.transactionSuccess()) { + 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")) { + } 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")) { + if (perms.has(player, "example.plugin.awesome")) { sender.sendMessage("You are awesome!"); } else { sender.sendMessage("You suck!"); @@ -157,11 +202,11 @@ public class ExamplePlugin extends JavaPlugin { return false; } } - + public static Economy getEconomy() { return econ; } - + public static Permission getPermissions() { return perms; } diff --git a/src/main/java/net/milkbowl/vault/chat/Chat.java b/src/main/java/net/milkbowl/vault/chat/Chat.java index 8945223..45d8459 100644 --- a/src/main/java/net/milkbowl/vault/chat/Chat.java +++ b/src/main/java/net/milkbowl/vault/chat/Chat.java @@ -1,997 +1,995 @@ -/* This file is part of Vault. - - 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 . -*/ -package net.milkbowl.vault.chat; - -import net.milkbowl.vault.permission.Permission; - -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.entity.Player; - -/** - * The main Chat API - allows for Prefix/Suffix nodes along with generic Info nodes if the linked Chat system supports them - * - * @deprecated in lieu of the modern Vault2. To update alter your import to net.milkbowl.vault2.chat. - - */ -public abstract class Chat { - - private Permission perms; - - public Chat(Permission perms) { - this.perms = perms; - } - /** - * Gets name of permission method - * @return Name of Permission Method - */ - abstract public String getName(); - - /** - * Checks if permission method is enabled. - * @return Success or Failure - */ - abstract public boolean isEnabled(); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerPrefix(String, OfflinePlayer)} instead. - * - * Get players prefix - * @param world World name - * @param player Player name - * @return Prefix - */ - @Deprecated - abstract public String getPlayerPrefix(String world, String player); - - /** - * Get a players prefix in the given world - * Use NULL for world if requesting a global prefix - * - * @param world World name - * @param player OfflinePlayer - * @return Prefix - */ - public String getPlayerPrefix(String world, OfflinePlayer player) { - return getPlayerPrefix(world, player.getName()); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerPrefix(String, OfflinePlayer)} instead. - * - * Get players prefix - * @param world World Object - * @param player Player name - * @return Prefix - */ - @Deprecated - public String getPlayerPrefix(World world, String player) { - return getPlayerPrefix(world.getName(), player); - } - - /** - * Get players prefix from the world they are currently in. - * May or may not return the global prefix depending on implementation. - * - * @param player Player Object - * @return Prefix - */ - public String getPlayerPrefix(Player player) { - return getPlayerPrefix(player.getWorld().getName(), player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerPrefix(String, OfflinePlayer, String)} instead. - * - * Set players prefix - * @param world World name - * @param player Player name - * @param prefix Prefix - */ - @Deprecated - abstract public void setPlayerPrefix(String world, String player, String prefix); - - /** - * Sets players prefix in the given world. - * Use NULL for world for setting in the Global scope. - * - * @param world World name - * @param player OfflinePlayer - * @param prefix Prefix - */ - public void setPlayerPrefix(String world, OfflinePlayer player, String prefix) { - setPlayerPrefix(world, player.getName(), prefix); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerPrefix(String, OfflinePlayer, String)} instead. - * - * Set players prefix in the given world. - * - * @param world World Object - * @param player Player name - * @param prefix Prefix - */ - @Deprecated - public void setPlayerPrefix(World world, String player, String prefix) { - setPlayerPrefix(world.getName(), player, prefix); - } - - /** - * Set players prefix in the world they are currently in. - * - * @param player Player Object - * @param prefix Prefix - */ - public void setPlayerPrefix(Player player, String prefix) { - setPlayerPrefix(player.getWorld().getName(), player, prefix); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerSuffix(String, OfflinePlayer)} instead. - * - * Get players suffix - * @param world World name - * @param player Player name - * @return Suffix - */ - @Deprecated - abstract public String getPlayerSuffix(String world, String player); - - /** - * Get players suffix in the specified world. - * - * @param world World name - * @param player OfflinePlayer name - * @return Suffix - */ - public String getPlayerSuffix(String world, OfflinePlayer player) { - return getPlayerSuffix(world, player.getName()); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerSuffix(String, OfflinePlayer)} instead. - * - * Get players suffix - * @param world World Object - * @param player Player name - * @return Suffix - */ - @Deprecated - public String getPlayerSuffix(World world, String player) { - return getPlayerSuffix(world.getName(), player); - } - - /** - * Get players suffix in the world they are currently in. - * - * @param player Player Object - * @return Suffix - */ - public String getPlayerSuffix(Player player) { - return getPlayerSuffix(player.getWorld().getName(), player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerSuffix(String, OfflinePlayer, String)} instead. - * - * Set players suffix - * @param world World name - * @param player Player name - * @param suffix Suffix - */ - @Deprecated - abstract public void setPlayerSuffix(String world, String player, String suffix); - - /** - * Set players suffix for the world specified - * - * @param world World name - * @param player OfflinePlayer - * @param suffix Suffix - */ - public void setPlayerSuffix(String world, OfflinePlayer player, String suffix) { - setPlayerSuffix(world, player.getName(), suffix); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerSuffix(String, OfflinePlayer, String)} instead. - * - * Set players suffix - * @param world World Object - * @param player Player name - * @param suffix Suffix - */ - @Deprecated - public void setPlayerSuffix(World world, String player, String suffix) { - setPlayerSuffix(world.getName(), player, suffix); - } - - /** - * Set players suffix in the world they currently occupy. - * - * @param player Player Object - * @param suffix Suffix - */ - public void setPlayerSuffix(Player player, String suffix) { - setPlayerSuffix(player.getWorld().getName(), player, suffix); - } - - /** - * Get group prefix - * @param world World name - * @param group Group name - * @return Prefix - */ - abstract public String getGroupPrefix(String world, String group); - - /** - * Get group prefix - * @param world World Object - * @param group Group name - * @return Prefix - */ - public String getGroupPrefix(World world, String group) { - return getGroupPrefix(world.getName(), group); - } - - /** - * Set group prefix - * @param world World name - * @param group Group name - * @param prefix Prefix - */ - abstract public void setGroupPrefix(String world, String group, String prefix); - - /** - * Set group prefix - * @param world World Object - * @param group Group name - * @param prefix Prefix - */ - public void setGroupPrefix(World world, String group, String prefix) { - setGroupPrefix(world.getName(), group, prefix); - } - - /** - * Get group suffix - * @param world World name - * @param group Group name - * @return Suffix - */ - abstract public String getGroupSuffix(String world, String group); - - /** - * Get group suffix - * @param world World Object - * @param group Group name - * @return Suffix - */ - public String getGroupSuffix(World world, String group) { - return getGroupSuffix(world.getName(), group); - } - - /** - * Set group suffix - * @param world World name - * @param group Group name - * @param suffix Suffix - */ - abstract public void setGroupSuffix(String world, String group, String suffix); - - /** - * Set group suffix - * @param world World Object - * @param group Group name - * @param suffix Suffix - */ - public void setGroupSuffix(World world, String group, String suffix) { - setGroupSuffix(world.getName(), group, suffix); - } - - /** - * Get a players informational node (Integer) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public int getPlayerInfoInteger(String world, OfflinePlayer player, String node, int defaultValue) { - return getPlayerInfoInteger(world, player.getName(), node, defaultValue); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. - * Get a players informational node (Integer) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - abstract public int getPlayerInfoInteger(String world, String player, String node, int defaultValue); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. - * - * Get a players informational node (Integer) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - public int getPlayerInfoInteger(World world, String player, String node, int defaultValue) { - return getPlayerInfoInteger(world.getName(), player, node, defaultValue); - } - - /** - * Get a players informational node (Integer) value - * @param player Player Object - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public int getPlayerInfoInteger(Player player, String node, int defaultValue) { - return getPlayerInfoInteger(player.getWorld().getName(), player, node, defaultValue); - } - - /** - * Set a players informational node (Integer) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoInteger(String world, OfflinePlayer player, String node, int value) { - setPlayerInfoInteger(world, player.getName(), node, value); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. - * - * Set a players informational node (Integer) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - abstract public void setPlayerInfoInteger(String world, String player, String node, int value); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. - * - * Set a players informational node (Integer) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - public void setPlayerInfoInteger(World world, String player, String node, int value) { - setPlayerInfoInteger(world.getName(), player, node, value); - } - - /** - * Set a players informational node (Integer) value - * @param player Player Object - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoInteger(Player player, String node, int value) { - setPlayerInfoInteger(player.getWorld().getName(), player, node, value); - } - - /** - * Get a groups informational node (Integer) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - abstract public int getGroupInfoInteger(String world, String group, String node, int defaultValue); - - /** - * Get a groups informational node (Integer) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public int getGroupInfoInteger(World world, String group, String node, int defaultValue) { - return getGroupInfoInteger(world.getName(), group, node, defaultValue); - } - - /** - * Set a groups informational node (Integer) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - abstract public void setGroupInfoInteger(String world, String group, String node, int value); - - /** - * Set a groups informational node (Integer) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - public void setGroupInfoInteger(World world, String group, String node, int value) { - setGroupInfoInteger(world.getName(), group, node, value); - } - - /** - * Get a players informational node (Double) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public double getPlayerInfoDouble(String world, OfflinePlayer player, String node, double defaultValue) { - return getPlayerInfoDouble(world, player.getName(), node, defaultValue); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. - * - * Get a players informational node (Double) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - abstract public double getPlayerInfoDouble(String world, String player, String node, double defaultValue); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoDouble(String, OfflinePlayer, String, double)} instead - * - * Get a players informational node (Double) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - public double getPlayerInfoDouble(World world, String player, String node, double defaultValue) { - return getPlayerInfoDouble(world.getName(), player, node, defaultValue); - } - - /** - * Get a players informational node (Double) value - * @param player Player Object - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public double getPlayerInfoDouble(Player player, String node, double defaultValue) { - return getPlayerInfoDouble(player.getWorld().getName(), player, node, defaultValue); - } - - /** - * Set a players informational node (Double) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoDouble(String world, OfflinePlayer player, String node, double value) { - setPlayerInfoDouble(world, player.getName(), node, value); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. - * Set a players informational node (Double) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - abstract public void setPlayerInfoDouble(String world, String player, String node, double value); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. - * Set a players informational node (Double) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - public void setPlayerInfoDouble(World world, String player, String node, double value) { - setPlayerInfoDouble(world.getName(), player, node, value); - } - - /** - * Set a players informational node (Double) value - * @param player Player Object - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoDouble(Player player, String node, double value) { - setPlayerInfoDouble(player.getWorld().getName(), player, node, value); - } - - /** - * Get a groups informational node (Double) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - abstract public double getGroupInfoDouble(String world, String group, String node, double defaultValue); - - /** - * Get a groups informational node (Double) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public double getGroupInfoDouble(World world, String group, String node, double defaultValue) { - return getGroupInfoDouble(world.getName(), group, node, defaultValue); - } - - /** - * Set a groups informational node (Double) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - abstract public void setGroupInfoDouble(String world, String group, String node, double value); - - /** - * Set a groups informational node (Double) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - public void setGroupInfoDouble(World world, String group, String node, double value) { - setGroupInfoDouble(world.getName(), group, node, value); - } - - /** - * Get a players informational node (Boolean) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public boolean getPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean defaultValue) { - return getPlayerInfoBoolean(world, player.getName(), node, defaultValue); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. - * - * Get a players informational node (Boolean) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - abstract public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. - * - * Get a players informational node (Boolean) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - public boolean getPlayerInfoBoolean(World world, String player, String node, boolean defaultValue) { - return getPlayerInfoBoolean(world.getName(), player, node, defaultValue); - } - - /** - * Get a players informational node (Boolean) value - * @param player Player Object - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public boolean getPlayerInfoBoolean(Player player, String node, boolean defaultValue) { - return getPlayerInfoBoolean(player.getWorld().getName(), player, node, defaultValue); - } - - /** - * Set a players informational node (Boolean) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean value) { - setPlayerInfoBoolean(world, player.getName(), node, value); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. - * Set a players informational node (Boolean) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - abstract public void setPlayerInfoBoolean(String world, String player, String node, boolean value); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. - * Set a players informational node (Boolean) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - public void setPlayerInfoBoolean(World world, String player, String node, boolean value) { - setPlayerInfoBoolean(world.getName(), player, node, value); - } - - /** - * Set a players informational node (Boolean) value - * @param player Player Object - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoBoolean(Player player, String node, boolean value) { - setPlayerInfoBoolean(player.getWorld().getName(), player, node, value); - } - - /** - * Get a groups informational node (Boolean) value - * @param world Name of World - * @param group Name of Group - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - abstract public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue); - - /** - * Set a players informational node (Boolean) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public boolean getGroupInfoBoolean(World world, String group, String node, boolean defaultValue) { - return getGroupInfoBoolean(world.getName(), group, node, defaultValue); - } - - /** - * Set a groups informational node (Boolean) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - abstract public void setGroupInfoBoolean(String world, String group, String node, boolean value); - - /** - * Set a players informational node (Boolean) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - public void setGroupInfoBoolean(World world, String group, String node, boolean value) { - setGroupInfoBoolean(world.getName(), group, node, value); - } - - /** - * Get a players informational node (String) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public String getPlayerInfoString(String world, OfflinePlayer player, String node, String defaultValue) { - return getPlayerInfoString(world, player.getName(), node, defaultValue); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoString(String, OfflinePlayer, String, String)} instead. - * - * Get a players informational node (String) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - abstract public String getPlayerInfoString(String world, String player, String node, String defaultValue); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoString(String, OfflinePlayer, String, String)} instead. - * Get a players informational node (String) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - public String getPlayerInfoString(World world, String player, String node, String defaultValue) { - return getPlayerInfoString(world.getName(), player, node, defaultValue); - } - - /** - * Get a players informational node (String) value - * @param player Player Object - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public String getPlayerInfoString(Player player, String node, String defaultValue) { - return getPlayerInfoString(player.getWorld().getName(), player, node, defaultValue); - } - - /** - * Set a players informational node (String) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoString(String world, OfflinePlayer player, String node, String value) { - setPlayerInfoString(world, player.getName(), node, value); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoString(String, OfflinePlayer, String, String)} instead. - * Set a players informational node (String) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - abstract public void setPlayerInfoString(String world, String player, String node, String value); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoString(String, OfflinePlayer, String, String)} instead. - * Set a players informational node (String) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - public void setPlayerInfoString(World world, String player, String node, String value) { - setPlayerInfoString(world.getName(), player, node, value); - } - - /** - * Set a players informational node (String) value - * @param player Player Object - * @param node Permission node - * @param value Value ot set - */ - public void setPlayerInfoString(Player player, String node, String value) { - setPlayerInfoString(player.getWorld().getName(), player, node, value); - } - - /** - * Get a groups informational node (String) value - * @param world Name of World - * @param group Name of Group - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - abstract public String getGroupInfoString(String world, String group, String node, String defaultValue); - - /** - * Set a players informational node (String) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public String getGroupInfoString(World world, String group, String node, String defaultValue) { - return getGroupInfoString(world.getName(), group, node, defaultValue); - } - - /** - * Set a groups informational node (String) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - abstract public void setGroupInfoString(String world, String group, String node, String value); - - /** - * Set a groups informational node (String) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - public void setGroupInfoString(World world, String group, String node, String value) { - setGroupInfoString(world.getName(), group, node, value); - } - - /** - * Check if player is member of a group. - * @param world World name - * @param player OfflinePlayer - * @param group Group name - * @return Success or Failure - */ - public boolean playerInGroup(String world, OfflinePlayer player, String group) { - return perms.playerInGroup(world, player, group); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #playerInGroup(String, OfflinePlayer, String)} instead. - * Check if player is member of a group. - * @param world World name - * @param player Player name - * @param group Group name - * @return Success or Failure - */ - @Deprecated - public boolean playerInGroup(String world, String player, String group) { - return perms.playerInGroup(world, player, group); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #playerInGroup(String, OfflinePlayer, String)} instead. - * Check if player is member of a group. - * @param world World Object - * @param player Player name - * @param group Group name - * @return Success or Failure - */ - @Deprecated - public boolean playerInGroup(World world, String player, String group) { - return playerInGroup(world.getName(), player, group); - } - - /** - * Check if player is member of a group. - * @param player Player Object - * @param group Group name - * @return Success or Failure - */ - public boolean playerInGroup(Player player, String group) { - return playerInGroup(player.getWorld().getName(), player, group); - } - - /** - * Gets the list of groups that this player has - * @param world World name - * @param player OfflinePlayer - * @return Array of groups - */ - public String[] getPlayerGroups(String world, OfflinePlayer player) { - return perms.getPlayerGroups(world, player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerGroups(String, OfflinePlayer)} instead. - * Gets the list of groups that this player has - * @param world World name - * @param player Player name - * @return Array of groups - */ - @Deprecated - public String[] getPlayerGroups(String world, String player) { - return perms.getPlayerGroups(world, player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerGroups(String, OfflinePlayer)} instead. - * Gets the list of groups that this player has - * @param world World Object - * @param player Player name - * @return Array of groups - */ - @Deprecated - public String[] getPlayerGroups(World world, String player) { - return getPlayerGroups(world.getName(), player); - } - - /** - * Gets the list of groups that this player has - * @param player Player Object - * @return Array of groups - */ - public String[] getPlayerGroups(Player player) { - return getPlayerGroups(player.getWorld().getName(), player); - } - - /** - * Gets players primary group - * @param world World name - * @param player OfflinePlayer - * @return Players primary group - */ - public String getPrimaryGroup(String world, OfflinePlayer player) { - return perms.getPrimaryGroup(world, player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPrimaryGroup(String, OfflinePlayer)} instead. - * Gets players primary group - * @param world World name - * @param player Player name - * @return Players primary group - */ - @Deprecated - public String getPrimaryGroup(String world, String player) { - return perms.getPrimaryGroup(world, player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPrimaryGroup(String, OfflinePlayer)} instead. - * Gets players primary group - * @param world World Object - * @param player Player name - * @return Players primary group - */ - @Deprecated - public String getPrimaryGroup(World world, String player) { - return getPrimaryGroup(world.getName(), player); - } - - /** - * Get players primary group - * @param player Player Object - * @return Players primary group - */ - public String getPrimaryGroup(Player player) { - return getPrimaryGroup(player.getWorld().getName(), player); - } - - /** - * Returns a list of all known groups - * @return an Array of String of all groups - */ - public String[] getGroups() { - return perms.getGroups(); - } -} +/* This file is part of Vault. + + 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 . +*/ +package net.milkbowl.vault.chat; + +import net.milkbowl.vault.permission.Permission; + +import org.bukkit.OfflinePlayer; +import org.bukkit.World; +import org.bukkit.entity.Player; + +/** + * The main Chat API - allows for Prefix/Suffix nodes along with generic Info nodes if the linked Chat system supports them + * + */ +public abstract class Chat { + + private Permission perms; + + public Chat(Permission perms) { + this.perms = perms; + } + /** + * Gets name of permission method + * @return Name of Permission Method + */ + abstract public String getName(); + + /** + * Checks if permission method is enabled. + * @return Success or Failure + */ + abstract public boolean isEnabled(); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerPrefix(String, OfflinePlayer)} instead. + * + * Get players prefix + * @param world World name + * @param player Player name + * @return Prefix + */ + @Deprecated + abstract public String getPlayerPrefix(String world, String player); + + /** + * Get a players prefix in the given world + * Use NULL for world if requesting a global prefix + * + * @param world World name + * @param player OfflinePlayer + * @return Prefix + */ + public String getPlayerPrefix(String world, OfflinePlayer player) { + return getPlayerPrefix(world, player.getName()); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerPrefix(String, OfflinePlayer)} instead. + * + * Get players prefix + * @param world World Object + * @param player Player name + * @return Prefix + */ + @Deprecated + public String getPlayerPrefix(World world, String player) { + return getPlayerPrefix(world.getName(), player); + } + + /** + * Get players prefix from the world they are currently in. + * May or may not return the global prefix depending on implementation. + * + * @param player Player Object + * @return Prefix + */ + public String getPlayerPrefix(Player player) { + return getPlayerPrefix(player.getWorld().getName(), player); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerPrefix(String, OfflinePlayer, String)} instead. + * + * Set players prefix + * @param world World name + * @param player Player name + * @param prefix Prefix + */ + @Deprecated + abstract public void setPlayerPrefix(String world, String player, String prefix); + + /** + * Sets players prefix in the given world. + * Use NULL for world for setting in the Global scope. + * + * @param world World name + * @param player OfflinePlayer + * @param prefix Prefix + */ + public void setPlayerPrefix(String world, OfflinePlayer player, String prefix) { + setPlayerPrefix(world, player.getName(), prefix); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerPrefix(String, OfflinePlayer, String)} instead. + * + * Set players prefix in the given world. + * + * @param world World Object + * @param player Player name + * @param prefix Prefix + */ + @Deprecated + public void setPlayerPrefix(World world, String player, String prefix) { + setPlayerPrefix(world.getName(), player, prefix); + } + + /** + * Set players prefix in the world they are currently in. + * + * @param player Player Object + * @param prefix Prefix + */ + public void setPlayerPrefix(Player player, String prefix) { + setPlayerPrefix(player.getWorld().getName(), player, prefix); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerSuffix(String, OfflinePlayer)} instead. + * + * Get players suffix + * @param world World name + * @param player Player name + * @return Suffix + */ + @Deprecated + abstract public String getPlayerSuffix(String world, String player); + + /** + * Get players suffix in the specified world. + * + * @param world World name + * @param player OfflinePlayer name + * @return Suffix + */ + public String getPlayerSuffix(String world, OfflinePlayer player) { + return getPlayerSuffix(world, player.getName()); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerSuffix(String, OfflinePlayer)} instead. + * + * Get players suffix + * @param world World Object + * @param player Player name + * @return Suffix + */ + @Deprecated + public String getPlayerSuffix(World world, String player) { + return getPlayerSuffix(world.getName(), player); + } + + /** + * Get players suffix in the world they are currently in. + * + * @param player Player Object + * @return Suffix + */ + public String getPlayerSuffix(Player player) { + return getPlayerSuffix(player.getWorld().getName(), player); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerSuffix(String, OfflinePlayer, String)} instead. + * + * Set players suffix + * @param world World name + * @param player Player name + * @param suffix Suffix + */ + @Deprecated + abstract public void setPlayerSuffix(String world, String player, String suffix); + + /** + * Set players suffix for the world specified + * + * @param world World name + * @param player OfflinePlayer + * @param suffix Suffix + */ + public void setPlayerSuffix(String world, OfflinePlayer player, String suffix) { + setPlayerSuffix(world, player.getName(), suffix); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerSuffix(String, OfflinePlayer, String)} instead. + * + * Set players suffix + * @param world World Object + * @param player Player name + * @param suffix Suffix + */ + @Deprecated + public void setPlayerSuffix(World world, String player, String suffix) { + setPlayerSuffix(world.getName(), player, suffix); + } + + /** + * Set players suffix in the world they currently occupy. + * + * @param player Player Object + * @param suffix Suffix + */ + public void setPlayerSuffix(Player player, String suffix) { + setPlayerSuffix(player.getWorld().getName(), player, suffix); + } + + /** + * Get group prefix + * @param world World name + * @param group Group name + * @return Prefix + */ + abstract public String getGroupPrefix(String world, String group); + + /** + * Get group prefix + * @param world World Object + * @param group Group name + * @return Prefix + */ + public String getGroupPrefix(World world, String group) { + return getGroupPrefix(world.getName(), group); + } + + /** + * Set group prefix + * @param world World name + * @param group Group name + * @param prefix Prefix + */ + abstract public void setGroupPrefix(String world, String group, String prefix); + + /** + * Set group prefix + * @param world World Object + * @param group Group name + * @param prefix Prefix + */ + public void setGroupPrefix(World world, String group, String prefix) { + setGroupPrefix(world.getName(), group, prefix); + } + + /** + * Get group suffix + * @param world World name + * @param group Group name + * @return Suffix + */ + abstract public String getGroupSuffix(String world, String group); + + /** + * Get group suffix + * @param world World Object + * @param group Group name + * @return Suffix + */ + public String getGroupSuffix(World world, String group) { + return getGroupSuffix(world.getName(), group); + } + + /** + * Set group suffix + * @param world World name + * @param group Group name + * @param suffix Suffix + */ + abstract public void setGroupSuffix(String world, String group, String suffix); + + /** + * Set group suffix + * @param world World Object + * @param group Group name + * @param suffix Suffix + */ + public void setGroupSuffix(World world, String group, String suffix) { + setGroupSuffix(world.getName(), group, suffix); + } + + /** + * Get a players informational node (Integer) value + * @param world World name + * @param player OfflinePlayer + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public int getPlayerInfoInteger(String world, OfflinePlayer player, String node, int defaultValue) { + return getPlayerInfoInteger(world, player.getName(), node, defaultValue); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. + * Get a players informational node (Integer) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + @Deprecated + abstract public int getPlayerInfoInteger(String world, String player, String node, int defaultValue); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. + * + * Get a players informational node (Integer) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + @Deprecated + public int getPlayerInfoInteger(World world, String player, String node, int defaultValue) { + return getPlayerInfoInteger(world.getName(), player, node, defaultValue); + } + + /** + * Get a players informational node (Integer) value + * @param player Player Object + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public int getPlayerInfoInteger(Player player, String node, int defaultValue) { + return getPlayerInfoInteger(player.getWorld().getName(), player, node, defaultValue); + } + + /** + * Set a players informational node (Integer) value + * @param world World name + * @param player OfflinePlayer + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoInteger(String world, OfflinePlayer player, String node, int value) { + setPlayerInfoInteger(world, player.getName(), node, value); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. + * + * Set a players informational node (Integer) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + @Deprecated + abstract public void setPlayerInfoInteger(String world, String player, String node, int value); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. + * + * Set a players informational node (Integer) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + @Deprecated + public void setPlayerInfoInteger(World world, String player, String node, int value) { + setPlayerInfoInteger(world.getName(), player, node, value); + } + + /** + * Set a players informational node (Integer) value + * @param player Player Object + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoInteger(Player player, String node, int value) { + setPlayerInfoInteger(player.getWorld().getName(), player, node, value); + } + + /** + * Get a groups informational node (Integer) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public int getGroupInfoInteger(String world, String group, String node, int defaultValue); + + /** + * Get a groups informational node (Integer) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public int getGroupInfoInteger(World world, String group, String node, int defaultValue) { + return getGroupInfoInteger(world.getName(), group, node, defaultValue); + } + + /** + * Set a groups informational node (Integer) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setGroupInfoInteger(String world, String group, String node, int value); + + /** + * Set a groups informational node (Integer) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + public void setGroupInfoInteger(World world, String group, String node, int value) { + setGroupInfoInteger(world.getName(), group, node, value); + } + + /** + * Get a players informational node (Double) value + * @param world World name + * @param player OfflinePlayer + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public double getPlayerInfoDouble(String world, OfflinePlayer player, String node, double defaultValue) { + return getPlayerInfoDouble(world, player.getName(), node, defaultValue); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. + * + * Get a players informational node (Double) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + @Deprecated + abstract public double getPlayerInfoDouble(String world, String player, String node, double defaultValue); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoDouble(String, OfflinePlayer, String, double)} instead + * + * Get a players informational node (Double) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + @Deprecated + public double getPlayerInfoDouble(World world, String player, String node, double defaultValue) { + return getPlayerInfoDouble(world.getName(), player, node, defaultValue); + } + + /** + * Get a players informational node (Double) value + * @param player Player Object + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public double getPlayerInfoDouble(Player player, String node, double defaultValue) { + return getPlayerInfoDouble(player.getWorld().getName(), player, node, defaultValue); + } + + /** + * Set a players informational node (Double) value + * @param world World name + * @param player OfflinePlayer + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoDouble(String world, OfflinePlayer player, String node, double value) { + setPlayerInfoDouble(world, player.getName(), node, value); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. + * Set a players informational node (Double) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + @Deprecated + abstract public void setPlayerInfoDouble(String world, String player, String node, double value); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. + * Set a players informational node (Double) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + @Deprecated + public void setPlayerInfoDouble(World world, String player, String node, double value) { + setPlayerInfoDouble(world.getName(), player, node, value); + } + + /** + * Set a players informational node (Double) value + * @param player Player Object + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoDouble(Player player, String node, double value) { + setPlayerInfoDouble(player.getWorld().getName(), player, node, value); + } + + /** + * Get a groups informational node (Double) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public double getGroupInfoDouble(String world, String group, String node, double defaultValue); + + /** + * Get a groups informational node (Double) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public double getGroupInfoDouble(World world, String group, String node, double defaultValue) { + return getGroupInfoDouble(world.getName(), group, node, defaultValue); + } + + /** + * Set a groups informational node (Double) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setGroupInfoDouble(String world, String group, String node, double value); + + /** + * Set a groups informational node (Double) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + public void setGroupInfoDouble(World world, String group, String node, double value) { + setGroupInfoDouble(world.getName(), group, node, value); + } + + /** + * Get a players informational node (Boolean) value + * @param world World name + * @param player OfflinePlayer + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public boolean getPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean defaultValue) { + return getPlayerInfoBoolean(world, player.getName(), node, defaultValue); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. + * + * Get a players informational node (Boolean) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + @Deprecated + abstract public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. + * + * Get a players informational node (Boolean) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + @Deprecated + public boolean getPlayerInfoBoolean(World world, String player, String node, boolean defaultValue) { + return getPlayerInfoBoolean(world.getName(), player, node, defaultValue); + } + + /** + * Get a players informational node (Boolean) value + * @param player Player Object + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public boolean getPlayerInfoBoolean(Player player, String node, boolean defaultValue) { + return getPlayerInfoBoolean(player.getWorld().getName(), player, node, defaultValue); + } + + /** + * Set a players informational node (Boolean) value + * @param world World name + * @param player OfflinePlayer + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean value) { + setPlayerInfoBoolean(world, player.getName(), node, value); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. + * Set a players informational node (Boolean) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + @Deprecated + abstract public void setPlayerInfoBoolean(String world, String player, String node, boolean value); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. + * Set a players informational node (Boolean) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + @Deprecated + public void setPlayerInfoBoolean(World world, String player, String node, boolean value) { + setPlayerInfoBoolean(world.getName(), player, node, value); + } + + /** + * Set a players informational node (Boolean) value + * @param player Player Object + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoBoolean(Player player, String node, boolean value) { + setPlayerInfoBoolean(player.getWorld().getName(), player, node, value); + } + + /** + * Get a groups informational node (Boolean) value + * @param world Name of World + * @param group Name of Group + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue); + + /** + * Set a players informational node (Boolean) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public boolean getGroupInfoBoolean(World world, String group, String node, boolean defaultValue) { + return getGroupInfoBoolean(world.getName(), group, node, defaultValue); + } + + /** + * Set a groups informational node (Boolean) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setGroupInfoBoolean(String world, String group, String node, boolean value); + + /** + * Set a players informational node (Boolean) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + public void setGroupInfoBoolean(World world, String group, String node, boolean value) { + setGroupInfoBoolean(world.getName(), group, node, value); + } + + /** + * Get a players informational node (String) value + * @param world World name + * @param player OfflinePlayer + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public String getPlayerInfoString(String world, OfflinePlayer player, String node, String defaultValue) { + return getPlayerInfoString(world, player.getName(), node, defaultValue); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoString(String, OfflinePlayer, String, String)} instead. + * + * Get a players informational node (String) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + @Deprecated + abstract public String getPlayerInfoString(String world, String player, String node, String defaultValue); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoString(String, OfflinePlayer, String, String)} instead. + * Get a players informational node (String) value + * @param world World Object + * @param player Player name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + @Deprecated + public String getPlayerInfoString(World world, String player, String node, String defaultValue) { + return getPlayerInfoString(world.getName(), player, node, defaultValue); + } + + /** + * Get a players informational node (String) value + * @param player Player Object + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public String getPlayerInfoString(Player player, String node, String defaultValue) { + return getPlayerInfoString(player.getWorld().getName(), player, node, defaultValue); + } + + /** + * Set a players informational node (String) value + * @param world World name + * @param player OfflinePlayer + * @param node Permission node + * @param value Value to set + */ + public void setPlayerInfoString(String world, OfflinePlayer player, String node, String value) { + setPlayerInfoString(world, player.getName(), node, value); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoString(String, OfflinePlayer, String, String)} instead. + * Set a players informational node (String) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + @Deprecated + abstract public void setPlayerInfoString(String world, String player, String node, String value); + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoString(String, OfflinePlayer, String, String)} instead. + * Set a players informational node (String) value + * @param world World name + * @param player Player name + * @param node Permission node + * @param value Value to set + */ + @Deprecated + public void setPlayerInfoString(World world, String player, String node, String value) { + setPlayerInfoString(world.getName(), player, node, value); + } + + /** + * Set a players informational node (String) value + * @param player Player Object + * @param node Permission node + * @param value Value ot set + */ + public void setPlayerInfoString(Player player, String node, String value) { + setPlayerInfoString(player.getWorld().getName(), player, node, value); + } + + /** + * Get a groups informational node (String) value + * @param world Name of World + * @param group Name of Group + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + abstract public String getGroupInfoString(String world, String group, String node, String defaultValue); + + /** + * Set a players informational node (String) value + * @param world World Object + * @param group Group name + * @param node Permission node + * @param defaultValue Default value + * @return Value + */ + public String getGroupInfoString(World world, String group, String node, String defaultValue) { + return getGroupInfoString(world.getName(), group, node, defaultValue); + } + + /** + * Set a groups informational node (String) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + abstract public void setGroupInfoString(String world, String group, String node, String value); + + /** + * Set a groups informational node (String) value + * @param world World name + * @param group Group name + * @param node Permission node + * @param value Value to set + */ + public void setGroupInfoString(World world, String group, String node, String value) { + setGroupInfoString(world.getName(), group, node, value); + } + + /** + * Check if player is member of a group. + * @param world World name + * @param player OfflinePlayer + * @param group Group name + * @return Success or Failure + */ + public boolean playerInGroup(String world, OfflinePlayer player, String group) { + return perms.playerInGroup(world, player, group); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #playerInGroup(String, OfflinePlayer, String)} instead. + * Check if player is member of a group. + * @param world World name + * @param player Player name + * @param group Group name + * @return Success or Failure + */ + @Deprecated + public boolean playerInGroup(String world, String player, String group) { + return perms.playerInGroup(world, player, group); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #playerInGroup(String, OfflinePlayer, String)} instead. + * Check if player is member of a group. + * @param world World Object + * @param player Player name + * @param group Group name + * @return Success or Failure + */ + @Deprecated + public boolean playerInGroup(World world, String player, String group) { + return playerInGroup(world.getName(), player, group); + } + + /** + * Check if player is member of a group. + * @param player Player Object + * @param group Group name + * @return Success or Failure + */ + public boolean playerInGroup(Player player, String group) { + return playerInGroup(player.getWorld().getName(), player, group); + } + + /** + * Gets the list of groups that this player has + * @param world World name + * @param player OfflinePlayer + * @return Array of groups + */ + public String[] getPlayerGroups(String world, OfflinePlayer player) { + return perms.getPlayerGroups(world, player); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerGroups(String, OfflinePlayer)} instead. + * Gets the list of groups that this player has + * @param world World name + * @param player Player name + * @return Array of groups + */ + @Deprecated + public String[] getPlayerGroups(String world, String player) { + return perms.getPlayerGroups(world, player); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerGroups(String, OfflinePlayer)} instead. + * Gets the list of groups that this player has + * @param world World Object + * @param player Player name + * @return Array of groups + */ + @Deprecated + public String[] getPlayerGroups(World world, String player) { + return getPlayerGroups(world.getName(), player); + } + + /** + * Gets the list of groups that this player has + * @param player Player Object + * @return Array of groups + */ + public String[] getPlayerGroups(Player player) { + return getPlayerGroups(player.getWorld().getName(), player); + } + + /** + * Gets players primary group + * @param world World name + * @param player OfflinePlayer + * @return Players primary group + */ + public String getPrimaryGroup(String world, OfflinePlayer player) { + return perms.getPrimaryGroup(world, player); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPrimaryGroup(String, OfflinePlayer)} instead. + * Gets players primary group + * @param world World name + * @param player Player name + * @return Players primary group + */ + @Deprecated + public String getPrimaryGroup(String world, String player) { + return perms.getPrimaryGroup(world, player); + } + + /** + * @deprecated As of VaultAPI 1.4 use {{@link #getPrimaryGroup(String, OfflinePlayer)} instead. + * Gets players primary group + * @param world World Object + * @param player Player name + * @return Players primary group + */ + @Deprecated + public String getPrimaryGroup(World world, String player) { + return getPrimaryGroup(world.getName(), player); + } + + /** + * Get players primary group + * @param player Player Object + * @return Players primary group + */ + public String getPrimaryGroup(Player player) { + return getPrimaryGroup(player.getWorld().getName(), player); + } + + /** + * Returns a list of all known groups + * @return an Array of String of all groups + */ + public String[] getGroups() { + return perms.getGroups(); + } +} diff --git a/src/main/java/net/milkbowl/vault/economy/Economy.java b/src/main/java/net/milkbowl/vault/economy/Economy.java index d37c725..540b5ba 100644 --- a/src/main/java/net/milkbowl/vault/economy/Economy.java +++ b/src/main/java/net/milkbowl/vault/economy/Economy.java @@ -17,45 +17,53 @@ package net.milkbowl.vault.economy; import java.util.List; - -import org.bukkit.OfflinePlayer; +import java.util.Map; +import java.util.UUID; /** * The main economy API * - * @deprecated in lieu of the modern Vault2. To update alter your import to net.milkbowl.vault2.economy and update to use the new UUID-based methods where available. */ public interface Economy { /** - * Checks if economy method is enabled. + * Checks if economy method/implementation is enabled. + * * @return Success or Failure */ public boolean isEnabled(); /** - * Gets name of economy method + * Gets name of economy method or implementation + * in case of being used in multi-currency environment. + * * @return Name of Economy Method */ public String getName(); /** * Returns true if the given implementation supports banks. + * * @return true if the implementation supports banks */ public boolean hasBankSupport(); + /* + * Currency-related methods follow. + */ + /** - * Some economy plugins round off after a certain number of digits. - * This function returns the number of digits the plugin keeps - * or -1 if no rounding occurs. + * Some economy plugins round off after a certain number of digits. This + * function returns the number of digits the plugin keeps or -1 if no rounding + * occurs. + * * @return number of digits after the decimal point kept */ public int fractionalDigits(); /** * Format amount into a human readable String This provides translation into - * economy specific formatting to improve consistency between plugins. + * economy specific formatting to improve consistency between plugins. * * @param amount to format * @return Human readable string describing amount @@ -63,196 +71,194 @@ public interface Economy { public String format(double amount); /** - * Returns the name of the currency in plural form. - * If the economy being used does not support currency names then an empty string will be returned. + * Returns the name of the currency in plural form. If the economy being used + * does not support currency names then an empty string will be returned. * * @return name of the currency (plural) */ public String currencyNamePlural(); - /** - * Returns the name of the currency in singular form. - * If the economy being used does not support currency names then an empty string will be returned. + * Returns the name of the currency in singular form. If the economy being used + * does not support currency names then an empty string will be returned. * * @return name of the currency (singular) */ public String currencyNameSingular(); - /** - * - * @deprecated As of VaultAPI 1.4 use {@link #hasAccount(OfflinePlayer)} instead. + /* + * Account-related methods follow. */ - @Deprecated - public boolean hasAccount(String playerName); /** - * Checks if this player has an account on the server yet - * This will always return true if the player has joined the server at least once - * as all major economy plugins auto-generate a player account when the player joins the server + * Attempts to create a account for the given uuid * - * @param player to check - * @return if the player has an account + * @param uuid associated with the account + * @param name associated with the account. + * @return if the account creation was successful */ - public boolean hasAccount(OfflinePlayer player); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #hasAccount(OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean hasAccount(String playerName, String worldName); + public boolean createAccount(UUID uuid, String name); /** - * Checks if this player has an account on the server yet on the given world - * This will always return true if the player has joined the server at least once - * as all major economy plugins auto-generate a player account when the player joins the server + * Attempts to create an account for the given UUID on the specified world + * IMPLEMENTATION SPECIFIC - if an economy plugin does not support this then + * false will always be returned. * - * @param player to check in the world + * @param uuid associated with the account + * @param name associated with the account. + * @param worldName String name of the world + * @return if the account creation was successful + */ + public boolean createAccount(UUID uuid, String name, String worldName); + + /** + * Returns a map that represents all of the UUIDs which have accounts in the + * plugin, as well as their last-known-name. This is used for Vault's economy + * converter and should be given every account available. + * + * @return a {@link Map} composed of the accounts keyed by their UUID, along + * with their associated last-known-name. + */ + public Map getUUIDNameMap(); + + /** + * Gets the last known name of an account owned by the given UUID. Required for + * messages to be more human-readable than UUIDs alone can provide. + * + * @param uuid UUID to look up. + */ + public String getAccountName(UUID uuid); + + /** + * Checks if this uuid has an account yet + * + * @param uuid to check + * @return if the uuid has an account + */ + public boolean hasAccount(UUID uuid); + + /** + * Checks if this uuid has an account yet on the given world + * + * @param uuid to check * @param worldName world-specific account - * @return if the player has an account + * @return if the uuid has an account */ - public boolean hasAccount(OfflinePlayer player, String worldName); + public boolean hasAccount(UUID uuid, String worldName); /** - * @deprecated As of VaultAPI 1.4 use {@link #getBalance(OfflinePlayer)} instead. - */ - @Deprecated - public double getBalance(String playerName); - - /** - * Gets balance of a player + * A method which changes the name associated with the given UUID in the + * Map received from {@link #getUUIDNameMap()}. * - * @param player of the player - * @return Amount currently held in players account + * @param uuid which is having a name change. + * @param name name that will be associated with the UUID in the + * Map map. + * @return true if the name change is successful. */ - public double getBalance(OfflinePlayer player); + public boolean renameAccount(UUID uuid, String name); /** - * @deprecated As of VaultAPI 1.4 use {@link #getBalance(OfflinePlayer, String)} instead. + * Gets balance of a UUID + * + * @param uuid of the account to get a balance for + * @return Amount currently held in account associated with the given UUID */ - @Deprecated - public double getBalance(String playerName, String world); - + public double getBalance(UUID uuid); + /** - * Gets balance of a player on the specified world. - * IMPLEMENTATION SPECIFIC - if an economy plugin does not support this the global balance will be returned. - * @param player to check + * Gets balance of a UUID on the specified world. IMPLEMENTATION SPECIFIC - if + * an economy plugin does not support this the global balance will be returned. + * + * @param uuid of the account to get a balance for * @param world name of the world - * @return Amount currently held in players account + * @return Amount currently held in account associated with the given UUID */ - public double getBalance(OfflinePlayer player, String world); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #has(OfflinePlayer, double)} instead. - */ - @Deprecated - public boolean has(String playerName, double amount); - - /** - * Checks if the player account has the amount - DO NOT USE NEGATIVE AMOUNTS - * - * @param player to check - * @param amount to check for - * @return True if player has amount, False else wise - */ - public boolean has(OfflinePlayer player, double amount); + public double getBalance(UUID uuid, String world); /** - * @deprecated As of VaultAPI 1.4 use {@link #has(OfflinePlayer, String, double)} instead. - */ - @Deprecated - public boolean has(String playerName, String worldName, double amount); - - /** - * Checks if the player account has the amount in a given world - DO NOT USE NEGATIVE AMOUNTS - * IMPLEMENTATION SPECIFIC - if an economy plugin does not support this the global balance will be returned. + * Checks if the account associated with the given UUID has the amount - DO NOT + * USE NEGATIVE AMOUNTS * - * @param player to check + * @param uuid to check + * @param amount to check for + * @return True if UUID has amount, False else wise + */ + public boolean has(UUID uuid, double amount); + + /** + * Checks if the account associated with the given UUID has the amount in the + * given world - DO NOT USE NEGATIVE AMOUNTS IMPLEMENTATION SPECIFIC - if an + * economy plugin does not support this the global balance will be returned. + * + * @param uuid to check * @param worldName to check with - * @param amount to check for - * @return True if player has amount in the given world, False else wise + * @param amount to check for + * @return True if UUID has amount in the given world, + * False else wise */ - public boolean has(OfflinePlayer player, String worldName, double amount); + public boolean has(UUID uuid, String worldName, double amount); /** - * @deprecated As of VaultAPI 1.4 use {@link #withdrawPlayer(OfflinePlayer, double)} instead. - */ - @Deprecated - public EconomyResponse withdrawPlayer(String playerName, double amount); - - /** - * Withdraw an amount from a player - DO NOT USE NEGATIVE AMOUNTS + * Withdraw an amount from an account associated with a UUID - DO NOT USE + * NEGATIVE AMOUNTS * - * @param player to withdraw from + * @param uuid to withdraw from * @param amount Amount to withdraw * @return Detailed response of transaction */ - public EconomyResponse withdrawPlayer(OfflinePlayer player, double amount); + public EconomyResponse withdraw(UUID uuid, double amount); /** - * @deprecated As of VaultAPI 1.4 use {@link #withdrawPlayer(OfflinePlayer, String, double)} instead. - */ - @Deprecated - public EconomyResponse withdrawPlayer(String playerName, String worldName, double amount); - - /** - * Withdraw an amount from a player on a given world - DO NOT USE NEGATIVE AMOUNTS - * IMPLEMENTATION SPECIFIC - if an economy plugin does not support this the global balance will be returned. - * @param player to withdraw from + * Withdraw an amount from an account associated with a UUID on a given world - + * DO NOT USE NEGATIVE AMOUNTS IMPLEMENTATION SPECIFIC - if an economy plugin + * does not support this the global balance will be returned. + * + * @param uuid to withdraw from * @param worldName - name of the world - * @param amount Amount to withdraw + * @param amount Amount to withdraw * @return Detailed response of transaction */ - public EconomyResponse withdrawPlayer(OfflinePlayer player, String worldName, double amount); + public EconomyResponse withdraw(UUID uuid, String worldName, double amount); /** - * @deprecated As of VaultAPI 1.4 use {@link #depositPlayer(OfflinePlayer, double)} instead. - */ - @Deprecated - public EconomyResponse depositPlayer(String playerName, double amount); - - /** - * Deposit an amount to a player - DO NOT USE NEGATIVE AMOUNTS + * Deposit an amount to an account associated with the given UUID - DO NOT USE + * NEGATIVE AMOUNTS * - * @param player to deposit to + * @param uuid to deposit to * @param amount Amount to deposit * @return Detailed response of transaction */ - public EconomyResponse depositPlayer(OfflinePlayer player, double amount); + public EconomyResponse deposit(UUID uuid, double amount); /** - * @deprecated As of VaultAPI 1.4 use {@link #depositPlayer(OfflinePlayer, String, double)} instead. - */ - @Deprecated - public EconomyResponse depositPlayer(String playerName, String worldName, double amount); - - /** - * Deposit an amount to a player on a given world - DO NOT USE NEGATIVE AMOUNTS - * IMPLEMENTATION SPECIFIC - if an economy plugin does not support this the global balance will be returned. + * Deposit an amount from an account associated with a UUID on a given world - + * DO NOT USE NEGATIVE AMOUNTS IMPLEMENTATION SPECIFIC - if an economy plugin + * does not support this the global balance will be returned. * - * @param player to deposit to + * @param uuid to deposit to * @param worldName name of the world - * @param amount Amount to deposit + * @param amount Amount to deposit * @return Detailed response of transaction */ - public EconomyResponse depositPlayer(OfflinePlayer player, String worldName, double amount); + public EconomyResponse deposit(UUID uuid, String worldName, double amount); - /** - * @deprecated As of VaultAPI 1.4 use {{@link #createBank(String, OfflinePlayer)} instead. + /* + * Bank methods follow. */ - @Deprecated - public EconomyResponse createBank(String name, String player); /** - * Creates a bank account with the specified name and the player as the owner + * Creates a bank account with the specified name and the given UUID as the + * owner + * * @param name of account - * @param player the account should be linked to + * @param uuid the account should be linked to * @return EconomyResponse Object */ - public EconomyResponse createBank(String name, OfflinePlayer player); + public EconomyResponse createBank(String name, UUID uuid); /** * Deletes a bank account with the specified name. + * * @param name of the back to delete * @return if the operation completed successfully */ @@ -260,15 +266,17 @@ public interface Economy { /** * Returns the amount the bank has + * * @param name of the account * @return EconomyResponse Object */ public EconomyResponse bankBalance(String name); /** - * Returns true or false whether the bank has the amount specified - DO NOT USE NEGATIVE AMOUNTS + * Returns true or false whether the bank has the amount specified - DO NOT USE + * NEGATIVE AMOUNTS * - * @param name of the account + * @param name of the account * @param amount to check for * @return EconomyResponse Object */ @@ -277,7 +285,7 @@ public interface Economy { /** * Withdraw an amount from a bank account - DO NOT USE NEGATIVE AMOUNTS * - * @param name of the account + * @param name of the account * @param amount to withdraw * @return EconomyResponse Object */ @@ -286,73 +294,34 @@ public interface Economy { /** * Deposit an amount into a bank account - DO NOT USE NEGATIVE AMOUNTS * - * @param name of the account + * @param name of the account * @param amount to deposit * @return EconomyResponse Object */ public EconomyResponse bankDeposit(String name, double amount); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #isBankOwner(String, OfflinePlayer)} instead. - */ - @Deprecated - public EconomyResponse isBankOwner(String name, String playerName); - - /** - * Check if a player is the owner of a bank account - * - * @param name of the account - * @param player to check for ownership - * @return EconomyResponse Object - */ - public EconomyResponse isBankOwner(String name, OfflinePlayer player); /** - * @deprecated As of VaultAPI 1.4 use {@link #isBankMember(String, OfflinePlayer)} instead. - */ - @Deprecated - public EconomyResponse isBankMember(String name, String playerName); - - /** - * Check if the player is a member of the bank account + * Check if a uuid is the owner of a bank account * * @param name of the account - * @param player to check membership + * @param uuid to check for ownership * @return EconomyResponse Object */ - public EconomyResponse isBankMember(String name, OfflinePlayer player); + public EconomyResponse isBankOwner(String name, UUID uuid); + + /** + * Check if the uuid is a member of the bank account + * + * @param name of the account + * @param uuid to check membership + * @return EconomyResponse Object + */ + public EconomyResponse isBankMember(String name, UUID uuid); /** * Gets the list of banks + * * @return the List of Banks */ public List getBanks(); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #createPlayerAccount(OfflinePlayer)} instead. - */ - @Deprecated - public boolean createPlayerAccount(String playerName); - - /** - * Attempts to create a player account for the given player - * @param player OfflinePlayer - * @return if the account creation was successful - */ - public boolean createPlayerAccount(OfflinePlayer player); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #createPlayerAccount(OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean createPlayerAccount(String playerName, String worldName); - - /** - * Attempts to create a player account for the given player on the specified world - * IMPLEMENTATION SPECIFIC - if an economy plugin does not support this then false will always be returned. - * @param player OfflinePlayer - * @param worldName String name of the world - * @return if the account creation was successful - */ - public boolean createPlayerAccount(OfflinePlayer player, String worldName); } diff --git a/src/main/java/net/milkbowl/vault/economy/EconomyResponse.java b/src/main/java/net/milkbowl/vault/economy/EconomyResponse.java index eb49b03..b25f60d 100644 --- a/src/main/java/net/milkbowl/vault/economy/EconomyResponse.java +++ b/src/main/java/net/milkbowl/vault/economy/EconomyResponse.java @@ -20,7 +20,6 @@ package net.milkbowl.vault.economy; * It includes a {@link ResponseType} indicating whether the plugin currently being used for Economy actually allows * the method, or if the operation was a success or failure. * - * @deprecated in lieu of the modern Vault2. To update alter your import to net.milkbowl.vault2.economy. */ public class EconomyResponse { @@ -82,4 +81,4 @@ public class EconomyResponse { public boolean transactionSuccess() { return type == ResponseType.SUCCESS; } -} +} \ No newline at end of file diff --git a/src/main/java/net/milkbowl/vault/economy/MultiEconomy.java b/src/main/java/net/milkbowl/vault/economy/MultiEconomy.java new file mode 100644 index 0000000..537abc7 --- /dev/null +++ b/src/main/java/net/milkbowl/vault/economy/MultiEconomy.java @@ -0,0 +1,92 @@ +package net.milkbowl.vault.economy; + +import org.bukkit.World; + +import java.util.Collection; + +/** + * This interface is used to provide multi-world, multi-currency support for the economy. + * It allows disabling currencies/economies. + */ +public interface MultiEconomy { + + /** + * Checks to see if a name of the implementation exists with this name. + * + * @param name The name of the name of the implementation to search for. + * @return True if the implementation exists, else false. + */ + public boolean existsImplementation(String name); + + /** + * Checks to see if a name of the implementation exists with this name. + * + * @param name The name of the name of the implementation to search for. + * @param world The name of the {@link World} to check for this name of the implementation in. + * @return True if the implementation exists, else false. + */ + public boolean existsImplementation(String name, String world); + + /** + * Used to get the implementation with the specified name. + * + * @param name The name of the implementation to get. + * @return The implementation with the specified name. + */ + public Economy getImplementation(String name); + + /** + * Used to get the default implementation. This could be the default implementation for the server globally or + * for the default world if the implementation supports multi-world. + * + * @return The implementation that is the default for the server if multi-world support is not available + * otherwise the default for the default world. + */ + public Economy getDefault(); + + /** + * Checks to see if the default implementation is not null. + * + * @return True if the default implementation is not null, else false. + */ + public default boolean hasDefault() { + return getDefault() != null; + } + + /** + * Used to get the default implementation for the specified world if this implementation has multi-world + * support, otherwise the default implementation for the server. + * + * @param world The world to get the default implementation for. + * @return The default implementation for the specified world if this implementation has multi-world + * support, otherwise the default implementation for the server. + */ + public Economy getDefault(String world); + + /** + * Checks to see if the default implementation for the specified world is not null. + * + * @param world The world to check the default implementation for. + * @return True if the default implementation for the specified world is not null, else false. + */ + public default boolean hasDefault(String world) { + return getDefault(world) != null; + } + + /** + * Used to get a collection of every implementation identifier for the server. + * + * @return A collection of every implementation identifier that is available for the server. + */ + public Collection getAllImplementations(); + + /** + * Used to get a collection of every {@link Economy} object that is available in the specified world if + * this implementation has multi-world support, otherwise all {@link Economy} objects for the server. + * + * @param world The world we want to get the {@link Economy} objects for. + * @return A collection of every implementation identifier that is available in the specified world if + * this implementation has multi-world support, otherwise all implementation identifiers for the server. + */ + public Collection getAllImplementations(String world); +} \ No newline at end of file diff --git a/src/main/java/net/milkbowl/vault/permission/Permission.java b/src/main/java/net/milkbowl/vault/permission/Permission.java index 608bc6c..0f68eba 100644 --- a/src/main/java/net/milkbowl/vault/permission/Permission.java +++ b/src/main/java/net/milkbowl/vault/permission/Permission.java @@ -28,7 +28,6 @@ import org.bukkit.plugin.Plugin; /** * The main Permission API - allows for group and player based permission tests * - * @deprecated in lieu of the modern Vault2. To update alter your import to net.milkbowl.vault2.permission. */ public abstract class Permission { diff --git a/src/main/java/net/milkbowl/vault2/chat/Chat.java b/src/main/java/net/milkbowl/vault2/chat/Chat.java deleted file mode 100644 index 7c48870..0000000 --- a/src/main/java/net/milkbowl/vault2/chat/Chat.java +++ /dev/null @@ -1,995 +0,0 @@ -/* This file is part of Vault. - - 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 . -*/ -package net.milkbowl.vault2.chat; - -import net.milkbowl.vault2.permission.Permission; - -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.entity.Player; - -/** - * The main Chat API - allows for Prefix/Suffix nodes along with generic Info nodes if the linked Chat system supports them - * - */ -public abstract class Chat { - - private Permission perms; - - public Chat(Permission perms) { - this.perms = perms; - } - /** - * Gets name of permission method - * @return Name of Permission Method - */ - abstract public String getName(); - - /** - * Checks if permission method is enabled. - * @return Success or Failure - */ - abstract public boolean isEnabled(); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerPrefix(String, OfflinePlayer)} instead. - * - * Get players prefix - * @param world World name - * @param player Player name - * @return Prefix - */ - @Deprecated - abstract public String getPlayerPrefix(String world, String player); - - /** - * Get a players prefix in the given world - * Use NULL for world if requesting a global prefix - * - * @param world World name - * @param player OfflinePlayer - * @return Prefix - */ - public String getPlayerPrefix(String world, OfflinePlayer player) { - return getPlayerPrefix(world, player.getName()); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerPrefix(String, OfflinePlayer)} instead. - * - * Get players prefix - * @param world World Object - * @param player Player name - * @return Prefix - */ - @Deprecated - public String getPlayerPrefix(World world, String player) { - return getPlayerPrefix(world.getName(), player); - } - - /** - * Get players prefix from the world they are currently in. - * May or may not return the global prefix depending on implementation. - * - * @param player Player Object - * @return Prefix - */ - public String getPlayerPrefix(Player player) { - return getPlayerPrefix(player.getWorld().getName(), player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerPrefix(String, OfflinePlayer, String)} instead. - * - * Set players prefix - * @param world World name - * @param player Player name - * @param prefix Prefix - */ - @Deprecated - abstract public void setPlayerPrefix(String world, String player, String prefix); - - /** - * Sets players prefix in the given world. - * Use NULL for world for setting in the Global scope. - * - * @param world World name - * @param player OfflinePlayer - * @param prefix Prefix - */ - public void setPlayerPrefix(String world, OfflinePlayer player, String prefix) { - setPlayerPrefix(world, player.getName(), prefix); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerPrefix(String, OfflinePlayer, String)} instead. - * - * Set players prefix in the given world. - * - * @param world World Object - * @param player Player name - * @param prefix Prefix - */ - @Deprecated - public void setPlayerPrefix(World world, String player, String prefix) { - setPlayerPrefix(world.getName(), player, prefix); - } - - /** - * Set players prefix in the world they are currently in. - * - * @param player Player Object - * @param prefix Prefix - */ - public void setPlayerPrefix(Player player, String prefix) { - setPlayerPrefix(player.getWorld().getName(), player, prefix); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerSuffix(String, OfflinePlayer)} instead. - * - * Get players suffix - * @param world World name - * @param player Player name - * @return Suffix - */ - @Deprecated - abstract public String getPlayerSuffix(String world, String player); - - /** - * Get players suffix in the specified world. - * - * @param world World name - * @param player OfflinePlayer name - * @return Suffix - */ - public String getPlayerSuffix(String world, OfflinePlayer player) { - return getPlayerSuffix(world, player.getName()); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerSuffix(String, OfflinePlayer)} instead. - * - * Get players suffix - * @param world World Object - * @param player Player name - * @return Suffix - */ - @Deprecated - public String getPlayerSuffix(World world, String player) { - return getPlayerSuffix(world.getName(), player); - } - - /** - * Get players suffix in the world they are currently in. - * - * @param player Player Object - * @return Suffix - */ - public String getPlayerSuffix(Player player) { - return getPlayerSuffix(player.getWorld().getName(), player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerSuffix(String, OfflinePlayer, String)} instead. - * - * Set players suffix - * @param world World name - * @param player Player name - * @param suffix Suffix - */ - @Deprecated - abstract public void setPlayerSuffix(String world, String player, String suffix); - - /** - * Set players suffix for the world specified - * - * @param world World name - * @param player OfflinePlayer - * @param suffix Suffix - */ - public void setPlayerSuffix(String world, OfflinePlayer player, String suffix) { - setPlayerSuffix(world, player.getName(), suffix); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerSuffix(String, OfflinePlayer, String)} instead. - * - * Set players suffix - * @param world World Object - * @param player Player name - * @param suffix Suffix - */ - @Deprecated - public void setPlayerSuffix(World world, String player, String suffix) { - setPlayerSuffix(world.getName(), player, suffix); - } - - /** - * Set players suffix in the world they currently occupy. - * - * @param player Player Object - * @param suffix Suffix - */ - public void setPlayerSuffix(Player player, String suffix) { - setPlayerSuffix(player.getWorld().getName(), player, suffix); - } - - /** - * Get group prefix - * @param world World name - * @param group Group name - * @return Prefix - */ - abstract public String getGroupPrefix(String world, String group); - - /** - * Get group prefix - * @param world World Object - * @param group Group name - * @return Prefix - */ - public String getGroupPrefix(World world, String group) { - return getGroupPrefix(world.getName(), group); - } - - /** - * Set group prefix - * @param world World name - * @param group Group name - * @param prefix Prefix - */ - abstract public void setGroupPrefix(String world, String group, String prefix); - - /** - * Set group prefix - * @param world World Object - * @param group Group name - * @param prefix Prefix - */ - public void setGroupPrefix(World world, String group, String prefix) { - setGroupPrefix(world.getName(), group, prefix); - } - - /** - * Get group suffix - * @param world World name - * @param group Group name - * @return Suffix - */ - abstract public String getGroupSuffix(String world, String group); - - /** - * Get group suffix - * @param world World Object - * @param group Group name - * @return Suffix - */ - public String getGroupSuffix(World world, String group) { - return getGroupSuffix(world.getName(), group); - } - - /** - * Set group suffix - * @param world World name - * @param group Group name - * @param suffix Suffix - */ - abstract public void setGroupSuffix(String world, String group, String suffix); - - /** - * Set group suffix - * @param world World Object - * @param group Group name - * @param suffix Suffix - */ - public void setGroupSuffix(World world, String group, String suffix) { - setGroupSuffix(world.getName(), group, suffix); - } - - /** - * Get a players informational node (Integer) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public int getPlayerInfoInteger(String world, OfflinePlayer player, String node, int defaultValue) { - return getPlayerInfoInteger(world, player.getName(), node, defaultValue); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. - * Get a players informational node (Integer) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - abstract public int getPlayerInfoInteger(String world, String player, String node, int defaultValue); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. - * - * Get a players informational node (Integer) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - public int getPlayerInfoInteger(World world, String player, String node, int defaultValue) { - return getPlayerInfoInteger(world.getName(), player, node, defaultValue); - } - - /** - * Get a players informational node (Integer) value - * @param player Player Object - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public int getPlayerInfoInteger(Player player, String node, int defaultValue) { - return getPlayerInfoInteger(player.getWorld().getName(), player, node, defaultValue); - } - - /** - * Set a players informational node (Integer) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoInteger(String world, OfflinePlayer player, String node, int value) { - setPlayerInfoInteger(world, player.getName(), node, value); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. - * - * Set a players informational node (Integer) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - abstract public void setPlayerInfoInteger(String world, String player, String node, int value); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoInteger(String, OfflinePlayer, String, int)} instead. - * - * Set a players informational node (Integer) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - public void setPlayerInfoInteger(World world, String player, String node, int value) { - setPlayerInfoInteger(world.getName(), player, node, value); - } - - /** - * Set a players informational node (Integer) value - * @param player Player Object - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoInteger(Player player, String node, int value) { - setPlayerInfoInteger(player.getWorld().getName(), player, node, value); - } - - /** - * Get a groups informational node (Integer) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - abstract public int getGroupInfoInteger(String world, String group, String node, int defaultValue); - - /** - * Get a groups informational node (Integer) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public int getGroupInfoInteger(World world, String group, String node, int defaultValue) { - return getGroupInfoInteger(world.getName(), group, node, defaultValue); - } - - /** - * Set a groups informational node (Integer) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - abstract public void setGroupInfoInteger(String world, String group, String node, int value); - - /** - * Set a groups informational node (Integer) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - public void setGroupInfoInteger(World world, String group, String node, int value) { - setGroupInfoInteger(world.getName(), group, node, value); - } - - /** - * Get a players informational node (Double) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public double getPlayerInfoDouble(String world, OfflinePlayer player, String node, double defaultValue) { - return getPlayerInfoDouble(world, player.getName(), node, defaultValue); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. - * - * Get a players informational node (Double) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - abstract public double getPlayerInfoDouble(String world, String player, String node, double defaultValue); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoDouble(String, OfflinePlayer, String, double)} instead - * - * Get a players informational node (Double) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - public double getPlayerInfoDouble(World world, String player, String node, double defaultValue) { - return getPlayerInfoDouble(world.getName(), player, node, defaultValue); - } - - /** - * Get a players informational node (Double) value - * @param player Player Object - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public double getPlayerInfoDouble(Player player, String node, double defaultValue) { - return getPlayerInfoDouble(player.getWorld().getName(), player, node, defaultValue); - } - - /** - * Set a players informational node (Double) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoDouble(String world, OfflinePlayer player, String node, double value) { - setPlayerInfoDouble(world, player.getName(), node, value); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. - * Set a players informational node (Double) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - abstract public void setPlayerInfoDouble(String world, String player, String node, double value); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoDouble(String, OfflinePlayer, String, double)} instead. - * Set a players informational node (Double) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - public void setPlayerInfoDouble(World world, String player, String node, double value) { - setPlayerInfoDouble(world.getName(), player, node, value); - } - - /** - * Set a players informational node (Double) value - * @param player Player Object - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoDouble(Player player, String node, double value) { - setPlayerInfoDouble(player.getWorld().getName(), player, node, value); - } - - /** - * Get a groups informational node (Double) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - abstract public double getGroupInfoDouble(String world, String group, String node, double defaultValue); - - /** - * Get a groups informational node (Double) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public double getGroupInfoDouble(World world, String group, String node, double defaultValue) { - return getGroupInfoDouble(world.getName(), group, node, defaultValue); - } - - /** - * Set a groups informational node (Double) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - abstract public void setGroupInfoDouble(String world, String group, String node, double value); - - /** - * Set a groups informational node (Double) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - public void setGroupInfoDouble(World world, String group, String node, double value) { - setGroupInfoDouble(world.getName(), group, node, value); - } - - /** - * Get a players informational node (Boolean) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public boolean getPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean defaultValue) { - return getPlayerInfoBoolean(world, player.getName(), node, defaultValue); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. - * - * Get a players informational node (Boolean) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - abstract public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. - * - * Get a players informational node (Boolean) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - public boolean getPlayerInfoBoolean(World world, String player, String node, boolean defaultValue) { - return getPlayerInfoBoolean(world.getName(), player, node, defaultValue); - } - - /** - * Get a players informational node (Boolean) value - * @param player Player Object - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public boolean getPlayerInfoBoolean(Player player, String node, boolean defaultValue) { - return getPlayerInfoBoolean(player.getWorld().getName(), player, node, defaultValue); - } - - /** - * Set a players informational node (Boolean) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean value) { - setPlayerInfoBoolean(world, player.getName(), node, value); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. - * Set a players informational node (Boolean) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - abstract public void setPlayerInfoBoolean(String world, String player, String node, boolean value); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoBoolean(String, OfflinePlayer, String, boolean)} instead. - * Set a players informational node (Boolean) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - public void setPlayerInfoBoolean(World world, String player, String node, boolean value) { - setPlayerInfoBoolean(world.getName(), player, node, value); - } - - /** - * Set a players informational node (Boolean) value - * @param player Player Object - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoBoolean(Player player, String node, boolean value) { - setPlayerInfoBoolean(player.getWorld().getName(), player, node, value); - } - - /** - * Get a groups informational node (Boolean) value - * @param world Name of World - * @param group Name of Group - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - abstract public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue); - - /** - * Set a players informational node (Boolean) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public boolean getGroupInfoBoolean(World world, String group, String node, boolean defaultValue) { - return getGroupInfoBoolean(world.getName(), group, node, defaultValue); - } - - /** - * Set a groups informational node (Boolean) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - abstract public void setGroupInfoBoolean(String world, String group, String node, boolean value); - - /** - * Set a players informational node (Boolean) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - public void setGroupInfoBoolean(World world, String group, String node, boolean value) { - setGroupInfoBoolean(world.getName(), group, node, value); - } - - /** - * Get a players informational node (String) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public String getPlayerInfoString(String world, OfflinePlayer player, String node, String defaultValue) { - return getPlayerInfoString(world, player.getName(), node, defaultValue); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoString(String, OfflinePlayer, String, String)} instead. - * - * Get a players informational node (String) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - abstract public String getPlayerInfoString(String world, String player, String node, String defaultValue); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerInfoString(String, OfflinePlayer, String, String)} instead. - * Get a players informational node (String) value - * @param world World Object - * @param player Player name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - @Deprecated - public String getPlayerInfoString(World world, String player, String node, String defaultValue) { - return getPlayerInfoString(world.getName(), player, node, defaultValue); - } - - /** - * Get a players informational node (String) value - * @param player Player Object - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public String getPlayerInfoString(Player player, String node, String defaultValue) { - return getPlayerInfoString(player.getWorld().getName(), player, node, defaultValue); - } - - /** - * Set a players informational node (String) value - * @param world World name - * @param player OfflinePlayer - * @param node Permission node - * @param value Value to set - */ - public void setPlayerInfoString(String world, OfflinePlayer player, String node, String value) { - setPlayerInfoString(world, player.getName(), node, value); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoString(String, OfflinePlayer, String, String)} instead. - * Set a players informational node (String) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - abstract public void setPlayerInfoString(String world, String player, String node, String value); - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #setPlayerInfoString(String, OfflinePlayer, String, String)} instead. - * Set a players informational node (String) value - * @param world World name - * @param player Player name - * @param node Permission node - * @param value Value to set - */ - @Deprecated - public void setPlayerInfoString(World world, String player, String node, String value) { - setPlayerInfoString(world.getName(), player, node, value); - } - - /** - * Set a players informational node (String) value - * @param player Player Object - * @param node Permission node - * @param value Value ot set - */ - public void setPlayerInfoString(Player player, String node, String value) { - setPlayerInfoString(player.getWorld().getName(), player, node, value); - } - - /** - * Get a groups informational node (String) value - * @param world Name of World - * @param group Name of Group - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - abstract public String getGroupInfoString(String world, String group, String node, String defaultValue); - - /** - * Set a players informational node (String) value - * @param world World Object - * @param group Group name - * @param node Permission node - * @param defaultValue Default value - * @return Value - */ - public String getGroupInfoString(World world, String group, String node, String defaultValue) { - return getGroupInfoString(world.getName(), group, node, defaultValue); - } - - /** - * Set a groups informational node (String) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - abstract public void setGroupInfoString(String world, String group, String node, String value); - - /** - * Set a groups informational node (String) value - * @param world World name - * @param group Group name - * @param node Permission node - * @param value Value to set - */ - public void setGroupInfoString(World world, String group, String node, String value) { - setGroupInfoString(world.getName(), group, node, value); - } - - /** - * Check if player is member of a group. - * @param world World name - * @param player OfflinePlayer - * @param group Group name - * @return Success or Failure - */ - public boolean playerInGroup(String world, OfflinePlayer player, String group) { - return perms.playerInGroup(world, player, group); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #playerInGroup(String, OfflinePlayer, String)} instead. - * Check if player is member of a group. - * @param world World name - * @param player Player name - * @param group Group name - * @return Success or Failure - */ - @Deprecated - public boolean playerInGroup(String world, String player, String group) { - return perms.playerInGroup(world, player, group); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #playerInGroup(String, OfflinePlayer, String)} instead. - * Check if player is member of a group. - * @param world World Object - * @param player Player name - * @param group Group name - * @return Success or Failure - */ - @Deprecated - public boolean playerInGroup(World world, String player, String group) { - return playerInGroup(world.getName(), player, group); - } - - /** - * Check if player is member of a group. - * @param player Player Object - * @param group Group name - * @return Success or Failure - */ - public boolean playerInGroup(Player player, String group) { - return playerInGroup(player.getWorld().getName(), player, group); - } - - /** - * Gets the list of groups that this player has - * @param world World name - * @param player OfflinePlayer - * @return Array of groups - */ - public String[] getPlayerGroups(String world, OfflinePlayer player) { - return perms.getPlayerGroups(world, player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerGroups(String, OfflinePlayer)} instead. - * Gets the list of groups that this player has - * @param world World name - * @param player Player name - * @return Array of groups - */ - @Deprecated - public String[] getPlayerGroups(String world, String player) { - return perms.getPlayerGroups(world, player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPlayerGroups(String, OfflinePlayer)} instead. - * Gets the list of groups that this player has - * @param world World Object - * @param player Player name - * @return Array of groups - */ - @Deprecated - public String[] getPlayerGroups(World world, String player) { - return getPlayerGroups(world.getName(), player); - } - - /** - * Gets the list of groups that this player has - * @param player Player Object - * @return Array of groups - */ - public String[] getPlayerGroups(Player player) { - return getPlayerGroups(player.getWorld().getName(), player); - } - - /** - * Gets players primary group - * @param world World name - * @param player OfflinePlayer - * @return Players primary group - */ - public String getPrimaryGroup(String world, OfflinePlayer player) { - return perms.getPrimaryGroup(world, player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPrimaryGroup(String, OfflinePlayer)} instead. - * Gets players primary group - * @param world World name - * @param player Player name - * @return Players primary group - */ - @Deprecated - public String getPrimaryGroup(String world, String player) { - return perms.getPrimaryGroup(world, player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {{@link #getPrimaryGroup(String, OfflinePlayer)} instead. - * Gets players primary group - * @param world World Object - * @param player Player name - * @return Players primary group - */ - @Deprecated - public String getPrimaryGroup(World world, String player) { - return getPrimaryGroup(world.getName(), player); - } - - /** - * Get players primary group - * @param player Player Object - * @return Players primary group - */ - public String getPrimaryGroup(Player player) { - return getPrimaryGroup(player.getWorld().getName(), player); - } - - /** - * Returns a list of all known groups - * @return an Array of String of all groups - */ - public String[] getGroups() { - return perms.getGroups(); - } -} diff --git a/src/main/java/net/milkbowl/vault2/economy/Economy.java b/src/main/java/net/milkbowl/vault2/economy/Economy.java deleted file mode 100644 index c60f576..0000000 --- a/src/main/java/net/milkbowl/vault2/economy/Economy.java +++ /dev/null @@ -1,331 +0,0 @@ -/* This file is part of Vault. - - 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 . - */ - -package net.milkbowl.vault2.economy; - -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * The main economy API - * - */ -public interface Economy { - - /* - * Economy plugin-related methods follow. - */ - - /** - * Checks if economy plugin is enabled. - * - * @return Success or Failure - */ - public boolean isEnabled(); - - /** - * Gets name of economy plugin. - * - * @return Name of Economy plugin. - */ - public String getName(); - - /** - * Returns true if the given implementation supports banks. - * - * @return true if the implementation supports banks - */ - public boolean hasBankSupport(); - - /* - * Currency-related methods follow. - */ - - /** - * Some economy plugins round off after a certain number of digits. This - * function returns the number of digits the plugin keeps or -1 if no rounding - * occurs. - * - * @return number of digits after the decimal point kept - */ - public int fractionalDigits(); - - /** - * Format amount into a human readable String This provides translation into - * economy specific formatting to improve consistency between plugins. - * - * @param amount to format - * @return Human readable string describing amount - */ - public String format(double amount); - - /** - * Returns the name of the currency in plural form. If the economy being used - * does not support currency names then an empty string will be returned. - * - * @return name of the currency (plural) - */ - public String currencyNamePlural(); - - /** - * Returns the name of the currency in singular form. If the economy being used - * does not support currency names then an empty string will be returned. - * - * @return name of the currency (singular) - */ - public String currencyNameSingular(); - - /* - * Account-related methods follow. - */ - - /** - * Attempts to create a account for the given uuid - * - * @param uuid associated with the account - * @param name associated with the account. - * @return if the account creation was successful - */ - public boolean createAccount(UUID uuid, String name); - - /** - * Attempts to create an account for the given UUID on the specified world - * IMPLEMENTATION SPECIFIC - if an economy plugin does not support this then - * false will always be returned. - * - * @param uuid associated with the account - * @param name associated with the account. - * @param worldName String name of the world - * @return if the account creation was successful - */ - public boolean createAccount(UUID uuid, String name, String worldName); - - /** - * Returns a map that represents all of the UUIDs which have accounts in the - * plugin, as well as their last-known-name. This is used for Vault's economy - * converter and should be given every account available. - * - * @return a {@link Map} composed of the accounts keyed by their UUID, along - * with their associated last-known-name. - */ - public Map getUUIDNameMap(); - - /** - * Gets the last known name of an account owned by the given UUID. Required for - * messages to be more human-readable than UUIDs alone can provide. - * - * @param uuid UUID to look up. - * @return name of the account owner. - */ - public String getAccountName(UUID uuid); - - /** - * Checks if this uuid has an account yet - * - * @param uuid to check - * @return if the uuid has an account - */ - public boolean hasAccount(UUID uuid); - - /** - * Checks if this uuid has an account yet on the given world - * - * @param uuid to check - * @param worldName world-specific account - * @return if the uuid has an account - */ - public boolean hasAccount(UUID uuid, String worldName); - - /** - * A method which changes the name associated with the given UUID in the - * Map received from {@link #getUUIDNameMap()}. - * - * @param uuid which is having a name change. - * @param name name that will be associated with the UUID in the - * Map map. - * @return true if the name change is successful. - */ - public boolean renameAccount(UUID uuid, String name); - - /** - * Gets balance of a UUID - * - * @param uuid of the account to get a balance for - * @return Amount currently held in account associated with the given UUID - */ - public double getBalance(UUID uuid); - - /** - * Gets balance of a UUID on the specified world. IMPLEMENTATION SPECIFIC - if - * an economy plugin does not support this the global balance will be returned. - * - * @param uuid of the account to get a balance for - * @param world name of the world - * @return Amount currently held in account associated with the given UUID - */ - public double getBalance(UUID uuid, String world); - - /** - * Checks if the account associated with the given UUID has the amount - DO NOT - * USE NEGATIVE AMOUNTS - * - * @param uuid to check - * @param amount to check for - * @return True if UUID has amount, False else wise - */ - public boolean has(UUID uuid, double amount); - - /** - * Checks if the account associated with the given UUID has the amount in the - * given world - DO NOT USE NEGATIVE AMOUNTS IMPLEMENTATION SPECIFIC - if an - * economy plugin does not support this the global balance will be returned. - * - * @param uuid to check - * @param worldName to check with - * @param amount to check for - * @return True if UUID has amount in the given world, - * False else wise - */ - public boolean has(UUID uuid, String worldName, double amount); - - /** - * Withdraw an amount from an account associated with a UUID - DO NOT USE - * NEGATIVE AMOUNTS - * - * @param uuid to withdraw from - * @param amount Amount to withdraw - * @return Detailed response of transaction - */ - public EconomyResponse withdraw(UUID uuid, double amount); - - /** - * Withdraw an amount from an account associated with a UUID on a given world - - * DO NOT USE NEGATIVE AMOUNTS IMPLEMENTATION SPECIFIC - if an economy plugin - * does not support this the global balance will be returned. - * - * @param uuid to withdraw from - * @param worldName - name of the world - * @param amount Amount to withdraw - * @return Detailed response of transaction - */ - public EconomyResponse withdraw(UUID uuid, String worldName, double amount); - - /** - * Deposit an amount to an account associated with the given UUID - DO NOT USE - * NEGATIVE AMOUNTS - * - * @param uuid to deposit to - * @param amount Amount to deposit - * @return Detailed response of transaction - */ - public EconomyResponse deposit(UUID uuid, double amount); - - /** - * Deposit an amount from an account associated with a UUID on a given world - - * DO NOT USE NEGATIVE AMOUNTS IMPLEMENTATION SPECIFIC - if an economy plugin - * does not support this the global balance will be returned. - * - * @param uuid to deposit to - * @param worldName name of the world - * @param amount Amount to deposit - * @return Detailed response of transaction - */ - public EconomyResponse deposit(UUID uuid, String worldName, double amount); - - /* - * Bank methods follow. - */ - - /** - * Creates a bank account with the specified name and the given UUID as the - * owner - * - * @param name of account - * @param uuid the account should be linked to - * @return EconomyResponse Object - */ - public EconomyResponse createBank(String name, UUID uuid); - - /** - * Deletes a bank account with the specified name. - * - * @param name of the back to delete - * @return if the operation completed successfully - */ - public EconomyResponse deleteBank(String name); - - /** - * Returns the amount the bank has - * - * @param name of the account - * @return EconomyResponse Object - */ - public EconomyResponse bankBalance(String name); - - /** - * Returns true or false whether the bank has the amount specified - DO NOT USE - * NEGATIVE AMOUNTS - * - * @param name of the account - * @param amount to check for - * @return EconomyResponse Object - */ - public EconomyResponse bankHas(String name, double amount); - - /** - * Withdraw an amount from a bank account - DO NOT USE NEGATIVE AMOUNTS - * - * @param name of the account - * @param amount to withdraw - * @return EconomyResponse Object - */ - public EconomyResponse bankWithdraw(String name, double amount); - - /** - * Deposit an amount into a bank account - DO NOT USE NEGATIVE AMOUNTS - * - * @param name of the account - * @param amount to deposit - * @return EconomyResponse Object - */ - public EconomyResponse bankDeposit(String name, double amount); - - /** - * Check if a uuid is the owner of a bank account - * - * @param name of the account - * @param uuid to check for ownership - * @return EconomyResponse Object - */ - public EconomyResponse isBankOwner(String name, UUID uuid); - - /** - * Check if the uuid is a member of the bank account - * - * @param name of the account - * @param uuid to check membership - * @return EconomyResponse Object - */ - public EconomyResponse isBankMember(String name, UUID uuid); - - /** - * Gets the list of banks - * - * @return the List of Banks - */ - public List getBanks(); -} diff --git a/src/main/java/net/milkbowl/vault2/economy/EconomyResponse.java b/src/main/java/net/milkbowl/vault2/economy/EconomyResponse.java deleted file mode 100644 index f920491..0000000 --- a/src/main/java/net/milkbowl/vault2/economy/EconomyResponse.java +++ /dev/null @@ -1,89 +0,0 @@ -/* This file is part of Vault. - - 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 . - */ -package net.milkbowl.vault2.economy; - -/** - * Indicates a typical Return for an Economy method. - * It includes a {@link ResponseType} indicating whether the plugin currently being used for Economy actually allows - * the method, or if the operation was a success or failure. - * - */ -public class EconomyResponse { - - /** - * Enum for types of Responses indicating the status of a method call. - */ - public static enum ResponseType { - SUCCESS(1), - FAILURE(2), - NOT_IMPLEMENTED(3); - - private int id; - - ResponseType(int id) { - this.id = id; - } - - int getId() { - return id; - } - } - - /** - * Amount modified by calling method - */ - public final double amount; - /** - * New balance of account - */ - public final double balance; - /** - * Success or failure of call. Using Enum of ResponseType to determine valid - * outcomes - */ - public final ResponseType type; - /** - * Error message if the variable 'type' is ResponseType.FAILURE - */ - public final String errorMessage; - - /** - * Constructor for EconomyResponse - * @param amount Amount modified during operation - * @param balance New balance of account - * @param type Success or failure type of the operation - * @param errorMessage Error message if necessary (commonly null) - */ - public EconomyResponse(double amount, double balance, ResponseType type, String errorMessage) { - this.amount = amount; - this.balance = balance; - this.type = type; - this.errorMessage = errorMessage; - } - - /** - * Checks if an operation was successful - * @return Value - */ - public boolean transactionSuccess() { - switch (type) { - case SUCCESS: - return true; - default: - return false; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/milkbowl/vault2/permission/Permission.java b/src/main/java/net/milkbowl/vault2/permission/Permission.java deleted file mode 100644 index d602278..0000000 --- a/src/main/java/net/milkbowl/vault2/permission/Permission.java +++ /dev/null @@ -1,705 +0,0 @@ -/* This file is part of Vault. - - 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 . - */ -package net.milkbowl.vault2.permission; - -import java.util.logging.Logger; - -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.permissions.PermissionAttachment; -import org.bukkit.permissions.PermissionAttachmentInfo; -import org.bukkit.plugin.Plugin; - -/** - * The main Permission API - allows for group and player based permission tests - * - */ -public abstract class Permission { - - protected static final Logger log = Logger.getLogger("Minecraft"); - protected Plugin plugin = null; - - /** - * Gets name of permission method - * @return Name of Permission Method - */ - abstract public String getName(); - - /** - * Checks if permission method is enabled. - * @return Success or Failure - */ - abstract public boolean isEnabled(); - - /** - * Returns if the permission system is or attempts to be compatible with super-perms. - * @return True if this permission implementation works with super-perms - */ - abstract public boolean hasSuperPermsCompat(); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerHas(String, OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean has(String world, String player, String permission) { - if (world == null) { - return playerHas((String) null, player, permission); - } - return playerHas(world, player, permission); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerHas(String, OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean has(World world, String player, String permission) { - if (world == null) { - return playerHas((String) null, player, permission); - } - return playerHas(world.getName(), player, permission); - } - - /** - * Checks if a CommandSender has a permission node. - * This will return the result of bukkits, generic .hasPermission() method and is identical in all cases. - * This method will explicitly fail if the registered permission system does not register permissions in bukkit. - * - * For easy checking of a commandsender - * @param sender to check permissions on - * @param permission to check for - * @return true if the sender has the permission - */ - public boolean has(CommandSender sender, String permission) { - return sender.hasPermission(permission); - } - - /** - * Checks if player has a permission node. (Short for playerHas(...) - * @param player Player Object - * @param permission Permission node - * @return Success or Failure - */ - public boolean has(Player player, String permission) { - return player.hasPermission(permission); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerHas(String, OfflinePlayer, String)} instead. - */ - @Deprecated - abstract public boolean playerHas(String world, String player, String permission); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerHas(String, OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean playerHas(World world, String player, String permission) { - if (world == null) { - return playerHas((String) null, player, permission); - } - return playerHas(world.getName(), player, permission); - } - - /** - * Checks if player has a permission node. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world String world name - * @param player to check - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerHas(String world, OfflinePlayer player, String permission) { - if (world == null) { - return has((String) null, player.getName(), permission); - } - return has(world, player.getName(), permission); - } - - /** - * Checks if player has a permission node. - * Defaults to world-specific permission check if the permission system supports it. - * See {@link #playerHas(String, OfflinePlayer, String)} for explicit global or world checks. - * - * @param player Player Object - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerHas(Player player, String permission) { - return has(player, permission); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerAdd(String, OfflinePlayer, String)} instead. - * Add permission to a player. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World name - * @param player Player name - * @param permission Permission node - * @return Success or Failure - */ - @Deprecated - abstract public boolean playerAdd(String world, String player, String permission); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerAdd(String, OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean playerAdd(World world, String player, String permission) { - if (world == null) { - return playerAdd((String) null, player, permission); - } - return playerAdd(world.getName(), player, permission); - } - - /** - * Add permission to a player. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world String world name - * @param player to add to - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerAdd(String world, OfflinePlayer player, String permission) { - if (world == null) { - return playerAdd((String) null, player.getName(), permission); - } - return playerAdd(world, player.getName(), permission); - } - - /** - * Add permission to a player ONLY for the world the player is currently on. - * This is a world-specific operation, if you want to add global permission you must explicitly use NULL for the world. - * See {@link #playerAdd(String, OfflinePlayer, String)} for global permission use. - * - * @param player Player Object - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerAdd(Player player, String permission) { - return playerAdd(player.getWorld().getName(), player, permission); - } - - /** - * Add transient permission to a player. - * This implementation can be used by any subclass which implements a "pure" superperms plugin, i.e. - * one that only needs the built-in Bukkit API to add transient permissions to a player. - * - * @param player to add to - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerAddTransient(OfflinePlayer player, String permission) throws UnsupportedOperationException { - if (player.isOnline()) { - return playerAddTransient((Player) player, permission); - } - throw new UnsupportedOperationException(getName() + " does not support offline player transient permissions!"); - } - - /** - * Add transient permission to a player. - * This operation adds a permission onto the player object in bukkit via Bukkit's permission interface. - * - * @param player Player Object - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerAddTransient(Player player, String permission) { - for (PermissionAttachmentInfo paInfo : player.getEffectivePermissions()) { - if (paInfo.getAttachment() != null && paInfo.getAttachment().getPlugin().equals(plugin)) { - paInfo.getAttachment().setPermission(permission, true); - return true; - } - } - - PermissionAttachment attach = player.addAttachment(plugin); - attach.setPermission(permission, true); - - return true; - } - - /** - * Adds a world specific transient permission to the player, may only work with some permission managers. - * Defaults to GLOBAL permissions for any permission system that does not support world-specific transient permissions! - * - * @param worldName to check on - * @param player to add to - * @param permission to test - * @return Success or Failure - */ - public boolean playerAddTransient(String worldName, OfflinePlayer player, String permission) { - return playerAddTransient(player, permission); - } - - /** - * Adds a world specific transient permission to the player, may only work with some permission managers. - * Defaults to GLOBAL permissions for any permission system that does not support world-specific transient permissions! - * - * @param worldName to check on - * @param player to check - * @param permission to check for - * @return Success or Failure - */ - public boolean playerAddTransient(String worldName, Player player, String permission) { - return playerAddTransient(player, permission); - } - - /** - * Removes a world specific transient permission from the player, may only work with some permission managers. - * Defaults to GLOBAL permissions for any permission system that does not support world-specific transient permissions! - * - * @param worldName to remove for - * @param player to remove for - * @param permission to remove - * @return Success or Failure - */ - public boolean playerRemoveTransient(String worldName, OfflinePlayer player, String permission) { - return playerRemoveTransient(player, permission); - } - - /** - * Removes a world specific transient permission from the player, may only work with some permission managers. - * Defaults to GLOBAL permissions for any permission system that does not support world-specific transient permissions! - * - * @param worldName to check on - * @param player to check - * @param permission to check for - * @return Success or Failure - */ - public boolean playerRemoveTransient(String worldName, Player player, String permission) { - return playerRemoveTransient((OfflinePlayer) player, permission); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerRemove(String, OfflinePlayer, String)} instead. - */ - @Deprecated - abstract public boolean playerRemove(String world, String player, String permission); - - /** - * Remove permission from a player. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World name - * @param player OfflinePlayer - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerRemove(String world, OfflinePlayer player, String permission) { - if (world == null) { - return playerRemove((String) null, player.getName(), permission); - } - return playerRemove(world, player.getName(), permission); - } - - /** - * Remove permission from a player. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World name - * @param player Player name - * @param permission Permission node - * @return Success or Failure - */ - @Deprecated - public boolean playerRemove(World world, String player, String permission) { - if (world == null) { - return playerRemove((String) null, player, permission); - } - return playerRemove(world.getName(), player, permission); - } - - /** - * Remove permission from a player. - * Will attempt to remove permission from the player on the player's current world. This is NOT a global operation. - * - * @param player Player Object - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerRemove(Player player, String permission) { - return playerRemove(player.getWorld().getName(), player, permission); - } - - - /** - * Remove transient permission from a player. - * This implementation can be used by any subclass which implements a "pure" superperms plugin, i.e. - * one that only needs the built-in Bukkit API to remove transient permissions from a player. Any subclass - * implementing a plugin which provides its own API for this needs to override this method. - * - * @param player OfflinePlayer - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerRemoveTransient(OfflinePlayer player, String permission) { - if (player.isOnline()) { - return playerRemoveTransient((Player) player, permission); - } else { - return false; - } - } - - /** - * Remove transient permission from a player. - * - * @param player Player Object - * @param permission Permission node - * @return Success or Failure - */ - public boolean playerRemoveTransient(Player player, String permission) { - for (PermissionAttachmentInfo paInfo : player.getEffectivePermissions()) { - if (paInfo.getAttachment() != null && paInfo.getAttachment().getPlugin().equals(plugin)) { - paInfo.getAttachment().unsetPermission(permission); - return true; - } - } - return false; - } - - /** - * Checks if group has a permission node. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World name - * @param group Group name - * @param permission Permission node - * @return Success or Failure - */ - abstract public boolean groupHas(String world, String group, String permission); - - /** - * Checks if group has a permission node. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World Object - * @param group Group name - * @param permission Permission node - * @return Success or Failure - */ - public boolean groupHas(World world, String group, String permission) { - if (world == null) { - return groupHas((String) null, group, permission); - } - return groupHas(world.getName(), group, permission); - } - - /** - * Add permission to a group. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World name - * @param group Group name - * @param permission Permission node - * @return Success or Failure - */ - abstract public boolean groupAdd(String world, String group, String permission); - - /** - * Add permission to a group. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World Object - * @param group Group name - * @param permission Permission node - * @return Success or Failure - */ - public boolean groupAdd(World world, String group, String permission) { - if (world == null) { - return groupAdd((String) null, group, permission); - } - return groupAdd(world.getName(), group, permission); - } - - /** - * Remove permission from a group. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World name - * @param group Group name - * @param permission Permission node - * @return Success or Failure - */ - abstract public boolean groupRemove(String world, String group, String permission); - - /** - * Remove permission from a group. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World Object - * @param group Group name - * @param permission Permission node - * @return Success or Failure - */ - public boolean groupRemove(World world, String group, String permission) { - if (world == null) { - return groupRemove((String) null, group, permission); - } - return groupRemove(world.getName(), group, permission); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerInGroup(String, OfflinePlayer, String)} instead. - */ - @Deprecated - abstract public boolean playerInGroup(String world, String player, String group); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerInGroup(String, OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean playerInGroup(World world, String player, String group) { - if (world == null) { - return playerInGroup((String) null, player, group); - } - return playerInGroup(world.getName(), player, group); - } - - /** - * Check if player is member of a group. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World Object - * @param player to check - * @param group Group name - * @return Success or Failure - */ - public boolean playerInGroup(String world, OfflinePlayer player, String group) { - if (world == null) { - return playerInGroup((String) null, player.getName(), group); - } - return playerInGroup(world, player.getName(), group); - } - - /** - * Check if player is member of a group. - * This method will ONLY check groups for which the player is in that are defined for the current world. - * This may result in odd return behaviour depending on what permission system has been registered. - * - * @param player Player Object - * @param group Group name - * @return Success or Failure - */ - public boolean playerInGroup(Player player, String group) { - return playerInGroup(player.getWorld().getName(), player, group); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerAddGroup(String, OfflinePlayer, String)} instead. - */ - @Deprecated - abstract public boolean playerAddGroup(String world, String player, String group); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerAddGroup(String, OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean playerAddGroup(World world, String player, String group) { - if (world == null) { - return playerAddGroup((String) null, player, group); - } - return playerAddGroup(world.getName(), player, group); - } - - /** - * Add player to a group. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world String world name - * @param player to add - * @param group Group name - * @return Success or Failure - */ - public boolean playerAddGroup(String world, OfflinePlayer player, String group) { - if (world == null) { - return playerAddGroup((String) null, player.getName(), group); - } - return playerAddGroup(world, player.getName(), group); - } - - /** - * Add player to a group. - * This will add a player to the group on the current World. This may return odd results if the permission system - * being used on the server does not support world-specific groups, or if the group being added to is a global group. - * - * @param player Player Object - * @param group Group name - * @return Success or Failure - */ - public boolean playerAddGroup(Player player, String group) { - return playerAddGroup(player.getWorld().getName(), player, group); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerRemoveGroup(String, OfflinePlayer, String)} instead. - */ - @Deprecated - abstract public boolean playerRemoveGroup(String world, String player, String group); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #playerRemoveGroup(String, OfflinePlayer, String)} instead. - */ - @Deprecated - public boolean playerRemoveGroup(World world, String player, String group) { - if (world == null) { - return playerRemoveGroup((String) null, player, group); - } - return playerRemoveGroup(world.getName(), player, group); - } - - /** - * Remove player from a group. - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world World Object - * @param player to remove - * @param group Group name - * @return Success or Failure - */ - public boolean playerRemoveGroup(String world, OfflinePlayer player, String group) { - if (world == null) { - return playerRemoveGroup((String) null, player.getName(), group); - } - return playerRemoveGroup(world, player.getName(), group); - } - - /** - * Remove player from a group. - * This will add a player to the group on the current World. This may return odd results if the permission system - * being used on the server does not support world-specific groups, or if the group being added to is a global group. - * - * @param player Player Object - * @param group Group name - * @return Success or Failure - */ - public boolean playerRemoveGroup(Player player, String group) { - return playerRemoveGroup(player.getWorld().getName(), player, group); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #getPlayerGroups(String, OfflinePlayer)} instead. - */ - @Deprecated - abstract public String[] getPlayerGroups(String world, String player); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #getPlayerGroups(String, OfflinePlayer)} instead. - */ - @Deprecated - public String[] getPlayerGroups(World world, String player) { - if (world == null) { - return getPlayerGroups((String) null, player); - } - return getPlayerGroups(world.getName(), player); - } - - /** - * Gets the list of groups that this player has - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world String world name - * @param player OfflinePlayer - * @return Array of groups - */ - public String[] getPlayerGroups(String world, OfflinePlayer player) { - return getPlayerGroups(world, player.getName()); - } - - /** - * Returns a list of world-specific groups that this player is currently in. May return unexpected results if - * you are looking for global groups, or if the registered permission system does not support world-specific groups. - * See {@link #getPlayerGroups(String, OfflinePlayer)} for better control of World-specific or global groups. - * - * @param player Player Object - * @return Array of groups - */ - public String[] getPlayerGroups(Player player) { - return getPlayerGroups(player.getWorld().getName(), player); - } - - /** - * @deprecated As of VaultAPI 1.4 use {@link #getPrimaryGroup(String, OfflinePlayer)} instead. - */ - @Deprecated - abstract public String getPrimaryGroup(String world, String player); - - /** - * @deprecated As of VaultAPI 1.4 use {@link #getPrimaryGroup(String, OfflinePlayer)} instead. - */ - @Deprecated - public String getPrimaryGroup(World world, String player) { - if (world == null) { - return getPrimaryGroup((String) null, player); - } - return getPrimaryGroup(world.getName(), player); - } - - /** - * Gets players primary group - * Supports NULL value for World if the permission system registered supports global permissions. - * But May return odd values if the servers registered permission system does not have a global permission store. - * - * @param world String world name - * @param player to get from - * @return Players primary group - */ - public String getPrimaryGroup(String world, OfflinePlayer player) { - return getPrimaryGroup(world, player.getName()); - } - - /** - * Get players primary group. - * Defaults to the players current world, so may return only world-specific groups. - * In most cases {@link #getPrimaryGroup(String, OfflinePlayer)} is preferable. - * - * @param player Player Object - * @return Players primary group - */ - public String getPrimaryGroup(Player player) { - return getPrimaryGroup(player.getWorld().getName(), player); - } - - /** - * Returns a list of all known groups - * @return an Array of String of all groups - */ - abstract public String[] getGroups(); - - /** - * Returns true if the given implementation supports groups. - * @return true if the implementation supports groups - */ - abstract public boolean hasGroupSupport(); -} \ No newline at end of file