Skip to content

Commit

Permalink
Extend crash report twice
Browse files Browse the repository at this point in the history
  • Loading branch information
Su5eD committed Mar 12, 2024
1 parent e5d5bdd commit b004f21
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 38 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
package dev.su5ed.sinytra.connector.mod;

import dev.su5ed.sinytra.connector.ConnectorUtil;
import dev.su5ed.sinytra.connector.loader.ConnectorEarlyLoader;
import net.minecraftforge.coremod.api.ASMAPI;
import net.minecraftforge.fml.CrashReportCallables;
import net.minecraftforge.forgespi.language.IModInfo;
import org.apache.commons.lang3.StringUtils;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.ClassNode;
Expand All @@ -14,7 +10,6 @@
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;

import java.util.List;
import java.util.Locale;
import java.util.Set;

/**
Expand All @@ -23,37 +18,7 @@
public class ConnectorBootstrap implements IMixinConfigPlugin {

static {
registerCrashLogInfo();
}

private static void registerCrashLogInfo() {
CrashReportCallables.registerCrashCallable("Sinytra Connector", () -> {
String format = "| %-50.50s | %-30.30s | %-30.30s | %-20.20s |";
String version = ConnectorBootstrap.class.getModule().getDescriptor().rawVersion().orElse("<unknown>");
StringBuilder builder = new StringBuilder();
builder.append(version);
builder.append("\n\t\tSINYTRA CONNECTOR IS PRESENT!");
builder.append("\n\t\tPlease verify issues are not caused by Connector before reporting them to mod authors. If you're unsure, file a report on Connector's issue tracker.");
builder.append("\n\t\tConnector's issue tracker can be found at ").append(ConnectorUtil.CONNECTOR_ISSUE_TRACKER_URL).append(".");
List<IModInfo> mods = ConnectorEarlyLoader.getConnectorMods();
if (!mods.isEmpty()) {
builder.append("\n\t\tInstalled Fabric mods:");
builder.append("\n\t\t").append(String.format(Locale.ENGLISH, format,
StringUtils.repeat('=', 50),
StringUtils.repeat('=', 30),
StringUtils.repeat('=', 30),
StringUtils.repeat('=', 20)
));
mods.stream()
.map(m -> String.format(Locale.ENGLISH, format,
m.getOwningFile().getFile().getFileName(),
m.getDisplayName(),
m.getModId(),
m.getVersion().toString()))
.forEach(s -> builder.append("\n\t\t").append(s));
}
return builder.toString();
});
CrashReportUpgrade.registerCrashLogInfo();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package dev.su5ed.sinytra.connector.mod;

import dev.su5ed.sinytra.connector.ConnectorUtil;
import dev.su5ed.sinytra.connector.loader.ConnectorEarlyLoader;
import net.minecraftforge.fml.CrashReportCallables;
import net.minecraftforge.forgespi.language.IModInfo;
import org.apache.commons.lang3.StringUtils;

import java.util.List;
import java.util.Locale;

public final class CrashReportUpgrade {

public static void registerCrashLogInfo() {
CrashReportCallables.registerCrashCallable("Sinytra Connector", () -> {
String format = "| %-50.50s | %-30.30s | %-30.30s | %-20.20s |";
String version = ConnectorBootstrap.class.getModule().getDescriptor().rawVersion().orElse("<unknown>");
StringBuilder builder = new StringBuilder();
builder.append(version);
builder.append("\n\t\tSINYTRA CONNECTOR IS PRESENT!");
builder.append("\n\t\tPlease verify issues are not caused by Connector before reporting them to mod authors. If you're unsure, file a report on Connector's issue tracker.");
builder.append("\n\t\tConnector's issue tracker can be found at ").append(ConnectorUtil.CONNECTOR_ISSUE_TRACKER_URL).append(".");
List<IModInfo> mods = ConnectorEarlyLoader.getConnectorMods();
if (!mods.isEmpty()) {
builder.append("\n\t\tInstalled Fabric mods:");
builder.append("\n\t\t").append(String.format(Locale.ENGLISH, format,
StringUtils.repeat('=', 50),
StringUtils.repeat('=', 30),
StringUtils.repeat('=', 30),
StringUtils.repeat('=', 20)
));
mods.stream()
.map(m -> String.format(Locale.ENGLISH, format,
m.getOwningFile().getFile().getFileName(),
m.getDisplayName(),
m.getModId(),
m.getVersion().toString()))
.forEach(s -> builder.append("\n\t\t").append(s));
}
return builder.toString();
});
}

public static void addCrashReportHeader(StringBuilder builder) {
builder.append("\n// Hi. I'm Connector, and I'm a crashaholic");
builder.append("\n").append(StringUtils.repeat('=', 25));
builder.append("\nSINYTRA CONNECTOR IS PRESENT!");
builder.append("\nPlease verify issues are not caused by Connector before reporting them to mod authors.");
builder.append("\nIf you're unsure, file a report on Connector's issue tracker found at ").append(ConnectorUtil.CONNECTOR_ISSUE_TRACKER_URL).append(".");
builder.append("\n").append(StringUtils.repeat('=', 25));
builder.append("\n\n");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package dev.su5ed.sinytra.connector.mod.mixin;

import dev.su5ed.sinytra.connector.mod.CrashReportUpgrade;
import net.minecraft.CrashReport;
import net.minecraftforge.logging.CrashReportExtender;
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;

@Mixin(CrashReportExtender.class)
public class CrashReportExtenderMixin {

@Inject(method = "addCrashReportHeader", at = @At("HEAD"), remap = false)
private static void addConnectorCrashReportHeader(StringBuilder stringbuilder, CrashReport crashReport, CallbackInfo ci) {
CrashReportUpgrade.addCrashReportHeader(stringbuilder);
}
}
5 changes: 3 additions & 2 deletions src/mod/resources/connectormod.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,24 @@
"compatibilityLevel": "JAVA_17",
"plugin": "dev.su5ed.sinytra.connector.mod.ConnectorBootstrap",
"mixins": [
"CrashReportExtenderMixin",
"ForgeHooksMixin",
"IForgeItemMixin",
"PlayerListMixin",
"PoiTypesMixin",
"TagLoaderMixin",
"item.ForgeHooksMixin",
"item.ItemStackMixin",
"item.LateItemStackMixin",
"item.ForgeHooksMixin",
"lang.PathPackResourcesAnonMixin",
"lang.PathPackResourcesMixin",
"network.ConnectionTypeMixin",
"network.HandshakeHandlerMixin",
"network.NetworkFiltersMixin",
"registries.BootstrapMixin",
"registries.BuiltInRegistriesMixin",
"registries.MappedRegistryMixin",
"registries.ForgeRegistryMixin",
"registries.MappedRegistryMixin",
"registries.RegistryDataLoaderMixin"
],
"client": [
Expand Down

0 comments on commit b004f21

Please sign in to comment.