001package net.minecraftforge.liquids;
002
003/**
004 * A tank is the unit of interaction with liquid inventories.
005 *
006 * @author cpw
007 */
008public interface ILiquidTank {
009
010    /**
011     * @return LiquidStack representing the liquid contained in the tank, null if empty.
012     */
013    LiquidStack getLiquid();
014
015    /**
016     * @return capacity of this tank
017     */
018    int getCapacity();
019
020    /**
021     *
022     * @param resource
023     * @param doFill
024     * @return Amount of liquid used for filling.
025     */
026    int fill(LiquidStack resource, boolean doFill);
027    /**
028     *
029     * @param maxDrain
030     * @param doDrain
031     * @return Null if nothing was drained, otherwise a LiquidStack containing the drained.
032     */
033    LiquidStack drain(int maxDrain, boolean doDrain);
034
035    /**
036     * Positive values indicate a positive liquid pressure (liquid wants to leave this tank)
037     * Negative values indicate a negative liquid pressure (liquid wants to fill this tank)
038     * Zero indicates no pressure
039     *
040     * @return a number indicating tank pressure
041     */
042    public int getTankPressure();
043
044}