Search in sources :

Example 11 with Translator

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;
}
Also used : Nation(com.palmergames.bukkit.towny.object.Nation) TownBlockType(com.palmergames.bukkit.towny.object.TownBlockType) Translator(com.palmergames.bukkit.towny.object.Translator) DecimalFormat(java.text.DecimalFormat) ArrayList(java.util.ArrayList)

Example 12 with Translator

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);
    }
}
Also used : Nation(com.palmergames.bukkit.towny.object.Nation) TextComponent(com.palmergames.adventure.text.TextComponent) Translator(com.palmergames.bukkit.towny.object.Translator) Town(com.palmergames.bukkit.towny.object.Town) ArrayList(java.util.ArrayList) EventHandler(org.bukkit.event.EventHandler)

Example 13 with Translator

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);
            }
        }
    }
}
Also used : Nation(com.palmergames.bukkit.towny.object.Nation) TextComponent(com.palmergames.adventure.text.TextComponent) ArrayList(java.util.ArrayList) Siege(com.gmail.goosius.siegewar.objects.Siege) Translator(com.palmergames.bukkit.towny.object.Translator) Town(com.palmergames.bukkit.towny.object.Town) SiegeStatus(com.gmail.goosius.siegewar.enums.SiegeStatus) Resident(com.palmergames.bukkit.towny.object.Resident) EventHandler(org.bukkit.event.EventHandler)

Example 14 with Translator

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;
}
Also used : Nation(com.palmergames.bukkit.towny.object.Nation) Translator(com.palmergames.bukkit.towny.object.Translator) Town(com.palmergames.bukkit.towny.object.Town) Resident(com.palmergames.bukkit.towny.object.Resident) TownBlock(com.palmergames.bukkit.towny.object.TownBlock) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 15 with Translator

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());
}
Also used : Translator(com.palmergames.bukkit.towny.object.Translator) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) Siege(com.gmail.goosius.siegewar.objects.Siege)

Aggregations

Translator (com.palmergames.bukkit.towny.object.Translator)21 TownyException (com.palmergames.bukkit.towny.exceptions.TownyException)12 Nation (com.palmergames.bukkit.towny.object.Nation)9 Siege (com.gmail.goosius.siegewar.objects.Siege)6 Resident (com.palmergames.bukkit.towny.object.Resident)6 Town (com.palmergames.bukkit.towny.object.Town)6 Coord (com.palmergames.bukkit.towny.object.Coord)5 PreSiegeCampEvent (com.gmail.goosius.siegewar.events.PreSiegeCampEvent)4 SiegeCamp (com.gmail.goosius.siegewar.objects.SiegeCamp)4 ArrayList (java.util.ArrayList)4 EventHandler (org.bukkit.event.EventHandler)3 TextComponent (com.palmergames.adventure.text.TextComponent)2 TownyUniverse (com.palmergames.bukkit.towny.TownyUniverse)2 TextComponent (net.md_5.bungee.api.chat.TextComponent)2 Scoreboard (org.bukkit.scoreboard.Scoreboard)2 SiegeStatus (com.gmail.goosius.siegewar.enums.SiegeStatus)1 TownBlock (com.palmergames.bukkit.towny.object.TownBlock)1 TownBlockType (com.palmergames.bukkit.towny.object.TownBlockType)1 DecimalFormat (java.text.DecimalFormat)1 Material (org.bukkit.Material)1