Made it throw IllegalArugment exceptions instead of exceptions. Fixed previous commit
This commit is contained in:
		@@ -282,11 +282,11 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
    protected Disguise parseDisguise(CommandSender sender, String[] args,
 | 
			
		||||
            HashMap<DisguiseType, HashMap<ArrayList<String>, Boolean>> map) throws Exception {
 | 
			
		||||
        if (map.isEmpty()) {
 | 
			
		||||
            throw new Exception(ChatColor.RED + "You are forbidden to use this command.");
 | 
			
		||||
            throw new IllegalArgumentException(ChatColor.RED + "You are forbidden to use this command.");
 | 
			
		||||
        }
 | 
			
		||||
        if (args.length == 0) {
 | 
			
		||||
            sendCommandUsage(sender, map);
 | 
			
		||||
            throw new Exception();
 | 
			
		||||
            throw new IllegalArgumentException();
 | 
			
		||||
        }
 | 
			
		||||
        // How many args to skip due to the disugise being constructed
 | 
			
		||||
        // Time to start constructing the disguise.
 | 
			
		||||
@@ -299,10 +299,10 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
            if (sender.hasPermission("libsdisguises.disguise.disguiseclone")) {
 | 
			
		||||
                disguise = DisguiseUtilities.getClonedDisguise(args[0].toLowerCase());
 | 
			
		||||
                if (disguise == null) {
 | 
			
		||||
                    throw new Exception(ChatColor.RED + "Cannot find a disguise under the reference " + args[0]);
 | 
			
		||||
                    throw new IllegalArgumentException(ChatColor.RED + "Cannot find a disguise under the reference " + args[0]);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                throw new Exception(ChatColor.RED + "You do not have perimssion to use disguise references!");
 | 
			
		||||
                throw new IllegalArgumentException(ChatColor.RED + "You do not have perimssion to use disguise references!");
 | 
			
		||||
            }
 | 
			
		||||
            optionPermissions = (map.containsKey(disguise.getType()) ? map.get(disguise.getType())
 | 
			
		||||
                    : new HashMap<ArrayList<String>, Boolean>());
 | 
			
		||||
@@ -319,26 +319,27 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (disguiseType == null) {
 | 
			
		||||
                throw new Exception(ChatColor.RED + "Error! The disguise " + ChatColor.GREEN + args[0] + ChatColor.RED
 | 
			
		||||
                        + " doesn't exist!");
 | 
			
		||||
                throw new IllegalArgumentException(ChatColor.RED + "Error! The disguise " + ChatColor.GREEN + args[0]
 | 
			
		||||
                        + ChatColor.RED + " doesn't exist!");
 | 
			
		||||
            }
 | 
			
		||||
            if (disguiseType.getEntityType() == null) {
 | 
			
		||||
                throw new Exception(ChatColor.RED + "Error! This version of minecraft does not have that disguise!");
 | 
			
		||||
                throw new IllegalArgumentException(ChatColor.RED
 | 
			
		||||
                        + "Error! This version of minecraft does not have that disguise!");
 | 
			
		||||
            }
 | 
			
		||||
            if (!map.containsKey(disguiseType)) {
 | 
			
		||||
                throw new Exception(ChatColor.RED + "You are forbidden to use this disguise.");
 | 
			
		||||
                throw new IllegalArgumentException(ChatColor.RED + "You are forbidden to use this disguise.");
 | 
			
		||||
            }
 | 
			
		||||
            optionPermissions = map.get(disguiseType);
 | 
			
		||||
            HashMap<String, Boolean> disguiseOptions = this.getDisguisePermission(sender, disguiseType);
 | 
			
		||||
            if (disguiseType.isPlayer()) {// If he is doing a player disguise
 | 
			
		||||
                if (args.length == 1) {
 | 
			
		||||
                    // He needs to give the player name
 | 
			
		||||
                    throw new Exception(ChatColor.RED + "Error! You need to give a player name!");
 | 
			
		||||
                    throw new IllegalArgumentException(ChatColor.RED + "Error! You need to give a player name!");
 | 
			
		||||
                } else {
 | 
			
		||||
                    if (!disguiseOptions.isEmpty()
 | 
			
		||||
                            && (!disguiseOptions.containsKey(args[1].toLowerCase()) || !disguiseOptions
 | 
			
		||||
                                    .get(args[1].toLowerCase()))) {
 | 
			
		||||
                        throw new Exception(ChatColor.RED + "Error! You don't have permission to use that name!");
 | 
			
		||||
                        throw new IllegalArgumentException(ChatColor.RED + "Error! You don't have permission to use that name!");
 | 
			
		||||
                    }
 | 
			
		||||
                    // Construct the player disguise
 | 
			
		||||
                    disguise = new PlayerDisguise(ChatColor.translateAlternateColorCodes('&', args[1]));
 | 
			
		||||
@@ -396,7 +397,7 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                            case WITHER_SKULL:
 | 
			
		||||
                                break;
 | 
			
		||||
                            default:
 | 
			
		||||
                                throw new Exception(ChatColor.RED + "Error! " + disguiseType.toReadable()
 | 
			
		||||
                                throw new IllegalArgumentException(ChatColor.RED + "Error! " + disguiseType.toReadable()
 | 
			
		||||
                                        + " doesn't know what to do with " + args[1] + "!");
 | 
			
		||||
                            }
 | 
			
		||||
                            toSkip++;
 | 
			
		||||
@@ -407,7 +408,7 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                            }
 | 
			
		||||
                            if (secondArg != null) {
 | 
			
		||||
                                if (disguiseType != DisguiseType.FALLING_BLOCK && disguiseType != DisguiseType.DROPPED_ITEM) {
 | 
			
		||||
                                    throw new Exception(ChatColor.RED + "Error! Only the disguises "
 | 
			
		||||
                                    throw new IllegalArgumentException(ChatColor.RED + "Error! Only the disguises "
 | 
			
		||||
                                            + DisguiseType.FALLING_BLOCK.toReadable() + " and "
 | 
			
		||||
                                            + DisguiseType.DROPPED_ITEM.toReadable() + " uses a second number!");
 | 
			
		||||
                                }
 | 
			
		||||
@@ -425,8 +426,9 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                            toCheck += ":" + miscData;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (!disguiseOptions.containsKey(toCheck) || !disguiseOptions.get(toCheck)) {
 | 
			
		||||
                            throw new Exception(ChatColor.RED + "Error! You do not have permission to use the parameter "
 | 
			
		||||
                                    + toCheck + " on the " + disguiseType.toReadable() + " disguise!");
 | 
			
		||||
                            throw new IllegalArgumentException(ChatColor.RED
 | 
			
		||||
                                    + "Error! You do not have permission to use the parameter " + toCheck + " on the "
 | 
			
		||||
                                    + disguiseType.toReadable() + " disguise!");
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    if (miscId != -1) {
 | 
			
		||||
@@ -456,7 +458,7 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
            String valueString = (args.length - 1 == i ? null : args[i + 1]);
 | 
			
		||||
            Method methodToUse = null;
 | 
			
		||||
            Object value = null;
 | 
			
		||||
            Exception storedEx = null;
 | 
			
		||||
            IllegalArgumentException storedEx = null;
 | 
			
		||||
            for (Method method : methods) {
 | 
			
		||||
                if (!method.getName().startsWith("get") && method.getName().equalsIgnoreCase(methodName)
 | 
			
		||||
                        && method.getAnnotation(Deprecated.class) == null && method.getParameterTypes().length == 1) {
 | 
			
		||||
@@ -465,19 +467,7 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                        methodName = methodToUse.getName();
 | 
			
		||||
                        Class<?>[] types = methodToUse.getParameterTypes();
 | 
			
		||||
                        Class param = types[0];
 | 
			
		||||
                        if (boolean.class == param) {
 | 
			
		||||
                            // Parse to boolean
 | 
			
		||||
                            if (valueString == null
 | 
			
		||||
                                    || !("true".equalsIgnoreCase(valueString) || "false".equalsIgnoreCase(valueString))) {
 | 
			
		||||
                                value = true;
 | 
			
		||||
                                i--;
 | 
			
		||||
                            } else {
 | 
			
		||||
                                value = "true".equalsIgnoreCase(valueString);
 | 
			
		||||
                            }
 | 
			
		||||
                        } else {
 | 
			
		||||
                            if (valueString == null) {
 | 
			
		||||
                                throw new Exception(ChatColor.RED + "No value was given for the option " + methodName);
 | 
			
		||||
                            }
 | 
			
		||||
                        if (valueString != null) {
 | 
			
		||||
                            if (int.class == param) {
 | 
			
		||||
                                // Parse to integer
 | 
			
		||||
                                if (isNumeric(valueString)) {
 | 
			
		||||
@@ -512,7 +502,7 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                                try {
 | 
			
		||||
                                    value = parseToItemstack(valueString);
 | 
			
		||||
                                } catch (Exception ex) {
 | 
			
		||||
                                    throw new Exception(String.format(ex.getMessage(), methodName));
 | 
			
		||||
                                    throw new IllegalArgumentException(String.format(ex.getMessage(), methodName));
 | 
			
		||||
                                }
 | 
			
		||||
                            } else if (param == ItemStack[].class) {
 | 
			
		||||
                                // Parse to itemstack array
 | 
			
		||||
@@ -555,7 +545,7 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                                        potionType = PotionEffectType.getById(Integer.parseInt(valueString));
 | 
			
		||||
                                    }
 | 
			
		||||
                                    if (potionType == null)
 | 
			
		||||
                                        throw new Exception();
 | 
			
		||||
                                        throw new IllegalArgumentException();
 | 
			
		||||
                                    value = potionType;
 | 
			
		||||
                                } catch (Exception ex) {
 | 
			
		||||
                                    throw parseToException("a potioneffect type", valueString, methodName);
 | 
			
		||||
@@ -575,17 +565,32 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                                try {
 | 
			
		||||
                                    BlockFace face = BlockFace.valueOf(valueString.toUpperCase());
 | 
			
		||||
                                    if (face.ordinal() > 3)
 | 
			
		||||
                                        throw new Exception();
 | 
			
		||||
                                        throw new IllegalArgumentException();
 | 
			
		||||
                                    value = face;
 | 
			
		||||
                                } catch (Exception ex) {
 | 
			
		||||
                                    throw parseToException("a direction (north, east, south, west)", valueString, methodName);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        break;
 | 
			
		||||
                    } catch (Exception ex) {
 | 
			
		||||
                        methodToUse = null;
 | 
			
		||||
                        if (value == null && boolean.class == param) {
 | 
			
		||||
                            // Parse to boolean
 | 
			
		||||
                            if (valueString == null
 | 
			
		||||
                                    || !("true".equalsIgnoreCase(valueString) || "false".equalsIgnoreCase(valueString))) {
 | 
			
		||||
                                value = true;
 | 
			
		||||
                                i--;
 | 
			
		||||
                            } else {
 | 
			
		||||
                                value = "true".equalsIgnoreCase(valueString);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        if (value != null) {
 | 
			
		||||
                            break;
 | 
			
		||||
                        }
 | 
			
		||||
                    } catch (IllegalArgumentException ex) {
 | 
			
		||||
                        storedEx = ex;
 | 
			
		||||
                        methodToUse = null;
 | 
			
		||||
                    } catch (Exception ex) {
 | 
			
		||||
                        ex.printStackTrace();
 | 
			
		||||
                        methodToUse = null;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@@ -593,7 +598,10 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
                if (storedEx != null) {
 | 
			
		||||
                    throw storedEx;
 | 
			
		||||
                }
 | 
			
		||||
                throw new Exception(ChatColor.RED + "Cannot find the option " + methodName);
 | 
			
		||||
                throw new IllegalArgumentException(ChatColor.RED + "Cannot find the option " + methodName);
 | 
			
		||||
            }
 | 
			
		||||
            if (value == null) {
 | 
			
		||||
                throw new IllegalArgumentException(ChatColor.RED + "No value was given for the option " + methodName);
 | 
			
		||||
            }
 | 
			
		||||
            if (!usedOptions.contains(methodName.toLowerCase())) {
 | 
			
		||||
                usedOptions.add(methodName.toLowerCase());
 | 
			
		||||
@@ -637,14 +645,15 @@ public abstract class BaseDisguiseCommand implements CommandExecutor {
 | 
			
		||||
 | 
			
		||||
    private void doCheck(HashMap<ArrayList<String>, Boolean> optionPermissions, ArrayList<String> usedOptions) throws Exception {
 | 
			
		||||
        if (!passesCheck(optionPermissions, usedOptions)) {
 | 
			
		||||
            throw new Exception(ChatColor.RED + "You do not have the permission to use the option "
 | 
			
		||||
            throw new IllegalArgumentException(ChatColor.RED + "You do not have the permission to use the option "
 | 
			
		||||
                    + usedOptions.get(usedOptions.size() - 1));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Exception parseToException(String expectedValue, String receivedInstead, String methodName) {
 | 
			
		||||
        return new Exception(ChatColor.RED + "Expected " + ChatColor.GREEN + expectedValue + ChatColor.RED + ", received "
 | 
			
		||||
                + ChatColor.GREEN + receivedInstead + ChatColor.RED + " instead for " + ChatColor.GREEN + methodName);
 | 
			
		||||
    private IllegalArgumentException parseToException(String expectedValue, String receivedInstead, String methodName) {
 | 
			
		||||
        return new IllegalArgumentException(ChatColor.RED + "Expected " + ChatColor.GREEN + expectedValue + ChatColor.RED
 | 
			
		||||
                + ", received " + ChatColor.GREEN + receivedInstead + ChatColor.RED + " instead for " + ChatColor.GREEN
 | 
			
		||||
                + methodName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private ItemStack parseToItemstack(String string) throws Exception {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user