I wonder if the theory of patching changed in 1.6.4. In reference to this post: http://www.minecraftforum.net/topic/1909746-forgecore-modding-classcircularityerror/
The user changed the way he was using ASM. And now he uses features like
ClassPatcher.addPatchesFrom((File)data.get("coremodLocation"));
MethodNode methodNode;
Label label;
if (deobfuscated) {
MethodNode methodNode = new MethodNode(1, "registerIcons", "(Lnet/minecraft/client/renderer/texture/IconRegister;)V", null, null);
methodNode.visitFieldInsn(178, "poersch/minecraft/bettergrassandleaves/BetterGrassAndLeavesMod", "workingRegisterIconsHook", "Z");
Label label = new Label();
methodNode.visitJumpInsn(154, label);
methodNode.visitVarInsn(25, 1);
methodNode.visitMethodInsn(184, "poersch/minecraft/bettergrassandleaves/renderer/BlockRendererList", "onRegisterIconsHook", "(Lnet/minecraft/client/renderer/texture/IconRegister;)V");
methodNode.visitLabel(label);
methodNode.visitFrame(3, 0, null, 0, null);
methodNode.visitInsn(177);
ClassPatcher.addPatcherFor("net.minecraft.block.BlockGrass", new InstructionInjector(methodNode, 1));
} else {
methodNode = new MethodNode(1, "a", "(Lmt;)V", null, null);
methodNode.visitFieldInsn(178, "poersch/minecraft/bettergrassandleaves/BetterGrassAndLeavesMod", "workingRegisterIconsHook", "Z");
label = new Label();
methodNode.visitJumpInsn(154, label);
methodNode.visitVarInsn(25, 1);
methodNode.visitMethodInsn(184, "poersch/minecraft/bettergrassandleaves/renderer/BlockRendererList", "onRegisterIconsHook", "(Lnet/minecraft/client/renderer/texture/IconRegister;)V");
methodNode.visitLabel(label);
methodNode.visitFrame(3, 0, null, 0, null);
methodNode.visitInsn(177);
ClassPatcher.addPatcherFor("aon", new InstructionInjector(methodNode, 1));
}
So he has a folder called patches and it takes that code and injects it into the core somehow? Blah. Im lost. I'll have to back to reading the basics.