Search in sources :

Example 26 with Town

use of com.palmergames.bukkit.towny.object.Town in project Towny by ElgarL.

the class TownyFormatter method getTaxStatus.

/**
	 * Returns the tax info this resident will have to pay at the next new day.
	 * 
	 * @param resident
	 * @return tax status message
	 */
public static List<String> getTaxStatus(Resident resident) {
    List<String> out = new ArrayList<String>();
    Town town = null;
    double plotTax = 0.0;
    out.add(ChatTools.formatTitle(getFormattedName(resident) + ((BukkitTools.isOnline(resident.getName())) ? Colors.LightGreen + " (Online)" : "")));
    if (resident.hasTown()) {
        try {
            town = resident.getTown();
            out.add(Colors.Green + "Owner of: " + Colors.LightGreen + resident.getTownBlocks().size() + " plots");
            if (TownyPerms.getResidentPerms(resident).containsKey("towny.tax_exempt")) {
                out.add(Colors.Green + "Staff are exempt from paying town taxes.");
            } else {
                if (town.isTaxPercentage()) {
                    out.add(Colors.Green + "Town Tax: " + Colors.LightGreen + (resident.getHoldingBalance() * town.getTaxes() / 100));
                } else {
                    out.add(Colors.Green + "Town Tax: " + Colors.LightGreen + town.getTaxes());
                    if ((resident.getTownBlocks().size() > 0)) {
                        for (TownBlock townBlock : new ArrayList<TownBlock>(resident.getTownBlocks())) {
                            plotTax += townBlock.getType().getTax(townBlock.getTown());
                        }
                        out.add(Colors.Green + "Total Plot Taxes: " + Colors.LightGreen + plotTax);
                    }
                    out.add(Colors.Green + "Total Tax to pay: " + Colors.LightGreen + (town.getTaxes() + plotTax));
                }
            }
        } catch (NotRegisteredException e) {
        // Failed to fetch town
        } catch (EconomyException e) {
        // Economy failed
        }
    }
    return out;
}
Also used : EconomyException(com.palmergames.bukkit.towny.exceptions.EconomyException) NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) Town(com.palmergames.bukkit.towny.object.Town) ArrayList(java.util.ArrayList) TownBlock(com.palmergames.bukkit.towny.object.TownBlock)

Example 27 with Town

use of com.palmergames.bukkit.towny.object.Town in project Towny by ElgarL.

the class NationCommand method nationRank.

public void nationRank(Player player, String[] split) {
    if (split.length == 0) {
        // Help output.
        player.sendMessage(ChatTools.formatTitle("/nation rank"));
        player.sendMessage(ChatTools.formatCommand("", "/nation rank", "add/remove [resident] rank", ""));
    } else {
        Resident resident, target;
        Town town = null;
        Town targetTown = null;
        String rank;
        /*
			 * Does the command have enough arguments?
			 */
        if (split.length < 3) {
            TownyMessaging.sendErrorMsg(player, "Eg: /town rank add/remove [resident] [rank]");
            return;
        }
        try {
            resident = TownyUniverse.getDataSource().getResident(player.getName());
            target = TownyUniverse.getDataSource().getResident(split[1]);
            town = resident.getTown();
            targetTown = target.getTown();
            if (town.getNation() != targetTown.getNation())
                throw new TownyException("This resident is not a member of your Town!");
        } catch (TownyException x) {
            TownyMessaging.sendErrorMsg(player, x.getMessage());
            return;
        }
        rank = split[2].toLowerCase();
        /*
			 * Is this a known rank?
			 */
        if (!TownyPerms.getNationRanks().contains(rank)) {
            TownyMessaging.sendErrorMsg(player, "Unknown rank '" + rank + "'. Permissible ranks are :- " + StringMgmt.join(TownyPerms.getNationRanks(), ",") + ".");
            return;
        }
        /*
			 * Only allow the player to assign ranks if they have the grant perm
			 * for it.
			 */
        if (!TownyUniverse.getPermissionSource().testPermission(player, PermissionNodes.TOWNY_COMMAND_NATION_RANK.getNode(rank))) {
            TownyMessaging.sendErrorMsg(player, "You do not have permission to modify this rank.");
            return;
        }
        if (split[0].equalsIgnoreCase("add")) {
            try {
                if (target.addNationRank(rank)) {
                    TownyMessaging.sendMsg(target, "You have been granted the Nation rank of '" + rank + "'.");
                    TownyMessaging.sendMsg(player, "You have granted the Nation rank of '" + rank + "' to " + target.getName() + ".");
                } else {
                    // Not in a nation or Rank doesn't exist
                    TownyMessaging.sendErrorMsg(player, "That resident isn't a member of a town!");
                    return;
                }
            } catch (AlreadyRegisteredException e) {
                // Must already have this rank
                TownyMessaging.sendMsg(player, target.getName() + " already holds this Nation rank.");
                return;
            }
        } else if (split[0].equalsIgnoreCase("remove")) {
            try {
                if (target.removeNationRank(rank)) {
                    TownyMessaging.sendMsg(target, "You have been demoted from the Nation rank of '" + rank + "'.");
                    TownyMessaging.sendMsg(player, "You have removed the Nation rank of '" + rank + "' from " + target.getName() + ".");
                }
            } catch (NotRegisteredException e) {
                // Must already have this rank
                TownyMessaging.sendMsg(player, target.getName() + " doesn't hold this Nation rank.");
                return;
            }
        } else {
            TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("msg_err_invalid_property"), split[0]));
            return;
        }
        /*
			 * If we got here we have made a change Save the altered resident
			 * data.
			 */
        TownyUniverse.getDataSource().saveResident(target);
    }
}
Also used : NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) Town(com.palmergames.bukkit.towny.object.Town) AlreadyRegisteredException(com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException) Resident(com.palmergames.bukkit.towny.object.Resident) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 28 with Town

