package net.minecraft.crash;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;
import java.util.concurrent.Callable;
class CallableSuspiciousClasses implements Callable
{
final CrashReport theCrashReport;
CallableSuspiciousClasses(CrashReport par1CrashReport)
{
this.theCrashReport = par1CrashReport;
}
public String callSuspiciousClasses()
{
StringBuilder stringbuilder = new StringBuilder();
ArrayList arraylist;
try
{
Field field = ClassLoader.class.getDeclaredField("classes");
field.setAccessible(true);
arraylist = new ArrayList((Vector)field.get(CrashReport.class.getClassLoader()));
}
catch (Exception ex)
{
return "";
}
boolean flag = true;
boolean flag1 = !CrashReport.class.getCanonicalName().equals("net.minecraft.CrashReport");
HashMap hashmap = new HashMap();
String s = "";
Collections.sort(arraylist, new ComparatorClassSorter(this));
Iterator iterator = arraylist.iterator();
while (iterator.hasNext())
{
Class oclass = (Class)iterator.next();
if (oclass != null)
{
String s1 = oclass.getCanonicalName();
if (s1 != null && !s1.startsWith("org.lwjgl.") && !s1.startsWith("paulscode.") && !s1.startsWith("org.bouncycastle.") && !s1.startsWith("argo.") && !s1.startsWith("com.jcraft.") && !s1.startsWith("com.fasterxml.") && !s1.equals("util.GLX"))
{
if (flag1)
{
if (s1.length() <= 3 || s1.equals("net.minecraft.client.MinecraftApplet") || s1.equals("net.minecraft.client.Minecraft") || s1.equals("net.minecraft.client.ClientBrandRetriever") || s1.equals("net.minecraft.server.MinecraftServer"))
{
continue;
}
}
else if (s1.startsWith("net.minecraft"))
{
continue;
}
Package opackage = oclass.getPackage();
String s2 = opackage == null ? "" : opackage.getName();
if (hashmap.containsKey(s2))
{
int i = ((Integer)hashmap.get(s2)).intValue();
hashmap.put(s2, Integer.valueOf(i + 1));
if (i == 3)
{
if (!flag)
{
stringbuilder.append(", ");
}
stringbuilder.append("...");
flag = false;
continue;
}
if (i > 3)
{
continue;
}
}
else
{
hashmap.put(s2, Integer.valueOf(1));
}
if (s != s2 && s.length() > 0)
{
stringbuilder.append("], ");
}
if (!flag && s == s2)
{
stringbuilder.append(", ");
}
if (s != s2)
{
stringbuilder.append("[");
stringbuilder.append(s2);
stringbuilder.append(".");
}
stringbuilder.append(oclass.getSimpleName());
s = s2;
flag = false;
}
}
}
if (flag)
{
stringbuilder.append("No suspicious classes found.");
}
else
{
stringbuilder.append("]");
}
return stringbuilder.toString();
}
public Object call()
{
return "FML and Forge are installed";
}
}