diff --git a/src/com/massivecraft/massivecore/command/type/TypeNameAbstract.java b/src/com/massivecraft/massivecore/command/type/TypeNameAbstract.java index b820871c..2b1b2451 100644 --- a/src/com/massivecraft/massivecore/command/type/TypeNameAbstract.java +++ b/src/com/massivecraft/massivecore/command/type/TypeNameAbstract.java @@ -3,6 +3,7 @@ package com.massivecraft.massivecore.command.type; import java.util.Collection; import java.util.Collections; +import com.massivecraft.massivecore.Named; import org.bukkit.command.CommandSender; import com.massivecraft.massivecore.MassiveException; @@ -16,7 +17,15 @@ public abstract class TypeNameAbstract extends TypeAbstract private final boolean strict; public boolean isStrict() { return this.strict; } public boolean isLenient() { return ! this.isStrict(); } - + + private Integer lengthMin = 1; + public Integer getLengthMin() { return this.lengthMin; } + public void setLengthMin(Integer lengthMin) { this.lengthMin = lengthMin; } + + private Integer lengthMax = null; + public Integer getLengthMax() { return this.lengthMax; } + public void setLengthMax(Integer lengthMax) { this.lengthMax = lengthMax; } + // -------------------------------------------- // // CONSTRUCT // -------------------------------------------- // @@ -42,20 +51,44 @@ public abstract class TypeNameAbstract extends TypeAbstract if (this.isNameTaken(arg)) throw new MassiveException().addMsg("The name \"%s\" is already in use.",arg); + Integer lengthMin = this.getLengthMin(); + if (lengthMin != null && arg.length() < lengthMin) + { + throw new MassiveException().addMsg("The name must be at least %d characters.", lengthMin); + } + + Integer lengthMax = this.getLengthMax(); + if (lengthMax != null && arg.length() >lengthMax) + { + throw new MassiveException().addMsg("The name must be at most %d characters.", lengthMax); + } + return arg; } - + @Override public Collection getTabList(CommandSender sender, String arg) { return Collections.emptyList(); } + + // -------------------------------------------- // + // METHODS + // -------------------------------------------- // + + public String getCurrentName(CommandSender sender) + { + Named named = this.getCurrent(sender); + if (named == null) return null; + return named.getName(); + } + // -------------------------------------------- // // ABSTRACT // -------------------------------------------- // - public abstract String getCurrentName(CommandSender sender); + public abstract Named getCurrent(CommandSender sender); public abstract boolean isNameTaken(String name);