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;
}
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);
}
}
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);
}
}
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;
}
}
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());
}
}
Aggregations