Specialize EssentialsX economy to support UUID based lookup

This commit is contained in:
Riccardo Bello 2020-10-17 10:17:22 +02:00
parent d456b051c3
commit ace36ee753
6 changed files with 202 additions and 81 deletions

Binary file not shown.

BIN
lib/EssentialsX.jar Normal file

Binary file not shown.

View File

@ -176,12 +176,12 @@ Vault currently supports the following: Permissions 3, PEX, GroupManager, bPerms
<systemPath>${project.basedir}/lib/EconXP.jar</systemPath>
</dependency>
<dependency>
<groupId>com.earth2me.essentials.Essentials</groupId>
<artifactId>Essentials</artifactId>
<version>2.9.2</version>
<groupId>net.ess3</groupId>
<artifactId>EssentialsX</artifactId>
<version>2.18.1.24</version>
<optional>true</optional>
<scope>system</scope>
<systemPath>${project.basedir}/lib/Essentials.jar</systemPath>
<systemPath>${project.basedir}/lib/EssentialsX.jar</systemPath>
</dependency>
<dependency>
<groupId>org.anjocaido.groupmanager.GroupManager</groupId>

View File

@ -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");

View File

@ -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()));
}
}
}

View File

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