@Override
	public String[] getColorCodes()
	{
		if(clookup==null)
			clookup=CMLib.color().standardColorLookups();

		if(mob()==null)
			return clookup;
		PlayerStats pstats=mob().playerStats();
		if((mob.soulMate()!=null)&&(mob.soulMate().playerStats()!=null))
			pstats=mob.soulMate().playerStats();
		if(pstats==null)
			return clookup;

		if(!pstats.getColorStr().equals(lastColorStr))
		{
			lastColorStr=pstats.getColorStr();
			if(pstats.getColorStr().length()==0)
				clookup=CMLib.color().standardColorLookups();
			else
			{
				clookup=CMLib.color().standardColorLookups().clone();
				List<String> changesList = CMParms.parseAny(pstats.getColorStr(), '#', true);
				for(String change : changesList)
				{
					int subChar;
					String subColor;
					if(change.startsWith("(") && (change.indexOf(')')>0))
					{
						int x=change.indexOf(')');
						subChar=CMath.s_int(change.substring(1,x));
						subColor = change.substring(x+1);
					}
					else
					{
						subChar=change.charAt(0);
						subColor=change.substring(1);
					}
					clookup[subChar]=CMLib.color().translateCMCodeToANSI(subColor);
				}
				for(int i=0;i<clookup.length;i++)
				{
					final String s=clookup[i];
					if((s!=null)&&(s.startsWith("^"))&&(s.length()>1))
						clookup[i]=clookup[s.charAt(1)];
				}
			}
		}
		return clookup;
	}