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 * These shouldn't be used to interact with a foreign tank. Use {@link #fill(LiquidStack, boolean)}
017 * and {@link #drain(int, boolean)}.
018 *
019 * @param liquid
020 */
021 @Deprecated
022 void setLiquid(LiquidStack liquid);
023 /**
024 * This method should not be used to interact with a foreign tank. Use {@link #fill(LiquidStack, boolean)}
025 * and {@link #drain(int, boolean)}.
026 *
027 * @param capacity
028 */
029 @Deprecated
030 void setCapacity(int capacity);
031
032 /**
033 * @return capacity of this tank
034 */
035 int getCapacity();
036
037 /**
038 *
039 * @param resource
040 * @param doFill
041 * @return Amount of liquid used for filling.
042 */
043 int fill(LiquidStack resource, boolean doFill);
044 /**
045 *
046 * @param maxDrain
047 * @param doDrain
048 * @return Null if nothing was drained, otherwise a LiquidStack containing the drained.
049 */
050 LiquidStack drain(int maxDrain, boolean doDrain);
051
052 /**
053 * Positive values indicate a positive liquid pressure (liquid wants to leave this tank)
054 * Negative values indicate a negative liquid pressure (liquid wants to fill this tank)
055 * Zero indicates no pressure
056 *
057 * @return a number indicating tank pressure
058 */
059 public int getTankPressure();
060
061 }