From c3d57acc119198d6a3da7ef295ab3c756519d141 Mon Sep 17 00:00:00 2001 From: Florian CUNY Date: Wed, 31 Oct 2018 15:35:40 +0100 Subject: [PATCH] Added convenience methods to VaultHook VaultHook#getBalance(User) : double ; VaultHook#withdraw(User, double) : EconomyResponse ; VaultHook#deposit(User, double) : EconomyResponse VaultHook#has(User, double) : boolean. And made use of these nice new methods where it was needed. --- .../commands/admin/AdminDeleteCommand.java | 2 +- .../commands/island/IslandResetCommand.java | 2 +- .../team/IslandTeamInviteAcceptCommand.java | 2 +- .../island/team/IslandTeamKickCommand.java | 2 +- .../island/team/IslandTeamLeaveCommand.java | 2 +- .../bentobox/bentobox/hooks/VaultHook.java | 62 +++++++++++++++++++ .../bentobox/managers/IslandsManager.java | 2 +- 7 files changed, 68 insertions(+), 6 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java index f0fe89b71..294728ea4 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java @@ -72,7 +72,7 @@ public class AdminDeleteCommand extends ConfirmableCommand { target.getPlayer().getInventory().clear(); } if (getSettings().isUseEconomy() && getIWM().isOnLeaveResetMoney(getWorld())) { - getPlugin().getVault().ifPresent(vault -> vault.getEconomy().withdrawPlayer(target.getPlayer(), vault.getEconomy().getBalance(target.getPlayer()))); + getPlugin().getVault().ifPresent(vault -> vault.withdraw(target, vault.getBalance(target))); } } getIslands().deleteIsland(oldIsland, true); diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/IslandResetCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/IslandResetCommand.java index 375354bf1..3ab6a9733 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/IslandResetCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/IslandResetCommand.java @@ -82,7 +82,7 @@ public class IslandResetCommand extends ConfirmableCommand { user.getPlayer().getInventory().clear(); } if (getSettings().isUseEconomy() && getIWM().isOnLeaveResetMoney(getWorld())) { - getPlugin().getVault().ifPresent(vault -> vault.getEconomy().withdrawPlayer(user.getPlayer(), vault.getEconomy().getBalance(user.getPlayer()))); + getPlugin().getVault().ifPresent(vault -> vault.withdraw(user, vault.getBalance(user))); } // Add a reset getPlayers().addReset(getWorld(), user.getUniqueId()); diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java index 73a61555b..262a9e2f3 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java @@ -85,7 +85,7 @@ public class IslandTeamInviteAcceptCommand extends CompositeCommand { user.getPlayer().getInventory().clear(); } if (getSettings().isUseEconomy() && (getIWM().isOnLeaveResetMoney(getWorld()) || getIWM().isOnJoinResetMoney(getWorld()))) { - getPlugin().getVault().ifPresent(vault -> vault.getEconomy().withdrawPlayer(user.getPlayer(), vault.getEconomy().getBalance(user.getPlayer()))); + getPlugin().getVault().ifPresent(vault -> vault.withdraw(user, vault.getBalance(user))); } // Add the player as a team member of the new island getIslands().setJoinTeam(teamIsland, playerUUID); diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamKickCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamKickCommand.java index 416f68a30..0a6dd1a6e 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamKickCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamKickCommand.java @@ -73,7 +73,7 @@ public class IslandTeamKickCommand extends ConfirmableCommand { user.getPlayer().getInventory().clear(); } if (getSettings().isUseEconomy() && getIWM().isOnLeaveResetMoney(getWorld())) { - getPlugin().getVault().ifPresent(vault -> vault.getEconomy().withdrawPlayer(target.getPlayer(), vault.getEconomy().getBalance(target.getPlayer()))); + getPlugin().getVault().ifPresent(vault -> vault.withdraw(target, vault.getBalance(target))); } user.sendMessage("general.success"); diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamLeaveCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamLeaveCommand.java index 14ba8c33a..0e29b08cb 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamLeaveCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamLeaveCommand.java @@ -54,7 +54,7 @@ public class IslandTeamLeaveCommand extends ConfirmableCommand { user.getPlayer().getInventory().clear(); } if (getSettings().isUseEconomy() && getIWM().isOnLeaveResetMoney(getWorld())) { - getPlugin().getVault().ifPresent(vault -> vault.getEconomy().withdrawPlayer(user.getPlayer(), vault.getEconomy().getBalance(user.getPlayer()))); + getPlugin().getVault().ifPresent(vault -> vault.withdraw(user, vault.getBalance(user))); } user.sendMessage("general.success"); } diff --git a/src/main/java/world/bentobox/bentobox/hooks/VaultHook.java b/src/main/java/world/bentobox/bentobox/hooks/VaultHook.java index 249ccd724..0c3eb3459 100644 --- a/src/main/java/world/bentobox/bentobox/hooks/VaultHook.java +++ b/src/main/java/world/bentobox/bentobox/hooks/VaultHook.java @@ -1,9 +1,11 @@ package world.bentobox.bentobox.hooks; import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.EconomyResponse; import org.bukkit.Bukkit; import org.bukkit.plugin.RegisteredServiceProvider; import world.bentobox.bentobox.api.hooks.Hook; +import world.bentobox.bentobox.api.user.User; /** * @author Poslovitch @@ -34,4 +36,64 @@ public class VaultHook extends Hook { public Economy getEconomy() { return economy; } + + // ------ CONVENIENCE METHODS ------ + + /** + * Gets balance of this User. + * If this User is not a Player (or OfflinePlayer), it will always return {@code 0.0D}. + * + * @param user the User to get the balance from. + * @return the balance of this User. + */ + public double getBalance(User user) { + return (user.isPlayer()) ? economy.getBalance(user.getPlayer()) : 0.0D; + } + + /** + * Withdraws an amount from this User. + * @param user the User to withdraw from. Must be a Player or an OfflinePlayer. + * @param amount the amount to withdraw. Must be positive. + * @return the EconomyResponse of this withdrawal. + */ + public EconomyResponse withdraw(User user, double amount) { + if (!user.isPlayer()) { + throw new IllegalArgumentException("User must be a Player or an OfflinePlayer"); + } + if (amount < 0.0D) { + throw new IllegalArgumentException("Amount must be positive."); + } + return economy.withdrawPlayer(user.getPlayer(), amount); + } + + /** + * Deposits an amount to this User. + * @param user the User to deposit to. Must be a Player or an OfflinePlayer. + * @param amount the amount to deposit. Must be positive. + * @return the EconomyResponse of this deposit. + */ + public EconomyResponse deposit(User user, double amount) { + if (!user.isPlayer()) { + throw new IllegalArgumentException("User must be a Player or an OfflinePlayer"); + } + if (amount < 0.0D) { + throw new IllegalArgumentException("Amount must be positive."); + } + return economy.depositPlayer(user.getPlayer(), amount); + } + + /** + * Checks if this User has the amount. + * If this User is not a Player (or OfflinePlayer), it will always return {@code false}. + * + * @param user the User to check. + * @param amount the amount to check. Must be positive. + * @return whether the User has the amount or not. + */ + public boolean has(User user, double amount) { + if (amount < 0.0D) { + throw new IllegalArgumentException("Amount must be positive."); + } + return user.isPlayer() && economy.has(user.getPlayer(), amount); + } } diff --git a/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java b/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java index a7197cb7e..9a95fdcbc 100644 --- a/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java +++ b/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java @@ -568,7 +568,7 @@ public class IslandsManager { user.getPlayer().getInventory().clear(); } if (plugin.getSettings().isUseEconomy() && plugin.getIWM().isOnJoinResetMoney(world)) { - plugin.getVault().ifPresent(vault -> vault.getEconomy().withdrawPlayer(user.getPlayer(), vault.getEconomy().getBalance(user.getPlayer()))); + plugin.getVault().ifPresent(vault -> vault.withdraw(user, vault.getBalance(user))); } } }