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 }