package gg.malloc.defense; import net.milkbowl.vault.economy.AbstractEconomy; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse.ResponseType; import org.bukkit.plugin.ServicesManager; import org.bukkit.plugin.ServicePriority; import org.bukkit.entity.Player; import org.bukkit.OfflinePlayer; import gg.malloc.defense.engine.GameRunner; import java.util.List; import java.util.ArrayList; public class GameEconomy extends AbstractEconomy { Plugin m_plugin; public GameEconomy(Plugin plugin) { m_plugin = plugin; } public void register() { ServicesManager manager = m_plugin.getServer().getServicesManager(); manager.register(Economy.class, this, m_plugin, ServicePriority.Highest); } @Override public EconomyResponse withdrawPlayer(String playerName, double amount) { GameRunner runner = m_plugin.getRunnerForPlayer(playerName); if (runner != null) { Player p = m_plugin.getServer().getPlayer(playerName); if (!has(playerName, amount)) { int newBalance = runner.getState().getPlayerBalance(p); return new EconomyResponse(amount, newBalance, ResponseType.FAILURE, "Not enough money!"); } else { runner.spendMoney(p, (int)Math.floor(amount)); int newBalance = runner.getState().getPlayerBalance(p); return new EconomyResponse(amount, newBalance, ResponseType.SUCCESS, ""); } } else { return new EconomyResponse(0, 0, ResponseType.FAILURE, "Not in a game!"); } } @Override public EconomyResponse depositPlayer(String playerName, double amount) { GameRunner runner = m_plugin.getRunnerForPlayer(playerName); if (runner != null) { Player p = m_plugin.getServer().getPlayer(playerName); runner.spendMoney(p, -(int)Math.floor(amount)); int newBalance = runner.getState().getPlayerBalance(p); return new EconomyResponse(amount, newBalance, ResponseType.SUCCESS, ""); } else { return new EconomyResponse(0, 0, ResponseType.FAILURE, "Not in a game!"); } } @Override public double getBalance(String playerName) { GameRunner runner = m_plugin.getRunnerForPlayer(playerName); if (runner != null) { Player p = m_plugin.getServer().getPlayer(playerName); return runner.getState().getPlayerBalance(p); } else { return 0.0; } } @Override public double getBalance(String playerName, String worldName) { return getBalance(playerName); } @Override public boolean isEnabled() { return true; } @Override public String getName() { return "Malloc Defense"; } @Override public boolean hasBankSupport() { return false; } @Override public int fractionalDigits() { return 0; } @Override public String format(double amount) { return amount + " grist"; } @Override public String currencyNamePlural() { return "Grist"; } @Override public String currencyNameSingular() { return "Grist"; } @Override public boolean hasAccount(String playerName) { return true; } @Override public boolean hasAccount(String playerName, String worldName) { return hasAccount(playerName); } @Override public boolean has(String playerName, double amount) { return getBalance(playerName) >= amount; } @Override public boolean has(String playerName, String worldName, double amount) { return has(playerName, amount); } @Override public EconomyResponse withdrawPlayer(String playerName, String worldName, double amount) { return withdrawPlayer(playerName, amount); } @Override public EconomyResponse depositPlayer(String playerName, String worldName, double amount) { return depositPlayer(playerName, amount); } private static final EconomyResponse NO_IMPL_RESPONSE = new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Not implemented."); @Override public EconomyResponse createBank(String name, String player) { return NO_IMPL_RESPONSE; } @Override public EconomyResponse deleteBank(String name) { return NO_IMPL_RESPONSE; } @Override public EconomyResponse bankBalance(String name) { return NO_IMPL_RESPONSE; } @Override public EconomyResponse bankHas(String name, double amount) { return NO_IMPL_RESPONSE; } @Override public EconomyResponse bankWithdraw(String name, double amount) { return NO_IMPL_RESPONSE; } @Override public EconomyResponse bankDeposit(String name, double amount) { return NO_IMPL_RESPONSE; } @Override public EconomyResponse isBankOwner(String name, String player) { return NO_IMPL_RESPONSE; } @Override public EconomyResponse isBankMember(String name, String player) { return NO_IMPL_RESPONSE; } @Override public boolean createPlayerAccount(String name) { return true; } @Override public boolean createPlayerAccount(String name, String worldName) { return true; } @Override public List getBanks() { return new ArrayList(); } }