package net.minecraft.src;
import java.util.HashMap;
import net.minecraft.client.settings.GameSettings;
import net.minecraft.crash.CrashReport;
public class CrashReporter
{
public static void onCrashReport(CrashReport crashReport)
{
try
{
GameSettings e = Config.getGameSettings();
if (e == null)
{
return;
}
if (!e.snooperEnabled)
{
return;
}
String url = "http://optifine.net/crashReport";
String reportStr = makeReport(crashReport);
byte[] content = reportStr.getBytes("ASCII");
IFileUploadListener listener = new IFileUploadListener()
{
public void fileUploadFinished(String url, byte[] content, Throwable exception) {}
};
HashMap headers = new HashMap();
headers.put("OF-Version", Config.getVersion());
headers.put("OF-Summary", makeSummary(crashReport));
FileUploadThread fut = new FileUploadThread(url, headers, content, listener);
fut.setPriority(10);
fut.start();
Thread.sleep(1000L);
}
catch (Exception var8)
{
Config.dbg(var8.getClass().getName() + ": " + var8.getMessage());
}
}
private static String makeReport(CrashReport crashReport)
{
StringBuffer sb = new StringBuffer();
sb.append("OptiFineVersion: " + Config.getVersion() + "\n");
sb.append("Summary: " + makeSummary(crashReport) + "\n");
sb.append("\n");
sb.append(crashReport.getCompleteReport());
sb.append("\n");
sb.append("OpenGlVersion: " + Config.openGlVersion + "\n");
sb.append("OpenGlRenderer: " + Config.openGlRenderer + "\n");
sb.append("OpenGlVendor: " + Config.openGlVendor + "\n");
sb.append("CpuCount: " + Config.getAvailableProcessors() + "\n");
return sb.toString();
}
private static String makeSummary(CrashReport crashReport)
{
Throwable t = crashReport.getCrashCause();
if (t == null)
{
return "Unknown";
}
else
{
StackTraceElement[] traces = t.getStackTrace();
String firstTrace = "unknown";
if (traces.length > 0)
{
firstTrace = traces[0].toString().trim();
}
String sum = t.getClass().getName() + ": " + t.getMessage() + " (" + crashReport.getDescription() + ")" + " [" + firstTrace + "]";
return sum;
}
}
}