    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    }