package mekanism.common.content.entangloporter;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank;
import mekanism.common.PacketHandler;
import mekanism.common.frequency.Frequency;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank;
public class InventoryFrequency extends Frequency
{
public static final String ENTANGLOPORTER = "Entangloporter";
public static final double MAX_ENERGY = 1000000;
public double storedEnergy;
public FluidTank storedFluid;
public GasTank storedGas;
public ItemStack storedItem;
public double temperature;
public InventoryFrequency(String n, String o)
{
super(n, o);
storedFluid = new FluidTank(1000);
storedGas = new GasTank(1000);
}
public InventoryFrequency(NBTTagCompound nbtTags)
{
super(nbtTags);
}
public InventoryFrequency(ByteBuf dataStream)
{
super(dataStream);
}
@Override
public void write(NBTTagCompound nbtTags)
{
super.write(nbtTags);
nbtTags.setDouble("storedEnergy", storedEnergy);
if(storedFluid.getFluid() != null)
{
nbtTags.setTag("storedFluid", storedFluid.writeToNBT(new NBTTagCompound()));
}
if(storedGas.getGas() != null)
{
nbtTags.setTag("storedGas", storedGas.write(new NBTTagCompound()));
}
if(storedItem != null)
{
nbtTags.setTag("storedItem", storedItem.writeToNBT(new NBTTagCompound()));
}
nbtTags.setDouble("temperature", temperature);
}
@Override
protected void read(NBTTagCompound nbtTags)
{
super.read(nbtTags);
storedFluid = new FluidTank(1000);
storedGas = new GasTank(1000);
storedEnergy = nbtTags.getDouble("storedEnergy");
if(nbtTags.hasKey("storedFluid"))
{
storedFluid.readFromNBT(nbtTags.getCompoundTag("storedFluid"));
}
if(nbtTags.hasKey("storedGas"))
{
storedGas.read(nbtTags.getCompoundTag("storedGas"));
}
if(nbtTags.hasKey("storedItem"))
{
storedItem = ItemStack.loadItemStackFromNBT(nbtTags.getCompoundTag("storedItem"));
}
temperature = nbtTags.getDouble("temperature");
}
@Override
public void write(ArrayList data)
{
super.write(data);
data.add(storedEnergy);
if(storedFluid.getFluid() != null)
{
data.add(true);
data.add(FluidRegistry.getFluidName(storedFluid.getFluid()));
data.add(storedFluid.getFluidAmount());
}
else {
data.add(false);
}
if(storedGas.getGas() != null)
{
data.add(true);
data.add(storedGas.getGasType().getID());
data.add(storedGas.getStored());
}
else {
data.add(false);
}
data.add(temperature);
}
@Override
protected void read(ByteBuf dataStream)
{
super.read(dataStream);
storedFluid = new FluidTank(1000);
storedGas = new GasTank(1000);
storedEnergy = dataStream.readDouble();
if(dataStream.readBoolean())
{
storedFluid.setFluid(new FluidStack(FluidRegistry.getFluid(PacketHandler.readString(dataStream)), dataStream.readInt()));
}
else {
storedFluid.setFluid(null);
}
if(dataStream.readBoolean())
{
storedGas.setGas(new GasStack(dataStream.readInt(), dataStream.readInt()));
}
else {
storedGas.setGas(null);
}
temperature = dataStream.readDouble();
}
}