001 package net.minecraftforge.liquids;
002
003 import net.minecraftforge.common.ForgeDirection;
004
005 public interface ITankContainer {
006
007 /**
008 * Fills liquid into internal tanks, distribution is left to the ITankContainer.
009 * @param from Orientation the liquid is pumped in from.
010 * @param resource LiquidStack representing the maximum amount of liquid filled into the ITankContainer
011 * @param doFill If false filling will only be simulated.
012 * @return Amount of resource that was filled into internal tanks.
013 */
014 int fill(ForgeDirection from, LiquidStack resource, boolean doFill);
015 /**
016 * Fills liquid into the specified internal tank.
017 * @param from Orientation the liquid is pumped in from.
018 * @param resource LiquidStack representing the maximum amount of liquid filled into the ITankContainer
019 * @param doFill If false filling will only be simulated.
020 * @return Amount of resource that was filled into internal tanks.
021 */
022 int fill(int tankIndex, LiquidStack resource, boolean doFill);
023
024 /**
025 * Drains liquid out of internal tanks, distribution is left to the ITankContainer.
026 * @param from Orientation the liquid is drained to.
027 * @param maxDrain Maximum amount of liquid to drain.
028 * @param doDrain If false draining will only be simulated.
029 * @return LiquidStack representing the liquid and amount actually drained from the ITankContainer
030 */
031 LiquidStack drain(ForgeDirection from, int maxDrain, boolean doDrain);
032 /**
033 * Drains liquid out of the specified internal tank.
034 * @param from Orientation the liquid is drained to.
035 * @param maxDrain Maximum amount of liquid to drain.
036 * @param doDrain If false draining will only be simulated.
037 * @return LiquidStack representing the liquid and amount actually drained from the ITankContainer
038 */
039 LiquidStack drain(int tankIndex, int maxDrain, boolean doDrain);
040
041 /**
042 * @param direction tank side: UNKNOWN for default tank set
043 * @return Array of {@link LiquidTank}s contained in this ITankContainer for this direction
044 */
045 ILiquidTank[] getTanks(ForgeDirection direction);
046
047 /**
048 * Return the tank that this tank container desired to be used for the specified liquid type from the specified direction
049 *
050 * @param direction the direction
051 * @param type the liquid type, null is always an acceptable value
052 * @return a tank or null for no such tank
053 */
054 ILiquidTank getTank(ForgeDirection direction, LiquidStack type);
055
056 }