Fix TypeRank
This commit is contained in:
		@@ -48,9 +48,6 @@ public class CmdFactionsRank extends FactionsCommand
 | 
				
			|||||||
	private Rel targetRank = null;
 | 
						private Rel targetRank = null;
 | 
				
			||||||
	private Rel rank = null;
 | 
						private Rel rank = null;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// This one is permanent
 | 
					 | 
				
			||||||
	private TypeRank rankReader = new TypeRank();
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// CONSTRUCT
 | 
						// CONSTRUCT
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
@@ -62,7 +59,7 @@ public class CmdFactionsRank extends FactionsCommand
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
		// Parameters
 | 
							// Parameters
 | 
				
			||||||
		this.addParameter(TypeMPlayer.get(), "player");
 | 
							this.addParameter(TypeMPlayer.get(), "player");
 | 
				
			||||||
		this.addParameter(rankReader, "action", "show");
 | 
							this.addParameter(TypeRank.get(), "action", "show");
 | 
				
			||||||
		this.addParameter(TypeFaction.get(), "faction", "their");
 | 
							this.addParameter(TypeFaction.get(), "faction", "their");
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
		// Requirements
 | 
							// Requirements
 | 
				
			||||||
@@ -141,7 +138,7 @@ public class CmdFactionsRank extends FactionsCommand
 | 
				
			|||||||
		// Rank if any passed.
 | 
							// Rank if any passed.
 | 
				
			||||||
		if (this.argIsSet(1))
 | 
							if (this.argIsSet(1))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			this.rankReader.setStartRank(targetRank);
 | 
								this.setParameterType(1, TypeRank.get(targetRank));
 | 
				
			||||||
			rank = this.readArg();
 | 
								rank = this.readArg();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -235,7 +232,7 @@ public class CmdFactionsRank extends FactionsCommand
 | 
				
			|||||||
		// Don't change their rank to something they already are.
 | 
							// Don't change their rank to something they already are.
 | 
				
			||||||
		if (target.getRole() == rank)
 | 
							if (target.getRole() == rank)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			throw new MassiveException().addMsg("%s <b>is already %s<b>.", target.describeTo(msender), rank.getColor() + rank.getDescPlayerOne());
 | 
								throw new MassiveException().addMsg("%s <b>is already %s.", target.describeTo(msender), rank.getDescPlayerOne());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,16 @@
 | 
				
			|||||||
package com.massivecraft.factions.cmd.type;
 | 
					package com.massivecraft.factions.cmd.type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Collections;
 | 
				
			||||||
 | 
					import java.util.Iterator;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.massivecraft.factions.Rel;
 | 
					import com.massivecraft.factions.Rel;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.collections.MassiveMap;
 | 
				
			||||||
import com.massivecraft.massivecore.collections.MassiveSet;
 | 
					import com.massivecraft.massivecore.collections.MassiveSet;
 | 
				
			||||||
import com.massivecraft.massivecore.command.type.enumeration.TypeEnum;
 | 
					import com.massivecraft.massivecore.command.type.enumeration.TypeEnum;
 | 
				
			||||||
 | 
					import com.massivecraft.massivecore.util.MUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TypeRank extends TypeEnum<Rel>
 | 
					public class TypeRank extends TypeEnum<Rel>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -29,31 +35,51 @@ public class TypeRank extends TypeEnum<Rel>
 | 
				
			|||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// INSTANCE & CONSTRUCT
 | 
						// INSTANCE & CONSTRUCT
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// Because of the caching in TypeAbstractChoice, we want only one of each instance.
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// Can be used to promote and demote.
 | 
						// Null instance, doesn't allow promote and demote.
 | 
				
			||||||
	public static TypeRank get(Rel rank) { return new TypeRank(rank); }
 | 
						private static final TypeRank i = new TypeRank(null);
 | 
				
			||||||
 | 
						public static TypeRank get() { return i; }
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						// Cached instances, does allow promote and demote.
 | 
				
			||||||
 | 
						private static final Map<Rel, TypeRank> instances;
 | 
				
			||||||
 | 
						static
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							Map<Rel, TypeRank> result = new MassiveMap<>();
 | 
				
			||||||
 | 
							for (Rel rel : Rel.values())
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( ! rel.isRank()) continue;
 | 
				
			||||||
 | 
								result.put(rel, new TypeRank(rel));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							result.put(null, i);
 | 
				
			||||||
 | 
							instances = Collections.unmodifiableMap(result);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public static TypeRank get(Rel rank) { return instances.get(rank); }
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						// Constructor
 | 
				
			||||||
	public TypeRank(Rel rank)
 | 
						public TypeRank(Rel rank)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		super(Rel.class);
 | 
							super(Rel.class);
 | 
				
			||||||
		if (rank != null && ! rank.isRank()) throw new IllegalArgumentException(rank + " is not a valid rank");
 | 
							if (rank != null && ! rank.isRank()) throw new IllegalArgumentException(rank + " is not a valid rank");
 | 
				
			||||||
		this.startRank = rank;
 | 
							this.startRank = rank;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// Do setAll with only ranks.
 | 
				
			||||||
 | 
							List<Rel> all = MUtil.list(Rel.values());
 | 
				
			||||||
 | 
							for (Iterator<Rel> it = all.iterator(); it.hasNext(); )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( ! it.next().isRank()) it.remove();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	// Can not be used to promote and demote.
 | 
							this.setAll(all);
 | 
				
			||||||
	private static TypeRank i = new TypeRank();
 | 
					 | 
				
			||||||
	public static TypeRank get() { return i; }
 | 
					 | 
				
			||||||
	public TypeRank()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		this(null);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// FIELDS
 | 
						// FIELDS
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	private Rel startRank;
 | 
						// This must be final, for caching in TypeAbstractChoice to work.
 | 
				
			||||||
 | 
						private final Rel startRank;
 | 
				
			||||||
	public Rel getStartRank() { return this.startRank; }
 | 
						public Rel getStartRank() { return this.startRank; }
 | 
				
			||||||
	public void setStartRank(Rel startRank) { this.startRank = startRank; }
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// OVERRIDE
 | 
						// OVERRIDE
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user