From b6f83c81ee3eeb071ddac550bdd2bb8aaca474f5 Mon Sep 17 00:00:00 2001 From: way2muchnoise Date: Mon, 21 Nov 2016 22:37:48 +0100 Subject: [PATCH] improvements to fluid io, fixes #635 --- .../raoulvdberge/refinedstorage/tile/TileExporter.java | 7 ++++--- .../raoulvdberge/refinedstorage/tile/TileImporter.java | 10 +++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java index 03fdb76d9..c6a3104aa 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java @@ -90,10 +90,11 @@ public class TileExporter extends TileMultipartNode implements IComparable, ITyp FluidStack took = network.extractFluid(stack, toExtract, compare, true); - if (took != null && (toExtract - handler.fill(took, false)) == 0) { - took = network.extractFluid(stack, toExtract, compare, false); - + if (took != null) { + int filled = handler.fill(took, false); + took = network.extractFluid(stack, filled, compare, false); handler.fill(took, true); + break; } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java index c13a1bcc3..26609d2f0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileImporter.java @@ -95,10 +95,14 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false); if (stack != null && IFilterable.canTakeFluids(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.amount, true) == null) { - FluidStack drained = handler.drain(Fluid.BUCKET_VOLUME * upgrades.getInteractStackSize(), true); + FluidStack toDrain = handler.drain(Fluid.BUCKET_VOLUME * upgrades.getInteractStackSize(), false); - if (drained != null) { - network.insertFluid(drained, drained.amount, false); + if (toDrain != null) { + FluidStack remainder = network.insertFluid(toDrain, toDrain.amount, false); + if (remainder != null) { + toDrain.amount -= remainder.amount; + } + handler.drain(toDrain, true); } } }