use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class TownClaim method run.
@Override
public void run() {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
List<Town> towns = new ArrayList<>();
TownyWorld world = null;
if (player != null) {
if (claim)
TownyMessaging.sendMsg(player, Translatable.of("msg_process_town_claim"));
else
TownyMessaging.sendMsg(player, Translatable.of("msg_process_town_unclaim"));
}
if (selection != null) {
for (WorldCoord worldCoord : selection) {
try {
world = worldCoord.getTownyWorld();
if (claim) {
// Claim
townClaim(town, worldCoord, outpost, player);
// Reset so we only flag the first plot as an outpost.
outpost = false;
} else {
// Unclaim
this.town = worldCoord.getTownBlock().getTown();
townUnclaim(town, worldCoord, forced);
}
// Mark this town as modified for saving.
if (!towns.contains(town))
towns.add(town);
} catch (TownyException x) {
TownyMessaging.sendErrorMsg(player, x.getMessage());
}
}
double unclaimRefund = TownySettings.getClaimRefundPrice();
if (!claim && unclaimRefund != 0.0) {
double refund = Math.abs(unclaimRefund * selection.size());
if (unclaimRefund > 0) {
town.getAccount().deposit(refund, "Town Unclaim Refund");
TownyMessaging.sendMsg(player, Translatable.of("refund_message", TownyEconomyHandler.getFormattedBalance(refund), selection.size()));
}
if (unclaimRefund < 0) {
town.getAccount().withdraw(refund, "Town Unclaim Cost");
TownyMessaging.sendMsg(player, Translatable.of("msg_your_town_paid_x_to_unclaim", TownyEconomyHandler.getFormattedBalance(refund)));
}
}
} else if (!claim) {
if (town == null) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_nothing_to_unclaim"));
return;
}
Resident resident = player != null ? townyUniverse.getResident(player.getUniqueId()) : null;
if (resident == null) {
return;
}
// size() - 1 because the homeblock will not be unclaimed.
int townSize = town.getTownBlocks().size() - 1;
double refund = TownySettings.getClaimRefundPrice() * townSize;
// Send confirmation message,
Confirmation.runOnAccept(() -> {
TownClaim.townUnclaimAll(plugin, town);
if (TownyEconomyHandler.isActive() && refund > 0.0) {
town.getAccount().deposit(TownySettings.getClaimRefundPrice() * townSize - 1, "Town Unclaim Refund");
TownyMessaging.sendMsg(player, Translatable.of("refund_message", TownySettings.getClaimRefundPrice() * townSize, townSize));
}
}).sendTo(player);
}
if (!towns.isEmpty()) {
for (Town test : towns) {
test.save();
}
}
plugin.resetCache();
if (player != null) {
if (claim) {
TownyMessaging.sendMsg(player, Translatable.of("msg_annexed_area", (selection.size() > 5) ? "Total TownBlocks: " + selection.size() : Arrays.toString(selection.toArray(new WorldCoord[0]))));
if (world != null && world.isUsingPlotManagementRevert())
TownyMessaging.sendMsg(player, Translatable.of("msg_wait_locked"));
} else if (forced) {
TownyMessaging.sendMsg(player, Translatable.of("msg_admin_unclaim_area", (selection.size() > 5) ? "Total TownBlocks: " + selection.size() : Arrays.toString(selection.toArray(new WorldCoord[0]))));
if ((town != null) && (world != null && world.isUsingPlotManagementRevert()))
TownyMessaging.sendMsg(player, Translatable.of("msg_wait_locked"));
}
}
}
use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class TownClaim method townUnclaim.
// Unclaim event comes later in removeTownBlock().
private void townUnclaim(final Town town, final WorldCoord worldCoord, boolean force) throws TownyException {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
try {
final TownBlock townBlock = worldCoord.getTownBlock();
if (town != townBlock.getTown() && !force) {
throw new TownyException(Translatable.of("msg_area_not_own"));
}
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
townyUniverse.getDataSource().removeTownBlock(townBlock);
}, 1);
} catch (NotRegisteredException e) {
throw new TownyException(Translatable.of("msg_not_claimed_1"));
}
}
use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class InviteCommand method parseAccept.
public static void parseAccept(Player player, String[] args) {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
Optional<Resident> resOpt = townyUniverse.getResidentOpt(player.getUniqueId());
if (!resOpt.isPresent()) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_not_registered"));
return;
}
Resident resident = resOpt.get();
List<Invite> invites = resident.getReceivedInvites();
if (invites.size() == 0) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_player_no_invites"));
return;
}
Town town;
if (args.length >= 1) {
town = townyUniverse.getTown(args[0]);
if (town == null) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_invalid_name"));
return;
}
} else {
if (invites.size() == 1) {
town = (Town) invites.get(0).getSender();
} else {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_player_has_multiple_invites"));
parseInviteList(player, null);
return;
}
}
// At this point I consider having a valid Town & a valid Player so a final check is ran:
Invite toAccept = null;
for (Invite invite : InviteHandler.getActiveInvites()) {
if (invite.getSender().equals(town) && invite.getReceiver().equals(resident)) {
toAccept = invite;
break;
}
}
if (toAccept != null) {
try {
if (TownySettings.getMaxResidentsPerTown() > 0 && town.getResidents().size() >= TownySettings.getMaxResidentsForTown(town)) {
TownyMessaging.sendMsg(player, Translatable.of("msg_err_max_residents_per_town_reached", TownySettings.getMaxResidentsForTown(town)));
return;
} else
InviteHandler.acceptInvite(toAccept);
} catch (TownyException | InvalidObjectException e) {
e.printStackTrace();
}
} else
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_specify_name"));
}
use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class ResidentCommand method residentFriend.
public static void residentFriend(Player player, String[] split, boolean admin, Resident resident) {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
if (split.length == 0) {
TownyMessaging.sendMessage(player, ChatTools.formatCommand("", "/resident friend", "add " + Translatable.of("res_2").forLocale(player), ""));
TownyMessaging.sendMessage(player, ChatTools.formatCommand("", "/resident friend", "remove " + Translatable.of("res_2").forLocale(player), ""));
TownyMessaging.sendMessage(player, ChatTools.formatCommand("", "/resident friend", "list", ""));
TownyMessaging.sendMessage(player, ChatTools.formatCommand("", "/resident friend", "clear", ""));
} else {
if (!admin) {
Optional<Resident> resOpt = townyUniverse.getResidentOpt(player.getUniqueId());
if (!resOpt.isPresent()) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_not_registered_1", player.getName()));
return;
}
resident = resOpt.get();
}
if (split[0].equalsIgnoreCase("add")) {
String[] names = StringMgmt.remFirstArg(split);
List<Resident> invited = new ArrayList<>();
for (String name : names) {
Resident target = townyUniverse.getResident(name);
if (target == null) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_not_registered_1", name));
} else {
invited.add(target);
}
}
residentFriendAdd(player, resident, invited);
} else if (split[0].equalsIgnoreCase("remove")) {
String[] names = StringMgmt.remFirstArg(split);
List<Resident> invited = new ArrayList<>();
for (String name : names) {
Resident target = townyUniverse.getResident(name);
if (target == null) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_not_registered_1", name));
} else {
invited.add(target);
}
}
residentFriendRemove(player, resident, invited);
} else if (split[0].equalsIgnoreCase("list")) {
residentFriendList(player, resident);
} else if (split[0].equalsIgnoreCase("clearlist") || split[0].equalsIgnoreCase("clear")) {
residentFriendRemove(player, resident, resident.getFriends());
}
}
}
use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class TownyCommand method parseTopCommand.
private void parseTopCommand(CommandSender sender, String[] args) throws TownyException {
List<String> townyTop = new ArrayList<>();
TownyUniverse universe = TownyUniverse.getInstance();
if (args.length == 0 || args[0].equalsIgnoreCase("?")) {
townyTop.add(ChatTools.formatTitle("/towny top"));
townyTop.add(ChatTools.formatCommand("", "/towny top", "residents [all/town/nation]", ""));
townyTop.add(ChatTools.formatCommand("", "/towny top", "land [all/resident/town]", ""));
townyTop.add(ChatTools.formatCommand("", "/towny top", "balance [all/town/nation]", ""));
for (String line : townyTop) TownyMessaging.sendMessage(sender, line);
return;
}
if (!TownyUniverse.getInstance().getPermissionSource().testPermission(sender, PermissionNodes.TOWNY_COMMAND_TOWNY_TOP.getNode(args[0].toLowerCase())))
throw new TownyException(Translatable.of("msg_err_command_disable"));
if (args[0].equalsIgnoreCase("residents"))
if (args.length == 1 || args[1].equalsIgnoreCase("all")) {
List<ResidentList> list = new ArrayList<>(universe.getTowns());
list.addAll(universe.getNations());
townyTop.add(ChatTools.formatTitle("Most Residents"));
townyTop.addAll(getMostResidents(list));
} else if (args[1].equalsIgnoreCase("town")) {
townyTop.add(ChatTools.formatTitle("Most Residents in a Town"));
townyTop.addAll(getMostResidents(new ArrayList<>(universe.getTowns())));
} else if (args[1].equalsIgnoreCase("nation")) {
townyTop.add(ChatTools.formatTitle("Most Residents in a Nation"));
townyTop.addAll(getMostResidents(new ArrayList<>(universe.getNations())));
} else
TownyMessaging.sendErrorMsg(sender, Translatable.of("msg_err_invalid_sub"));
else if (args[0].equalsIgnoreCase("land"))
if (args.length == 1 || args[1].equalsIgnoreCase("all")) {
List<TownBlockOwner> list = new ArrayList<>(universe.getResidents());
list.addAll(universe.getTowns());
townyTop.add(ChatTools.formatTitle("Most Land Owned"));
townyTop.addAll(getMostLand(list));
} else if (args[1].equalsIgnoreCase("resident")) {
townyTop.add(ChatTools.formatTitle("Most Land Owned by Resident"));
townyTop.addAll(getMostLand(new ArrayList<>(universe.getResidents())));
} else if (args[1].equalsIgnoreCase("town")) {
townyTop.add(ChatTools.formatTitle("Most Land Owned by Town"));
townyTop.addAll(getMostLand(new ArrayList<>(universe.getTowns())));
} else
TownyMessaging.sendErrorMsg(sender, Translatable.of("msg_err_invalid_sub"));
else if (args[0].equalsIgnoreCase("balance")) {
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
if (args.length == 1 || args[1].equalsIgnoreCase("all")) {
List<Government> list = new ArrayList<>();
list.addAll(universe.getTowns());
list.addAll(universe.getNations());
townyTop.add(ChatTools.formatTitle("Top Bank Balances"));
townyTop.addAll(getTopBankBalance(list));
} else if (args[1].equalsIgnoreCase("town")) {
List<Government> list = new ArrayList<>(universe.getTowns());
townyTop.add(ChatTools.formatTitle("Top Bank Balances by Town"));
townyTop.addAll(getTopBankBalance(list));
} else if (args[1].equalsIgnoreCase("nation")) {
List<Government> list = new ArrayList<>(universe.getNations());
townyTop.add(ChatTools.formatTitle("Top Bank Balances by Nation"));
townyTop.addAll(getTopBankBalance(list));
} else {
TownyMessaging.sendErrorMsg(sender, Translatable.of("msg_err_invalid_sub"));
}
for (String line : townyTop) TownyMessaging.sendMessage(sender, line);
});
return;
} else
TownyMessaging.sendErrorMsg(sender, Translatable.of("msg_err_invalid_sub"));
for (String line : townyTop) TownyMessaging.sendMessage(sender, line);
}
Aggregations