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);
+ }
+}