1+ package com .glodblock .github .coremod .transform ;
2+
3+ import com .glodblock .github .coremod .FCClassTransformer ;
4+ import org .objectweb .asm .ClassVisitor ;
5+ import org .objectweb .asm .MethodVisitor ;
6+ import org .objectweb .asm .Opcodes ;
7+
8+ public class WCTGuiCraftingTransformer extends FCClassTransformer .ClassMapper {
9+
10+ public static final WCTGuiCraftingTransformer INSTANCE = new WCTGuiCraftingTransformer ();
11+
12+ private WCTGuiCraftingTransformer () {
13+ // NO-OP
14+ }
15+
16+ @ Override
17+ protected ClassVisitor getClassMapper (ClassVisitor downstream ) {
18+ return new WCTGuiCraftingTransformer .TransformGuiCrafting (Opcodes .ASM5 , downstream );
19+ }
20+
21+ private static class TransformGuiCrafting extends ClassVisitor {
22+
23+ TransformGuiCrafting (int api , ClassVisitor cv ) {
24+ super (api , cv );
25+ }
26+
27+ @ Override
28+ public MethodVisitor visitMethod (int access , String name , String desc , String signature , String [] exceptions ) {
29+ if ("drawFG" .equals (name )) {
30+ return new WCTGuiCraftingTransformer .TransformFluidIcon (api , super .visitMethod (access , name , desc , signature , exceptions ));
31+ }
32+ return super .visitMethod (access , name , desc , signature , exceptions );
33+ }
34+
35+ }
36+
37+ private static class TransformFluidIcon extends MethodVisitor {
38+
39+ TransformFluidIcon (int api , MethodVisitor mv ) {
40+ super (api , mv );
41+ }
42+
43+ @ Override
44+ public void visitMethodInsn (int opcode , String owner , String name , String desc , boolean itf ) {
45+ super .visitMethodInsn (opcode , owner , name , desc , itf );
46+ if (opcode == Opcodes .INVOKEINTERFACE && owner .equals ("appeng/api/storage/data/IAEItemStack" ) && name .equals ("createItemStack" )) {
47+ super .visitMethodInsn (Opcodes .INVOKESTATIC ,
48+ "com/glodblock/github/coremod/CoreModHooks" ,
49+ "displayFluid" ,
50+ "(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;" ,
51+ false );
52+ }
53+ }
54+
55+ }
56+ }
0 commit comments