diff --git a/lib/Essentials.jar b/lib/Essentials.jar deleted file mode 100644 index 90e2cab..0000000 Binary files a/lib/Essentials.jar and /dev/null differ diff --git a/lib/EssentialsX.jar b/lib/EssentialsX.jar new file mode 100644 index 0000000..c0b1644 Binary files /dev/null and b/lib/EssentialsX.jar differ diff --git a/pom.xml b/pom.xml index 5b8a6df..94346a8 100644 --- a/pom.xml +++ b/pom.xml @@ -176,12 +176,12 @@ Vault currently supports the following: Permissions 3, PEX, GroupManager, bPerms ${project.basedir}/lib/EconXP.jar - com.earth2me.essentials.Essentials - Essentials - 2.9.2 + net.ess3 + EssentialsX + 2.18.1.24 true system - ${project.basedir}/lib/Essentials.jar + ${project.basedir}/lib/EssentialsX.jar org.anjocaido.groupmanager.GroupManager diff --git a/src/net/milkbowl/vault/Vault.java b/src/net/milkbowl/vault/Vault.java index 30f6f17..3177052 100644 --- a/src/net/milkbowl/vault/Vault.java +++ b/src/net/milkbowl/vault/Vault.java @@ -15,68 +15,13 @@ */ package net.milkbowl.vault; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URL; -import java.net.URLConnection; -import java.util.Collection; -import java.util.concurrent.Callable; -import java.util.logging.Logger; - +import com.nijikokun.register.payment.Methods; import net.milkbowl.vault.chat.Chat; -import net.milkbowl.vault.chat.plugins.Chat_DroxPerms; -import net.milkbowl.vault.chat.plugins.Chat_GroupManager; -import net.milkbowl.vault.chat.plugins.Chat_OverPermissions; -import net.milkbowl.vault.chat.plugins.Chat_Permissions3; -import net.milkbowl.vault.chat.plugins.Chat_PermissionsEx; -import net.milkbowl.vault.chat.plugins.Chat_Privileges; -import net.milkbowl.vault.chat.plugins.Chat_bPermissions; -import net.milkbowl.vault.chat.plugins.Chat_bPermissions2; -import net.milkbowl.vault.chat.plugins.Chat_iChat; -import net.milkbowl.vault.chat.plugins.Chat_mChat; -import net.milkbowl.vault.chat.plugins.Chat_mChatSuite; -import net.milkbowl.vault.chat.plugins.Chat_rscPermissions; +import net.milkbowl.vault.chat.plugins.*; import net.milkbowl.vault.economy.Economy; -import net.milkbowl.vault.economy.plugins.Economy_BOSE7; -import net.milkbowl.vault.economy.plugins.Economy_CommandsEX; -import net.milkbowl.vault.economy.plugins.Economy_Craftconomy3; -import net.milkbowl.vault.economy.plugins.Economy_CurrencyCore; -import net.milkbowl.vault.economy.plugins.Economy_DigiCoin; -import net.milkbowl.vault.economy.plugins.Economy_Dosh; -import net.milkbowl.vault.economy.plugins.Economy_EconXP; -import net.milkbowl.vault.economy.plugins.Economy_Essentials; -import net.milkbowl.vault.economy.plugins.Economy_GoldIsMoney2; -import net.milkbowl.vault.economy.plugins.Economy_GoldenChestEconomy; -import net.milkbowl.vault.economy.plugins.Economy_Gringotts; -import net.milkbowl.vault.economy.plugins.Economy_McMoney; -import net.milkbowl.vault.economy.plugins.Economy_MineConomy; -import net.milkbowl.vault.economy.plugins.Economy_MultiCurrency; -import net.milkbowl.vault.economy.plugins.Economy_TAEcon; -import net.milkbowl.vault.economy.plugins.Economy_XPBank; -import net.milkbowl.vault.economy.plugins.Economy_eWallet; -import net.milkbowl.vault.economy.plugins.Economy_iConomy6; -import net.milkbowl.vault.economy.plugins.Economy_SDFEconomy; -import net.milkbowl.vault.economy.plugins.Economy_Minefaconomy; +import net.milkbowl.vault.economy.plugins.*; import net.milkbowl.vault.permission.Permission; -import net.milkbowl.vault.permission.plugins.Permission_DroxPerms; -import net.milkbowl.vault.permission.plugins.Permission_GroupManager; -import net.milkbowl.vault.permission.plugins.Permission_OverPermissions; -import net.milkbowl.vault.permission.plugins.Permission_Permissions3; -import net.milkbowl.vault.permission.plugins.Permission_PermissionsBukkit; -import net.milkbowl.vault.permission.plugins.Permission_PermissionsEx; -import net.milkbowl.vault.permission.plugins.Permission_Privileges; -import net.milkbowl.vault.permission.plugins.Permission_SimplyPerms; -import net.milkbowl.vault.permission.plugins.Permission_Starburst; -import net.milkbowl.vault.permission.plugins.Permission_SuperPerms; -import net.milkbowl.vault.permission.plugins.Permission_Xperms; -import net.milkbowl.vault.permission.plugins.Permission_bPermissions; -import net.milkbowl.vault.permission.plugins.Permission_bPermissions2; -import net.milkbowl.vault.permission.plugins.Permission_TotalPermissions; -import net.milkbowl.vault.permission.plugins.Permission_rscPermissions; -import net.milkbowl.vault.permission.plugins.Permission_KPerms; - +import net.milkbowl.vault.permission.plugins.*; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; @@ -98,10 +43,15 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.JSONValue; -import com.nijikokun.register.payment.Methods; - -import net.milkbowl.vault.chat.plugins.Chat_TotalPermissions; -import net.milkbowl.vault.economy.plugins.Economy_MiConomy; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLConnection; +import java.util.Collection; +import java.util.concurrent.Callable; +import java.util.logging.Logger; public class Vault extends JavaPlugin { @@ -269,6 +219,9 @@ public class Vault extends JavaPlugin { // Try to load Gringotts hookEconomy("Gringotts", Economy_Gringotts.class, ServicePriority.Normal, "org.gestern.gringotts.Gringotts"); + // Try to load EssentialsX Economy + hookEconomy("EssentialsX Economy", Economy_EssentialsX.class, ServicePriority.Normal, "com.earth2me.essentials.api.Economy", "com.earth2me.essentials.api.NoLoanPermittedException", "com.earth2me.essentials.api.UserDoesNotExistException", "com.earth2me.essentials.AsyncTeleport"); + // Try to load Essentials Economy hookEconomy("Essentials Economy", Economy_Essentials.class, ServicePriority.Low, "com.earth2me.essentials.api.Economy", "com.earth2me.essentials.api.NoLoanPermittedException", "com.earth2me.essentials.api.UserDoesNotExistException"); diff --git a/src/net/milkbowl/vault/economy/plugins/Economy_Essentials.java b/src/net/milkbowl/vault/economy/plugins/Economy_Essentials.java index c82267e..4a7846b 100644 --- a/src/net/milkbowl/vault/economy/plugins/Economy_Essentials.java +++ b/src/net/milkbowl/vault/economy/plugins/Economy_Essentials.java @@ -15,14 +15,12 @@ */ package net.milkbowl.vault.economy.plugins; -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Logger; - +import com.earth2me.essentials.Essentials; +import com.earth2me.essentials.api.NoLoanPermittedException; +import com.earth2me.essentials.api.UserDoesNotExistException; import net.milkbowl.vault.economy.AbstractEconomy; 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; @@ -31,15 +29,14 @@ import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.plugin.Plugin; -import com.earth2me.essentials.Essentials; -import com.earth2me.essentials.api.NoLoanPermittedException; -import com.earth2me.essentials.api.UserDoesNotExistException; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; public class Economy_Essentials extends AbstractEconomy { - private final String name = "Essentials Economy"; private final Logger log; - private Plugin plugin = null; + private Plugin plugin; private Essentials ess = null; public Economy_Essentials(Plugin plugin) { @@ -52,7 +49,7 @@ public class Economy_Essentials extends AbstractEconomy { Plugin essentials = plugin.getServer().getPluginManager().getPlugin("Essentials"); if (essentials != null && essentials.isEnabled()) { ess = (Essentials) essentials; - log.info(String.format("[Economy] %s hooked.", name)); + log.info(String.format("[Economy] %s hooked.", getName())); } } } @@ -68,7 +65,7 @@ public class Economy_Essentials extends AbstractEconomy { @Override public String getName() { - return name; + return "Essentials Economy"; } @Override @@ -200,7 +197,7 @@ public class Economy_Essentials extends AbstractEconomy { if (essentials.getDescription().getName().equals("Essentials")) { economy.ess = (Essentials) essentials; - log.info(String.format("[Economy] %s hooked.", economy.name)); + log.info(String.format("[Economy] %s hooked.", economy.getName())); } } } @@ -210,7 +207,7 @@ public class Economy_Essentials extends AbstractEconomy { if (economy.ess != null) { if (event.getPlugin().getDescription().getName().equals("Essentials")) { economy.ess = null; - log.info(String.format("[Economy] %s unhooked.", economy.name)); + log.info(String.format("[Economy] %s unhooked.", economy.getName())); } } } diff --git a/src/net/milkbowl/vault/economy/plugins/Economy_EssentialsX.java b/src/net/milkbowl/vault/economy/plugins/Economy_EssentialsX.java new file mode 100644 index 0000000..dc8ea1c --- /dev/null +++ b/src/net/milkbowl/vault/economy/plugins/Economy_EssentialsX.java @@ -0,0 +1,171 @@ +package net.milkbowl.vault.economy.plugins; + +import com.earth2me.essentials.api.Economy; +import com.earth2me.essentials.api.NoLoanPermittedException; +import com.earth2me.essentials.api.UserDoesNotExistException; +import net.milkbowl.vault.economy.EconomyResponse; +import org.bukkit.OfflinePlayer; +import org.bukkit.plugin.Plugin; + +import java.math.BigDecimal; + +public class Economy_EssentialsX extends Economy_Essentials { + + public Economy_EssentialsX(Plugin plugin) { + super(plugin); + } + + @Override + public String getName() { + return "EssentialsX Economy"; + } + + @Override + public boolean hasAccount(OfflinePlayer player) { + return Economy.playerExists(player.getUniqueId()); + } + + @Override + public double getBalance(OfflinePlayer player) { + double balance; + try { + balance = Economy.getMoneyExact(player.getUniqueId()).doubleValue(); + } catch (UserDoesNotExistException e) { + createPlayerAccount(player); + balance = 0; + } + return balance; + } + + @Override + public boolean has(OfflinePlayer player, double amount) { + try { + return Economy.hasEnough(player.getUniqueId(), BigDecimal.valueOf(amount)); + } catch (UserDoesNotExistException e) { + return false; + } + } + + @Override + public EconomyResponse withdrawPlayer(OfflinePlayer player, double amount) { + if (player == null) { + return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Player can not be null."); + } + if (amount < 0) { + return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Cannot withdraw negative funds"); + } + + BigDecimal balance; + EconomyResponse.ResponseType type; + String errorMessage = null; + + try { + com.earth2me.essentials.api.Economy.subtract(player.getUniqueId(), BigDecimal.valueOf(amount)); + balance = com.earth2me.essentials.api.Economy.getMoneyExact(player.getUniqueId()); + type = EconomyResponse.ResponseType.SUCCESS; + } catch (UserDoesNotExistException e) { + if (createPlayerAccount(player)) { + return withdrawPlayer(player, amount); + } else { + amount = 0; + balance = BigDecimal.ZERO; + type = EconomyResponse.ResponseType.FAILURE; + errorMessage = "User does not exist"; + } + } catch (NoLoanPermittedException e) { + try { + balance = com.earth2me.essentials.api.Economy.getMoneyExact(player.getUniqueId()); + amount = 0; + type = EconomyResponse.ResponseType.FAILURE; + errorMessage = "Loan was not permitted"; + } catch (UserDoesNotExistException e1) { + amount = 0; + balance = BigDecimal.ZERO; + type = EconomyResponse.ResponseType.FAILURE; + errorMessage = "User does not exist"; + } + } + + return new EconomyResponse(amount, balance.doubleValue(), type, errorMessage); + } + + @Override + public EconomyResponse depositPlayer(OfflinePlayer player, double amount) { + return tryDepositPlayer(player, amount, 2); + } + + public EconomyResponse tryDepositPlayer(OfflinePlayer player, double amount, int tries) { + if (player == null) { + return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Player can not be null."); + } + if (amount < 0) { + return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Cannot desposit negative funds"); + } + if (tries <= 0) { + return new EconomyResponse(amount, 0, EconomyResponse.ResponseType.FAILURE, "Failed to deposit amount."); + } + + BigDecimal balance; + EconomyResponse.ResponseType type; + String errorMessage = null; + + try { + com.earth2me.essentials.api.Economy.add(player.getUniqueId(), BigDecimal.valueOf(amount)); + balance = com.earth2me.essentials.api.Economy.getMoneyExact(player.getUniqueId()); + type = EconomyResponse.ResponseType.SUCCESS; + } catch (UserDoesNotExistException e) { + if (createPlayerAccount(player)) { + return tryDepositPlayer(player, amount, tries--); + } else { + amount = 0; + balance = BigDecimal.ZERO; + type = EconomyResponse.ResponseType.FAILURE; + errorMessage = "User does not exist"; + } + } catch (NoLoanPermittedException e) { + try { + balance = com.earth2me.essentials.api.Economy.getMoneyExact(player.getUniqueId()); + amount = 0; + type = EconomyResponse.ResponseType.FAILURE; + errorMessage = "Loan was not permitted"; + } catch (UserDoesNotExistException e1) { + balance = BigDecimal.ZERO; + amount = 0; + type = EconomyResponse.ResponseType.FAILURE; + errorMessage = "Loan was not permitted"; + } + } + + return new EconomyResponse(amount, balance.doubleValue(), type, errorMessage); + } + + @Override + public boolean hasAccount(OfflinePlayer player, String worldName) { + return hasAccount(player); + } + + @Override + public double getBalance(OfflinePlayer player, String world) { + return getBalance(player); + } + + @Override + public boolean has(OfflinePlayer player, String worldName, double amount) { + return has(player, amount); + } + + @Override + public EconomyResponse withdrawPlayer(OfflinePlayer player, String worldName, double amount) { + return withdrawPlayer(player, amount); + } + + @Override + public EconomyResponse depositPlayer(OfflinePlayer player, String worldName, double amount) { + return depositPlayer(player, amount); + } + + @Override + public boolean createPlayerAccount(OfflinePlayer player, String worldName) { + return createPlayerAccount(player); + } +}