diff --git a/src/me/libraryaddict/disguise/utilities/BaseDisguiseCommand.java b/src/me/libraryaddict/disguise/utilities/BaseDisguiseCommand.java index 6fb61f8e..a4866133 100644 --- a/src/me/libraryaddict/disguise/utilities/BaseDisguiseCommand.java +++ b/src/me/libraryaddict/disguise/utilities/BaseDisguiseCommand.java @@ -279,130 +279,130 @@ public abstract class BaseDisguiseCommand implements CommandExecutor { if (!method.getName().startsWith("get") && method.getName().equalsIgnoreCase(methodName) && method.getAnnotation(Deprecated.class) == null && method.getParameterTypes().length == 1) { methodToUse = method; - methodName = method.getName(); - Class[] types = method.getParameterTypes(); - if (types.length == 1) { - Class param = types[0]; - // Parse to number - if (int.class == param) { - if (isNumeric(valueString)) { - value = (int) Integer.parseInt(valueString); - } else { - throw parseToException("number", valueString, methodName); - } - // Parse to boolean - } else if (float.class == param || double.class == param) { - if (isDouble(valueString)) { - float obj = Float.parseFloat(valueString); - if (param == float.class) { - value = (float) obj; - } else if (param == int.class) { - value = (int) obj; - } else if (param == double.class) { - value = (double) obj; - } - } else { - throw parseToException("number.0", valueString, methodName); - } - // Parse to boolean - } else if (boolean.class == param) { - if (!("true".equalsIgnoreCase(valueString) || "false".equalsIgnoreCase(valueString))) - throw parseToException("true/false", valueString, methodName); - value = (boolean) "true".equalsIgnoreCase(valueString); - // Parse to string - } else if (param == String.class) { - value = ChatColor.translateAlternateColorCodes('&', valueString); - // Parse to animal color - } else if (param == AnimalColor.class) { - try { - value = AnimalColor.valueOf(valueString.toUpperCase()); - } catch (Exception ex) { - throw parseToException("animal color", valueString, methodName); - } - // Parse to itemstack - } else if (param == ItemStack.class) { - try { - value = parseToItemstack(valueString); - } catch (Exception ex) { - throw new Exception(String.format(ex.getMessage(), methodName)); - } - // Parse to itemstack array - } else if (param == ItemStack[].class) { - ItemStack[] items = new ItemStack[4]; - String[] split = valueString.split(","); - if (split.length == 4) { - for (int a = 0; a < 4; a++) { - try { - ItemStack item = parseToItemstack(split[a]); - items[a] = item; - } catch (Exception ex) { - throw parseToException("item ID,ID,ID,ID" + ChatColor.RED + " or " + ChatColor.GREEN - + "ID:Data,ID:Data,ID:Data,ID:Data combo", valueString, methodName); - } - } - } else { - throw parseToException("item ID,ID,ID,ID" + ChatColor.RED + " or " + ChatColor.GREEN - + "ID:Data,ID:Data,ID:Data,ID:Data combo", valueString, methodName); - } - value = items; - // Parse to horse color - } else if (param.getSimpleName().equals("Color")) { - try { - value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); - } catch (Exception ex) { - throw parseToException("a horse color", valueString, methodName); - } - // Parse to horse style - } else if (param.getSimpleName().equals("Style")) { - try { - value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); - } catch (Exception ex) { - throw parseToException("a horse style", valueString, methodName); - } - // Parse to villager profession - } else if (param.getSimpleName().equals("Profession")) { - try { - value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); - } catch (Exception ex) { - throw parseToException("a villager profession", valueString, methodName); - } - // Parse to ocelot type - } else if (param.getSimpleName().equals("Art")) { - try { - value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); - } catch (Exception ex) { - ex.printStackTrace(); - throw parseToException("a painting art", valueString, methodName); - } - // Parse to ocelot type - } else if (param.getSimpleName().equals("Type")) { - try { - value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); - } catch (Exception ex) { - throw parseToException("a ocelot type", valueString, methodName); - } - - // Parse to potion effect - } else if (param == PotionEffectType.class) { - try { - PotionEffectType potionType = PotionEffectType.getByName(valueString.toUpperCase()); - if (potionType == null && isNumeric(valueString)) { - potionType = PotionEffectType.getById(Integer.parseInt(valueString)); - } - if (potionType == null) - throw new Exception(); - value = potionType; - } catch (Exception ex) { - throw parseToException("a potioneffect type", valueString, methodName); - } - } - } break; } } if (methodToUse == null) { throw new Exception(ChatColor.RED + "Cannot find the option " + methodName); } + methodName = methodToUse.getName(); + Class[] types = methodToUse.getParameterTypes(); + if (types.length == 1) { + Class param = types[0]; + // Parse to number + if (int.class == param) { + if (isNumeric(valueString)) { + value = (int) Integer.parseInt(valueString); + } else { + throw parseToException("number", valueString, methodName); + } + // Parse to boolean + } else if (float.class == param || double.class == param) { + if (isDouble(valueString)) { + float obj = Float.parseFloat(valueString); + if (param == float.class) { + value = (float) obj; + } else if (param == int.class) { + value = (int) obj; + } else if (param == double.class) { + value = (double) obj; + } + } else { + throw parseToException("number.0", valueString, methodName); + } + // Parse to boolean + } else if (boolean.class == param) { + if (!("true".equalsIgnoreCase(valueString) || "false".equalsIgnoreCase(valueString))) + throw parseToException("true/false", valueString, methodName); + value = (boolean) "true".equalsIgnoreCase(valueString); + // Parse to string + } else if (param == String.class) { + value = ChatColor.translateAlternateColorCodes('&', valueString); + // Parse to animal color + } else if (param == AnimalColor.class) { + try { + value = AnimalColor.valueOf(valueString.toUpperCase()); + } catch (Exception ex) { + throw parseToException("animal color", valueString, methodName); + } + // Parse to itemstack + } else if (param == ItemStack.class) { + try { + value = parseToItemstack(valueString); + } catch (Exception ex) { + throw new Exception(String.format(ex.getMessage(), methodName)); + } + // Parse to itemstack array + } else if (param == ItemStack[].class) { + ItemStack[] items = new ItemStack[4]; + String[] split = valueString.split(","); + if (split.length == 4) { + for (int a = 0; a < 4; a++) { + try { + ItemStack item = parseToItemstack(split[a]); + items[a] = item; + } catch (Exception ex) { + throw parseToException("item ID,ID,ID,ID" + ChatColor.RED + " or " + ChatColor.GREEN + + "ID:Data,ID:Data,ID:Data,ID:Data combo", valueString, methodName); + } + } + } else { + throw parseToException("item ID,ID,ID,ID" + ChatColor.RED + " or " + ChatColor.GREEN + + "ID:Data,ID:Data,ID:Data,ID:Data combo", valueString, methodName); + } + value = items; + // Parse to horse color + } else if (param.getSimpleName().equals("Color")) { + try { + value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); + } catch (Exception ex) { + throw parseToException("a horse color", valueString, methodName); + } + // Parse to horse style + } else if (param.getSimpleName().equals("Style")) { + try { + value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); + } catch (Exception ex) { + throw parseToException("a horse style", valueString, methodName); + } + // Parse to villager profession + } else if (param.getSimpleName().equals("Profession")) { + try { + value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); + } catch (Exception ex) { + throw parseToException("a villager profession", valueString, methodName); + } + // Parse to ocelot type + } else if (param.getSimpleName().equals("Art")) { + try { + value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); + } catch (Exception ex) { + ex.printStackTrace(); + throw parseToException("a painting art", valueString, methodName); + } + // Parse to ocelot type + } else if (param.getSimpleName().equals("Type")) { + try { + value = param.getMethod("valueOf", String.class).invoke(null, valueString.toUpperCase()); + } catch (Exception ex) { + throw parseToException("a ocelot type", valueString, methodName); + } + + // Parse to potion effect + } else if (param == PotionEffectType.class) { + try { + PotionEffectType potionType = PotionEffectType.getByName(valueString.toUpperCase()); + if (potionType == null && isNumeric(valueString)) { + potionType = PotionEffectType.getById(Integer.parseInt(valueString)); + } + if (potionType == null) + throw new Exception(); + value = potionType; + } catch (Exception ex) { + throw parseToException("a potioneffect type", valueString, methodName); + } + } + } if (!usedOptions.contains(methodName.toLowerCase())) { usedOptions.add(methodName.toLowerCase()); }