package mekanism.common.capabilities;
import mekanism.api.energy.IStrictEnergyStorage;
import mekanism.common.capabilities.DefaultStorageHelper.DefaultStorage;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.common.util.INBTSerializable;
/**
* Created by ben on 30/04/16.
*/
public class DefaultStrictEnergyStorage implements IStrictEnergyStorage, INBTSerializable<NBTTagCompound>
{
private double energyStored = 0;
private double maxEnergy;
public DefaultStrictEnergyStorage()
{
this(0);
}
public DefaultStrictEnergyStorage(double capacity)
{
maxEnergy = capacity;
}
@Override
public double getEnergy()
{
return energyStored;
}
@Override
public void setEnergy(double energy)
{
energyStored = energy;
}
@Override
public double getMaxEnergy()
{
return maxEnergy;
}
@Override
public NBTTagCompound serializeNBT()
{
NBTTagCompound tag = new NBTTagCompound();
tag.setDouble("maxEnergy", getMaxEnergy());
tag.setDouble("energyStored", getEnergy());
return tag;
}
@Override
public void deserializeNBT(NBTTagCompound nbt)
{
setEnergy(nbt.getDouble("energyStored"));
maxEnergy = nbt.getDouble("maxEnergy");
}
public static void register()
{
CapabilityManager.INSTANCE.register(IStrictEnergyStorage.class, new DefaultStorage<>(), DefaultStrictEnergyStorage.class);
}
}