package openeye.asm; import com.google.common.base.Preconditions; import net.minecraft.launchwrapper.Launch; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; public class VisitorHelper { public static interface TransformProvider { public ClassVisitor createVisitor(ClassVisitor cv); } public static byte[] apply(byte[] bytes, int flags, TransformProvider context) { Preconditions.checkNotNull(bytes); ClassReader cr = new ClassReader(bytes); ClassWriter cw = new ClassWriter(cr, flags); ClassVisitor mod = context.createVisitor(cw); try { cr.accept(mod, 0); return cw.toByteArray(); } catch (StopTransforming e) { return bytes; } } public static boolean useSrgNames() { Boolean deobfuscated = (Boolean)Launch.blackboard.get("fml.deobfuscatedEnvironment"); return deobfuscated == null || !deobfuscated; } }