001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005 import java.awt.BorderLayout;
006 import java.awt.Color;
007 import java.awt.Font;
008 import java.awt.Panel;
009 import java.awt.TextArea;
010 import java.io.File;
011 import java.io.PrintWriter;
012 import java.io.StringWriter;
013 import java.text.SimpleDateFormat;
014 import java.util.Date;
015 import net.minecraft.client.Minecraft;
016 import org.lwjgl.opengl.GL11;
017
018 @SideOnly(Side.CLIENT)
019 public class PanelCrashReport extends Panel
020 {
021 public PanelCrashReport(CrashReport par1CrashReport)
022 {
023 this.setBackground(new Color(3028036));
024 this.setLayout(new BorderLayout());
025 StringWriter var2 = new StringWriter();
026 par1CrashReport.getCrashCause().printStackTrace(new PrintWriter(var2));
027 String var3 = var2.toString();
028 String var4 = "";
029 String var5 = "";
030
031 try
032 {
033 var4 = GL11.glGetString(GL11.GL_VENDOR);
034 }
035 catch (Throwable var9)
036 {
037 var5 = var5 + "[failed to get system properties (" + var9 + ")]\n\n";
038 }
039
040 var5 = var5 + var3;
041 String var6 = "";
042 var6 = var6 + "\n";
043 var6 = var6 + "\n";
044
045 if (var3.contains("Pixel format not accelerated"))
046 {
047 var6 = var6 + " Bad video card drivers! \n";
048 var6 = var6 + " ----------------------- \n";
049 var6 = var6 + "\n";
050 var6 = var6 + "Minecraft was unable to start because it failed to find an accelerated OpenGL mode.\n";
051 var6 = var6 + "This can usually be fixed by updating the video card drivers.\n";
052
053 if (var4.toLowerCase().contains("nvidia"))
054 {
055 var6 = var6 + "\n";
056 var6 = var6 + "You might be able to find drivers for your video card here:\n";
057 var6 = var6 + " http://www.nvidia.com/\n";
058 }
059 else if (var4.toLowerCase().contains("ati"))
060 {
061 var6 = var6 + "\n";
062 var6 = var6 + "You might be able to find drivers for your video card here:\n";
063 var6 = var6 + " http://www.amd.com/\n";
064 }
065 }
066 else
067 {
068 var6 = var6 + " Minecraft has crashed! \n";
069 var6 = var6 + " ---------------------- \n";
070 var6 = var6 + "\n";
071 var6 = var6 + "Minecraft has stopped running because it encountered a problem; " + par1CrashReport.getDescription() + "\n";
072 File var7 = par1CrashReport.getFile();
073
074 if (var7 == null)
075 {
076 par1CrashReport.saveToFile(new File(new File(Minecraft.getMinecraftDir(), "crash-reports"), "crash-" + (new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss")).format(new Date()) + "-client.txt"));
077 var7 = par1CrashReport.getFile();
078 }
079
080 if (var7 != null)
081 {
082 String var8 = var7.getAbsolutePath();
083 var6 = var6 + "A full error report has been saved to " + var8 + " for your convenience. Please include a copy of that file (Not this screen!) if you report this crash to anyone; without it, they will not be able to help fix the crash :(";
084 var5 = "Full report at:\n" + var8 + "\n\n" + var5;
085 }
086 else
087 {
088 var6 = var6 + "We were unable to save this report to a file.";
089 }
090
091 var6 = var6 + "\n";
092 }
093
094 var6 = var6 + "\n";
095 var6 = var6 + "\n";
096 var6 = var6 + "\n";
097 var6 = var6 + "--- BEGIN ERROR REPORT " + Integer.toHexString(var6.hashCode()) + " --------\n";
098 var6 = var6 + var5;
099 var6 = var6 + "--- END ERROR REPORT " + Integer.toHexString(var6.hashCode()) + " ----------\n";
100 var6 = var6 + "\n";
101 var6 = var6 + "\n";
102 TextArea var10 = new TextArea(var6, 0, 0, 1);
103 var10.setFont(new Font("Monospaced", 0, 12));
104 this.add(new CanvasMojangLogo(), "North");
105 this.add(new CanvasCrashReport(80), "East");
106 this.add(new CanvasCrashReport(80), "West");
107 this.add(new CanvasCrashReport(100), "South");
108 this.add(var10, "Center");
109 }
110 }