mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-13 00:37:52 +00:00
Fix Deobfusication transformer throwing verification errores in Eclipse development environments.
This commit is contained in:
1 parent
968b7cae40
commit
f3c2eb8e9c
2 files changed
+10
-3
No files matched your search
+10
-2
@@ -23,6 +23,14 @@ import org.objectweb.asm.commons.RemappingClassAdapter;
|
||||
|
||||
public class DeobfuscationTransformer implements IClassTransformer, IClassNameTransformer {
|
||||
|
||||
private static final boolean RECALC_FRAMES = Boolean.parseBoolean(System.getProperty("FORGE_FORCE_FRAME_RECALC", "false"));
|
||||
private static final int WRITER_FLAGS = ClassWriter.COMPUTE_MAXS | (RECALC_FRAMES ? ClassWriter.COMPUTE_FRAMES : 0);
|
||||
private static final int READER_FLAGS = RECALC_FRAMES ? ClassReader.SKIP_FRAMES : ClassReader.EXPAND_FRAMES;
|
||||
// COMPUTE_FRAMES causes classes to be loaded, which could cause issues if the classes do not exist.
|
||||
// However in testing this has not happened. {As we run post SideTransfromer}
|
||||
// If reported we need to add a custom implementation of ClassWriter.getCommonSuperClass
|
||||
// that does not cause class loading.
|
||||
|
||||
@Override
|
||||
public byte[] transform(String name, String transformedName, byte[] bytes)
|
||||
{
|
||||
@@ -31,9 +39,9 @@ public class DeobfuscationTransformer implements IClassTransformer, IClassNameTr
|
||||
return null;
|
||||
}
|
||||
ClassReader classReader = new ClassReader(bytes);
|
||||
ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS);
|
||||
ClassWriter classWriter = new ClassWriter(WRITER_FLAGS);
|
||||
RemappingClassAdapter remapAdapter = new FMLRemappingAdapter(classWriter);
|
||||
classReader.accept(remapAdapter, ClassReader.EXPAND_FRAMES);
|
||||
classReader.accept(remapAdapter, READER_FLAGS);
|
||||
return classWriter.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.launchwrapper.ITweaker;
|
||||
import net.minecraft.launchwrapper.Launch;
|
||||
import net.minecraft.launchwrapper.LaunchClassLoader;
|
||||
import net.minecraftforge.fml.relauncher.CoreModManager;
|
||||
import net.minecraftforge.fml.relauncher.FMLInjectionData;
|
||||
|
||||
Reference in new issue
Block a user