From 0b75bcc019659f5d4590776d6f08bfe5728ad77e Mon Sep 17 00:00:00 2001 From: squidicuzz Date: Thu, 2 Aug 2012 22:32:27 -0400 Subject: [PATCH 1/2] Added Gringotts as an Eco base --- lib/Gringotts.jar | Bin 0 -> 15777 bytes src/net/milkbowl/vault/Vault.java | 4 + .../economy/plugins/Economy_Gringotts.java | 352 ++++++++++++++++++ 3 files changed, 356 insertions(+) create mode 100644 lib/Gringotts.jar create mode 100644 src/net/milkbowl/vault/economy/plugins/Economy_Gringotts.java diff --git a/lib/Gringotts.jar b/lib/Gringotts.jar new file mode 100644 index 0000000000000000000000000000000000000000..a41620ede6a1416eeba835701241f10a8effeb64 GIT binary patch literal 15777 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

U8q7tG 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%0D2S6nJG2AB(~*Yo@tR>>DbnDQRWyQbf0Ju zw;ra44k9e!X@@)X?YHr(A=^*^PO6~-TwTssx5lRWI#1*> zD|jl;huDq&T0Z?@3OC42ldcblCveid180m` zl!y2ra_e_kcQdFZTE4g$-pF$6p+qNX&mYH~ULloKy*MKt$SOL6lz9^^pXkVK@$hQ! z!Z4mW#C&PaK9{#3jlwrczNWzBFz${`E61(KeA3V>Ua;=N-(Ok`Z5jY{GR*GI8#|Y$ z5Q)x1oO^`?0ZzbaH_%(OLe}|nAa;!28lj{t=-5aCC_b>%7UVHXuk#WK_8ob{?*7|h$hj!(AleYc$;PE z^zfz^Cl-%*x~ zg*xnFw^)4SXSzgD^f#nP`&5T^b)jSLtlpw39dfETFPUo3mX9$lPT|^R60^RMlDBj9 zBLk1x11&B7*P{tJ`Qe06~Qoap~Rb#T6HenqBy4D-luBm)(howh^DS)C}rtVqHBgPYDre z6Qu4?9;?LB-1Lx4RW@3wi?jqm76LzAz+PPp)NT}~r#uG~sv+(rAL4#GFvbvqYuL9@ z#`+#%HsY4sv7Jump4m%sLCe$-*x5cs@af?JbauF>Z*eLRGty1e!Ju#t@#hk4uD-Zb z{k{OS-)ceyXgcY@yA*8uQ2?5pZ;I4|Ji5sH}W5M#^0jXKkkfw#n<2D. + */ +package net.milkbowl.vault.economy.plugins; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; + +import net.mcw.gringotts.Account; +import net.mcw.gringotts.Gringotts; +import net.mcw.gringotts.PlayerAccountHolder; +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.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginDisableEvent; +import org.bukkit.event.server.PluginEnableEvent; +import org.bukkit.plugin.Plugin; + +public class Economy_Gringotts implements Economy { + + private static final Logger log = Logger.getLogger("Minecraft"); + + private final String name = "Gringotts"; + private Plugin plugin = null; + private Gringotts gringotts = null; + + public Economy_Gringotts(Plugin plugin) { + this.plugin = plugin; + Bukkit.getServer().getPluginManager().registerEvents(new EconomyServerListener(this), plugin); + // Load Plugin in case it was loaded before + if (gringotts == null) { + Plugin grngts = plugin.getServer().getPluginManager().getPlugin("Gringotts"); + if (grngts != null && grngts.isEnabled()) { + gringotts = (Gringotts) grngts; + log.info(String.format("[%s][Economy] %s hooked.", plugin.getDescription().getName(), name)); + } + } + } + + public class EconomyServerListener implements Listener { + Economy_Gringotts economy = null; + + public EconomyServerListener(Economy_Gringotts economy_Gringotts) { + this.economy = economy_Gringotts; + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginEnable(PluginEnableEvent event) { + if (economy.gringotts == null) { + Plugin grngts = plugin.getServer().getPluginManager().getPlugin("Gringotts"); + + if (grngts != null && grngts.isEnabled()) { + economy.gringotts = (Gringotts) grngts; + log.info(String.format("[%s][Economy] %s hooked.", plugin.getDescription().getName(), economy.name)); + } + } + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPluginDisable(PluginDisableEvent event) { + if (economy.gringotts != null) { + if (event.getPlugin().getDescription().getName().equals("Gringotts")) { + economy.gringotts = null; + log.info(String.format("[%s][Economy] %s unhooked.", plugin.getDescription().getName(), economy.name)); + } + } + } + } + + /** + * Checks if economy method is enabled. + * @return Success or Failure + */ + public boolean isEnabled(){ + if (gringotts == null) { + return false; + } else { + return gringotts.isEnabled(); + } + } + + /** + * Gets name of permission method + * @return Name of Permission Method + */ + public String getName() { + return name; + } + + /** + * Returns true if the given implementation supports banks. + * @return true if the implementation supports banks + */ + public boolean hasBankSupport(){ + return false; + } + + /** + * 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(){ + return -1; + } + + /** + * Format amount into a human readable String This provides translation into + * economy specific formatting to improve consistency between plugins. + * + * @param amount + * @return Human readable string describing amount + */ + public String format(double amount) { + return Double.toString(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(){ + return ""; + } + + + /** + * 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(){ + return ""; + } + + /** + * 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 + * @param playerName + * @return if the player has an account + */ + public boolean hasAccount(String playerName) { + try{ + Account account = gringotts.accounting.getAccount(new PlayerAccountHolder(playerName)); + } + catch (Exception e){ + return false; + } + return true; + } + + + /** + * Gets balance of a player + * @param playerName + * @return Amount currently held in players account + */ + public double getBalance(String playerName){ + Account account = gringotts.accounting.getAccount(new PlayerAccountHolder(playerName)); + return account.balance(); + } + + /** + * Checks if the player account has the amount - DO NOT USE NEGATIVE AMOUNTS + * + * @param playerName + * @param amount + * @return + * @throws UserDoesNotExistException + */ + public boolean has(String playerName, double amount) { + return getBalance(playerName) >= amount; + } + + /** + * Withdraw an amount from a player - DO NOT USE NEGATIVE AMOUNTS + * + * @param playerName Name of player + * @param amount Amount to withdraw + * @return Detailed response of transaction + */ + public EconomyResponse withdrawPlayer(String playerName, double amount) { + + if( amount < 0 ) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot withdraw a negative amount."); + } + + PlayerAccountHolder accountHolder = new PlayerAccountHolder(playerName); + + Account account = gringotts.accounting.getAccount( accountHolder ); + + if(account.balance() >= amount) { + //We has mulah! + account.remove((long)amount); + return new EconomyResponse(amount, account.balance(), ResponseType.SUCCESS, null); + } else { + //Not enough money to withdraw this much. + return new EconomyResponse(0, account.balance(), ResponseType.FAILURE, "Insufficient funds"); + } + + } + + /** + * Deposit an amount to a player - DO NOT USE NEGATIVE AMOUNTS + * + * @param playerName Name of player + * @param amount Amount to deposit + * @return Detailed response of transaction + */ + public EconomyResponse depositPlayer(String playerName, double amount){ + if (amount < 0) { + return new EconomyResponse(0, 0, ResponseType.FAILURE, "Cannot desposit negative funds"); + } + + PlayerAccountHolder accountHolder = new PlayerAccountHolder(playerName); + Account account = gringotts.accounting.getAccount( accountHolder ); + + long change = (long)account.add((long) amount); + + if( change == amount ) { + return new EconomyResponse( change, account.balance(), ResponseType.SUCCESS, null); + } else { + return new EconomyResponse( change, account.balance(), ResponseType.FAILURE, "Not enough capacity to store that many funds!"); + } + } + + /** + * Creates a bank account with the specified name and the player as the owner + * @param name + * @param player + * @return + */ + public EconomyResponse createBank(String name, String player) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Gringotts does not support bank accounts!"); + } + + /** + * Deletes a bank account with the specified name. + * @param name + * @return if the operation completed successfully + */ + public EconomyResponse deleteBank(String name) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Gringotts does not support bank accounts!"); + } + + /** + * Returns the amount the bank has + * @param name + * @return + */ + public EconomyResponse bankBalance(String name) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Gringotts does not support bank accounts!"); + } + + /** + * Returns true or false whether the bank has the amount specified - DO NOT USE NEGATIVE AMOUNTS + * + * @param name + * @param amount + * @return + */ + public EconomyResponse bankHas(String name, double amount) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Gringotts does not support bank accounts!"); + } + + /** + * Withdraw an amount from a bank account - DO NOT USE NEGATIVE AMOUNTS + * + * @param name + * @param amount + * @return + */ + public EconomyResponse bankWithdraw(String name, double amount) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Gringotts does not support bank accounts!"); + } + + /** + * Deposit an amount into a bank account - DO NOT USE NEGATIVE AMOUNTS + * + * @param name + * @param amount + * @return + */ + public EconomyResponse bankDeposit(String name, double amount) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Gringotts does not support bank accounts!"); + } + + /** + * Check if a player is the owner of a bank account + * @param name + * @param playerName + * @return + */ + public EconomyResponse isBankOwner(String name, String playerName) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Gringotts does not support bank accounts!"); + } + + /** + * Check if the player is a member of the bank account + * @param name + * @param playerName + * @return + */ + public EconomyResponse isBankMember(String name, String playerName) { + return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "Gringotts does not support bank accounts!"); + } + + /** + * Gets the list of banks + * @return the List of Banks + */ + public List getBanks() { + return new ArrayList(); + } + + /** + * Attempts to create a player account for the given player + * @return if the account creation was successful + */ + public boolean createPlayerAccount(String playerName) { + if (hasAccount(playerName)) { + return false; + } + else + return true; + + + } +} From 91b09ff41e80199f303d8a0c7e41435e43089560 Mon Sep 17 00:00:00 2001 From: Harry Jeffery Date: Fri, 3 Aug 2012 16:46:07 +0100 Subject: [PATCH 2/2] Updated Gringotts compatibilty Gringotts now supports storing fractional values, this commit updates the vault integration to reflect those changes. --- lib/Gringotts.jar | Bin 15777 -> 16640 bytes .../economy/plugins/Economy_Gringotts.java | 17 +++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/Gringotts.jar b/lib/Gringotts.jar index a41620ede6a1416eeba835701241f10a8effeb64..e0c9f97855c6cc0445a2eefa5e374a684e36f773 100644 GIT binary patch delta 15330 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 diff --git a/src/net/milkbowl/vault/economy/plugins/Economy_Gringotts.java b/src/net/milkbowl/vault/economy/plugins/Economy_Gringotts.java index 9845b93..39af812 100644 --- a/src/net/milkbowl/vault/economy/plugins/Economy_Gringotts.java +++ b/src/net/milkbowl/vault/economy/plugins/Economy_Gringotts.java @@ -165,11 +165,14 @@ public class Economy_Gringotts implements Economy { public boolean hasAccount(String playerName) { try{ Account account = gringotts.accounting.getAccount(new PlayerAccountHolder(playerName)); + if(account != null) + return true; + else + return false; } catch (Exception e){ return false; } - return true; } @@ -214,7 +217,7 @@ public class Economy_Gringotts implements Economy { if(account.balance() >= amount) { //We has mulah! - account.remove((long)amount); + account.remove(amount); return new EconomyResponse(amount, account.balance(), ResponseType.SUCCESS, null); } else { //Not enough money to withdraw this much. @@ -238,13 +241,11 @@ public class Economy_Gringotts implements Economy { PlayerAccountHolder accountHolder = new PlayerAccountHolder(playerName); Account account = gringotts.accounting.getAccount( accountHolder ); - long change = (long)account.add((long) amount); + if (account.add(amount)) + return new EconomyResponse( amount, account.balance(), ResponseType.SUCCESS, null); + else + return new EconomyResponse( 0, account.balance(), ResponseType.FAILURE, "Not enough capacity to store that many funds!"); - if( change == amount ) { - return new EconomyResponse( change, account.balance(), ResponseType.SUCCESS, null); - } else { - return new EconomyResponse( change, account.balance(), ResponseType.FAILURE, "Not enough capacity to store that many funds!"); - } } /**