From a80c9dbb5aaf7c3ed1c3423cf3aec92f8324bb3a Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sun, 1 Jan 2017 23:14:27 +0100 Subject: [PATCH] Remove sidedness on fluid interface, fixes #801 --- .../node/NetworkNodeFluidInterface.java | 11 +++-- .../inventory/FluidHandlerFluidInterface.java | 46 +++++++++++++++++++ .../ItemHandlerGridFilterInGrid.java | 10 ++-- .../tile/TileFluidInterface.java | 2 +- 4 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/inventory/FluidHandlerFluidInterface.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java index ea57418d3..283433c57 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java @@ -4,10 +4,7 @@ import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSUtils; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeHolder; import com.raoulvdberge.refinedstorage.api.util.IComparer; -import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic; -import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid; -import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; -import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade; +import com.raoulvdberge.refinedstorage.inventory.*; import com.raoulvdberge.refinedstorage.item.ItemUpgrade; import com.raoulvdberge.refinedstorage.tile.TileFluidInterface; import com.raoulvdberge.refinedstorage.tile.config.IComparable; @@ -55,6 +52,8 @@ public class NetworkNodeFluidInterface extends NetworkNode implements IComparabl } }; + private FluidHandlerFluidInterface tank = new FluidHandlerFluidInterface(tankIn, tankOut); + private ItemHandlerBasic in = new ItemHandlerBasic(1, new ItemHandlerListenerNetworkNode(this)); private ItemHandlerFluid out = new ItemHandlerFluid(1, new ItemHandlerListenerNetworkNode(this)); @@ -213,6 +212,10 @@ public class NetworkNodeFluidInterface extends NetworkNode implements IComparabl return out; } + public FluidHandlerFluidInterface getTank() { + return tank; + } + public FluidTank getTankIn() { return tankIn; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/FluidHandlerFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/FluidHandlerFluidInterface.java new file mode 100644 index 000000000..77fccab12 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/FluidHandlerFluidInterface.java @@ -0,0 +1,46 @@ +package com.raoulvdberge.refinedstorage.inventory; + +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.capability.FluidTankPropertiesWrapper; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fluids.capability.IFluidTankProperties; + +import javax.annotation.Nullable; + +public class FluidHandlerFluidInterface implements IFluidHandler { + private FluidTank input; + private FluidTank output; + private IFluidTankProperties[] properties; + + public FluidHandlerFluidInterface(FluidTank input, FluidTank output) { + this.input = input; + this.output = output; + this.properties = new IFluidTankProperties[]{ + new FluidTankPropertiesWrapper(input), + new FluidTankPropertiesWrapper(output) + }; + } + + @Override + public IFluidTankProperties[] getTankProperties() { + return properties; + } + + @Override + public int fill(FluidStack resource, boolean doFill) { + return input.fill(resource, doFill); + } + + @Nullable + @Override + public FluidStack drain(FluidStack resource, boolean doDrain) { + return output.drain(resource, doDrain); + } + + @Nullable + @Override + public FluidStack drain(int maxDrain, boolean doDrain) { + return output.drain(maxDrain, doDrain); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java index f0d560e0b..97377ca81 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java @@ -13,13 +13,13 @@ import java.util.ArrayList; import java.util.List; public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic { - private List filteredItems; + private List filters; private List tabs; - public ItemHandlerGridFilterInGrid(List filteredItems, List tabs) { + public ItemHandlerGridFilterInGrid(List filters, List tabs) { super(4, new ItemValidatorBasic(RSItems.GRID_FILTER)); - this.filteredItems = filteredItems; + this.filters = filters; this.tabs = tabs; } @@ -27,7 +27,7 @@ public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic { protected void onContentsChanged(int slot) { super.onContentsChanged(slot); - filteredItems.clear(); + filters.clear(); tabs.clear(); for (int i = 0; i < getSlots(); ++i) { @@ -51,7 +51,7 @@ public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic { ItemStack icon = ItemGridFilter.getIcon(filter); if (icon.isEmpty()) { - filteredItems.addAll(filters); + this.filters.addAll(filters); } else { tabs.add(new GridTab(filters, ItemGridFilter.getName(filter), icon)); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java index 30e982744..28fab5e53 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileFluidInterface.java @@ -44,7 +44,7 @@ public class TileFluidInterface extends TileNode { @Override public T getCapability(Capability capability, @Nullable EnumFacing facing) { if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) { - return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(facing == EnumFacing.DOWN ? getNode().getTankOut() : getNode().getTankIn()); + return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(getNode().getTank()); } return super.getCapability(capability, facing);