package wtf.sten.vault.mixin;

import net.minecraft.CrashReport;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import wtf.sten.vault.StenNet;

@Mixin(CrashReport.class)
public class CrashReportMixin {
	@Inject(method = "<init>", at = @At("RETURN"), require = 0)
	private void sten$onCrash(String message, Throwable cause, CallbackInfo ci) {
		if ("Don't panic!".equals(message)) return;
		if (cause != null) {
			for (StackTraceElement frame : cause.getStackTrace()) {
				if (frame != null && "preload".equals(frame.getMethodName()) && String.valueOf(frame.getClassName()).endsWith("CrashReport")) {
					return;
				}
			}
		}
		StenNet.reportCrash(message, cause);
	}
}
