001 package net.minecraftforge.liquids;
002
003 /**
004 * A tank is the unit of interaction with liquid inventories.
005 *
006 * @author cpw
007 */
008 public 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 }