use of com.palmergames.bukkit.towny.object.Town in project Towny by ElgarL.

the class NationCommand method nationLeave.

public void nationLeave(Player player) {
    Town town = null;
    Nation nation = null;
    try {
        Resident resident = TownyUniverse.getDataSource().getResident(player.getName());
        town = resident.getTown();
        nation = town.getNation();
        nation.removeTown(town);
        /*
			 * Remove all resident titles before saving the town itself.
			 */
        List<Resident> titleRemove = new ArrayList<Resident>(town.getResidents());
        for (Resident res : titleRemove) {
            if (res.hasTitle() || res.hasSurname()) {
                res.setTitle("");
                res.setSurname("");
                TownyUniverse.getDataSource().saveResident(res);
            }
        }
        TownyUniverse.getDataSource().saveNation(nation);
        TownyUniverse.getDataSource().saveNationList();
        TownyMessaging.sendNationMessage(nation, ChatTools.color(String.format(TownySettings.getLangString("msg_nation_town_left"), town.getName())));
        TownyMessaging.sendTownMessage(town, ChatTools.color(String.format(TownySettings.getLangString("msg_town_left_nation"), nation.getName())));
    } catch (TownyException x) {
        TownyMessaging.sendErrorMsg(player, x.getMessage());
        return;
    } catch (EmptyNationException en) {
        TownyUniverse.getDataSource().removeNation(en.getNation());
        TownyUniverse.getDataSource().saveNationList();
        TownyMessaging.sendGlobalMessage(ChatTools.color(String.format(TownySettings.getLangString("msg_del_nation"), en.getNation().getName())));
    } finally {
        TownyUniverse.getDataSource().saveTown(town);
    }
}
Also used : Nation(com.palmergames.bukkit.towny.object.Nation) Town(com.palmergames.bukkit.towny.object.Town) ArrayList(java.util.ArrayList) Resident(com.palmergames.bukkit.towny.object.Resident) EmptyNationException(com.palmergames.bukkit.towny.exceptions.EmptyNationException) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 29 with Town

use of com.palmergames.bukkit.towny.object.Town in project Towny by ElgarL.

the class PlotCommand method plotTestOwner.

/**
	 * Test the townBlock to ensure we are either the plot owner, or the
	 * mayor/assistant
	 * 
	 * @param resident
	 * @param townBlock
	 * @throws TownyException
	 */
