equivalent-exchange-3/src/main/java/moze_intel/projecte/api/tile/TileEmcBase.java

91 lines
1.7 KiB
Java

package moze_intel.projecte.api.tile;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
/**
* Base class for the reference implementations TileEmcProvider, TileEmcAcceptor, and TileEmcHandler
* Usually you want to use one of three derived reference implementations
* Extend this if you want fine-grained control over all aspects of how your tile provides or accepts EMC
*
* @author williewillus
*/
public class TileEmcBase extends TileEntity implements IEmcStorage
{
protected double maximumEMC;
protected double currentEMC = 0;
protected TileEmcBase()
{
setMaximumEMC(Double.MAX_VALUE);
}
public final void setMaximumEMC(double max)
{
maximumEMC = max;
if (currentEMC > maximumEMC)
{
currentEMC = maximumEMC;
}
}
@Override
public double getStoredEmc()
{
return currentEMC;
}
@Override
public double getMaximumEmc()
{
return maximumEMC;
}
/**
* Add EMC directly into the internal buffer. Use for internal implementation of your tile
*/
protected void addEMC(double toAdd)
{
currentEMC += toAdd;
if (currentEMC > maximumEMC)
{
currentEMC = maximumEMC;
}
}
/**
* Removes EMC directly into the internal buffer. Use for internal implementation of your tile
*/
protected void removeEMC(double toRemove)
{
currentEMC -= toRemove;
if (currentEMC < 0)
{
currentEMC = 0;
}
}
@Override
public void writeToNBT(NBTTagCompound tag)
{
super.writeToNBT(tag);
if (currentEMC > maximumEMC)
{
currentEMC = maximumEMC;
}
tag.setDouble("EMC", currentEMC);
}
@Override
public void readFromNBT(NBTTagCompound tag)
{
super.readFromNBT(tag);
double set = tag.getDouble("EMC");
if (set > maximumEMC)
{
set = maximumEMC;
}
currentEMC = set;
}
}