package net.mcforkage.compat; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; import net.minecraft.launchwrapper.IClassTransformer; import net.minecraft.launchwrapper.Launch; public class HardcoreEnderExpansionTransformer implements IClassTransformer { @Override public byte[] transform(String arg0, String arg1, byte[] arg2) { if(arg2 == null || !arg0.equals("chylex.hee.system.logging.Log")) return arg2; ClassWriter cw = new ClassWriter(0); new ClassReader(arg2).accept(new ClassVisitor(Opcodes.ASM5, cw) { @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { if(!name.equals("<clinit>")) return super.visitMethod(access, name, desc, signature, exceptions); return new MethodVisitor(Opcodes.ASM5, super.visitMethod(access, name, desc, signature, exceptions)) { @Override public void visitLdcInsn(Object cst) { if("fml.deobfuscatedEnvironment".equals(cst)) { String NEW_KEY = "chylex.hee.isDevEnvironment"; if(!Launch.blackboard.containsKey(NEW_KEY)) Launch.blackboard.put(NEW_KEY, Boolean.FALSE); cst = NEW_KEY; } super.visitLdcInsn(cst); } }; } }, 0); return cw.toByteArray(); } }