public TownBlockOwner plotTestOwner(Resident resident, TownBlock townBlock) throws TownyException {
    Player player = BukkitTools.getPlayer(resident.getName());
    boolean isAdmin = TownyUniverse.getPermissionSource().isTownyAdmin(player);
    if (townBlock.hasResident()) {
        Resident owner = townBlock.getResident();
        boolean isSameTown = (resident.hasTown()) ? resident.getTown() == owner.getTown() : false;
        if ((resident == owner) || ((isSameTown) && (player.hasPermission(PermissionNodes.TOWNY_COMMAND_PLOT_ASMAYOR.getNode()))) || isAdmin) {
            return owner;
        }
        // Not the plot owner or the towns mayor or an admin.
        throw new TownyException(TownySettings.getLangString("msg_area_not_own"));
    } else {
        Town owner = townBlock.getTown();
        boolean isSameTown = (resident.hasTown()) ? resident.getTown() == owner : false;
        if (isSameTown && !BukkitTools.getPlayer(resident.getName()).hasPermission(PermissionNodes.TOWNY_COMMAND_PLOT_ASMAYOR.getNode()))
            throw new TownyException(TownySettings.getLangString("msg_not_mayor_ass"));
        if (!isSameTown && !isAdmin)
            throw new TownyException(TownySettings.getLangString("msg_err_not_part_town"));
        return owner;
    }
}
Also used : Player(org.bukkit.entity.Player) Town(com.palmergames.bukkit.towny.object.Town) Resident(com.palmergames.bukkit.towny.object.Resident) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 30 with Town

use of com.palmergames.bukkit.towny.object.Town in project Towny by ElgarL.

the class ResidentCommand method residentSpawn.

/**
	 * Attempt to send player to bed spawn.
	 * 
	 * @param player
	 */
