Updated Faction Name constraints
This commit is contained in:
		
							parent
							
								
									c1d322a723
								
							
						
					
					
						commit
						fa4b850b01
					
				@ -3,6 +3,7 @@ package com.massivecraft.factions.cmd;
 | 
				
			|||||||
import com.massivecraft.factions.Factions;
 | 
					import com.massivecraft.factions.Factions;
 | 
				
			||||||
import com.massivecraft.factions.Rel;
 | 
					import com.massivecraft.factions.Rel;
 | 
				
			||||||
import com.massivecraft.factions.cmd.req.ReqHasntFaction;
 | 
					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.Faction;
 | 
				
			||||||
import com.massivecraft.factions.entity.FactionColl;
 | 
					import com.massivecraft.factions.entity.FactionColl;
 | 
				
			||||||
import com.massivecraft.factions.entity.MConf;
 | 
					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;
 | 
				
			||||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
 | 
					import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
 | 
				
			||||||
import com.massivecraft.massivecore.MassiveException;
 | 
					import com.massivecraft.massivecore.MassiveException;
 | 
				
			||||||
import com.massivecraft.massivecore.command.type.primitive.TypeString;
 | 
					 | 
				
			||||||
import com.massivecraft.massivecore.mson.Mson;
 | 
					import com.massivecraft.massivecore.mson.Mson;
 | 
				
			||||||
import com.massivecraft.massivecore.store.MStore;
 | 
					import com.massivecraft.massivecore.store.MStore;
 | 
				
			||||||
import org.bukkit.ChatColor;
 | 
					import org.bukkit.ChatColor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class CmdFactionsCreate extends FactionsCommand
 | 
					public class CmdFactionsCreate extends FactionsCommand
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
@ -29,7 +27,7 @@ public class CmdFactionsCreate extends FactionsCommand
 | 
				
			|||||||
		this.addAliases("new");
 | 
							this.addAliases("new");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// Parameters
 | 
							// Parameters
 | 
				
			||||||
		this.addParameter(TypeString.get(), "name");
 | 
							this.addParameter(TypeFactionNameStrict.get(), "name");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// Requirements
 | 
							// Requirements
 | 
				
			||||||
		this.addRequirements(ReqHasntFaction.get());
 | 
							this.addRequirements(ReqHasntFaction.get());
 | 
				
			||||||
@ -45,20 +43,6 @@ public class CmdFactionsCreate extends FactionsCommand
 | 
				
			|||||||
		// Args
 | 
							// Args
 | 
				
			||||||
		String newName = this.readArg();
 | 
							String newName = this.readArg();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// Verify
 | 
					 | 
				
			||||||
		if (FactionColl.get().isNameTaken(newName))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			msg("<b>That name is already in use.");
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		ArrayList<String> nameValidationErrors = FactionColl.get().validateName(newName);
 | 
					 | 
				
			||||||
		if (nameValidationErrors.size() > 0)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			message(nameValidationErrors);
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Pre-Generate Id
 | 
							// Pre-Generate Id
 | 
				
			||||||
		String factionId = MStore.createId();
 | 
							String factionId = MStore.createId();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
package com.massivecraft.factions.cmd;
 | 
					package com.massivecraft.factions.cmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.massivecraft.factions.cmd.type.TypeFaction;
 | 
					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.Faction;
 | 
				
			||||||
import com.massivecraft.factions.entity.FactionColl;
 | 
					import com.massivecraft.factions.entity.FactionColl;
 | 
				
			||||||
import com.massivecraft.factions.entity.MPerm;
 | 
					import com.massivecraft.factions.entity.MPerm;
 | 
				
			||||||
@ -20,7 +21,7 @@ public class CmdFactionsName extends FactionsCommand
 | 
				
			|||||||
	public CmdFactionsName()
 | 
						public CmdFactionsName()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		// Parameters
 | 
							// Parameters
 | 
				
			||||||
		this.addParameter(TypeString.get(), "new name");
 | 
							this.addParameter(TypeFactionNameLenient.get(), "new name");
 | 
				
			||||||
		this.addParameter(TypeFaction.get(), "faction", "you");
 | 
							this.addParameter(TypeFaction.get(), "faction", "you");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -38,21 +39,6 @@ public class CmdFactionsName extends FactionsCommand
 | 
				
			|||||||
		// MPerm
 | 
							// MPerm
 | 
				
			||||||
		if ( ! MPerm.getPermName().has(msender, faction, true)) return;
 | 
							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("<b>That name is already taken");
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		ArrayList<String> errors = new ArrayList<>();
 | 
					 | 
				
			||||||
		errors.addAll(FactionColl.get().validateName(newName));
 | 
					 | 
				
			||||||
		if (errors.size() > 0)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			message(errors);
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Event
 | 
							// Event
 | 
				
			||||||
		EventFactionsNameChange event = new EventFactionsNameChange(sender, faction, newName);
 | 
							EventFactionsNameChange event = new EventFactionsNameChange(sender, faction, newName);
 | 
				
			||||||
		event.run();
 | 
							event.run();
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -207,41 +207,6 @@ public class FactionColl extends Coll<Faction>
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
					 | 
				
			||||||
	// FACTION NAME
 | 
					 | 
				
			||||||
	// -------------------------------------------- //
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	public ArrayList<String> validateName(String str)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		// Create
 | 
					 | 
				
			||||||
		ArrayList<String> errors = new ArrayList<>();
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		// Fill
 | 
					 | 
				
			||||||
		// Check minimum length
 | 
					 | 
				
			||||||
		if (MiscUtil.getComparisonString(str).length() < MConf.get().factionNameLengthMin)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			errors.add(Txt.parse("<i>The faction name can't be shorter than <h>%s<i> chars.", MConf.get().factionNameLengthMin));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		// Check maximum length
 | 
					 | 
				
			||||||
		if (str.length() > MConf.get().factionNameLengthMax)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			errors.add(Txt.parse("<i>The faction name can't be longer than <h>%s<i> chars.", MConf.get().factionNameLengthMax));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		// Check characters used
 | 
					 | 
				
			||||||
		for (char c : str.toCharArray())
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if (!MiscUtil.substanceChars.contains(String.valueOf(c)))
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				errors.add(Txt.parse("<i>Faction name must be alphanumeric. \"<h>%s<i>\" is not allowed.", c));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		// Return
 | 
					 | 
				
			||||||
		return errors;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public Faction getByName(String name)
 | 
						public Faction getByName(String name)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user