From 733774e7a337c0c98bf90f5dac4fe25bc1fe9329 Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Wed, 21 Sep 2022 00:04:41 +0800 Subject: [PATCH] asm packet return to crafting inventory --- .../glodblock/github/coremod/hooker/CoreModHooks.java | 11 +++++++++++ .../coremod/transform/CraftingCpuTransformer.java | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooks.java b/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooks.java index 9dff4263..380f8bb2 100644 --- a/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooks.java +++ b/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooks.java @@ -52,6 +52,17 @@ public class CoreModHooks { return stack; } + public static ItemStack removeFluidPackets(InventoryCrafting inv, int index) { + ItemStack stack = inv.getStackInSlot(index); + if (stack != null && stack.getItem() instanceof ItemFluidPacket) { + FluidStack fluid = ItemFluidPacket.getFluidStack(stack); + return ItemFluidDrop.newStack(fluid); + } + else { + return stack; + } + } + @Nullable public static InventoryAdaptor wrapInventory(@Nullable TileEntity tile, ForgeDirection face) { return tile != null ? FluidConvertingInventoryAdaptor.wrap(tile, Util.from(face)) : null; diff --git a/src/main/java/com/glodblock/github/coremod/transform/CraftingCpuTransformer.java b/src/main/java/com/glodblock/github/coremod/transform/CraftingCpuTransformer.java index 2c3c8a74..1a9e4b51 100644 --- a/src/main/java/com/glodblock/github/coremod/transform/CraftingCpuTransformer.java +++ b/src/main/java/com/glodblock/github/coremod/transform/CraftingCpuTransformer.java @@ -83,6 +83,15 @@ public class CraftingCpuTransformer extends FCClassTransformer.ClassMapper { return; } } + if (opcode == Opcodes.INVOKEVIRTUAL && + owner.equals("net/minecraft/inventory/InventoryCrafting") && name.equals("getStackInSlot")) { + super.visitMethodInsn(Opcodes.INVOKESTATIC, + "com/glodblock/github/coremod/hooker/CoreModHooks", + "removeFluidPackets", + "(Lnet/minecraft/inventory/InventoryCrafting;I)Lnet/minecraft/item/ItemStack;", + false); + return; + } super.visitMethodInsn(opcode, owner, name, desc, itf); if (gotInventory) { if (opcode == Opcodes.INVOKESTATIC