| package mekanism.common.tile; |
| |
| import mekanism.api.Coord4D; |
| import mekanism.common.util.PipeUtils; |
| import net.minecraftforge.common.util.ForgeDirection; |
| import net.minecraftforge.fluids.Fluid; |
| import net.minecraftforge.fluids.FluidStack; |
| import net.minecraftforge.fluids.FluidTankInfo; |
| import net.minecraftforge.fluids.IFluidHandler; |
| |
| public class TileEntitySolarEvaporationValve extends TileEntitySolarEvaporationBlock implements IFluidHandler |
| { |
| public boolean prevMaster = false; |
| |
| @Override |
| public void onUpdate() |
| { |
| super.onUpdate(); |
| |
| if(!worldObj.isRemote) |
| { |
| if((master != null) != prevMaster) |
| { |
| for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) |
| { |
| Coord4D obj = Coord4D.get(this).getFromSide(side); |
| |
| if(!obj.isAirBlock(worldObj) && !(obj.getTileEntity(worldObj) instanceof TileEntitySolarEvaporationBlock)) |
| { |
| obj.getBlock(worldObj).onNeighborChange(worldObj, obj.xCoord, obj.yCoord, obj.zCoord, xCoord, yCoord, zCoord); |
| } |
| } |
| } |
| |
| prevMaster = (master != null); |
| } |
| } |
| |
| @Override |
| public int fill(ForgeDirection from, FluidStack resource, boolean doFill) |
| { |
| return master == null ? 0 : master.inputTank.fill(resource, doFill); |
| } |
| |
| @Override |
| public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) |
| { |
| if(master != null && (resource == null || resource.isFluidEqual(master.outputTank.getFluid()))) |
| { |
| return master.outputTank.drain(resource.amount, doDrain); |
| } |
| |
| return null; |
| } |
| |
| @Override |
| public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) |
| { |
| if(master != null) |
| { |
| return master.outputTank.drain(maxDrain, doDrain); |
| } |
| |
| return null; |
| } |
| |
| @Override |
| public boolean canFill(ForgeDirection from, Fluid fluid) |
| { |
| return master != null && master.hasRecipe(fluid); |
| } |
| |
| @Override |
| public boolean canDrain(ForgeDirection from, Fluid fluid) |
| { |
| return master != null && master.outputTank.getFluidAmount() > 0; |
| } |
| |
| @Override |
| public FluidTankInfo[] getTankInfo(ForgeDirection from) |
| { |
| if(master == null) |
| { |
| return PipeUtils.EMPTY; |
| } |
| |
| return new FluidTankInfo[] {new FluidTankInfo(master.inputTank), new FluidTankInfo(master.outputTank)}; |
| } |
| } |