Package com.bekvon.bukkit.residence

Source Code of com.bekvon.bukkit.residence.ResidenceCommandListener

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.bekvon.bukkit.residence;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.getspout.spoutapi.SpoutManager;

import com.bekvon.bukkit.residence.chat.ChatChannel;
import com.bekvon.bukkit.residence.event.ResidenceCommandEvent;
import com.bekvon.bukkit.residence.permissions.PermissionGroup;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import com.bekvon.bukkit.residence.protection.CuboidArea;
import com.bekvon.bukkit.residence.protection.FlagPermissions;
import com.bekvon.bukkit.residence.spout.ResidenceSpout;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import java.util.List;

public class ResidenceCommandListener extends Residence {

    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender);
        server.getPluginManager().callEvent(cevent);
        if (cevent.isCancelled()) {
            return true;
        }
        if (command.getName().equals("resreload") && args.length == 0) {
            if (sender instanceof Player) {
                Player player = (Player) sender;
                if (Residence.getPermissionManager().isResidenceAdmin(player)) {
                    this.reloadPlugin();
                    System.out.println("[Residence] Reloaded by " + player.getName() + ".");
                }
            } else {
                this.reloadPlugin();
                System.out.println("[Residence] Reloaded by console.");
            }
            return true;
        }
        if (command.getName().equals("resload")) {
            if (!(sender instanceof Player) || sender instanceof Player && gmanager.isResidenceAdmin((Player) sender)) {
                try {
                    this.loadYml();
                    sender.sendMessage(ChatColor.GREEN + "[Residence] Reloaded save file...");
                } catch (Exception ex) {
                    sender.sendMessage(ChatColor.RED + "[Residence] Unable to reload the save file, exception occured!");
                    sender.sendMessage(ChatColor.RED + ex.getMessage());
                    Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            return true;
        } else if (command.getName().equals("resworld")) {
            if (args.length == 2 && args[0].equalsIgnoreCase("remove")) {
                if (sender instanceof ConsoleCommandSender) {
                    rmanager.removeAllFromWorld(sender, args[1]);
                    return true;
                } else {
                    sender.sendMessage(ChatColor.RED + "MUST be run from console.");
                }
            }
            return false;
        } else if (command.getName().equals("rc")) {
            if (sender instanceof Player) {
                Player player = (Player) sender;
                String pname = player.getName();
                if (cmanager.chatEnabled()) {
                    if (args.length == 0) {
                        plistener.tooglePlayerResidenceChat(player);
                    } else {
                        String area = plistener.getCurrentResidenceName(pname);
                        if (area != null) {
                            ChatChannel channel = chatmanager.getChannel(area);
                            if (channel != null) {
                                String message = "";
                                for (String arg : args) {
                                    message = message + " " + arg;
                                }
                                channel.chat(pname, message);
                            } else {
                                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidChannel"));
                            }
                        } else {
                            player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
                        }
                    }
                } else {
                    player.sendMessage(ChatColor.RED + language.getPhrase("ChatDisabled"));
                }
            }
            return true;
        } else if (command.getName().equals("res") || command.getName().equals("residence") || command.getName().equals("resadmin")) {
            boolean resadmin = false;
            if (sender instanceof Player) {
                if (command.getName().equals("resadmin") && gmanager.isResidenceAdmin((Player) sender)) {
                    resadmin = true;
                }
                if (command.getName().equals("resadmin") && !gmanager.isResidenceAdmin((Player) sender)) {
                    ((Player) sender).sendMessage(ChatColor.RED + language.getPhrase("NonAdmin"));
                    return true;
                }
            } else {
                resadmin = true;
            }
            return commandRes(args, resadmin, command, sender);
        }
        return super.onCommand(sender, command, label, args);
    }

    private boolean commandRes(String[] args, boolean resadmin, Command command, CommandSender sender) {
        if (args.length > 0 && args[args.length - 1].equalsIgnoreCase("?") || args.length > 1 && args[args.length - 2].equals("?")) {
            return commandHelp(args, resadmin, sender);
        }
        int page = 1;
        try {
            if (args.length > 0) {
                page = Integer.parseInt(args[args.length - 1]);
            }
        } catch (Exception ex) {
        }
        Player player = null;
        PermissionGroup group = null;
        String pname = null;
        if (sender instanceof Player) {
            player = (Player) sender;
            group = Residence.getPermissionManager().getGroup(player);
            pname = player.getName();
        } else {
            resadmin = true;
        }
        if (cmanager.allowAdminsOnly()) {
            if (!resadmin) {
                player.sendMessage(ChatColor.RED + language.getPhrase("AdminOnly"));
                return true;
            }
        }
        if (args.length == 0) {
            return false;
        }
        if (args.length == 0) {
            args = new String[1];
            args[0] = "?";
        }
        String cmd = args[0].toLowerCase();
        if (cmd.equals("remove") || cmd.equals("delete")) {
            return commandResRemove(args, resadmin, sender, page);
        }
        if (cmd.equals("confirm")) {
            return commandResConfirm(args, resadmin, sender, page);
        }
        if (cmd.equals("version")) {
            sender.sendMessage(ChatColor.GRAY + "------------------------------------");
            sender.sendMessage(ChatColor.RED + "This server running " + ChatColor.GOLD + "Residence" + ChatColor.RED + " version: " + ChatColor.BLUE + this.getDescription().getVersion());
            sender.sendMessage(ChatColor.GREEN + "Created by: " + ChatColor.YELLOW + "bekvon");
            String names = null;
            List<String> authlist = this.getDescription().getAuthors();
            for (String auth : authlist)
            {
                if (names == null)
                    names = auth;
                else
                    names = names + ", " + auth;
            }
            sender.sendMessage(ChatColor.GREEN + "Authors: " + ChatColor.YELLOW + names);
            sender.sendMessage(ChatColor.DARK_AQUA + "For a command list, and help, see the wiki:");
            sender.sendMessage(ChatColor.GREEN + "http://residencebukkitmod.wikispaces.com/");
            sender.sendMessage(ChatColor.AQUA + "Visit the BukkitDev page at:");
            sender.sendMessage(ChatColor.BLUE + "http://dev.bukkit.org/server-mods/Residence");
            sender.sendMessage(ChatColor.GRAY + "------------------------------------");
            return true;
        }
        if (cmd.equals("setowner") && args.length == 3) {
            if (!resadmin) {
                sender.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
                return true;
            }
            ClaimedResidence area = rmanager.getByName(args[1]);
            if (area != null) {
                area.getPermissions().setOwner(args[2], true);
                if (area.getParent() == null) {
                    sender.sendMessage(ChatColor.GREEN + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + " " + args[1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN));
                } else {
                    sender.sendMessage(ChatColor.GREEN + language.getPhrase("SubzoneOwnerChange", ChatColor.YELLOW + " " + args[1].split("\\.")[args[1].split("\\.").length - 1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN));
                }
            } else {
                sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        if (player == null) {
            return true;
        }
        if (command.getName().equals("resadmin")) {
            if (args.length == 1 && args[0].equals("on")) {
                resadminToggle.add(player.getName());
                player.sendMessage(ChatColor.YELLOW + language.getPhrase("AdminToggle", language.getPhrase("TurnOn")));
                return true;
            } else if (args.length == 1 && args[0].equals("off")) {
                resadminToggle.remove(player.getName());
                player.sendMessage(ChatColor.YELLOW + language.getPhrase("AdminToggle", language.getPhrase("TurnOff")));
                return true;
            }
        }
        if (!resadmin && resadminToggle.contains(player.getName())) {
            if (!gmanager.isResidenceAdmin(player)) {
                resadminToggle.remove(player.getName());
            }
        }
        if (cmd.equals("select")) {
            return commandResSelect(args, resadmin, player, page);
        }
        if (cmd.equals("create")) {
            return commandResCreate(args, resadmin, player, page);
        }
        if (cmd.equals("subzone") || cmd.equals("sz")) {
            return commandResSubzone(args, resadmin, player, page);
        }
        if (cmd.equals("gui")) {
            return commandResGui(args, resadmin, player, page);
        }
        if (cmd.equals("sublist")) {
            return commandResSublist(args, resadmin, player, page);
        }
        if (cmd.equals("removeall")) {
            if (args.length != 2) {
                return false;
            }
            if (resadmin || args[1].endsWith(pname)) {
                rmanager.removeAllByOwner(player, args[1]);
                player.sendMessage(ChatColor.GREEN + language.getPhrase("RemovePlayersResidences", ChatColor.YELLOW + args[1] + ChatColor.GREEN));
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
            }
            return true;
        }
        if (cmd.equals("compass")) {
            return commandResCompass(args, resadmin, player, page);
        }
        if (cmd.equals("area")) {
            return commandResArea(args, resadmin, player, page);
        }
        if (cmd.equals("lists")) {
            return commandResList(args, resadmin, player, page);
        }
        if (cmd.equals("default")) {
            if (args.length == 2) {
                ClaimedResidence res = rmanager.getByName(args[1]);
                res.getPermissions().applyDefaultFlags(player, resadmin);
                return true;
            }
            return false;
        }
        if (cmd.equals("limits")) {
            if (args.length == 1) {
                gmanager.getGroup(player).printLimits(player);
                return true;
            }
            return false;
        }
        if (cmd.equals("info")) {
            if (args.length == 1) {
                String area = rmanager.getNameByLoc(player.getLocation());
                if (area != null) {
                    rmanager.printAreaInfo(area, player);
                } else {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                }
                return true;
            } else if (args.length == 2) {
                rmanager.printAreaInfo(args[1], player);
                return true;
            }
            return false;
        }
        if (cmd.equals("check")) {
            if (args.length == 3 || args.length == 4) {
                if (args.length == 4) {
                    pname = args[3];
                }
                ClaimedResidence res = rmanager.getByName(args[1]);
                if (res == null) {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                    return true;
                }
                if (!res.getPermissions().hasApplicableFlag(pname, args[2])) {
                    player.sendMessage(language.getPhrase("FlagCheckFalse", ChatColor.YELLOW + args[2] + ChatColor.RED + "." + ChatColor.YELLOW + pname + ChatColor.RED + "." + ChatColor.YELLOW + args[1] + ChatColor.RED));
                } else {
                    player.sendMessage(language.getPhrase("FlagCheckTrue", ChatColor.GREEN + args[2] + ChatColor.YELLOW + "." + ChatColor.GREEN + pname + ChatColor.YELLOW + "." + ChatColor.YELLOW + args[1] + ChatColor.RED + "." + (res.getPermissions().playerHas(pname, res.getPermissions().getWorld(), args[2], false) ? ChatColor.GREEN + "TRUE" : ChatColor.RED + "FALSE")));
                }
                return true;
            }
            return false;
        }
        if (cmd.equals("current")) {
            if (args.length != 1) {
                return false;
            }
            String res = rmanager.getNameByLoc(player.getLocation());
            if (res == null) {
                player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
            } else {
                player.sendMessage(ChatColor.GREEN + language.getPhrase("InResidence", ChatColor.YELLOW + res + ChatColor.GREEN));
            }
            return true;
        }
        if (cmd.equals("set")) {
            return commandResSet(args, resadmin, player, page);
        }
        if (cmd.equals("pset")) {
            return commandResPset(args, resadmin, player, page);
        }
        if (cmd.equals("gset")) {
            return commandResGset(args, resadmin, player, page);
        }
        if (cmd.equals("lset")) {
            return commandResLset(args, resadmin, player, page);
        }
        if (cmd.equals("list")) {
            if (args.length == 1) {
                rmanager.listResidences(player);
                return true;
            } else if (args.length == 2) {
                try {
                    Integer.parseInt(args[1]);
                    rmanager.listResidences(player, page);
                } catch (Exception ex) {
                    rmanager.listResidences(player, args[1]);
                }
                return true;
            } else if (args.length == 3) {
                rmanager.listResidences(player, args[1], page);
                return true;
            }
            return false;
        }
        if (cmd.equals("listhidden")) {
            if (!resadmin) {
                player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
                return true;
            }
            if (args.length == 1) {
                rmanager.listResidences(player, 1, true);
                return true;
            } else if (args.length == 2) {
                try {
                    Integer.parseInt(args[1]);
                    rmanager.listResidences(player, page, true);
                } catch (Exception ex) {
                    rmanager.listResidences(player, args[1], 1, true);
                }
                return true;
            } else if (args.length == 3) {
                rmanager.listResidences(player, args[1], page, true);
                return true;
            }
            return false;
        }
        if (cmd.equals("rename")) {
            if (args.length == 3) {
                rmanager.renameResidence(player, args[1], args[2], resadmin);
                return true;
            }
            return false;
        }
        if (cmd.equals("renamearea")) {
            if (args.length == 4) {
                ClaimedResidence res = rmanager.getByName(args[1]);
                if (res == null) {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                    return true;
                }
                res.renameArea(player, args[2], args[3], resadmin);
                return true;
            }
            return false;
        }
        if (cmd.equals("unstuck")) {
            if (args.length != 1) {
                return false;
            }
            group = gmanager.getGroup(player);
            if (!group.hasUnstuckAccess()) {
                player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
                return true;
            }
            ClaimedResidence res = rmanager.getByLoc(player.getLocation());
            if (res == null) {
                player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
            } else {
                player.sendMessage(ChatColor.YELLOW + language.getPhrase("Moved") + "...");
                player.teleport(res.getOutsideFreeLoc(player.getLocation()));
            }
            return true;
        }
        if (cmd.equals("mirror")) {
            if (args.length != 3) {
                return false;
            }
            rmanager.mirrorPerms(player, args[2], args[1], resadmin);
            return true;
        }
        if (cmd.equals("listall")) {
            if (args.length == 1) {
                rmanager.listAllResidences(player, 1);
            } else if (args.length == 2) {
                try {
                    rmanager.listAllResidences(player, page);
                } catch (Exception ex) {
                }
            } else {
                return false;
            }
            return true;
        }
        if (cmd.equals("listallhidden")) {
            if (!resadmin) {
                player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
                return true;
            }
            if (args.length == 1) {
                rmanager.listAllResidences(player, 1, true);
            } else if (args.length == 2) {
                try {
                    rmanager.listAllResidences(player, page, true);
                } catch (Exception ex) {
                }
            } else {
                return false;
            }
            return true;
        }
        if (cmd.equals("material")) {
            if (args.length != 2) {
                return false;
            }
            try {
                player.sendMessage(ChatColor.GREEN + language.getPhrase("MaterialGet", ChatColor.GOLD + args[1] + ChatColor.GREEN + "." + ChatColor.RED + Material.getMaterial(Integer.parseInt(args[1])).name() + ChatColor.GREEN));
            } catch (Exception ex) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial"));
            }
            return true;
        }
        if (cmd.equals("tpset")) {
            ClaimedResidence res = rmanager.getByLoc(player.getLocation());
            if (res != null) {
                res.setTpLoc(player, resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        if (cmd.equals("tp")) {
            if (args.length != 2) {
                return false;
            }
            ClaimedResidence res = rmanager.getByName(args[1]);
            if (res == null) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                return true;
            }
            res.tpToResidence(player, player, resadmin);
            return true;
        }
        if (cmd.equals("lease")) {
            return commandResLease(args, resadmin, player, page);
        }
        if (cmd.equals("bank")) {
            return commandResBank(args, resadmin, player, page);
        }
        if (cmd.equals("market")) {
            return commandResMarket(args, resadmin, player, page);
        }
        if (cmd.equals("message")) {
            return commandResMessage(args, resadmin, player, page);
        }
        if (cmd.equals("give") && args.length == 3) {
            rmanager.giveResidence(player, args[2], args[1], resadmin);
            return true;
        }
        if (cmd.equals("server")) {
            if (!resadmin) {
                player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
                return true;
            }
            if (args.length == 2) {
                ClaimedResidence res = rmanager.getByName(args[1]);
                if (res == null) {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                    return true;
                }
                res.getPermissions().setOwner("Server Land", false);
                player.sendMessage(ChatColor.GREEN + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + args[1] + ChatColor.GREEN + "." + ChatColor.YELLOW + "Server Land" + ChatColor.GREEN));
                return true;
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                return true;
            }
        }
        if (cmd.equals("clearflags")) {
            if (!resadmin) {
                player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
                return true;
            }
            ClaimedResidence area = rmanager.getByName(args[1]);
            if (area != null) {
                area.getPermissions().clearFlags();
                player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagsCleared"));
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        if (cmd.equals("tool")) {
            player.sendMessage(ChatColor.YELLOW + language.getPhrase("SelectionTool") + ":" + ChatColor.GREEN + Material.getMaterial(cmanager.getSelectionTooldID()));
            player.sendMessage(ChatColor.YELLOW + language.getPhrase("InfoTool") + ": " + ChatColor.GREEN + Material.getMaterial(cmanager.getInfoToolID()));
            return true;
        }
        return false;
    }

    private boolean commandHelp(String[] args, boolean resadmin, CommandSender sender) {
        if (helppages != null) {
            String helppath = "res";
            for (int i = 0; i < args.length; i++) {
                if (args[i].equalsIgnoreCase("?")) {
                    break;
                }
                helppath = helppath + "." + args[i];
            }
            int page = 1;
            if (!args[args.length - 1].equalsIgnoreCase("?")) {
                try {
                    page = Integer.parseInt(args[args.length - 1]);
                } catch (Exception ex) {
                    sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidHelp"));
                }
            }
            if (helppages.containesEntry(helppath)) {
                helppages.printHelp(sender, page, helppath);
                return true;
            }
        }
        return false;
    }

    private boolean commandResSelect(String[] args, boolean resadmin, Player player, int page) {
        PermissionGroup group = Residence.getPermissionManager().getGroup(player);
        if (!group.selectCommandAccess() && !resadmin) {
            player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled"));
            return true;
        }
        if (!group.canCreateResidences() && group.getMaxSubzoneDepth() <= 0 && !resadmin) {
            player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled"));
            return true;
        }
        if ((!player.hasPermission("residence.create") && player.isPermissionSet("residence.create") && !player.hasPermission("residence.select") && player.isPermissionSet("residence.select")) && !resadmin) {
            player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled"));
            return true;
        }
        if (args.length == 2) {
            if (args[1].equals("size") || args[1].equals("cost")) {
                if (smanager.hasPlacedBoth(player.getName())) {
                    try {
                        smanager.showSelectionInfo(player);
                        return true;
                    } catch (Exception ex) {
                        Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
                        return true;
                    }
                } else if (smanager.worldEdit(player)) {
                    try {
                        smanager.showSelectionInfo(player);
                        return true;
                    } catch (Exception ex) {
                        Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
                        return true;
                    }
                }
            } else if (args[1].equals("vert")) {
                smanager.vert(player, resadmin);
                return true;
            } else if (args[1].equals("sky")) {
                smanager.sky(player, resadmin);
                return true;
            } else if (args[1].equals("bedrock")) {
                smanager.bedrock(player, resadmin);
                return true;
            } else if (args[1].equals("coords")) {
                Location playerLoc1 = smanager.getPlayerLoc1(player.getName());
                if (playerLoc1 != null) {
                    player.sendMessage(ChatColor.GREEN + language.getPhrase("Primary.Selection") + ":" + ChatColor.AQUA + " (" + playerLoc1.getBlockX() + ", " + playerLoc1.getBlockY() + ", " + playerLoc1.getBlockZ() + ")");
                }
                Location playerLoc2 = smanager.getPlayerLoc2(player.getName());
                if (playerLoc2 != null) {
                    player.sendMessage(ChatColor.GREEN + language.getPhrase("Secondary.Selection") + ":" + ChatColor.AQUA + " (" + playerLoc2.getBlockX() + ", " + playerLoc2.getBlockY() + ", " + playerLoc2.getBlockZ() + ")");
                }
                return true;
            } else if (args[1].equals("chunk")) {
                smanager.selectChunk(player);
                return true;
            } else if (args[1].equals("worldedit")) {
                if (smanager.worldEdit(player)) {
                    player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SelectionSuccess"));
                }
                return true;
            }
        } else if (args.length == 3) {
            if (args[1].equals("expand")) {
                int amount;
                try {
                    amount = Integer.parseInt(args[2]);
                } catch (Exception ex) {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount"));
                    return true;
                }
                smanager.modify(player, false, amount);
                return true;
            } else if (args[1].equals("shift")) {
                int amount;
                try {
                    amount = Integer.parseInt(args[2]);
                } catch (Exception ex) {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount"));
                    return true;
                }
                smanager.modify(player, true, amount);
                return true;
            }
        }
        if (args.length > 1 && args[1].equals("residence")) {
            String resName;
            String areaName;
            ClaimedResidence res = null;
            if (args.length > 2) {
                res = rmanager.getByName(args[2]);
            } else {
                res = rmanager.getByLoc(player.getLocation());
            }
            if (res == null) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                return true;
            }
            resName = res.getName();
            CuboidArea area = null;
            if (args.length > 3) {
                area = res.getArea(args[3]);
                areaName = args[3];
            } else {
                areaName = res.getAreaIDbyLoc(player.getLocation());
                area = res.getArea(areaName);
            }
            if (area != null) {
                smanager.placeLoc1(player, area.getHighLoc());
                smanager.placeLoc2(player, area.getLowLoc());
                player.sendMessage(ChatColor.GREEN + language.getPhrase("SelectionArea", ChatColor.GOLD + areaName + ChatColor.GREEN + "." + ChatColor.GOLD + resName + ChatColor.GREEN));
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("AreaNonExist"));
            }
            return true;
        } else {
            try {
                smanager.selectBySize(player, Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]));
                return true;
            } catch (Exception ex) {
                player.sendMessage(ChatColor.RED + language.getPhrase("SelectionFail"));
                return true;
            }
        }
    }

    private boolean commandResCreate(String[] args, boolean resadmin, Player player, int page) {
        if (args.length != 2) {
            return false;
        }
        WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit");
        if (wep != null) {
            if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) {
                smanager.worldEdit(player);
            }
        }
        if (smanager.hasPlacedBoth(player.getName())) {
            rmanager.addResidence(player, args[1], smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName()), resadmin);
            return true;
        } else {
            player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints"));
            return true;
        }
    }

    private boolean commandResSubzone(String[] args, boolean resadmin, Player player, int page) {
        if (args.length != 2 && args.length != 3) {
            return false;
        }
        String zname;
        String parent;
        if (args.length == 2) {
            parent = rmanager.getNameByLoc(player.getLocation());
            zname = args[1];
        } else {
            parent = args[1];
            zname = args[2];
        }
        WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit");
        if (wep != null) {
            if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) {
                smanager.worldEdit(player);
            }
        }
        if (smanager.hasPlacedBoth(player.getName())) {
            ClaimedResidence res = rmanager.getByName(parent);
            if (res == null) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                return true;
            }
            res.addSubzone(player, smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName()), zname, resadmin);
            return true;
        } else {
            player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints"));
            return true;
        }
    }

    private boolean commandResArea(String[] args, boolean resadmin, Player player, int page) {
        if (args.length == 4) {
            if (args[1].equals("remove")) {
                ClaimedResidence res = rmanager.getByName(args[2]);
                if (res != null) {
                    res.removeArea(player, args[3], resadmin);
                } else {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                }
                return true;
            } else if (args[1].equals("add")) {
                WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit");
                if (wep != null) {
                    if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) {
                        smanager.worldEdit(player);
                    }
                }
                if (smanager.hasPlacedBoth(player.getName())) {
                    ClaimedResidence res = rmanager.getByName(args[2]);
                    if (res != null) {
                        res.addArea(player, new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName())), args[3], resadmin);
                    } else {
                        player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                    }
                } else {
                    player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints"));
                }
                return true;
            } else if (args[1].equals("replace")) {
                WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit");
                if (wep != null) {
                    if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) {
                        smanager.worldEdit(player);
                    }
                }
                if (smanager.hasPlacedBoth(player.getName())) {
                    ClaimedResidence res = rmanager.getByName(args[2]);
                    if (res != null) {
                        res.replaceArea(player, new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName())), args[3], resadmin);
                    } else {
                        player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                    }
                } else {
                    player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints"));
                }
                return true;
            }
        }
        if ((args.length == 3 || args.length == 4) && args[1].equals("list")) {
            ClaimedResidence res = rmanager.getByName(args[2]);
            if (res != null) {
                res.printAreaList(player, page);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        else if ((args.length == 3 || args.length == 4) && args[1].equals("listall"))
        {
            ClaimedResidence res = rmanager.getByName(args[2]);
            if (res != null) {
                res.printAdvancedAreaList(player, page);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        return false;
    }

    private boolean commandResRemove(String[] args, boolean resadmin, CommandSender sender, int page) {
        Player player = null;
        if (sender instanceof Player) {
            player = (Player) sender;
            if (args.length == 1) {
                String area = rmanager.getNameByLoc(player.getLocation());
                if (area != null) {
                    ClaimedResidence res = rmanager.getByName(area);
                    if (res.getParent() != null) {
                        String[] split = area.split("\\.");
                        String words = split[split.length - 1];
                        if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
                            player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
                            deleteConfirm.put(player.getName(), area);
                        } else {
                            rmanager.removeResidence(player, area, resadmin);
                        }
                        return true;
                    } else {
                        if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
                            player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + area + ChatColor.RED));
                            deleteConfirm.put(player.getName(), area);
                        } else {
                            rmanager.removeResidence(player, area, resadmin);
                        }
                        return true;
                    }
                }
                return false;
            }
        }
        if (args.length != 2) {
            return false;
        }
        if (player != null) {
            if (!deleteConfirm.containsKey(player.getName()) || !args[1].equalsIgnoreCase(deleteConfirm.get(player.getName()))) {
                String words = "";
                if (rmanager.getByName(args[1]) != null) {
                    ClaimedResidence res = rmanager.getByName(args[1]);
                    if (res.getParent() != null) {
                        String[] split = args[1].split("\\.");
                        words = split[split.length - 1];
                    }
                }
                if (words == "") {
                    player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED));
                } else {
                    player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
                }
                deleteConfirm.put(player.getName(), args[1]);
            } else {
                rmanager.removeResidence(player, args[1], resadmin);
            }
        } else {
            if (!deleteConfirm.containsKey("Console") || !args[1].equalsIgnoreCase(deleteConfirm.get("Console"))) {
                String words = "";
                if (rmanager.getByName(args[1]) != null) {
                    ClaimedResidence res = rmanager.getByName(args[1]);
                    if (res.getParent() != null) {
                        String[] split = args[1].split("\\.");
                        words = split[split.length - 1];
                    }
                }
                if (words == "") {
                    server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED));
                } else {
                    server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED));
                }
                deleteConfirm.put("Console", args[1]);
            } else {
                rmanager.removeResidence(args[1]);
            }
        }
        return true;
    }

    private boolean commandResConfirm(String[] args, boolean resadmin, CommandSender sender, int page) {
        Player player = null;
        String name = "Console";
        if (sender instanceof Player) {
            player = (Player) sender;
            name = player.getName();
        }
        if (args.length == 1) {
            String area = deleteConfirm.get(name);
            if (area == null) {
                sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            } else {
                rmanager.removeResidence(player, area, resadmin);
                deleteConfirm.remove(name);
                if (player == null) {
                    sender.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN));
                }
            }
        }
        return true;
    }

    private boolean commandResSet(String[] args, boolean resadmin, Player player, int page) {
        if (args.length == 3) {
            String area = rmanager.getNameByLoc(player.getLocation());
            if (area != null) {
                rmanager.getByName(area).getPermissions().setFlag(player, args[1], args[2], resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        } else if (args.length == 4) {
            ClaimedResidence area = rmanager.getByName(args[1]);
            if (area != null) {
                area.getPermissions().setFlag(player, args[2], args[3], resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        return false;
    }

    private boolean commandResPset(String[] args, boolean resadmin, Player player, int page) {
        if (args.length == 3 && args[2].equalsIgnoreCase("removeall")) {
            ClaimedResidence area = rmanager.getByLoc(player.getLocation());
            if (area != null) {
                area.getPermissions().removeAllPlayerFlags(player, args[1], resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        } else if (args.length == 4 && args[3].equalsIgnoreCase("removeall")) {
            ClaimedResidence area = rmanager.getByName(args[1]);
            if (area != null) {
                area.getPermissions().removeAllPlayerFlags(player, args[2], resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        } else if (args.length == 4) {
            ClaimedResidence area = rmanager.getByLoc(player.getLocation());
            if (area != null) {
                area.getPermissions().setPlayerFlag(player, args[1], args[2], args[3], resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        } else if (args.length == 5) {
            ClaimedResidence area = rmanager.getByName(args[1]);
            if (area != null) {
                area.getPermissions().setPlayerFlag(player, args[2], args[3], args[4], resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        return false;
    }

    private boolean commandResGset(String[] args, boolean resadmin, Player player, int page) {
        if (args.length == 4) {
            ClaimedResidence area = rmanager.getByLoc(player.getLocation());
            if (area != null) {
                area.getPermissions().setGroupFlag(player, args[1], args[2], args[3], resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidArea"));
            }
            return true;
        } else if (args.length == 5) {
            ClaimedResidence area = rmanager.getByName(args[1]);
            if (area != null) {
                area.getPermissions().setGroupFlag(player, args[2], args[3], args[4], resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        return false;
    }

    private boolean commandResLset(String[] args, boolean resadmin, Player player, int page) {
        ClaimedResidence res = null;
        Material mat = null;
        String listtype = null;
        boolean showinfo = false;
        if (args.length == 2 && args[1].equals("info")) {
            res = rmanager.getByLoc(player.getLocation());
            showinfo = true;
        } else if (args.length == 3 && args[2].equals("info")) {
            res = rmanager.getByName(args[1]);
            showinfo = true;
        }
        if (showinfo) {
            if (res == null) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                return true;
            }
            player.sendMessage(ChatColor.RED + "Blacklist:");
            res.getItemBlacklist().printList(player);
            player.sendMessage(ChatColor.GREEN + "Ignorelist:");
            res.getItemIgnoreList().printList(player);
            return true;
        } else if (args.length == 4) {
            res = rmanager.getByName(args[1]);
            listtype = args[2];
            try {
                mat = Material.valueOf(args[3].toUpperCase());
            } catch (Exception ex) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial"));
                return true;
            }
        } else if (args.length == 3) {
            res = rmanager.getByLoc(player.getLocation());
            listtype = args[1];
            try {
                mat = Material.valueOf(args[2].toUpperCase());
            } catch (Exception ex) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial"));
                return true;
            }
        }
        if (res != null) {
            if (listtype.equalsIgnoreCase("blacklist")) {
                res.getItemBlacklist().playerListChange(player, mat, resadmin);
            } else if (listtype.equalsIgnoreCase("ignorelist")) {
                res.getItemIgnoreList().playerListChange(player, mat, resadmin);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidList"));
            }
            return true;
        } else {
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            return true;
        }
    }

    private boolean commandResBank(String[] args, boolean resadmin, Player player, int page) {
        if (args.length != 3) {
            return false;
        }
        ClaimedResidence res = rmanager.getByName(plistener.getCurrentResidenceName(player.getName()));
        if (res == null) {
            player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence"));
            return true;
        }
        int amount = 0;
        try {
            amount = Integer.parseInt(args[2]);
        } catch (Exception ex) {
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount"));
            return true;
        }
        if (args[1].equals("deposit")) {
            res.getBank().deposit(player, amount, resadmin);
        } else if (args[1].equals("withdraw")) {
            res.getBank().withdraw(player, amount, resadmin);
        } else {
            return false;
        }
        return true;
    }

    private boolean commandResLease(String[] args, boolean resadmin, Player player, int page) {
        if (args.length == 2 || args.length == 3) {
            if (args[1].equals("renew")) {
                if (args.length == 3) {
                    leasemanager.renewArea(args[2], player);
                } else {
                    leasemanager.renewArea(rmanager.getNameByLoc(player.getLocation()), player);
                }
                return true;
            } else if (args[1].equals("cost")) {
                if (args.length == 3) {
                    ClaimedResidence res = Residence.getResidenceManager().getByName(args[2]);
                    if (res == null || leasemanager.leaseExpires(args[2])) {
                        int cost = leasemanager.getRenewCost(res);
                        player.sendMessage(ChatColor.YELLOW + language.getPhrase("LeaseRenewalCost", ChatColor.RED + args[2] + ChatColor.YELLOW + "." + ChatColor.RED + cost + ChatColor.YELLOW));
                    } else {
                        player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire"));
                    }
                    return true;
                } else {
                    String area = rmanager.getNameByLoc(player.getLocation());
                    ClaimedResidence res = rmanager.getByName(area);
                    if (area == null || res == null) {
                        player.sendMessage(ChatColor.RED + language.getPhrase("InvalidArea"));
                        return true;
                    }
                    if (leasemanager.leaseExpires(area)) {
                        int cost = leasemanager.getRenewCost(res);
                        player.sendMessage(ChatColor.YELLOW + language.getPhrase("LeaseRenewalCost", ChatColor.RED + area + ChatColor.YELLOW + "." + ChatColor.RED + cost + ChatColor.YELLOW));
                    } else {
                        player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire"));
                    }
                    return true;
                }
            }
        } else if (args.length == 4) {
            if (args[1].equals("set")) {
                if (!resadmin) {
                    player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission"));
                    return true;
                }
                if (args[3].equals("infinite")) {
                    if (leasemanager.leaseExpires(args[2])) {
                        leasemanager.removeExpireTime(args[2]);
                        player.sendMessage(ChatColor.GREEN + language.getPhrase("LeaseInfinite"));
                    } else {
                        player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire"));
                    }
                    return true;
                } else {
                    int days;
                    try {
                        days = Integer.parseInt(args[3]);
                    } catch (Exception ex) {
                        player.sendMessage(ChatColor.RED + language.getPhrase("InvalidDays"));
                        return true;
                    }
                    leasemanager.setExpireTime(player, args[2], days);
                    return true;
                }
            }
        }
        return false;
    }

    private boolean commandResMarket(String[] args, boolean resadmin, Player player, int page) {
        if (args.length == 1) {
            return false;
        }
        String command = args[1].toLowerCase();
        if (command.equals("list")) {
            return commandResMarketList(args, resadmin, player, page);
        }
        if (command.equals("autorenew")) {
            return commandResMarketAutorenew(args, resadmin, player, page);
        }
        if (command.equals("rentable")) {
            return commandResMarketRentable(args, resadmin, player, page);
        }
        if (command.equals("rent")) {
            return commandResMarketRent(args, resadmin, player, page);
        }
        if (command.equals("release")) {
            if (args.length != 3) {
                return false;
            }
            if (rentmanager.isRented(args[2])) {
                rentmanager.removeFromForRent(player, args[2], resadmin);
            } else {
                rentmanager.unrent(player, args[2], resadmin);
            }
            return true;
        }
        if (command.equals("info")) {
            if (args.length == 2) {
                String areaname = rmanager.getNameByLoc(player.getLocation());
                tmanager.viewSaleInfo(areaname, player);
                if (cmanager.enabledRentSystem() && rentmanager.isForRent(areaname)) {
                    rentmanager.printRentInfo(player, areaname);
                }
            } else if (args.length == 3) {
                tmanager.viewSaleInfo(args[2], player);
                if (cmanager.enabledRentSystem() && rentmanager.isForRent(args[2])) {
                    rentmanager.printRentInfo(player, args[2]);
                }
            } else {
                return false;
            }
            return true;
        }
        if (command.equals("buy")) {
            if (args.length != 3) {
                return false;
            }
            tmanager.buyPlot(args[2], player, resadmin);
            return true;
        }
        if (command.equals("unsell")) {
            if (args.length != 3) {
                return false;
            }
            tmanager.removeFromSale(player, args[2], resadmin);
            return true;
        }
        if (command.equals("sell")) {
            if (args.length != 4) {
                return false;
            }
            int amount;
            try {
                amount = Integer.parseInt(args[3]);
            } catch (Exception ex) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount"));
                return true;
            }
            tmanager.putForSale(args[2], player, amount, resadmin);
            return true;
        }
        return false;
    }

    private boolean commandResMarketRent(String[] args, boolean resadmin, Player player, int page) {
        if (args.length < 3 || args.length > 4) {
            return false;
        }
        boolean repeat = false;
        if (args.length == 4) {
            if (args[3].equalsIgnoreCase("t") || args[3].equalsIgnoreCase("true")) {
                repeat = true;
            } else if (!args[3].equalsIgnoreCase("f") && !args[3].equalsIgnoreCase("false")) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean"));
                return true;
            }
        }
        rentmanager.rent(player, args[2], repeat, resadmin);
        return true;
    }

    private boolean commandResMarketRentable(String[] args, boolean resadmin, Player player, int page) {
        if (args.length < 5 || args.length > 6) {
            return false;
        }
        if (!cmanager.enabledRentSystem()) {
            player.sendMessage(ChatColor.RED + language.getPhrase("RentDisabled"));
            return true;
        }
        int days;
        int cost;
        try {
            cost = Integer.parseInt(args[3]);
        } catch (Exception ex) {
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidCost"));
            return true;
        }
        try {
            days = Integer.parseInt(args[4]);
        } catch (Exception ex) {
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidDays"));
            return true;
        }
        boolean repeat = false;
        if (args.length == 6) {
            if (args[5].equalsIgnoreCase("t") || args[5].equalsIgnoreCase("true")) {
                repeat = true;
            } else if (!args[5].equalsIgnoreCase("f") && !args[5].equalsIgnoreCase("false")) {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean"));
                return true;
            }
        }
        rentmanager.setForRent(player, args[2], cost, days, repeat, resadmin);
        return true;
    }

    private boolean commandResMarketAutorenew(String[] args, boolean resadmin, Player player, int page) {
        if (!cmanager.enableEconomy()) {
            player.sendMessage(ChatColor.RED + language.getPhrase("MarketDisabled"));
            return true;
        }
        if (args.length != 4) {
            return false;
        }
        boolean value;
        if (args[3].equalsIgnoreCase("true") || args[3].equalsIgnoreCase("t")) {
            value = true;
        } else if (args[3].equalsIgnoreCase("false") || args[3].equalsIgnoreCase("f")) {
            value = false;
        } else {
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean"));
            return true;
        }
        if (rentmanager.isRented(args[2]) && rentmanager.getRentingPlayer(args[2]).equalsIgnoreCase(player.getName())) {
            rentmanager.setRentedRepeatable(player, args[2], value, resadmin);
        } else if (rentmanager.isForRent(args[2])) {
            rentmanager.setRentRepeatable(player, args[2], value, resadmin);
        } else {
            player.sendMessage(ChatColor.RED + language.getPhrase("RentReleaseInvalid", ChatColor.YELLOW + args[2] + ChatColor.RED));
        }
        return true;
    }

    private boolean commandResMarketList(String[] args, boolean resadmin, Player player, int page) {
        if (!cmanager.enableEconomy()) {
            player.sendMessage(ChatColor.RED + language.getPhrase("MarketDisabled"));
            return true;
        }
        player.sendMessage(ChatColor.BLUE + "---" + language.getPhrase("MarketList") + "---");
        tmanager.printForSaleResidences(player);
        if (cmanager.enabledRentSystem()) {
            rentmanager.printRentableResidences(player);
        }
        return true;
    }

    private boolean commandResMessage(String[] args, boolean resadmin, Player player, int page) {
        ClaimedResidence res = null;
        int start = 0;
        boolean enter = false;
        if (args.length < 2) {
            return false;
        }
        if (args[1].equals("enter")) {
            enter = true;
            res = rmanager.getByLoc(player.getLocation());
            start = 2;
        } else if (args[1].equals("leave")) {
            res = rmanager.getByLoc(player.getLocation());
            start = 2;
        } else if (args[1].equals("remove")) {
            if (args.length > 2 && args[2].equals("enter")) {
                res = rmanager.getByLoc(player.getLocation());
                if (res != null) {
                    res.setEnterLeaveMessage(player, null, true, resadmin);
                } else {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                }
                return true;
            } else if (args.length > 2 && args[2].equals("leave")) {
                res = rmanager.getByLoc(player.getLocation());
                if (res != null) {
                    res.setEnterLeaveMessage(player, null, false, resadmin);
                } else {
                    player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
                }
                return true;
            }
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMessageType"));
            return true;
        } else if (args.length > 2 && args[2].equals("enter")) {
            enter = true;
            res = rmanager.getByName(args[1]);
            start = 3;
        } else if (args.length > 2 && args[2].equals("leave")) {
            res = rmanager.getByName(args[1]);
            start = 3;
        } else if (args.length > 2 && args[2].equals("remove")) {
            res = rmanager.getByName(args[1]);
            if (args.length != 4) {
                return false;
            }
            if (args[3].equals("enter")) {
                if (res != null) {
                    res.setEnterLeaveMessage(player, null, true, resadmin);
                }
                return true;
            } else if (args[3].equals("leave")) {
                if (res != null) {
                    res.setEnterLeaveMessage(player, null, false, resadmin);
                }
                return true;
            }
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMessageType"));
            return true;
        } else {
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMessageType"));
            return true;
        }
        if (start == 0) {
            return false;
        }
        String message = "";
        for (int i = start; i < args.length; i++) {
            message = message + args[i] + " ";
        }
        if (res != null) {
            res.setEnterLeaveMessage(player, message, enter, resadmin);
        } else {
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
        }
        return true;
    }

    private boolean commandResSublist(String[] args, boolean resadmin, Player player, int page) {
        if (args.length == 1 || args.length == 2 || args.length == 3) {
            ClaimedResidence res;
            if (args.length == 1) {
                res = rmanager.getByLoc(player.getLocation());
            } else {
                res = rmanager.getByName(args[1]);
            }
            if (res != null) {
                res.printSubzoneList(player, page);
            } else {
                player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
            }
            return true;
        }
        return false;
    }

    private boolean commandResCompass(String[] args, boolean resadmin, Player player, int page) {
        if (args.length != 2) {
            player.setCompassTarget(player.getWorld().getSpawnLocation());
            player.sendMessage(ChatColor.GREEN + language.getPhrase("CompassTargetReset"));
            return true;
        }
        if (rmanager.getByName(args[1]) != null) {
            if (rmanager.getByName(args[1]).getWorld().equalsIgnoreCase(player.getWorld().getName())) {
                Location low = rmanager.getByName(args[1]).getArea("main").getLowLoc();
                Location high = rmanager.getByName(args[1]).getArea("main").getHighLoc();
                Location mid = new Location(low.getWorld(), (low.getBlockX() + high.getBlockX()) / 2, (low.getBlockY() + high.getBlockY()) / 2, (low.getBlockZ() + high.getBlockZ()) / 2);
                player.setCompassTarget(mid);
                player.sendMessage(ChatColor.GREEN + language.getPhrase("CompassTargetSet", ChatColor.YELLOW + args[1] + ChatColor.GREEN));
            }
        } else {
            player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence"));
        }
        return true;
    }

    private boolean commandResGui(String[] args, boolean resadmin, Player player, int page) {
        if (slistener != null) {
            if (args.length == 1) {
                ResidenceSpout.showResidenceFlagGUI(SpoutManager.getPlayer(player), this, rmanager.getNameByLoc(player.getLocation()), resadmin);
            } else if (args.length == 2) {
                ResidenceSpout.showResidenceFlagGUI(SpoutManager.getPlayer(player), this, args[1], resadmin);
            }
        }
        return true;
    }

    private boolean commandResList(String[] args, boolean resadmin, Player player, int page) {
        if (args.length == 2) {
            if (args[1].equals("list")) {
                pmanager.printLists(player);
                return true;
            }
        } else if (args.length == 3) {
            if (args[1].equals("view")) {
                pmanager.printList(player, args[2]);
                return true;
            } else if (args[1].equals("remove")) {
                pmanager.removeList(player, args[2]);
                return true;
            } else if (args[1].equals("add")) {
                pmanager.makeList(player, args[2]);
                return true;
            }
        } else if (args.length == 4) {
            if (args[1].equals("apply")) {
                pmanager.applyListToResidence(player, args[2], args[3], resadmin);
                return true;
            }
        } else if (args.length == 5) {
            if (args[1].equals("set")) {
                pmanager.getList(player.getName(), args[2]).setFlag(args[3], FlagPermissions.stringToFlagState(args[4]));
                player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
                return true;
            }
        } else if (args.length == 6) {
            if (args[1].equals("gset")) {
                pmanager.getList(player.getName(), args[2]).setGroupFlag(args[3], args[4], FlagPermissions.stringToFlagState(args[5]));
                player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
                return true;
            } else if (args[1].equals("pset")) {
                pmanager.getList(player.getName(), args[2]).setPlayerFlag(args[3], args[4], FlagPermissions.stringToFlagState(args[5]));
                player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet"));
                return true;
            }
        }
        return false;
    }
}
TOP

Related Classes of com.bekvon.bukkit.residence.ResidenceCommandListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.