Search in sources :

Example 16 with TownyUniverse

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"));
        }
    }
}
Also used : WorldCoord(com.palmergames.bukkit.towny.object.WorldCoord) Town(com.palmergames.bukkit.towny.object.Town) ArrayList(java.util.ArrayList) Resident(com.palmergames.bukkit.towny.object.Resident) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse) TownyWorld(com.palmergames.bukkit.towny.object.TownyWorld) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 17 with TownyUniverse

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"));
    }
}
Also used : NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse) TownBlock(com.palmergames.bukkit.towny.object.TownBlock) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 18 with TownyUniverse

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"));
}
Also used : Town(com.palmergames.bukkit.towny.object.Town) Resident(com.palmergames.bukkit.towny.object.Resident) InvalidObjectException(java.io.InvalidObjectException) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse) Invite(com.palmergames.bukkit.towny.invites.Invite) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 19 with TownyUniverse

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());
        }
    }
}
Also used : ArrayList(java.util.ArrayList) Resident(com.palmergames.bukkit.towny.object.Resident) ArrayList(java.util.ArrayList) List(java.util.List) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse)

Example 20 with TownyUniverse

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);
}
Also used : Government(com.palmergames.bukkit.towny.object.Government) TownBlockOwner(com.palmergames.bukkit.towny.object.TownBlockOwner) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) ResidentList(com.palmergames.bukkit.towny.object.ResidentList) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Aggregations

TownyUniverse (com.palmergames.bukkit.towny.TownyUniverse)27 Resident (com.palmergames.bukkit.towny.object.Resident)19 ArrayList (java.util.ArrayList)8 Player (org.bukkit.entity.Player)8 TownyException (com.palmergames.bukkit.towny.exceptions.TownyException)7 Town (com.palmergames.bukkit.towny.object.Town)6 NotRegisteredException (com.palmergames.bukkit.towny.exceptions.NotRegisteredException)4 EventHandler (org.bukkit.event.EventHandler)4 Nation (com.palmergames.bukkit.towny.object.Nation)3 TownyWorld (com.palmergames.bukkit.towny.object.TownyWorld)3 HashSet (java.util.HashSet)3 Invite (com.palmergames.bukkit.towny.invites.Invite)2 TownBlock (com.palmergames.bukkit.towny.object.TownBlock)2 Translator (com.palmergames.bukkit.towny.object.Translator)2 WorldCoord (com.palmergames.bukkit.towny.object.WorldCoord)2 InvalidObjectException (java.io.InvalidObjectException)2 List (java.util.List)2 UUID (java.util.UUID)2 SiegeSide (com.gmail.goosius.siegewar.enums.SiegeSide)1 Siege (com.gmail.goosius.siegewar.objects.Siege)1