use of com.palmergames.bukkit.towny.object.Translator in project Towny by TownyAdvanced.
the class TownyCommand method getTownyPrices.
/**
* Returns prices for town's taxes/upkeep.
* @param town - The town being checked.
* @return - Prices screen for a town.
*/
public List<String> getTownyPrices(Town town, Locale locale) {
List<String> output = new ArrayList<>();
final Translator translator = Translator.locale(locale);
Nation nation = null;
if (town != null)
if (town.hasNation())
nation = town.getNationOrNull();
output.add(ChatTools.formatTitle(translator.of("towny_prices_title")));
output.add(translator.of("towny_prices_town_nation", getMoney(TownySettings.getNewTownPrice()), getMoney(TownySettings.getNewNationPrice())));
output.add(translator.of("towny_prices_reclaim", getMoney(TownySettings.getEcoPriceReclaimTown())));
if (town != null) {
output.add(translator.of("towny_prices_upkeep", getMoney(TownySettings.getTownUpkeepCost(town)), getMoney(TownySettings.getNationUpkeepCost(nation))));
output.add(translator.of("towny_prices_upkeep_based_on", (TownySettings.isUpkeepByPlot() ? translator.of("towny_prices_upkeep_num_plots") : translator.of("towny_prices_upkeep_town_level"))));
String upkeepformula;
if (TownySettings.isNationUpkeepPerPlot())
upkeepformula = translator.of("towny_prices_upkeep_num_plots");
else if (TownySettings.isNationUpkeepPerTown())
upkeepformula = translator.of("towny_prices_upkeep_num_towns");
else
upkeepformula = translator.of("towny_prices_upkeep_nation_level");
output.add(Translation.of("towny_prices_nation_upkeep_based_on", upkeepformula));
if (town.isOverClaimed() && TownySettings.getUpkeepPenalty() > 0)
output.add(translator.of("towny_prices_overclaimed_upkeep", getMoney(TownySettings.getTownPenaltyUpkeepCost(town))));
if (TownySettings.getUpkeepPenalty() > 0)
output.add(translator.of("towny_prices_overclaimed_based_on", (TownySettings.isUpkeepPenaltyByPlot() ? translator.of("towny_prices_overclaimed_num_plots") : translator.of("towny_prices_overclaimed_flat_cost")), TownySettings.getUpkeepPenalty()));
output.add(translator.of("towny_prices_town_merge", getMoney(TownySettings.getBaseCostForTownMerge()), getMoney(town.getTownBlockCost() / 2)));
output.add(translator.of("towny_prices_claiming_townblock", getMoney(town.getTownBlockCost()) + (Double.valueOf(TownySettings.getClaimPriceIncreaseValue()).equals(1.0) ? "" : translator.of("towny_prices_claiming_townblock_increase", new DecimalFormat("##.##%").format(TownySettings.getClaimPriceIncreaseValue() - 1)))));
output.add(translator.of("towny_prices_claiming_outposts", getMoney(TownySettings.getOutpostCost())));
}
if (town == null)
output.add(translator.of("towny_prices_upkeep", getMoney(TownySettings.getTownUpkeep()), getMoney(TownySettings.getNationUpkeep())));
if (town != null) {
output.add(translator.of("towny_prices_townname", town.getFormattedName()));
output.add(translator.of("towny_prices_price_plot", getMoney(town.getPlotPrice()), getMoney(TownySettings.getOutpostCost())));
output.add(translator.of("towny_prices_price_shop", getMoney(town.getCommercialPlotPrice()), getMoney(town.getEmbassyPlotPrice())));
output.add(translator.of("towny_prices_taxes_plot", (town.isTaxPercentage() ? town.getTaxes() + "%" : getMoney(town.getTaxes())), getMoney(town.getPlotTax())));
output.add(translator.of("towny_prices_taxes_shop", getMoney(town.getCommercialPlotTax()), getMoney(town.getEmbassyPlotTax())));
output.add(translator.of("towny_prices_town_neutral_tax", getMoney(TownySettings.getTownNeutralityCost())));
output.add(translator.of("towny_prices_plots"));
List<TownBlockType> townBlockTypes = new ArrayList<>(TownBlockTypeHandler.getTypes().values());
for (int i = 0; i < townBlockTypes.size(); i++) {
if (i == townBlockTypes.size() - 1)
output.add(translator.of("towny_prices_type_single", townBlockTypes.get(i).getFormattedName(), getMoney(townBlockTypes.get(i).getCost())));
else {
output.add(translator.of("towny_prices_type_double", townBlockTypes.get(i).getFormattedName(), getMoney(townBlockTypes.get(i).getCost()), townBlockTypes.get(i + 1).getFormattedName(), getMoney(townBlockTypes.get(i + 1).getCost())));
i++;
}
}
if (nation != null) {
output.add(translator.of("towny_prices_nationname", nation.getFormattedName()));
output.add(translator.of("towny_prices_nation_tax", nation.getTaxes(), getMoney(TownySettings.getNationNeutralityCost())));
}
}
return output;
}
use of com.palmergames.bukkit.towny.object.Translator in project SiegeWar by TownyAdvanced.
the class SiegeWarStatusScreenListener method onNationStatusScreen.
/*
* SiegeWar will add lines to Nation which have a siege
*/
@EventHandler
public void onNationStatusScreen(NationStatusScreenEvent event) {
if (SiegeWarSettings.getWarSiegeEnabled()) {
final Translator translator = Translator.locale(Translation.getLocale(event.getCommandSender()));
Nation nation = event.getNation();
List<String> out = new ArrayList<>();
// Occupied Home Towns[3]: Town1, Town2, Town3
List<Town> occupiedHomeTowns = TownOccupationController.getOccupiedHomeTowns(nation);
if (occupiedHomeTowns.size() > 0) {
TextComponent comp = Component.newline().append(Component.text(translator.of("status_nation_occupied_home_towns", occupiedHomeTowns.size()) + getFormattedTownList(occupiedHomeTowns)).clickEvent(ClickEvent.runCommand("/nation siegewar occupiedhometowns " + nation.getName())).hoverEvent(HoverEvent.showText(Component.text(translator.of("status_hover_click_for_more")))));
event.getStatusScreen().addComponentOf("siegeWarNationOccupiedHomeTowns", comp);
}
// Occupied Foreign Towns[3]: Town4, Town5, Town6
List<Town> occupiedForeignTowns = TownOccupationController.getOccupiedForeignTowns(nation);
if (occupiedForeignTowns.size() > 0) {
TextComponent comp = Component.newline().append(Component.text(translator.of("status_nation_occupied_foreign_towns", occupiedForeignTowns.size()) + getFormattedTownList(occupiedForeignTowns)).clickEvent(ClickEvent.runCommand("/nation siegewar occupiedforeigntowns " + nation.getName())).hoverEvent(HoverEvent.showText(Component.text(translator.of("status_hover_click_for_more")))));
event.getStatusScreen().addComponentOf("siegeWarNationOccupiedForeignTowns", comp);
}
// Offensive Sieges [3]: TownA, TownB, TownC
List<Town> siegeAttacks = new ArrayList<>(SiegeController.getActiveOffensiveSieges(nation).values());
if (siegeAttacks.size() > 0)
out.add(translator.of("status_nation_offensive_sieges", siegeAttacks.size()) + getFormattedTownList(siegeAttacks));
// Defensive Sieges [3]: TownX, TownY, TownZ
List<Town> siegeDefences = new ArrayList<>(SiegeController.getActiveDefensiveSieges(nation).values());
if (siegeDefences.size() > 0)
out.add(translator.of("status_nation_defensive_sieges", siegeDefences.size()) + getFormattedTownList(siegeDefences));
if (SiegeWarSettings.getWarSiegeNationStatisticsEnabled()) {
out.add(translator.of("status_nation_town_stats", NationMetaDataController.getTotalTownsGained(nation), NationMetaDataController.getTotalTownsLost(nation)));
out.add(translator.of("status_nation_plunder_stats", NationMetaDataController.getTotalPlunderGained(nation), NationMetaDataController.getTotalPlunderLost(nation)));
}
TextComponent comp = Component.empty();
for (String line : out) comp = comp.append(Component.text(line)).append(Component.newline());
event.getStatusScreen().addComponentOf("siegeWarNation", comp);
}
}
use of com.palmergames.bukkit.towny.object.Translator in project SiegeWar by TownyAdvanced.
the class SiegeWarStatusScreenListener method onTownStatusScreen.
/*
* SiegeWar will add lines to towns which have a siege
*/
@EventHandler
public void onTownStatusScreen(TownStatusScreenEvent event) {
if (SiegeWarSettings.getWarSiegeEnabled()) {
final Translator translator = Translator.locale(Translation.getLocale(event.getCommandSender()));
Town town = event.getTown();
// Occupying Nation: Empire of the Fluffy Bunnies
if (SiegeWarSettings.getWarSiegeInvadeEnabled() && TownOccupationController.isTownOccupied(town)) {
Nation townOccupier = TownOccupationController.getTownOccupier(town);
event.getStatusScreen().addComponentOf("siegeWar_townOccupier", translator.of("status_town_occupying_nation", townOccupier.getFormattedName()));
}
// Revolt Immunity Timer: 71.8 hours
long immunity = TownMetaDataController.getRevoltImmunityEndTime(town);
if (SiegeWarSettings.getRevoltSiegesEnabled() && immunity == -1l || System.currentTimeMillis() < immunity) {
String time = immunity == -1l ? translator.of("msg_permanent") : TimeMgmt.getFormattedTimeValue(immunity - System.currentTimeMillis());
event.getStatusScreen().addComponentOf("siegeWar_revoltImmunityTimer", translator.of("status_town_revolt_immunity_timer", time));
}
immunity = TownMetaDataController.getSiegeImmunityEndTime(town);
if (SiegeController.hasSiege(town)) {
List<String> out = new ArrayList<>();
Siege siege = SiegeController.getSiege(town);
SiegeStatus siegeStatus = siege.getStatus();
String time = immunity == -1l ? translator.of("msg_permanent") : TimeMgmt.getFormattedTimeValue(immunity - System.currentTimeMillis());
// > Type: Conquest
out.add(translator.of("status_town_siege_type", siege.getSiegeType().getTranslatedName()));
// > Status: In Progress
out.add(translator.of("status_town_siege_status", getStatusTownSiegeSummary(siege, translator)));
// > Attacker: Darkness
out.add(translator.of("status_town_siege_attacker", siege.getAttackerNameForDisplay()));
// > Defender: Light
out.add(translator.of("status_town_siege_defender", siege.getDefenderNameForDisplay()));
switch(siegeStatus) {
case IN_PROGRESS:
// > Balance: 530
String balanceLine = translator.of("status_town_siege_status_siege_balance", siege.getSiegeBalance());
// > Balance: 530 | Pending: +130
int pending = SiegeWarBattleSessionUtil.calculateSiegeBalanceAdjustment(siege);
if (pending != 0)
balanceLine += translator.of("status_town_siege_pending_balance_adjustment", ((pending > 0 ? "+" : "") + pending));
out.add(balanceLine);
if (SiegeWarSettings.isBannerXYZTextEnabled()) {
// > Banner XYZ: {2223,82,9877}
out.add(translator.of("status_town_siege_status_banner_xyz", siege.getFlagLocation().getBlockX(), siege.getFlagLocation().getBlockY(), siege.getFlagLocation().getBlockZ()));
}
// > Victory Timer: 5.3 hours
String victoryTimer = translator.of("status_town_siege_victory_timer", siege.getFormattedHoursUntilScheduledCompletion());
out.add(victoryTimer);
// > War Chest: $12,800
if (TownyEconomyHandler.isActive()) {
String warChest = TownyEconomyHandler.getFormattedBalance(siege.getWarChestAmount());
out.add(translator.of("status_town_siege_status_warchest", warChest));
}
// Battle:
String battle = translator.of("status_town_siege_battle");
out.add(battle);
// > Banner Control: Attackers [4] Killbot401x, NerfeyMcNerferson, WarCriminal80372
if (siege.getBannerControllingSide() == SiegeSide.NOBODY) {
out.add(translator.of("status_town_banner_control_nobody", siege.getBannerControllingSide().getFormattedName().forLocale(event.getCommandSender())));
} else {
String[] bannerControllingResidents = TownyFormatter.getFormattedNames(siege.getBannerControllingResidents().toArray(new Resident[0]));
if (bannerControllingResidents.length > 34) {
String[] entire = bannerControllingResidents;
bannerControllingResidents = new String[36];
System.arraycopy(entire, 0, bannerControllingResidents, 0, 35);
bannerControllingResidents[35] = translator.of("status_town_reslist_overlength");
}
out.addAll(ChatTools.listArr(bannerControllingResidents, translator.of("status_town_banner_control", siege.getBannerControllingSide().getFormattedName().forLocale(event.getCommandSender()), siege.getBannerControllingResidents().size())));
}
// > Points: +90 / -220
out.add(translator.of("status_town_siege_battle_points", siege.getFormattedAttackerBattlePoints(), siege.getFormattedDefenderBattlePoints()));
// > Time Remaining: 22 minutes
out.add(translator.of("status_town_siege_battle_time_remaining", siege.getFormattedBattleTimeRemaining(translator)));
// > Breach Points: 15
if (SiegeWarSettings.isWallBreachingEnabled() && SiegeWarSettings.getWallBreachBonusBattlePoints() != 0)
out.add(translator.of("status_town_siege_breach_points", siege.getFormattedBreachPoints()));
break;
case ATTACKER_WIN:
case DEFENDER_SURRENDER:
case DEFENDER_WIN:
case ATTACKER_ABANDON:
String invadedPlunderedStatus = getInvadedPlunderedStatusLine(siege, translator);
if (!invadedPlunderedStatus.isEmpty())
out.add(invadedPlunderedStatus);
String siegeImmunityTimer = translator.of("status_town_siege_immunity_timer", time);
out.add(siegeImmunityTimer);
break;
case PENDING_DEFENDER_SURRENDER:
case PENDING_ATTACKER_ABANDON:
case UNKNOWN:
break;
}
TextComponent hoverText = Component.empty();
for (String line : out) {
hoverText = hoverText.append(Component.text(line).append(Component.newline()));
}
event.getStatusScreen().addComponentOf("siegeWar_siegeHover", hoverFormat(translator.of("status_sieged")), HoverEvent.showText(hoverText));
} else {
if (!SiegeController.hasActiveSiege(town) && (System.currentTimeMillis() < immunity) || immunity == -1l) {
// Siege:
// > Immunity Timer: 40.8 hours
String time = immunity == -1l ? Translation.of("msg_permanent") : TimeMgmt.getFormattedTimeValue(immunity - System.currentTimeMillis());
TextComponent immunityComp = Component.newline().append(Component.text(Translation.of("status_town_siege"))).append(Component.newline()).append(Component.text(Translation.of("status_town_siege_immunity_timer", time)));
event.getStatusScreen().addComponentOf("siegeWar_siegeImmunity", immunityComp);
}
}
}
}
use of com.palmergames.bukkit.towny.object.Translator in project SiegeWar by TownyAdvanced.
the class PlaceBlock method evaluatePlaceStandingBanner.
/**
* Evaluates placing a standing banner
* @throws TownyException if the banner will not be allowed.
*/
private static boolean evaluatePlaceStandingBanner(Player player, Block block) throws TownyException {
final Translator translator = Translator.locale(Translation.getLocale(player));
// Ensure the the banner is placed in wilderness
if (!TownyAPI.getInstance().isWilderness(block))
return false;
// Ensure the player has a town
Resident resident = TownyUniverse.getInstance().getResident(player.getUniqueId());
if (resident == null || !resident.hasTown())
throw new TownyException(translator.of("msg_err_siege_war_action_not_a_town_member"));
Town residentsTown = resident.getTown();
// Get resident's nation (if any, for convenience)
Nation residentsNation = null;
if (residentsTown.hasNation())
residentsNation = residentsTown.getNation();
// Ensure there is at least 1 adjacent town
List<TownBlock> adjacentCardinalTownBlocks = SiegeWarBlockUtil.getCardinalAdjacentTownBlocks(block);
List<TownBlock> adjacentNonCardinalTownBlocks = SiegeWarBlockUtil.getNonCardinalAdjacentTownBlocks(block);
if (adjacentCardinalTownBlocks.size() == 0 && adjacentNonCardinalTownBlocks.size() == 0)
return false;
// Ensure there is just one cardinal town block
if (adjacentCardinalTownBlocks.size() > 1)
throw new TownyException(translator.of("msg_err_siege_war_too_many_adjacent_towns"));
// Get 1st nearby townblock
TownBlock townBlock;
if (adjacentCardinalTownBlocks.size() > 0) {
townBlock = adjacentCardinalTownBlocks.get(0);
} else {
townBlock = adjacentNonCardinalTownBlocks.get(0);
}
if (isWhiteBanner(block)) {
evaluatePlaceWhiteBannerNearTown(player, residentsTown, residentsNation, townBlock.getTownOrNull());
} else {
evaluatePlaceColouredBannerNearTown(player, residentsTown, residentsNation, townBlock, townBlock.getTownOrNull(), block);
}
return true;
}
use of com.palmergames.bukkit.towny.object.Translator in project SiegeWar by TownyAdvanced.
the class PlaceBlock method evaluatePlaceChest.
/**
* Evaluates placing a chest.
* Determines if the event will be considered as a plunder request.
* @throws TownyException when the chest is not allowed to be placed.
*/
private static void evaluatePlaceChest(Player player, Block block) throws TownyException {
if (!SiegeWarSettings.getWarSiegePlunderEnabled() || !TownyAPI.getInstance().isWilderness(block))
return;
final Translator translator = Translator.locale(Translation.getLocale(player));
if (!TownyEconomyHandler.isActive())
throw new TownyException(translator.of("msg_err_siege_war_cannot_plunder_without_economy"));
// If there are no sieges nearby, do normal block placement
Set<Siege> adjacentSieges = SiegeWarBlockUtil.getAllAdjacentSieges(block);
if (adjacentSieges.size() == 0)
return;
// Ensure there is only one adjacent siege
if (adjacentSieges.size() > 1)
throw new TownyException(translator.of("msg_err_siege_war_too_many_adjacent_towns"));
// Attempt plunder.
PlunderTown.processPlunderTownRequest(player, adjacentSieges.iterator().next().getTown());
}
Aggregations