The account all taxes are paid to
+ */ + public String getTaxAccount() { + return (String) configOptions.get(ConfigOption.TAX_ACCOUNT); + } + /** * Checks whether the given player can afford the given fee * diff --git a/src/main/java/net/knarcraft/stargate/config/StargateConfig.java b/src/main/java/net/knarcraft/stargate/config/StargateConfig.java index f03b852..99b0096 100644 --- a/src/main/java/net/knarcraft/stargate/config/StargateConfig.java +++ b/src/main/java/net/knarcraft/stargate/config/StargateConfig.java @@ -364,7 +364,8 @@ public final class StargateConfig { FileConfiguration newConfig = Stargate.getInstance().getConfig(); boolean isMigrating = false; - if (newConfig.getString("lang") != null || newConfig.getString("economy.freeGatesGreen") != null) { + if (newConfig.getString("lang") != null || newConfig.getString("economy.freeGatesGreen") != null || + newConfig.getString("economy.taxAccount") == null) { migrateConfig(newConfig); isMigrating = true; } diff --git a/src/main/java/net/knarcraft/stargate/utility/EconomyHelper.java b/src/main/java/net/knarcraft/stargate/utility/EconomyHelper.java index 6c58e52..4c725ae 100644 --- a/src/main/java/net/knarcraft/stargate/utility/EconomyHelper.java +++ b/src/main/java/net/knarcraft/stargate/utility/EconomyHelper.java @@ -7,6 +7,7 @@ import net.knarcraft.stargate.portal.Portal; import net.knarcraft.stargate.portal.property.PortalOwner; import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import java.util.UUID; @@ -186,6 +187,28 @@ public final class EconomyHelper { return true; } + /** + * Transfers the given fees to the tax account + * + * @param economyThe economy to use
+ * @param costThe cost to transfer
+ */ + @SuppressWarnings("deprecation") + private static void transferFees(Economy economy, int cost) { + String accountName = Stargate.getEconomyConfig().getTaxAccount(); + if (accountName == null || accountName.isEmpty()) { + return; + } + + try { + UUID accountId = UUID.fromString(accountName); + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(accountId); + economy.depositPlayer(offlinePlayer, cost); + } catch (IllegalArgumentException exception) { + economy.depositPlayer(accountName, cost); + } + } + /** * Charges the player for an action, if required * @@ -198,7 +221,14 @@ public final class EconomyHelper { return true; } //Charge player - return chargePlayer(player, cost); + boolean charged = chargePlayer(player, cost); + + // Transfer the charged amount to the tax account + if (charged) { + transferFees(Stargate.getEconomyConfig().getEconomy(), cost); + } + + return charged; } /** diff --git a/src/main/resources/config-migrations.txt b/src/main/resources/config-migrations.txt index cad71cb..b898212 100644 --- a/src/main/resources/config-migrations.txt +++ b/src/main/resources/config-migrations.txt @@ -46,5 +46,6 @@ portal-open= portal-closed= cost-type= cost-to-activate= -taxaccount=taxAccount +taxAccount=economy.taxAccount +taxaccount=economy.taxAccount usevault= \ No newline at end of file