public void residentSpawn(Player player) {
    boolean isTownyAdmin = TownyUniverse.getPermissionSource().isTownyAdmin(player);
    Resident resident;
    try {
        resident = TownyUniverse.getDataSource().getResident(player.getName());
        Town town;
        Location spawnLoc;
        String notAffordMSG;
        TownSpawnLevel townSpawnPermission;
        // Set target town and affiliated messages.
        town = resident.getTown();
        notAffordMSG = TownySettings.getLangString("msg_err_cant_afford_tp");
        if (TownySettings.getBedUse() && player.getBedSpawnLocation() != null) {
            spawnLoc = player.getBedSpawnLocation();
        } else {
            spawnLoc = town.getSpawn();
        }
        if (isTownyAdmin) {
            townSpawnPermission = TownSpawnLevel.ADMIN;
        } else {
            townSpawnPermission = TownSpawnLevel.TOWN_RESIDENT;
        }
        if (!isTownyAdmin) {
            // Prevent spawn travel while in disallowed zones (if
            // configured)
            List<String> disallowedZones = TownySettings.getDisallowedTownSpawnZones();
            if (!disallowedZones.isEmpty()) {
                String inTown = null;
                try {
                    Location loc = plugin.getCache(player).getLastLocation();
                    inTown = TownyUniverse.getTownName(loc);
                } catch (NullPointerException e) {
                    inTown = TownyUniverse.getTownName(player.getLocation());
                }
                if (inTown == null && disallowedZones.contains("unclaimed"))
                    throw new TownyException(String.format(TownySettings.getLangString("msg_err_town_spawn_disallowed_from"), "the Wilderness"));
                if (inTown != null && resident.hasNation() && TownyUniverse.getDataSource().getTown(inTown).hasNation()) {
                    Nation inNation = TownyUniverse.getDataSource().getTown(inTown).getNation();
                    Nation playerNation = resident.getTown().getNation();
                    if (inNation.hasEnemy(playerNation) && disallowedZones.contains("enemy"))
                        throw new TownyException(String.format(TownySettings.getLangString("msg_err_town_spawn_disallowed_from"), "Enemy areas"));
                    if (!inNation.hasAlly(playerNation) && !inNation.hasEnemy(playerNation) && disallowedZones.contains("neutral"))
                        throw new TownyException(String.format(TownySettings.getLangString("msg_err_town_spawn_disallowed_from"), "Neutral towns"));
                }
            }
        }
        double travelCost = townSpawnPermission.getCost();
        // Check if need/can pay
        if (travelCost > 0 && TownySettings.isUsingEconomy() && (resident.getHoldingBalance() < travelCost))
            throw new TownyException(notAffordMSG);
        // Used later to make sure the chunk we teleport to is loaded.
        Chunk chunk = spawnLoc.getChunk();
        // Essentials tests
        boolean UsingESS = plugin.isEssentials();
        if (UsingESS && !isTownyAdmin) {
            try {
                User user = plugin.getEssentials().getUser(player);
                if (!user.isJailed()) {
                    Teleport teleport = user.getTeleport();
                    if (!chunk.isLoaded())
                        chunk.load();
                    // Cause an essentials exception if in cooldown.
                    teleport.cooldown(true);
                    teleport.teleport(spawnLoc, null);
                }
            } catch (Exception e) {
                TownyMessaging.sendErrorMsg(player, "Error: " + e.getMessage());
                // cooldown?
                return;
            }
        }
        // travel.
        if (travelCost > 0 && TownySettings.isUsingEconomy() && resident.payTo(travelCost, town, String.format("Resident Spawn (%s)", townSpawnPermission))) {
            // +
            TownyMessaging.sendMsg(player, String.format(TownySettings.getLangString("msg_cost_spawn"), TownyEconomyHandler.getFormattedBalance(travelCost)));
        // TownyEconomyObject.getEconomyCurrency()));
        }
        // If an Admin or Essentials teleport isn't being used, use our own.
        if (isTownyAdmin) {
            if (player.getVehicle() != null)
                player.getVehicle().eject();
            if (!chunk.isLoaded())
                chunk.load();
            player.teleport(spawnLoc, TeleportCause.COMMAND);
            return;
        }
        if (!UsingESS) {
            if (TownyTimerHandler.isTeleportWarmupRunning()) {
                // Use teleport warmup
                player.sendMessage(String.format(TownySettings.getLangString("msg_town_spawn_warmup"), TownySettings.getTeleportWarmupTime()));
                plugin.getTownyUniverse().requestTeleport(player, spawnLoc, travelCost);
            } else {
                // Don't use teleport warmup
                if (player.getVehicle() != null)
                    player.getVehicle().eject();
                if (!chunk.isLoaded())
                    chunk.load();
                player.teleport(spawnLoc, TeleportCause.COMMAND);
            }
        }
    } catch (TownyException e) {
        TownyMessaging.sendErrorMsg(player, e.getMessage());
    } catch (EconomyException e) {
        TownyMessaging.sendErrorMsg(player, e.getMessage());
    }
}
Also used : Nation(com.palmergames.bukkit.towny.object.Nation) TownSpawnLevel(com.palmergames.bukkit.towny.object.TownSpawnLevel) User(com.earth2me.essentials.User) Chunk(org.bukkit.Chunk) Teleport(com.earth2me.essentials.Teleport) NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) EconomyException(com.palmergames.bukkit.towny.exceptions.EconomyException) AlreadyRegisteredException(com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) EconomyException(com.palmergames.bukkit.towny.exceptions.EconomyException) Town(com.palmergames.bukkit.towny.object.Town) Resident(com.palmergames.bukkit.towny.object.Resident) Location(org.bukkit.Location)

Aggregations

Town (com.palmergames.bukkit.towny.object.Town)41 NotRegisteredException (com.palmergames.bukkit.towny.exceptions.NotRegisteredException)24 TownyException (com.palmergames.bukkit.towny.exceptions.TownyException)23 Resident (com.palmergames.bukkit.towny.object.Resident)17 ArrayList (java.util.ArrayList)15 AlreadyRegisteredException (com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException)14 Nation (com.palmergames.bukkit.towny.object.Nation)10 TownBlock (com.palmergames.bukkit.towny.object.TownBlock)8 IOException (java.io.IOException)8 EconomyException (com.palmergames.bukkit.towny.exceptions.EconomyException)7 InvalidNameException (javax.naming.InvalidNameException)5 EmptyNationException (com.palmergames.bukkit.towny.exceptions.EmptyNationException)4 KeyValueFile (com.palmergames.util.KeyValueFile)4 File (java.io.File)4 TownyWorld (com.palmergames.bukkit.towny.object.TownyWorld)3 WorldCoord (com.palmergames.bukkit.towny.object.WorldCoord)3 EOFException (java.io.EOFException)3 FileNotFoundException (java.io.FileNotFoundException)3 PreparedStatement (java.sql.PreparedStatement)3 ResultSet (java.sql.ResultSet)3