diff --git a/src/com/massivecraft/factions/cmd/CmdFactionsCreate.java b/src/com/massivecraft/factions/cmd/CmdFactionsCreate.java index f31ff844..3b0d352e 100644 --- a/src/com/massivecraft/factions/cmd/CmdFactionsCreate.java +++ b/src/com/massivecraft/factions/cmd/CmdFactionsCreate.java @@ -3,6 +3,7 @@ package com.massivecraft.factions.cmd; import com.massivecraft.factions.Factions; import com.massivecraft.factions.Rel; import com.massivecraft.factions.cmd.req.ReqHasntFaction; +import com.massivecraft.factions.cmd.type.TypeFactionNameStrict; import com.massivecraft.factions.entity.Faction; import com.massivecraft.factions.entity.FactionColl; import com.massivecraft.factions.entity.MConf; @@ -10,13 +11,10 @@ import com.massivecraft.factions.event.EventFactionsCreate; import com.massivecraft.factions.event.EventFactionsMembershipChange; import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason; import com.massivecraft.massivecore.MassiveException; -import com.massivecraft.massivecore.command.type.primitive.TypeString; import com.massivecraft.massivecore.mson.Mson; import com.massivecraft.massivecore.store.MStore; import org.bukkit.ChatColor; -import java.util.ArrayList; - public class CmdFactionsCreate extends FactionsCommand { // -------------------------------------------- // @@ -27,14 +25,14 @@ public class CmdFactionsCreate extends FactionsCommand { // Aliases this.addAliases("new"); - + // Parameters - this.addParameter(TypeString.get(), "name"); - + this.addParameter(TypeFactionNameStrict.get(), "name"); + // Requirements this.addRequirements(ReqHasntFaction.get()); } - + // -------------------------------------------- // // OVERRIDE // -------------------------------------------- // @@ -45,20 +43,6 @@ public class CmdFactionsCreate extends FactionsCommand // Args String newName = this.readArg(); - // Verify - if (FactionColl.get().isNameTaken(newName)) - { - msg("That name is already in use."); - return; - } - - ArrayList nameValidationErrors = FactionColl.get().validateName(newName); - if (nameValidationErrors.size() > 0) - { - message(nameValidationErrors); - return; - } - // Pre-Generate Id String factionId = MStore.createId(); @@ -81,11 +65,11 @@ public class CmdFactionsCreate extends FactionsCommand // Inform msg("You created the faction %s", faction.getName(msender)); message(Mson.mson(mson("You should now: ").color(ChatColor.YELLOW), CmdFactions.get().cmdFactionsDescription.getTemplate())); - + // Log if (MConf.get().logFactionCreate) { - Factions.get().log(msender.getName()+" created a new faction: "+newName); + Factions.get().log(msender.getName() + " created a new faction: " + newName); } } diff --git a/src/com/massivecraft/factions/cmd/CmdFactionsName.java b/src/com/massivecraft/factions/cmd/CmdFactionsName.java index bdf56ffa..3511a56e 100644 --- a/src/com/massivecraft/factions/cmd/CmdFactionsName.java +++ b/src/com/massivecraft/factions/cmd/CmdFactionsName.java @@ -1,6 +1,7 @@ package com.massivecraft.factions.cmd; import com.massivecraft.factions.cmd.type.TypeFaction; +import com.massivecraft.factions.cmd.type.TypeFactionNameLenient; import com.massivecraft.factions.entity.Faction; import com.massivecraft.factions.entity.FactionColl; import com.massivecraft.factions.entity.MPerm; @@ -20,7 +21,7 @@ public class CmdFactionsName extends FactionsCommand public CmdFactionsName() { // Parameters - this.addParameter(TypeString.get(), "new name"); + this.addParameter(TypeFactionNameLenient.get(), "new name"); this.addParameter(TypeFaction.get(), "faction", "you"); } @@ -38,21 +39,6 @@ public class CmdFactionsName extends FactionsCommand // MPerm if ( ! MPerm.getPermName().has(msender, faction, true)) return; - // TODO does not first test cover selfcase? - if (FactionColl.get().isNameTaken(newName) && ! MiscUtil.getComparisonString(newName).equals(faction.getComparisonName())) - { - msg("That name is already taken"); - return; - } - - ArrayList errors = new ArrayList<>(); - errors.addAll(FactionColl.get().validateName(newName)); - if (errors.size() > 0) - { - message(errors); - return; - } - // Event EventFactionsNameChange event = new EventFactionsNameChange(sender, faction, newName); event.run(); diff --git a/src/com/massivecraft/factions/cmd/type/TypeFactionNameAbstract.java b/src/com/massivecraft/factions/cmd/type/TypeFactionNameAbstract.java new file mode 100644 index 00000000..f278c00a --- /dev/null +++ b/src/com/massivecraft/factions/cmd/type/TypeFactionNameAbstract.java @@ -0,0 +1,59 @@ +package com.massivecraft.factions.cmd.type; + +import com.massivecraft.factions.entity.Faction; +import com.massivecraft.factions.entity.FactionColl; +import com.massivecraft.factions.entity.MConf; +import com.massivecraft.factions.entity.MPlayer; +import com.massivecraft.factions.util.MiscUtil; +import com.massivecraft.massivecore.Named; +import com.massivecraft.massivecore.command.type.TypeNameAbstract; +import org.bukkit.command.CommandSender; + +public class TypeFactionNameAbstract extends TypeNameAbstract +{ + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public TypeFactionNameAbstract(boolean strict) + { + super(strict); + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public Named getCurrent(CommandSender sender) + { + MPlayer mplayer = MPlayer.get(sender); + Faction faction = mplayer.getFaction(); + return faction; + } + + @Override + public boolean isNameTaken(String name) + { + return FactionColl.get().isNameTaken(name); + } + + @Override + public boolean isCharacterAllowed(char character) + { + return MiscUtil.substanceChars.contains(String.valueOf(character)); + } + + @Override + public Integer getLengthMin() + { + return MConf.get().factionNameLengthMin; + } + + @Override + public Integer getLengthMax() + { + return MConf.get().factionNameLengthMax; + } + +} diff --git a/src/com/massivecraft/factions/cmd/type/TypeFactionNameLenient.java b/src/com/massivecraft/factions/cmd/type/TypeFactionNameLenient.java new file mode 100644 index 00000000..42cd0e93 --- /dev/null +++ b/src/com/massivecraft/factions/cmd/type/TypeFactionNameLenient.java @@ -0,0 +1,16 @@ +package com.massivecraft.factions.cmd.type; + +public class TypeFactionNameLenient extends TypeFactionNameAbstract +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static TypeFactionNameLenient i = new TypeFactionNameLenient(); + public static TypeFactionNameLenient get() { return i; } + public TypeFactionNameLenient() + { + super(false); + } + +} diff --git a/src/com/massivecraft/factions/cmd/type/TypeFactionNameStrict.java b/src/com/massivecraft/factions/cmd/type/TypeFactionNameStrict.java new file mode 100644 index 00000000..476a4c82 --- /dev/null +++ b/src/com/massivecraft/factions/cmd/type/TypeFactionNameStrict.java @@ -0,0 +1,16 @@ +package com.massivecraft.factions.cmd.type; + +public class TypeFactionNameStrict extends TypeFactionNameAbstract +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static TypeFactionNameStrict i = new TypeFactionNameStrict(); + public static TypeFactionNameStrict get() {return i; } + public TypeFactionNameStrict() + { + super(true); + } + +} diff --git a/src/com/massivecraft/factions/entity/FactionColl.java b/src/com/massivecraft/factions/entity/FactionColl.java index 61a8019a..af50ae79 100644 --- a/src/com/massivecraft/factions/entity/FactionColl.java +++ b/src/com/massivecraft/factions/entity/FactionColl.java @@ -207,41 +207,6 @@ public class FactionColl extends Coll } } - // -------------------------------------------- // - // FACTION NAME - // -------------------------------------------- // - - public ArrayList validateName(String str) - { - // Create - ArrayList errors = new ArrayList<>(); - - // Fill - // Check minimum length - if (MiscUtil.getComparisonString(str).length() < MConf.get().factionNameLengthMin) - { - errors.add(Txt.parse("The faction name can't be shorter than %s chars.", MConf.get().factionNameLengthMin)); - } - - // Check maximum length - if (str.length() > MConf.get().factionNameLengthMax) - { - errors.add(Txt.parse("The faction name can't be longer than %s chars.", MConf.get().factionNameLengthMax)); - } - - // Check characters used - for (char c : str.toCharArray()) - { - if (!MiscUtil.substanceChars.contains(String.valueOf(c))) - { - errors.add(Txt.parse("Faction name must be alphanumeric. \"%s\" is not allowed.", c)); - } - } - - // Return - return errors; - } - @Override public Faction getByName(String name) {