| package mekanism.common.teleportation; |
| |
| import mekanism.api.energy.IStrictEnergyAcceptor; |
| import mekanism.api.energy.IStrictEnergyStorage; |
| import mekanism.api.gas.Gas; |
| import mekanism.api.gas.GasStack; |
| import mekanism.api.gas.GasTank; |
| import mekanism.api.gas.IGasHandler; |
| import mekanism.common.tile.component.TileComponentUpgrade; |
| |
| import net.minecraft.item.ItemStack; |
| import net.minecraftforge.common.util.ForgeDirection; |
| import net.minecraftforge.fluids.Fluid; |
| import net.minecraftforge.fluids.FluidStack; |
| import net.minecraftforge.fluids.FluidTank; |
| import net.minecraftforge.fluids.FluidTankInfo; |
| import net.minecraftforge.fluids.IFluidHandler; |
| |
| public class SharedInventory implements IStrictEnergyStorage, IFluidHandler, IGasHandler |
| { |
| public String name; |
| |
| public double storedEnergy; |
| public double MAX_ENERGY = 1000; |
| public FluidTank storedFluid; |
| public GasTank storedGas; |
| public ItemStack storedItem; |
| |
| public SharedInventory(String freq) |
| { |
| name = freq; |
| |
| storedEnergy = 0; |
| storedFluid = new FluidTank(1000); |
| storedGas = new GasTank(1000); |
| storedItem = null; |
| } |
| |
| @Override |
| public int fill(ForgeDirection from, FluidStack resource, boolean doFill) |
| { |
| return storedFluid.fill(resource, doFill); |
| } |
| |
| @Override |
| public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) |
| { |
| if(resource.isFluidEqual(storedFluid.getFluid())) |
| { |
| return storedFluid.drain(resource.amount, doDrain); |
| } |
| |
| return null; |
| } |
| |
| @Override |
| public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) |
| { |
| return storedFluid.drain(maxDrain, doDrain); |
| } |
| |
| @Override |
| public boolean canFill(ForgeDirection from, Fluid fluid) |
| { |
| return storedFluid.getFluid() == null || fluid == storedFluid.getFluid().getFluid(); |
| } |
| |
| @Override |
| public boolean canDrain(ForgeDirection from, Fluid fluid) |
| { |
| return storedFluid.getFluid() == null || fluid == storedFluid.getFluid().getFluid(); |
| } |
| |
| @Override |
| public FluidTankInfo[] getTankInfo(ForgeDirection from) |
| { |
| return new FluidTankInfo[]{new FluidTankInfo(storedFluid)}; |
| } |
| |
| @Override |
| public int receiveGas(ForgeDirection side, GasStack stack) |
| { |
| return storedGas.receive(stack, true); |
| } |
| |
| @Override |
| public GasStack drawGas(ForgeDirection side, int amount) |
| { |
| return storedGas.draw(amount, true); |
| } |
| |
| @Override |
| public boolean canReceiveGas(ForgeDirection side, Gas type) |
| { |
| return storedGas.getGasType() == null || type == storedGas.getGasType(); |
| } |
| |
| @Override |
| public boolean canDrawGas(ForgeDirection side, Gas type) |
| { |
| return storedGas.getGasType() == null || type == storedGas.getGasType(); |
| } |
| |
| @Override |
| public double getEnergy() |
| { |
| return storedEnergy; |
| } |
| |
| @Override |
| public void setEnergy(double energy) |
| { |
| storedEnergy = Math.max(0, Math.min(energy, MAX_ENERGY)); |
| } |
| |
| @Override |
| public double getMaxEnergy() |
| { |
| return MAX_ENERGY; |
| } |
| } |