PaperMC/patch-remap/mache-vineflower/net/minecraft/CrashReport.java.patch
2024-01-14 11:04:49 +01:00

343 lines
15 KiB
Diff

--- a/net/minecraft/CrashReport.java
+++ b/net/minecraft/CrashReport.java
@@ -7,10 +7,10 @@
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
+import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.CompletionException;
@@ -21,6 +21,7 @@
import org.slf4j.Logger;
public class CrashReport {
+
private static final Logger LOGGER = LogUtils.getLogger();
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
private final String title;
@@ -35,6 +36,7 @@
public CrashReport(String title, Throwable exception) {
this.title = title;
this.exception = exception;
+ this.systemReport.setDetail("CraftBukkit Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit
}
public String getTitle() {
@@ -46,31 +48,40 @@
}
public String getDetails() {
- StringBuilder stringBuilder = new StringBuilder();
- this.getDetails(stringBuilder);
- return stringBuilder.toString();
+ StringBuilder stringbuilder = new StringBuilder();
+
+ this.getDetails(stringbuilder);
+ return stringbuilder.toString();
}
public void getDetails(StringBuilder builder) {
if ((this.uncategorizedStackTrace == null || this.uncategorizedStackTrace.length <= 0) && !this.details.isEmpty()) {
- this.uncategorizedStackTrace = ArrayUtils.subarray(this.details.get(0).getStacktrace(), 0, 1);
+ this.uncategorizedStackTrace = (StackTraceElement[]) ArrayUtils.subarray(((CrashReportCategory) this.details.get(0)).getStacktrace(), 0, 1);
}
if (this.uncategorizedStackTrace != null && this.uncategorizedStackTrace.length > 0) {
builder.append("-- Head --\n");
builder.append("Thread: ").append(Thread.currentThread().getName()).append("\n");
builder.append("Stacktrace:\n");
+ StackTraceElement[] astacktraceelement = this.uncategorizedStackTrace;
+ int i = astacktraceelement.length;
- for (StackTraceElement stackTraceElement : this.uncategorizedStackTrace) {
- builder.append("\t").append("at ").append(stackTraceElement);
+ for (int j = 0; j < i; ++j) {
+ StackTraceElement stacktraceelement = astacktraceelement[j];
+
+ builder.append("\t").append("at ").append(stacktraceelement);
builder.append("\n");
}
builder.append("\n");
}
- for (CrashReportCategory crashReportCategory : this.details) {
- crashReportCategory.getDetails(builder);
+ Iterator iterator = this.details.iterator();
+
+ while (iterator.hasNext()) {
+ CrashReportCategory crashreportsystemdetails = (CrashReportCategory) iterator.next();
+
+ crashreportsystemdetails.getDetails(builder);
builder.append("\n\n");
}
@@ -78,57 +89,60 @@
}
public String getExceptionMessage() {
- StringWriter stringWriter = null;
- PrintWriter printWriter = null;
- Throwable throwable = this.exception;
- if (throwable.getMessage() == null) {
- if (throwable instanceof NullPointerException) {
- throwable = new NullPointerException(this.title);
- } else if (throwable instanceof StackOverflowError) {
- throwable = new StackOverflowError(this.title);
- } else if (throwable instanceof OutOfMemoryError) {
- throwable = new OutOfMemoryError(this.title);
+ StringWriter stringwriter = null;
+ PrintWriter printwriter = null;
+ Object object = this.exception;
+
+ if (((Throwable) object).getMessage() == null) {
+ if (object instanceof NullPointerException) {
+ object = new NullPointerException(this.title);
+ } else if (object instanceof StackOverflowError) {
+ object = new StackOverflowError(this.title);
+ } else if (object instanceof OutOfMemoryError) {
+ object = new OutOfMemoryError(this.title);
}
- throwable.setStackTrace(this.exception.getStackTrace());
+ ((Throwable) object).setStackTrace(this.exception.getStackTrace());
}
- String var4;
+ String s;
+
try {
- stringWriter = new StringWriter();
- printWriter = new PrintWriter(stringWriter);
- throwable.printStackTrace(printWriter);
- var4 = stringWriter.toString();
+ stringwriter = new StringWriter();
+ printwriter = new PrintWriter(stringwriter);
+ ((Throwable) object).printStackTrace(printwriter);
+ s = stringwriter.toString();
} finally {
- IOUtils.closeQuietly((Writer)stringWriter);
- IOUtils.closeQuietly((Writer)printWriter);
+ IOUtils.closeQuietly(stringwriter);
+ IOUtils.closeQuietly(printwriter);
}
- return var4;
+ return s;
}
public String getFriendlyReport() {
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("---- Minecraft Crash Report ----\n");
- stringBuilder.append("// ");
- stringBuilder.append(getErrorComment());
- stringBuilder.append("\n\n");
- stringBuilder.append("Time: ");
- stringBuilder.append(DATE_TIME_FORMATTER.format(ZonedDateTime.now()));
- stringBuilder.append("\n");
- stringBuilder.append("Description: ");
- stringBuilder.append(this.title);
- stringBuilder.append("\n\n");
- stringBuilder.append(this.getExceptionMessage());
- stringBuilder.append("\n\nA detailed walkthrough of the error, its code path and all known details is as follows:\n");
+ StringBuilder stringbuilder = new StringBuilder();
- for (int i = 0; i < 87; i++) {
- stringBuilder.append("-");
+ stringbuilder.append("---- Minecraft Crash Report ----\n");
+ stringbuilder.append("// ");
+ stringbuilder.append(getErrorComment());
+ stringbuilder.append("\n\n");
+ stringbuilder.append("Time: ");
+ stringbuilder.append(CrashReport.DATE_TIME_FORMATTER.format(ZonedDateTime.now()));
+ stringbuilder.append("\n");
+ stringbuilder.append("Description: ");
+ stringbuilder.append(this.title);
+ stringbuilder.append("\n\n");
+ stringbuilder.append(this.getExceptionMessage());
+ stringbuilder.append("\n\nA detailed walkthrough of the error, its code path and all known details is as follows:\n");
+
+ for (int i = 0; i < 87; ++i) {
+ stringbuilder.append("-");
}
- stringBuilder.append("\n\n");
- this.getDetails(stringBuilder);
- return stringBuilder.toString();
+ stringbuilder.append("\n\n");
+ this.getDetails(stringbuilder);
+ return stringbuilder.toString();
}
@Nullable
@@ -144,22 +158,25 @@
toFile.getParentFile().mkdirs();
}
- Writer writer = null;
+ OutputStreamWriter outputstreamwriter = null;
- boolean var4;
+ boolean flag;
+
try {
- writer = new OutputStreamWriter(new FileOutputStream(toFile), StandardCharsets.UTF_8);
- writer.write(this.getFriendlyReport());
+ outputstreamwriter = new OutputStreamWriter(new FileOutputStream(toFile), StandardCharsets.UTF_8);
+ outputstreamwriter.write(this.getFriendlyReport());
this.saveFile = toFile;
- return true;
- } catch (Throwable var8) {
- LOGGER.error("Could not save crash report to {}", toFile, var8);
- var4 = false;
+ boolean flag1 = true;
+
+ return flag1;
+ } catch (Throwable throwable) {
+ CrashReport.LOGGER.error("Could not save crash report to {}", toFile, throwable);
+ flag = false;
} finally {
- IOUtils.closeQuietly(writer);
+ IOUtils.closeQuietly(outputstreamwriter);
}
- return var4;
+ return flag;
}
}
@@ -172,78 +189,45 @@
}
public CrashReportCategory addCategory(String categoryName, int stacktraceLength) {
- CrashReportCategory crashReportCategory = new CrashReportCategory(categoryName);
+ CrashReportCategory crashreportsystemdetails = new CrashReportCategory(categoryName);
+
if (this.trackingStackTrace) {
- int i = crashReportCategory.fillInStackTrace(stacktraceLength);
- StackTraceElement[] stackTrace = this.exception.getStackTrace();
- StackTraceElement stackTraceElement = null;
- StackTraceElement stackTraceElement1 = null;
- int i1 = stackTrace.length - i;
- if (i1 < 0) {
- LOGGER.error("Negative index in crash report handler ({}/{})", stackTrace.length, i);
+ int j = crashreportsystemdetails.fillInStackTrace(stacktraceLength);
+ StackTraceElement[] astacktraceelement = this.exception.getStackTrace();
+ StackTraceElement stacktraceelement = null;
+ StackTraceElement stacktraceelement1 = null;
+ int k = astacktraceelement.length - j;
+
+ if (k < 0) {
+ CrashReport.LOGGER.error("Negative index in crash report handler ({}/{})", astacktraceelement.length, j);
}
- if (stackTrace != null && 0 <= i1 && i1 < stackTrace.length) {
- stackTraceElement = stackTrace[i1];
- if (stackTrace.length + 1 - i < stackTrace.length) {
- stackTraceElement1 = stackTrace[stackTrace.length + 1 - i];
+ if (astacktraceelement != null && 0 <= k && k < astacktraceelement.length) {
+ stacktraceelement = astacktraceelement[k];
+ if (astacktraceelement.length + 1 - j < astacktraceelement.length) {
+ stacktraceelement1 = astacktraceelement[astacktraceelement.length + 1 - j];
}
}
- this.trackingStackTrace = crashReportCategory.validateStackTrace(stackTraceElement, stackTraceElement1);
- if (stackTrace != null && stackTrace.length >= i && 0 <= i1 && i1 < stackTrace.length) {
- this.uncategorizedStackTrace = new StackTraceElement[i1];
- System.arraycopy(stackTrace, 0, this.uncategorizedStackTrace, 0, this.uncategorizedStackTrace.length);
+ this.trackingStackTrace = crashreportsystemdetails.validateStackTrace(stacktraceelement, stacktraceelement1);
+ if (astacktraceelement != null && astacktraceelement.length >= j && 0 <= k && k < astacktraceelement.length) {
+ this.uncategorizedStackTrace = new StackTraceElement[k];
+ System.arraycopy(astacktraceelement, 0, this.uncategorizedStackTrace, 0, this.uncategorizedStackTrace.length);
} else {
this.trackingStackTrace = false;
}
}
- this.details.add(crashReportCategory);
- return crashReportCategory;
+ this.details.add(crashreportsystemdetails);
+ return crashreportsystemdetails;
}
private static String getErrorComment() {
- String[] strings = new String[]{
- "Who set us up the TNT?",
- "Everything's going to plan. No, really, that was supposed to happen.",
- "Uh... Did I do that?",
- "Oops.",
- "Why did you do that?",
- "I feel sad now :(",
- "My bad.",
- "I'm sorry, Dave.",
- "I let you down. Sorry :(",
- "On the bright side, I bought you a teddy bear!",
- "Daisy, daisy...",
- "Oh - I know what I did wrong!",
- "Hey, that tickles! Hehehe!",
- "I blame Dinnerbone.",
- "You should try our sister game, Minceraft!",
- "Don't be sad. I'll do better next time, I promise!",
- "Don't be sad, have a hug! <3",
- "I just don't know what went wrong :(",
- "Shall we play a game?",
- "Quite honestly, I wouldn't worry myself about that.",
- "I bet Cylons wouldn't have this problem.",
- "Sorry :(",
- "Surprise! Haha. Well, this is awkward.",
- "Would you like a cupcake?",
- "Hi. I'm Minecraft, and I'm a crashaholic.",
- "Ooh. Shiny.",
- "This doesn't make any sense!",
- "Why is it breaking :(",
- "Don't do that.",
- "Ouch. That hurt :(",
- "You're mean.",
- "This is a token for 1 free hug. Redeem at your nearest Mojangsta: [~~HUG~~]",
- "There are four lights!",
- "But it works on my machine."
- };
+ String[] astring = new String[]{"Who set us up the TNT?", "Everything's going to plan. No, really, that was supposed to happen.", "Uh... Did I do that?", "Oops.", "Why did you do that?", "I feel sad now :(", "My bad.", "I'm sorry, Dave.", "I let you down. Sorry :(", "On the bright side, I bought you a teddy bear!", "Daisy, daisy...", "Oh - I know what I did wrong!", "Hey, that tickles! Hehehe!", "I blame Dinnerbone.", "You should try our sister game, Minceraft!", "Don't be sad. I'll do better next time, I promise!", "Don't be sad, have a hug! <3", "I just don't know what went wrong :(", "Shall we play a game?", "Quite honestly, I wouldn't worry myself about that.", "I bet Cylons wouldn't have this problem.", "Sorry :(", "Surprise! Haha. Well, this is awkward.", "Would you like a cupcake?", "Hi. I'm Minecraft, and I'm a crashaholic.", "Ooh. Shiny.", "This doesn't make any sense!", "Why is it breaking :(", "Don't do that.", "Ouch. That hurt :(", "You're mean.", "This is a token for 1 free hug. Redeem at your nearest Mojangsta: [~~HUG~~]", "There are four lights!", "But it works on my machine."};
try {
- return strings[(int)(Util.getNanos() % (long)strings.length)];
- } catch (Throwable var2) {
+ return astring[(int) (Util.getNanos() % (long) astring.length)];
+ } catch (Throwable throwable) {
return "Witty comment unavailable :(";
}
}
@@ -253,18 +237,21 @@
cause = cause.getCause();
}
- CrashReport report;
- if (cause instanceof ReportedException reportedException) {
- report = reportedException.getReport();
+ CrashReport crashreport;
+
+ if (cause instanceof ReportedException) {
+ ReportedException reportedexception = (ReportedException) cause;
+
+ crashreport = reportedexception.getReport();
} else {
- report = new CrashReport(description, cause);
+ crashreport = new CrashReport(description, cause);
}
- return report;
+ return crashreport;
}
public static void preload() {
MemoryReserve.allocate();
- new CrashReport("Don't panic!", new Throwable()).getFriendlyReport();
+ (new CrashReport("Don't panic!", new Throwable())).getFriendlyReport();
}
}