From e0aed44bcf9c456fe682e5b0bf18f0248b6dffe3 Mon Sep 17 00:00:00 2001 From: lordIcocain <62835225+lordIcocain@users.noreply.github.com> Date: Fri, 27 Dec 2024 00:11:02 +0200 Subject: [PATCH] Skip this side check if fluid conduit not connected. (#249) Co-authored-by: Martin Robertz --- .../FluidConvertingInventoryAdaptor.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java b/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java index 875b9b1d..f4500f45 100644 --- a/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java +++ b/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java @@ -44,7 +44,9 @@ import appeng.util.InventoryAdaptor; import appeng.util.inv.IInventoryDestination; import appeng.util.inv.ItemSlot; import cofh.api.transport.IItemDuct; +import crazypants.enderio.conduit.ConnectionMode; import crazypants.enderio.conduit.item.IItemConduit; +import crazypants.enderio.conduit.liquid.ILiquidConduit; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaPipeEntity; @@ -274,14 +276,19 @@ public class FluidConvertingInventoryAdaptor extends InventoryAdaptor { boolean anyValid = false; for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { // Avoid sending stuff into itself me network - if (checkValidSide(this.posInterface.getOffSet(dir).getTileEntity(), dir) - && !isItemConduit(this.posInterface.getOffSet(dir).getTileEntity())) { - final int result = checkItemFluids(this.getSideFluid(dir), this.getSideItem(dir), dir.getOpposite()); - if (result == 1) { - return true; - } - if (result != 2) { - anyValid = true; + TileEntity te = this.posInterface.getOffSet(dir).getTileEntity(); + if (te != null && checkValidSide(te, dir)) { + if (!isConduit(te) || (!isItemConduit(te) && isFluidConduitConnected(te, dir))) { + final int result = checkItemFluids( + this.getSideFluid(dir), + this.getSideItem(dir), + dir.getOpposite()); + if (result == 1) { + return true; + } + if (result != 2) { + anyValid = true; + } } } } @@ -356,6 +363,15 @@ public class FluidConvertingInventoryAdaptor extends InventoryAdaptor { return false; } + private boolean isFluidConduitConnected(TileEntity te, ForgeDirection dir) { + try { + ILiquidConduit liquidConduit = (ILiquidConduit) eioTypeCheck.invoke(te, ILiquidConduit.class); + return liquidConduit.getConnectionMode(dir.getOpposite()) != ConnectionMode.DISABLED; + } catch (IllegalAccessException | InvocationTargetException e) { + return false; + } + } + private boolean isItemConduit(TileEntity te) { if (ModAndClassUtil.EIO && conduitClazz.isInstance(te)) { try {