Adds the missing taxAccounts option

This commit is contained in:
2023-04-19 19:00:02 +02:00
parent 2074904aef
commit 6737a4f789
7 changed files with 68 additions and 22 deletions

View File

@@ -50,7 +50,7 @@ file; see the LICENSE file for more information.
This plugin should be fully compatible all known versions StarGate forks, with the following exceptions:<br> This plugin should be fully compatible all known versions StarGate forks, with the following exceptions:<br>
- Any version from outside of the bukkit ecosystem - Any version from outside the bukkit ecosystem
- Any version of SGR (version numbers 1.0.0.0+) - Any version of SGR (version numbers 1.0.0.0+)
- Any configurations with outdated material names (i.e. numIDs) - Any configurations with outdated material names (i.e. numIDs)
@@ -173,12 +173,12 @@ Note that colour characters (if enabled) are not counted towards the character l
- You can specify (and create) your own network on the third line of the sign when making a new gate. - You can specify (and create) your own network on the third line of the sign when making a new gate.
- Gates on one network will not see gates on the second network, and vice versa. - Gates on one network will not see gates on the second network, and vice versa.
- Gates on different worlds, but in the same network, will see each other. - Gates on different worlds, but in the same network, will see each other.
- Notwithstanding the above, the network for bUngee gates will always be name of its destination /server - Notwithstanding the above, the network for BungeeCord gates will always be the name of its destination /server
#### Fixed gates: #### Fixed gates:
- Fixed gates go to only one set destination. - Fixed gates go to only one set destination.
- Fixed gates can be linked to other fixed gates, or normal gates. A normal gate cannot open a portal to a fixed gate - Fixed gates can be linked to other fixed gates, or normal gates. A normal gate cannot open a portal to a fixed gate,
however. however.
- To create a fixed gate, specify a destination on the second line of the stargate sign. - To create a fixed gate, specify a destination on the second line of the stargate sign.
- Set the 4th line of the stargate sign to `A` to enable an always-open fixed gate. - Set the 4th line of the stargate sign to `A` to enable an always-open fixed gate.
@@ -204,8 +204,8 @@ Note that colour characters (if enabled) are not counted towards the character l
## Using a gate: ## Using a gate:
- Right click the sign to choose a destination (not needed for Fixed gates, undefined gates). - Right-click the sign to choose a destination (not needed for Fixed gates, undefined gates).
- Right click the activator to open up a portal. - Right-click the activator to open up a portal.
- Step through. - Step through.
## Custom Gate Layouts ## Custom Gate Layouts
@@ -349,7 +349,7 @@ Other special characters include the following:
Gates may be constructed underwater in much the same manner as they may be constructed above the surface.<br> Gates may be constructed underwater in much the same manner as they may be constructed above the surface.<br>
There are, however, a few considerations for underwater portals: There are, however, a few considerations for underwater portals:
```properties ```
portal-open=KELP_PLANT portal-open=KELP_PLANT
portal-closed=WATER portal-closed=WATER
button=BRAIN_CORAL_WALL_FAN button=BRAIN_CORAL_WALL_FAN
@@ -379,7 +379,7 @@ as `OBSIDIAN`); they may also use [tags](https://hub.spigotmc.org/javadocs/spigo
as `#WOOL`).<br> as `#WOOL`).<br>
Note that all tags must be prefaced with a hashtag (`#`), as in `#WOOL`. Note that all tags must be prefaced with a hashtag (`#`), as in `#WOOL`.
```properties ```
portal-open=WATER portal-open=WATER
portal-closed=AIR portal-closed=AIR
X=#WOOL X=#WOOL
@@ -674,9 +674,9 @@ found [here](https://github.com/stargate-rewritten/Stargate-Bukkit/blob/legacy/R
#### \[Version 0.9.0.5] EpicKnarvik97 fork #### \[Version 0.9.0.5] EpicKnarvik97 fork
- Adds configuration toggles for: - Adds configuration toggles for:
- Whether or not living non-player entities may be teleported. - Whether living non-player entities may be teleported.
- Whether or not vehicles may teleport without a player riding them. - Whether vehicles may teleport without a player riding them.
- Whether or not vehicles may teleport living non-player entities if accompanied by a player rider. - Whether vehicles may teleport living non-player entities if accompanied by a player rider.
- Fixes a bug that could result in unauthorised teleportation. - Fixes a bug that could result in unauthorised teleportation.
- Fixes a bug that, in certain circumstances, could result in chat spam. - Fixes a bug that, in certain circumstances, could result in chat spam.

View File

@@ -150,6 +150,11 @@ public enum ConfigOption {
CHARGE_FREE_DESTINATION("economy.chargeFreeDestination", CHARGE_FREE_DESTINATION("economy.chargeFreeDestination",
"Whether to require payment if the destination is free, but the entrance stargate is not", true), "Whether to require payment if the destination is free, but the entrance stargate is not", true),
/**
* The account to transfer all paid fees to
*/
TAX_ACCOUNT("economy.taxAccount", "The UUID of the account all fees are paid to (except for money to the Stargate owner)", ""),
/** /**
* Whether to mark free gates with a different color * Whether to mark free gates with a different color
*/ */

View File

@@ -132,6 +132,15 @@ public final class EconomyConfig {
return (Integer) configOptions.get(ConfigOption.DESTROY_COST); return (Integer) configOptions.get(ConfigOption.DESTROY_COST);
} }
/**
* Gets the account all taxes are paid to
*
* @return <p>The account all taxes are paid to</p>
*/
public String getTaxAccount() {
return (String) configOptions.get(ConfigOption.TAX_ACCOUNT);
}
/** /**
* Checks whether the given player can afford the given fee * Checks whether the given player can afford the given fee
* *

View File

@@ -364,7 +364,8 @@ public final class StargateConfig {
FileConfiguration newConfig = Stargate.getInstance().getConfig(); FileConfiguration newConfig = Stargate.getInstance().getConfig();
boolean isMigrating = false; 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); migrateConfig(newConfig);
isMigrating = true; isMigrating = true;
} }

View File

@@ -7,6 +7,7 @@ import net.knarcraft.stargate.portal.Portal;
import net.knarcraft.stargate.portal.property.PortalOwner; import net.knarcraft.stargate.portal.property.PortalOwner;
import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.UUID; import java.util.UUID;
@@ -186,6 +187,28 @@ public final class EconomyHelper {
return true; return true;
} }
/**
* Transfers the given fees to the tax account
*
* @param economy <p>The economy to use</p>
* @param cost <p>The cost to transfer</p>
*/
@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 * Charges the player for an action, if required
* *
@@ -198,7 +221,14 @@ public final class EconomyHelper {
return true; return true;
} }
//Charge player //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;
} }
/** /**

View File

@@ -46,5 +46,6 @@ portal-open=
portal-closed= portal-closed=
cost-type= cost-type=
cost-to-activate= cost-to-activate=
taxaccount=taxAccount taxAccount=economy.taxAccount
taxaccount=economy.taxAccount
usevault= usevault=