package tv.mineinthebox.essentials.instances;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;
import net.milkbowl.vault.economy.EconomyResponse.ResponseType;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.enums.LogType;
import tv.mineinthebox.essentials.interfaces.XOfflinePlayer;
import tv.mineinthebox.essentials.managers.xEssentialsPlayerManager;
public class VaultEcoHandler implements Economy {
private final String name = "xEssentials-eco";
private final xEssentialsPlayerManager manager;
private final xEssentials pl;
public VaultEcoHandler(xEssentials pl) {
this.pl = pl;
this.manager = pl.getManagers().getPlayerManager();
xEssentials.log(String.format("[vault-economy] %s hooked.", name), LogType.INFO);
}
@Override
public boolean isEnabled() {
if(pl != null) {
return pl.isEnabled();
} else {
return false;
}
}
@Override
public String getName() {
return name;
}
@Override
public boolean hasBankSupport() {
return false;
}
@Override
public int fractionalDigits() {
return -1;
}
@Override
public String format(double amount) {
DecimalFormat format = new DecimalFormat("##.##");
return format.format(amount);
}
@Override
public String currencyNamePlural() {
return pl.getConfiguration().getEconomyConfig().getCurency();
}
@Override
public String currencyNameSingular() {
return pl.getConfiguration().getEconomyConfig().getCurency();
}
@Override
public boolean hasAccount(String playerName) {
return manager.isEssentialsPlayer(playerName);
}
@Override
public boolean hasAccount(OfflinePlayer player) {
return manager.isEssentialsPlayer(player.getName());
}
@Override
public boolean hasAccount(String playerName, String worldName) {
return manager.isEssentialsPlayer(playerName);
}
@Override
public boolean hasAccount(OfflinePlayer player, String worldName) {
return manager.isEssentialsPlayer(player.getName());
}
@Override
public double getBalance(String playerName) {
if(manager.isEssentialsPlayer(playerName)) {
return manager.getOfflinePlayer(playerName).getMoney();
}
return 0.0;
}
@Override
public double getBalance(OfflinePlayer player) {
if(manager.isEssentialsPlayer(player.getName())) {
return manager.getOfflinePlayer(player.getName()).getMoney();
}
return 0.0;
}
@Override
public double getBalance(String playerName, String world) {
if(manager.isEssentialsPlayer(playerName)) {
return manager.getOfflinePlayer(playerName).getMoney();
}
return 0.0;
}
@Override
public double getBalance(OfflinePlayer player, String world) {
if(manager.isEssentialsPlayer(player.getName())) {
return manager.getOfflinePlayer(player.getName()).getMoney();
}
return 0.0;
}
@Override
public boolean has(String playerName, double amount) {
if(amount >= 0) {
if(manager.isEssentialsPlayer(playerName)) {
return manager.getOfflinePlayer(playerName).hasEnoughMoney(amount);
}
}
return false;
}
@Override
public boolean has(OfflinePlayer player, double amount) {
if(amount >= 0) {
if(manager.isEssentialsPlayer(player.getName())) {
return manager.getOfflinePlayer(player.getName()).hasEnoughMoney(amount);
}
}
return false;
}
@Override
public boolean has(String playerName, String worldName, double amount) {
if(amount >= 0) {
if(manager.isEssentialsPlayer(playerName)) {
return manager.getOfflinePlayer(playerName).hasEnoughMoney(amount);
}
}
return false;
}
@Override
public boolean has(OfflinePlayer player, String worldName, double amount) {
if(amount >= 0) {
if(manager.isEssentialsPlayer(player.getName())) {
return manager.getOfflinePlayer(player.getName()).hasEnoughMoney(amount);
}
}
return false;
}
@Override
public EconomyResponse withdrawPlayer(String playerName, double amount) {
if(manager.isEssentialsPlayer(playerName)) {
XOfflinePlayer off = manager.getOfflinePlayer(playerName);
if(off.hasEnoughMoney(amount)) {
off.withdrawMoney(amount);
return new EconomyResponse(amount, off.getMoney(), ResponseType.SUCCESS, "");
} else {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "insuffient funds");
}
}
return new EconomyResponse(0,0,ResponseType.FAILURE, "account does not exist");
}
@Override
public EconomyResponse withdrawPlayer(OfflinePlayer player, double amount) {
if(manager.isEssentialsPlayer(player.getName())) {
XOfflinePlayer off = manager.getOfflinePlayer(player.getName());
if(off.hasEnoughMoney(amount)) {
off.withdrawMoney(amount);
return new EconomyResponse(amount, off.getMoney(), ResponseType.SUCCESS, "");
} else {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "insuffient funds");
}
}
return new EconomyResponse(0,0,ResponseType.FAILURE, "account does not exist");
}
@Override
public EconomyResponse withdrawPlayer(String playerName, String worldName,
double amount) {
if(manager.isEssentialsPlayer(playerName)) {
XOfflinePlayer off = manager.getOfflinePlayer(playerName);
if(off.hasEnoughMoney(amount)) {
off.withdrawMoney(amount);
return new EconomyResponse(amount, off.getMoney(), ResponseType.SUCCESS, "");
} else {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "insuffient funds");
}
}
return new EconomyResponse(0,0,ResponseType.FAILURE, "account does not exist");
}
@Override
public EconomyResponse withdrawPlayer(OfflinePlayer player,
String worldName, double amount) {
if(manager.isEssentialsPlayer(player.getName())) {
XOfflinePlayer off = manager.getOfflinePlayer(player.getName());
if(off.hasEnoughMoney(amount)) {
off.withdrawMoney(amount);
return new EconomyResponse(amount, off.getMoney(), ResponseType.SUCCESS, "");
} else {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "insuffient funds");
}
}
return new EconomyResponse(0,0,ResponseType.FAILURE, "account does not exist");
}
@Override
public EconomyResponse depositPlayer(String playerName, double amount) {
if(manager.isEssentialsPlayer(playerName)) {
XOfflinePlayer off = manager.getOfflinePlayer(playerName);
off.depositMoney(amount);
return new EconomyResponse(amount, off.getMoney(), ResponseType.SUCCESS, "");
}
return new EconomyResponse(0,0,ResponseType.FAILURE, "account does not exist");
}
@Override
public EconomyResponse depositPlayer(OfflinePlayer player, double amount) {
if(manager.isEssentialsPlayer(player.getName())) {
XOfflinePlayer off = manager.getOfflinePlayer(player.getName());
off.depositMoney(amount);
return new EconomyResponse(amount, off.getMoney(), ResponseType.SUCCESS, "");
}
return new EconomyResponse(0,0,ResponseType.FAILURE, "account does not exist");
}
@Override
public EconomyResponse depositPlayer(String playerName, String worldName,
double amount) {
if(manager.isEssentialsPlayer(playerName)) {
XOfflinePlayer off = manager.getOfflinePlayer(playerName);
off.depositMoney(amount);
return new EconomyResponse(amount, off.getMoney(), ResponseType.SUCCESS, "");
}
return new EconomyResponse(0,0,ResponseType.FAILURE, "account does not exist");
}
@Override
public EconomyResponse depositPlayer(OfflinePlayer player,
String worldName, double amount) {
if(manager.isEssentialsPlayer(player.getName())) {
XOfflinePlayer off = manager.getOfflinePlayer(player.getName());
off.depositMoney(amount);
return new EconomyResponse(amount, off.getMoney(), ResponseType.SUCCESS, "");
}
return new EconomyResponse(0,0,ResponseType.FAILURE, "account does not exist");
}
@Override
public EconomyResponse createBank(String name, String player) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse createBank(String name, OfflinePlayer player) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse deleteBank(String name) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse bankBalance(String name) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse bankHas(String name, double amount) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse bankWithdraw(String name, double amount) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse bankDeposit(String name, double amount) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse isBankOwner(String name, String playerName) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse isBankOwner(String name, OfflinePlayer player) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse isBankMember(String name, String playerName) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public EconomyResponse isBankMember(String name, OfflinePlayer player) {
return new EconomyResponse(0, 0, ResponseType.FAILURE, "banks are unsupported");
}
@Override
public List<String> getBanks() {
return new ArrayList<String>();
}
@SuppressWarnings("deprecation")
@Override
public boolean createPlayerAccount(String playerName) {
if(manager.isEssentialsPlayer("town-"+playerName)) {
return false;
} else {
XOfflinePlayer off = new xEssentialsOfflinePlayer(Bukkit.getOfflinePlayer(playerName), pl);
return (off != null);
}
}
@Override
public boolean createPlayerAccount(OfflinePlayer player) {
if(manager.isEssentialsPlayer("town-"+player.getName())) {
return false;
} else {
XOfflinePlayer off = new xEssentialsOfflinePlayer(player, pl);
return (off != null);
}
}
@SuppressWarnings("deprecation")
@Override
public boolean createPlayerAccount(String playerName, String worldName) {
if(manager.isEssentialsPlayer("town-"+playerName)) {
return false;
} else {
XOfflinePlayer off = new xEssentialsOfflinePlayer(Bukkit.getOfflinePlayer(playerName), pl);
return (off != null);
}
}
@Override
public boolean createPlayerAccount(OfflinePlayer player, String worldName) {
if(manager.isEssentialsPlayer("town-"+player.getName())) {
return false;
} else {
XOfflinePlayer off = new xEssentialsOfflinePlayer(player, pl);
return (off != null);
}
}
}