From 6c08e3af2511c124b7c0c7ffeb8204af40ad7cd7 Mon Sep 17 00:00:00 2001 From: LlmDl Date: Mon, 4 Nov 2024 10:09:21 -0600 Subject: [PATCH 1/2] Add messages to residents when they pay town and plot taxes. Closes #7657. --- .../bukkit/towny/tasks/DailyTimerTask.java | 43 +++++++++++++++++++ Towny/src/main/resources/lang/en-US.yml | 2 + 2 files changed, 45 insertions(+) diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/DailyTimerTask.java b/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/DailyTimerTask.java index 80cad81086e..fd2f43980d5 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/DailyTimerTask.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/DailyTimerTask.java @@ -26,6 +26,8 @@ import java.util.ArrayList; import java.util.List; import java.util.ListIterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.bukkit.entity.Player; @@ -39,6 +41,7 @@ public class DailyTimerTask extends TownyTimerTask { private final List bankruptedTowns = new ArrayList<>(); private final List removedTowns = new ArrayList<>(); private final List removedNations = new ArrayList<>(); + private final Map> residentPlotTaxMap = new ConcurrentHashMap<>(); public DailyTimerTask(Towny plugin) { @@ -61,6 +64,7 @@ public void doNewDay() { bankruptedTowns.clear(); removedTowns.clear(); removedNations.clear(); + residentPlotTaxMap.clear(); BukkitTools.fireEvent(new PreNewDayEvent()); // Pre-New Day Event @@ -388,6 +392,9 @@ public void collectTownTaxes() { collectTownTaxes(town); } + + if (!residentPlotTaxMap.isEmpty()) + messageResidentsAboutPlotTaxesPaid(); } /** @@ -485,6 +492,8 @@ private boolean collectTownTaxFromResident(double tax, Resident resident, Town t return true; resident.getAccount().payTo(tax, town, String.format("Town Tax (Percentage) paid by %s.", resident.getName())); + if (resident.isOnline()) + TownyMessaging.sendMsg(resident, Translatable.of("msg_you_paid_town_tax", prettyMoney(tax))); taxCollected += tax; return true; } @@ -500,6 +509,8 @@ private boolean collectTownTaxFromResident(double tax, Resident resident, Town t if (resident.getAccount().canPayFromHoldings(tax)) { resident.getAccount().payTo(tax, town, String.format("Town tax (FlatRate) paid by %s.", resident.getName())); + if (resident.isOnline()) + TownyMessaging.sendMsg(resident, Translatable.of("msg_you_paid_town_tax", prettyMoney(tax))); taxCollected += tax; return true; } @@ -579,6 +590,10 @@ private void collecTownPlotTax(Town town) { private boolean collectPlotTaxFromResident(double tax, Resident resident, Town town, TownBlock townBlock) { if (resident.getAccount().canPayFromHoldings(tax)) { resident.getAccount().payTo(tax, town, String.format("Plot Tax (%s) paid by %s", townBlock.getTypeName(), resident.getName())); + + if (resident.isOnline()) + addPaymentToPlotTaxMap(resident, town, tax); + taxCollected += tax; return true; } @@ -600,6 +615,34 @@ private boolean collectPlotTaxFromResident(double tax, Resident resident, Town t return false; } + private void addPaymentToPlotTaxMap(Resident resident, Town town, double tax) { + if (!residentPlotTaxMap.containsKey(resident)) { + Map townMap = new ConcurrentHashMap<>(); + townMap.put(town, tax); + residentPlotTaxMap.put(resident, townMap); + return; + } + + Map townMap = residentPlotTaxMap.get(resident); + double amount = townMap.containsKey(town) ? townMap.get(town) + tax : tax; + townMap.put(town, amount); + residentPlotTaxMap.put(resident, townMap); + } + + private void messageResidentsAboutPlotTaxesPaid() { + for (Resident resident : residentPlotTaxMap.keySet()) { + if (!resident.isOnline()) + continue; + Map townMap = residentPlotTaxMap.get(resident); + if (townMap.isEmpty()) + continue; + for (Town townKey : townMap.keySet()) { + double tax = townMap.get(townKey); + TownyMessaging.sendMsg(resident, Translatable.of("msg_you_paid_plottax_to_town", prettyMoney(tax), townKey)); + } + } + } + private void payPlotTaxToResidents(double tax, Resident resident, Town town, String typeName) { if (!town.getAccount().canPayFromHoldings(tax)) return; diff --git a/Towny/src/main/resources/lang/en-US.yml b/Towny/src/main/resources/lang/en-US.yml index fa03a59e384..18fec2c0ed8 100644 --- a/Towny/src/main/resources/lang/en-US.yml +++ b/Towny/src/main/resources/lang/en-US.yml @@ -515,6 +515,8 @@ msg_couldnt_pay_taxes: '&b%s couldn''t pay taxes and was kicked from the %s.' msg_couldnt_pay_plot_taxes: '&b%s couldn''t pay taxes and lost ownership of a plot.' msg_you_couldnt_pay_plot_tax: '&bYou couldn''t pay the plot tax of %s and lost ownership of the plot at %s.' msg_you_couldnt_pay_town_tax: '&bYou couldn''t pay the town tax of %s and have been removed from %s.' +msg_you_paid_town_tax: '&bYou paid your town a tax of %s.' +msg_you_paid_plottax_to_town: '&bYou paid plot taxes totalling %s to the town of %s.' msg_payed_town_tax: '&bPayed town tax of ' msg_payed_plot_cost: '&bPayed %s for %s plots in %s' msg_payed_resident_tax: '&bPayed resident tax of ' From 7dae0236efca6307da874693e02c4e85924e09b8 Mon Sep 17 00:00:00 2001 From: LlmDl Date: Tue, 5 Nov 2024 06:51:38 -0600 Subject: [PATCH 2/2] Removed unused lang strings. --- Towny/src/main/resources/lang/en-US.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/Towny/src/main/resources/lang/en-US.yml b/Towny/src/main/resources/lang/en-US.yml index 18fec2c0ed8..9b56fa8cd57 100644 --- a/Towny/src/main/resources/lang/en-US.yml +++ b/Towny/src/main/resources/lang/en-US.yml @@ -517,9 +517,6 @@ msg_you_couldnt_pay_plot_tax: '&bYou couldn''t pay the plot tax of %s and lost o msg_you_couldnt_pay_town_tax: '&bYou couldn''t pay the town tax of %s and have been removed from %s.' msg_you_paid_town_tax: '&bYou paid your town a tax of %s.' msg_you_paid_plottax_to_town: '&bYou paid plot taxes totalling %s to the town of %s.' -msg_payed_town_tax: '&bPayed town tax of ' -msg_payed_plot_cost: '&bPayed %s for %s plots in %s' -msg_payed_resident_tax: '&bPayed resident tax of ' msg_bankrupt_town: ' couldn''t afford to remain a town.' msg_bankrupt_nation: ' couldn''t afford to remain a nation.' msg_nation_not_peaceful: '&bNation couldn''t afford it''s peaceful state.'