Skip to content

Commit 1638641

Browse files
committed
fix crafting status display drops
1 parent cadbaec commit 1638641

File tree

4 files changed

+74
-11
lines changed

4 files changed

+74
-11
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ dependencies {
5151
deobfCompile 'curse.maven:modular-machinery-270790:2761302' // 1.11.1
5252
deobfCompile 'curse.maven:codechicken-lib-1-8-242818:2779848' //ccl
5353
deobfCompile 'curse.maven:gregtech-ce-unofficial-557242:3784798' // gt
54-
deobfCompile 'curse.maven:ae2-extended-life-570458:4406629' //pae2
54+
deobfCompile 'curse.maven:ae2-extended-life-570458:4429430' //pae2
5555
compileOnly 'curse.maven:dynamistics-383632:3056455' // dy
5656
}
5757

src/main/java/com/glodblock/github/coremod/CoreModHooks.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,16 +161,22 @@ public static ItemStack displayFluid(ItemStack drop) {
161161
if (!drop.isEmpty() && drop.getItem() instanceof ItemFluidDrop) {
162162
FluidStack fluid = ItemFluidDrop.getFluidStack(drop);
163163
return ItemFluidPacket.newDisplayStack(fluid);
164-
}
165-
else return drop;
164+
} else return drop;
166165
}
167166

168167
public static IAEItemStack displayAEFluid(IAEItemStack drop) {
169168
if (!drop.getDefinition().isEmpty() && drop.getItem() instanceof ItemFluidDrop) {
170169
FluidStack fluid = ItemFluidDrop.getFluidStack(drop.getDefinition());
171170
return AEItemStack.fromItemStack(ItemFluidPacket.newDisplayStack(fluid));
172-
}
173-
else return drop;
171+
} else return drop;
172+
}
173+
174+
public static IAEItemStack displayAEFluidAmount(IAEItemStack drop) {
175+
if (drop != null && !drop.getDefinition().isEmpty() && drop.getItem() instanceof ItemFluidDrop) {
176+
FluidStack fluid = ItemFluidDrop.getFluidStack(drop.getDefinition());
177+
AEItemStack stack = AEItemStack.fromItemStack(ItemFluidPacket.newDisplayStack(fluid));
178+
return stack == null ? null : stack.setStackSize(drop.getStackSize());
179+
} else return drop;
174180
}
175181

176182
public static long getFluidSize(IAEItemStack aeStack) {
@@ -184,8 +190,7 @@ public static void storeFluidItem(CraftingCPUCluster instance) {
184190
Preconditions.checkState(Ae2Reflect.getCPUComplete(instance), "CPU should be complete to prevent re-insertion when dumping items");
185191
final IGrid g = Ae2Reflect.getGrid(instance);
186192

187-
if( g == null )
188-
{
193+
if (g == null) {
189194
return;
190195
}
191196

@@ -194,8 +199,7 @@ public static void storeFluidItem(CraftingCPUCluster instance) {
194199
final IMEInventory<IAEFluidStack> jj = sg.getInventory(AEApi.instance().storage().getStorageChannel(IFluidStorageChannel.class));
195200
final MECraftingInventory inventory = Ae2Reflect.getCPUInventory(instance);
196201

197-
for( IAEItemStack is : inventory.getItemList() )
198-
{
202+
for (IAEItemStack is : inventory.getItemList()) {
199203
Ae2Reflect.postCPUChange(instance, is, Ae2Reflect.getCPUSource(instance));
200204

201205
if (is.getItem() instanceof ItemFluidDrop ) {
@@ -216,8 +220,7 @@ public static void storeFluidItem(CraftingCPUCluster instance) {
216220
}
217221
}
218222

219-
if( inventory.getItemList().isEmpty() )
220-
{
223+
if (inventory.getItemList().isEmpty()) {
221224
Ae2Reflect.setCPUInventory(instance, new MECraftingInventory());
222225
}
223226

src/main/java/com/glodblock/github/coremod/FCClassTransformer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ public byte[] transform(String name, String transformedName, byte[] code) {
4848
case "appeng.client.gui.implementations.GuiCraftConfirm":
4949
tform = GuiCraftingTransformer.INSTANCE;
5050
break;
51+
case "appeng.client.gui.implementations.GuiCraftingStatus":
52+
tform = GuiCraftingStatusTransformer.INSTANCE;
53+
break;
5154
case "p455w0rd.wct.client.gui.GuiCraftingCPU":
5255
case "p455w0rd.wct.client.gui.GuiCraftConfirm":
5356
tform = WCTGuiCraftingTransformer.INSTANCE;
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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 GuiCraftingStatusTransformer extends FCClassTransformer.ClassMapper {
9+
10+
public static final GuiCraftingStatusTransformer INSTANCE = new GuiCraftingStatusTransformer();
11+
12+
private GuiCraftingStatusTransformer() {
13+
// NO-OP
14+
}
15+
16+
@Override
17+
protected ClassVisitor getClassMapper(ClassVisitor downstream) {
18+
return new TransformGuiCraftingStatus(Opcodes.ASM5, downstream);
19+
}
20+
21+
private static class TransformGuiCraftingStatus extends ClassVisitor {
22+
23+
TransformGuiCraftingStatus(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 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.INVOKEVIRTUAL && name.equals("getCrafting")) {
47+
super.visitMethodInsn(Opcodes.INVOKESTATIC,
48+
"com/glodblock/github/coremod/CoreModHooks",
49+
"displayAEFluidAmount",
50+
"(Lappeng/api/storage/data/IAEItemStack;)Lappeng/api/storage/data/IAEItemStack;",
51+
false);
52+
}
53+
}
54+
55+
}
56+
57+
}

0 commit comments

Comments
 (0)