diff --git a/patches/minecraft/net/minecraft/crash/CrashReport.java.patch b/patches/minecraft/net/minecraft/crash/CrashReport.java.patch index 03212e9160..fc71a49cd7 100644 --- a/patches/minecraft/net/minecraft/crash/CrashReport.java.patch +++ b/patches/minecraft/net/minecraft/crash/CrashReport.java.patch @@ -8,11 +8,10 @@ } public String func_71501_a() -@@ -205,6 +206,8 @@ +@@ -205,6 +206,7 @@ { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append("---- Minecraft Crash Report ----\n"); -+ net.minecraftforge.fml.common.asm.transformers.BlamingTransformer.onCrash(stringbuilder); + net.minecraftforge.fml.relauncher.CoreModManager.onCrash(stringbuilder); stringbuilder.append("// "); stringbuilder.append(func_71503_h()); diff --git a/src/main/java/net/minecraftforge/fml/common/FMLModContainer.java b/src/main/java/net/minecraftforge/fml/common/FMLModContainer.java index c1c5758098..7278ea677d 100644 --- a/src/main/java/net/minecraftforge/fml/common/FMLModContainer.java +++ b/src/main/java/net/minecraftforge/fml/common/FMLModContainer.java @@ -37,13 +37,11 @@ import java.util.Map; import java.util.Properties; import java.util.Set; -import com.google.common.base.Throwables; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Config; import net.minecraftforge.common.config.ConfigManager; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.Mod.Metadata; -import net.minecraftforge.fml.common.asm.transformers.BlamingTransformer; import net.minecraftforge.fml.common.discovery.ASMDataTable; import net.minecraftforge.fml.common.discovery.ModCandidate; import net.minecraftforge.fml.common.discovery.ASMDataTable.ASMData; @@ -507,7 +505,6 @@ public class FMLModContainer implements ModContainer @Subscribe public void constructMod(FMLConstructionEvent event) { - BlamingTransformer.addClasses(getModId(), candidate.getClassList()); ModClassLoader modClassLoader = event.getModClassLoader(); try { diff --git a/src/main/java/net/minecraftforge/fml/common/asm/transformers/BlamingTransformer.java b/src/main/java/net/minecraftforge/fml/common/asm/transformers/BlamingTransformer.java deleted file mode 100644 index d76dcfc8d5..0000000000 --- a/src/main/java/net/minecraftforge/fml/common/asm/transformers/BlamingTransformer.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016-2018. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.fml.common.asm.transformers; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; - -import net.minecraft.launchwrapper.IClassTransformer; -import net.minecraftforge.fml.common.FMLLog; - -import org.apache.commons.lang3.JavaVersion; -import org.apache.commons.lang3.SystemUtils; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.Opcodes; - -import com.google.common.collect.ImmutableSet; - -public class BlamingTransformer implements IClassTransformer -{ - private static final Map classMap = new HashMap(); - private static final Set naughtyMods = new HashSet(); - private static final Set naughtyClasses = new TreeSet(); - private static final Set orphanNaughtyClasses = new HashSet(); - - @Override - public byte[] transform(String name, String transformedName, byte[] bytes) - { - if (bytes == null) { return null; } - - ClassReader classReader = new ClassReader(bytes); - VersionVisitor visitor = new VersionVisitor(); - classReader.accept(visitor, ClassReader.SKIP_CODE | ClassReader.SKIP_DEBUG); - return bytes; - } - - public static void blame(String modId, String cls) - { - naughtyClasses.add(cls); - naughtyMods.add(modId); - FMLLog.log.fatal("Unsupported class format in mod {}: class {}", modId, cls); - } - - public static class VersionVisitor extends ClassVisitor - { - public VersionVisitor() - { - super(Opcodes.ASM5); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) - { - if( (version == Opcodes.V1_8 && !SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_8)) || - (version == Opcodes.V1_7 && !SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_7)) ) - { - if(classMap.containsKey(name)) blame(classMap.get(name), name); - else orphanNaughtyClasses.add(name); - } - } - } - - private static void checkPendingNaughty() - { - ImmutableSet.Builder toRemove = ImmutableSet.builder(); - for(String cls : orphanNaughtyClasses) - { - if(classMap.containsKey(cls)) - { - String modId = classMap.get(cls); - blame(modId, cls); - toRemove.add(cls); - } - } - orphanNaughtyClasses.removeAll(toRemove.build()); - } - - public static void addClasses(String modId, Set classList) - { - for(String cls : classList) - { - classMap.put(cls, modId); - } - checkPendingNaughty(); - } - - public static void onCrash(StringBuilder builder) - { - checkPendingNaughty(); - if(!naughtyClasses.isEmpty()) - { - builder.append("\n*** ATTENTION: detected classes with unsupported format ***\n"); - builder.append("*** DO NOT SUBMIT THIS CRASH REPORT TO FORGE ***\n\n"); - if(!naughtyMods.isEmpty()) - { - builder.append("Contact authors of the following mods: \n"); - for(String modId : naughtyMods) - { - builder.append(" ").append(modId).append("\n"); - } - } - if(!orphanNaughtyClasses.isEmpty()) - { - builder.append("Unidentified unsupported classes: \n"); - for(String cls : orphanNaughtyClasses) - { - builder.append(" ").append(cls).append("\n"); - } - } - builder.append('\n'); - } - } -} diff --git a/src/main/java/net/minecraftforge/fml/relauncher/FMLCorePlugin.java b/src/main/java/net/minecraftforge/fml/relauncher/FMLCorePlugin.java index c8e044de50..aea4b6a4c5 100644 --- a/src/main/java/net/minecraftforge/fml/relauncher/FMLCorePlugin.java +++ b/src/main/java/net/minecraftforge/fml/relauncher/FMLCorePlugin.java @@ -27,7 +27,6 @@ public class FMLCorePlugin implements IFMLLoadingPlugin public String[] getASMTransformerClass() { return new String[] { - "net.minecraftforge.fml.common.asm.transformers.BlamingTransformer", "net.minecraftforge.fml.common.asm.transformers.SideTransformer", "net.minecraftforge.fml.common.asm.transformers.EventSubscriptionTransformer", "net.minecraftforge.fml.common.asm.transformers.EventSubscriberTransformer",