resonant-induction/archive/java/resonantinduction/old/api/fluid/INetworkFluidPart.java
2014-01-11 17:44:07 +08:00

59 lines
2.3 KiB
Java

package resonantinduction.old.api.fluid;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.core.tilenetwork.INetworkPart;
/**
* Interface used by part that are members of a fluid tile network. Parts in the network will act as
* one entity and will be controlled by the network. This means the network need the part to access
* the parts in a set way to function correctly
*
* @author DarkGuardsman
*/
public interface INetworkFluidPart extends IFluidHandler, INetworkPart
{
/** Gets information about the tanks internal storage that the network has access to. */
public FluidTankInfo[] getTankInfo();
/**
* Fills the pipe in the same way that fill method is called in IFluidHandler. This is used so
* the network has a direct method to access the pipes internal fluid storage
*/
public int fillTankContent(int index, FluidStack stack, boolean doFill);
/**
* Removes from from the pipe in the same way that drain method is called in IFluidHandler. This
* is used so the network has a direct method to access the pipes internal fluid storage
*/
public FluidStack drainTankContent(int index, int volume, boolean doDrain);
/**
* Can the fluid pass from one side to the next. Used by path finder to see if the fluid can
* move threw the pipes.
*
* @param fluid - fluid that is trying to pass threw
* @param from - direction the fluid is coming from
* @param to - direction the fluid is going to
*
* @Note only do logic in the method as it may be called many times and expect no change from
* the pipes or world.
* @return true will let the fluid pass.
*/
public boolean canPassThrew(FluidStack fluid, ForgeDirection from, ForgeDirection to);
/**
* Called while the fluid is passing threw the pipe. This is the pipes chance to modify the
* fluid or react to the fluid
*
* @param fluid - fluid that is trying to pass threw
* @param from - direction the fluid is coming from
* @param to - direction the fluid is going to
* @return true if something happened to completely stop the fluid from moving. Eg. pipe blew
* up, or jammed
*/
public boolean onPassThrew(FluidStack fluid, ForgeDirection from, ForgeDirection to);
}