package org.bukkit.command.defaults; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import java.util.List; public abstract class VanillaCommand extends Command { static final int MAX_COORD = 30000000; static final int MIN_COORD_MINUS_ONE = -30000001; static final int MIN_COORD = -30000000; protected VanillaCommand(String name) { super(name); } protected VanillaCommand(String name, String description, String usageMessage, List<String> aliases) { super(name, description, usageMessage, aliases); } public boolean matches(String input) { return input.equalsIgnoreCase(this.getName()); } protected int getInteger(CommandSender sender, String value, int min) { return getInteger(sender, value, min, Integer.MAX_VALUE); } int getInteger(CommandSender sender, String value, int min, int max) { return getInteger(sender, value, min, max, false); } int getInteger(CommandSender sender, String value, int min, int max, boolean Throws) { int i = min; try { i = Integer.valueOf(value); } catch(NumberFormatException ex) { if(Throws) { throw new NumberFormatException(String.format("%s is not a valid number", value)); } } if(i < min) { i = min; } else if(i > max) { i = max; } return i; } Integer getInteger(String value) { try { return Integer.valueOf(value); } catch(NumberFormatException ex) { return null; } } public static double getRelativeDouble(double original, CommandSender sender, String input) { if(input.startsWith("~")) { double value = getDouble(sender, input.substring(1)); if(value == MIN_COORD_MINUS_ONE) { return MIN_COORD_MINUS_ONE; } return original + value; } else { return getDouble(sender, input); } } public static double getDouble(CommandSender sender, String input) { try { return Double.parseDouble(input); } catch(NumberFormatException ex) { return MIN_COORD_MINUS_ONE; } } public static double getDouble(CommandSender sender, String input, double min, double max) { double result = getDouble(sender, input); // TODO: This should throw an exception instead. if(result < min) { result = min; } else if(result > max) { result = max; } return result; } String createString(String[] args, int start) { return createString(args, start, " "); } String createString(String[] args, int start, String glue) { StringBuilder string = new StringBuilder(); for(int x = start; x < args.length; x++) { string.append(args[x]); if(x != args.length - 1) { string.append(glue); } } return string.toString(); } }