Add warnings about unknown OfflinePlayer to VaultListener

Also improve the ReserveListener by removing the query for the OfflinePlayer object as that's not necessary to use the Reserve economy API as it directly provides methods for UUID usage (and account existence has usually been checked before already)
Also use canAddHoldings to check if economy user can hold money instead of adding and removing.
This commit is contained in:
Phoenix616 2019-05-01 17:13:47 +01:00
parent 0b57382cd0
commit 04f91aa55b
2 changed files with 27 additions and 51 deletions

View File

@ -12,7 +12,6 @@ import com.Acrobot.ChestShop.Listeners.Economy.EconomyAdapter;
import net.tnemc.core.Reserve;
import net.tnemc.core.economy.EconomyAPI;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.event.EventHandler;
import javax.annotation.Nullable;
@ -66,37 +65,28 @@ public class ReserveListener extends EconomyAdapter {
@EventHandler
public void onAmountCheck(CurrencyAmountEvent event) {
if (!event.getAmount().equals(BigDecimal.ZERO)) {
if (!provided() || !event.getAmount().equals(BigDecimal.ZERO)) {
return;
}
final OfflinePlayer lastSeen = Bukkit.getOfflinePlayer(event.getAccount());
if (lastSeen != null && provided()) {
event.setAmount(economyAPI.getHoldings(event.getAccount(), event.getWorld().getName()));
}
event.setAmount(economyAPI.getHoldings(event.getAccount(), event.getWorld().getName()));
}
@EventHandler
public void onCurrencyCheck(CurrencyCheckEvent event) {
if (event.hasEnough()) {
if (!provided() || event.hasEnough()) {
return;
}
final OfflinePlayer lastSeen = Bukkit.getOfflinePlayer(event.getAccount());
if (lastSeen != null && provided()) {
event.hasEnough(economyAPI.hasHoldings(event.getAccount(),
event.getAmount(),
event.getWorld().getName()));
}
event.hasEnough(economyAPI.hasHoldings(event.getAccount(),
event.getAmount(),
event.getWorld().getName()));
}
@EventHandler
public void onAccountCheck(AccountCheckEvent event) {
if (event.hasAccount()) {
if (!provided() || event.hasAccount()) {
return;
}
final OfflinePlayer lastSeen = Bukkit.getOfflinePlayer(event.getAccount());
event.hasAccount(lastSeen != null && provided() && economyAPI.hasAccount(event.getAccount()));
event.hasAccount(economyAPI.hasAccount(event.getAccount()));
}
@EventHandler
@ -112,26 +102,18 @@ public class ReserveListener extends EconomyAdapter {
@EventHandler
public void onCurrencyAdd(CurrencyAddEvent event) {
if (event.isAdded()) {
if (!provided() || event.isAdded()) {
return;
}
final OfflinePlayer lastSeen = Bukkit.getOfflinePlayer(event.getTarget());
if (lastSeen != null && provided()) {
event.setAdded(economyAPI.addHoldings(event.getTarget(), event.getAmount(), event.getWorld().getName()));
}
event.setAdded(economyAPI.addHoldings(event.getTarget(), event.getAmount(), event.getWorld().getName()));
}
@EventHandler
public void onCurrencySubtraction(CurrencySubtractEvent event) {
if (event.isSubtracted()) {
if (!provided() || event.isSubtracted()) {
return;
}
final OfflinePlayer lastSeen = Bukkit.getOfflinePlayer(event.getTarget());
if (lastSeen != null && provided()) {
event.setSubtracted(economyAPI.removeHoldings(event.getTarget(), event.getAmount(), event.getWorld().getName()));
}
event.setSubtracted(economyAPI.removeHoldings(event.getTarget(), event.getAmount(), event.getWorld().getName()));
}
@EventHandler
@ -145,23 +127,12 @@ public class ReserveListener extends EconomyAdapter {
return;
}
final OfflinePlayer lastSeen = Bukkit.getOfflinePlayer(event.getAccount());
if (lastSeen == null || !provided()) {
event.canHold(false);
return;
}
final String world = event.getWorld().getName();
if (!economyAPI.hasAccount(event.getAccount())) {
event.canHold(false);
return;
}
if (!economyAPI.addHoldings(event.getAccount(), event.getAmount(), world)) {
event.canHold(false);
return;
}
economyAPI.removeHoldings(event.getAccount(), event.getAmount(), world);
event.canHold(economyAPI.canAddHoldings(event.getAccount(), event.getAmount(), world));
}
}

View File

@ -104,7 +104,6 @@ public class VaultListener extends EconomyAdapter {
}
double balance = 0;
//String lastSeen = NameManager.getLastSeenName(event.getAccount());
OfflinePlayer lastSeen = Bukkit.getOfflinePlayer(event.getAccount());
if (lastSeen != null) {
@ -119,9 +118,11 @@ public class VaultListener extends EconomyAdapter {
if (balance > Double.MAX_VALUE) {
balance = Double.MAX_VALUE;
}
} else {
ChestShop.getBukkitLogger().log(Level.WARNING, "The server could not get the OfflinePlayer with the UUID " + event.getAccount() + " to check balance?");
}
event.setAmount(balance);
event.setAmount(BigDecimal.ZERO);
}
@EventHandler
@ -131,11 +132,10 @@ public class VaultListener extends EconomyAdapter {
}
World world = event.getWorld();
//String lastSeen = NameManager.getLastSeenName(event.getAccount());
OfflinePlayer lastSeen = Bukkit.getOfflinePlayer(event.getAccount());
try {
event.hasEnough(lastSeen != null && provider.has(lastSeen, world.getName(), event.getDoubleAmount()));
event.hasEnough(lastSeen != null && provider.has(lastSeen, world.getName(), event.getAmount().doubleValue()));
} catch (Exception e) {
ChestShop.getBukkitLogger().log(Level.WARNING, "Could not check if account of " + lastSeen.getUniqueId() + "/" + lastSeen.getName() + " has " + event.getDoubleAmount() + "." +
"This is probably due to https://github.com/MilkBowl/Vault/issues/746 and has to be fixed in either Vault directly or your economy plugin." +
@ -184,13 +184,15 @@ public class VaultListener extends EconomyAdapter {
if (lastSeen != null) {
try {
EconomyResponse response = provider.depositPlayer(lastSeen, world.getName(), event.getDoubleAmount());
EconomyResponse response = provider.depositPlayer(lastSeen, world.getName(), event.getAmount().doubleValue());
event.setAdded(response.type == EconomyResponse.ResponseType.SUCCESS);
} catch (Exception e) {
ChestShop.getBukkitLogger().log(Level.WARNING, "Could not add money to account of " + lastSeen.getUniqueId() + "/" + lastSeen.getName() + "." +
"This is probably due to https://github.com/MilkBowl/Vault/issues/746 and has to be fixed in either Vault directly or your economy plugin." +
"If you are sure it's not this issue then please report the following error.", e);
}
} else {
ChestShop.getBukkitLogger().log(Level.WARNING, "The server could not get the OfflinePlayer with the UUID " + event.getTarget() + " to add " + event.getAmount() + "?");
}
}
@ -206,13 +208,15 @@ public class VaultListener extends EconomyAdapter {
if (lastSeen != null) {
try {
EconomyResponse response = provider.withdrawPlayer(lastSeen, world.getName(), event.getDoubleAmount());
EconomyResponse response = provider.withdrawPlayer(lastSeen, world.getName(), event.getAmount().doubleValue());
event.setSubtracted(response.type == EconomyResponse.ResponseType.SUCCESS);
} catch (Exception e) {
ChestShop.getBukkitLogger().log(Level.WARNING, "Could not add money to account of " + lastSeen.getUniqueId() + "/" + lastSeen.getName() + "." +
"This is probably due to https://github.com/MilkBowl/Vault/issues/746 and has to be fixed in either Vault directly or your economy plugin." +
"If you are sure it's not this issue then please report the following error.", e);
}
} else {
ChestShop.getBukkitLogger().log(Level.WARNING, "The server could not get the OfflinePlayer with the UUID " + event.getTarget() + " to subtract " + event.getAmount() + "?");
}
}
@ -236,6 +240,7 @@ public class VaultListener extends EconomyAdapter {
if (lastSeen == null) {
event.canHold(false);
ChestShop.getBukkitLogger().log(Level.WARNING, "The server could not get the OfflinePlayer with the UUID " + event.getAccount() + " to check if it can hold " + event.getAmount() + "?");
return;
}
@ -245,16 +250,16 @@ public class VaultListener extends EconomyAdapter {
return;
}
EconomyResponse response = provider.depositPlayer(lastSeen, world, event.getDoubleAmount());
EconomyResponse response = provider.depositPlayer(lastSeen, world, event.getAmount().doubleValue());
if (!response.transactionSuccess()) {
event.canHold(false);
return;
}
provider.withdrawPlayer(lastSeen, world, event.getDoubleAmount());
provider.withdrawPlayer(lastSeen, world, event.getAmount().doubleValue());
} catch (Exception e) {
ChestShop.getBukkitLogger().log(Level.WARNING, "Could not check if account of " + lastSeen.getUniqueId() + "/" + lastSeen.getName() + " can hold " + event.getDoubleAmount() + "." +
ChestShop.getBukkitLogger().log(Level.WARNING, "Could not check if account of " + lastSeen.getUniqueId() + "/" + lastSeen.getName() + " can hold " + event.getAmount() + "." +
"This is probably due to https://github.com/MilkBowl/Vault/issues/746 and has to be fixed in either Vault directly or your economy plugin." +
"If you are sure it's not then please report this error to the devs of ChestShop.", e);
}