From fc6f964a5a05e18e88a9f32099ae71ad9f3e55ad Mon Sep 17 00:00:00 2001 From: lordIcocain Date: Thu, 28 Nov 2024 02:40:01 +0200 Subject: [PATCH 1/3] first commit --- .../FluidConvertingInventoryAdaptor.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java b/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java index 875b9b1d6..20dc181cc 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.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,15 +276,16 @@ public boolean containsItems() { 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) + || (isConduit(te) && (isItemConduit(te) || !isFluidConduitConnected(te, dir)))) + continue; + final int result = checkItemFluids(this.getSideFluid(dir), this.getSideItem(dir), dir.getOpposite()); + if (result == 1) { + return true; + } + if (result != 2) { + anyValid = true; } } // Same here. if there is no fluid tank or item inventory existed, it shouldn't send stuff here. @@ -356,6 +359,15 @@ private boolean isGTMachine(Object o) { 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 { From b8d653e0d75236d906264a2356a28d42f42c2eb7 Mon Sep 17 00:00:00 2001 From: lordIcocain Date: Fri, 6 Dec 2024 13:44:02 +0200 Subject: [PATCH 2/3] change logic --- .../FluidConvertingInventoryAdaptor.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java b/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java index 20dc181cc..e3882d447 100644 --- a/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java +++ b/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java @@ -277,15 +277,16 @@ public boolean containsItems() { for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { // Avoid sending stuff into itself me network TileEntity te = this.posInterface.getOffSet(dir).getTileEntity(); - if (te == null || !checkValidSide(te, dir) - || (isConduit(te) && (isItemConduit(te) || !isFluidConduitConnected(te, dir)))) - continue; - final int result = checkItemFluids(this.getSideFluid(dir), this.getSideItem(dir), dir.getOpposite()); - if (result == 1) { - return true; - } - if (result != 2) { - anyValid = true; + 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; + } + } } } // Same here. if there is no fluid tank or item inventory existed, it shouldn't send stuff here. From 61a656dbd7ce168ebf04bec2858433209b666030 Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Sun, 22 Dec 2024 00:46:01 +0100 Subject: [PATCH 3/3] sa (cherry picked from commit 6b4fbae3ea79d2e1531fe9d8b649040e5bf7c31f) --- .../github/inventory/FluidConvertingInventoryAdaptor.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java b/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java index e3882d447..f4500f459 100644 --- a/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java +++ b/src/main/java/com/glodblock/github/inventory/FluidConvertingInventoryAdaptor.java @@ -279,7 +279,10 @@ public boolean containsItems() { 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()); + final int result = checkItemFluids( + this.getSideFluid(dir), + this.getSideItem(dir), + dir.getOpposite()); if (result == 1) { return true; }