@Nullable @Override public IFluidHandler getHandler(int[] targetTanks) { Map<Integer, TankSlot> tanks = new HashMap<>(); for (int index : targetTanks) { TankSlot tankSlot = this.tanks.get(index); if (tankSlot != null) { tanks.put(index, tankSlot); } } if (tanks.isEmpty()) { return null; } return new TankContainer(this, tanks, null); }
@Override @Nullable public FluidStack drain(final FluidStack resource, final boolean doDrain) { final int index = getTankIndexToDrain(tanks, from, null); if (tanks.containsKey(index)) { return this.tankContainer.drain(index, resource.amount, doDrain); } return null; }
@Override public IFluidTankProperties[] getTankProperties() { final IFluidTankProperties[] properties = new IFluidTankProperties[getTanks().length]; for (int i = 0; i < properties.length; ++i) { IFluidTank tank = getTanks()[i]; properties[i] = new FluidTankProperties(tank.getFluid(), tank.getCapacity()); } return properties; }
@Override public final int fill(final FluidStack resource, final boolean doFill) { final int index = getTankIndexToFill(tanks, from, resource); if (tanks.containsKey(index)) { return this.tankContainer.fill(index, resource, doFill); } return 0; }
public ComponentTankContainer(final IMachine machine) { super(machine); this.tanks = new LinkedHashMap<>(); this.handlers = new EnumMap<>(EnumFacing.class); for (EnumFacing facing : EnumFacing.VALUES) { handlers.put(facing, new TankContainer(this, this.tanks, facing)); } this.noFacingHandler = new TankContainer(this, this.tanks, null); }
@Override @Nullable public final FluidStack drain(final int maxDrain, final boolean doDrain) { final int index = getTankIndexToDrain(tanks, from, null); if (tanks.containsKey(index)) { return this.tankContainer.drain(index, maxDrain, doDrain); } return null; }