equivalent-exchange-3/src/main/java/com/pahimar/ee3/api/EnergyValue.java

148 lines
3.7 KiB
Java
Raw Normal View History

package com.pahimar.ee3.api;
2014-04-29 03:24:31 +02:00
import net.minecraft.nbt.NBTTagCompound;
public final class EnergyValue implements Comparable<EnergyValue>
2014-04-29 03:24:31 +02:00
{
private final float energyValue;
private final EnergyType energyType;
2014-04-29 03:24:31 +02:00
public EnergyValue(int energyValue)
2014-04-29 03:24:31 +02:00
{
this((float) energyValue);
2014-04-29 03:24:31 +02:00
}
public EnergyValue(double energyValue)
{
this((float) energyValue);
}
public EnergyValue(float energyValue)
2014-04-29 03:24:31 +02:00
{
this(energyValue, EnergyType.DEFAULT);
2014-04-29 03:24:31 +02:00
}
public EnergyValue(float energyValue, EnergyType energyType)
2014-04-29 03:24:31 +02:00
{
this.energyValue = energyValue;
this.energyType = energyType;
}
public EnergyValue(int energyValue, EnergyType energyType)
{
this((float) energyValue, energyType);
}
@Override
public boolean equals(Object object)
{
return object instanceof EnergyValue && (compareTo((EnergyValue) object) == 0);
2014-04-29 03:24:31 +02:00
}
@Override
public String toString()
2014-04-29 03:24:31 +02:00
{
return String.format(" %s@%s ", energyValue, energyType);
2014-04-29 03:24:31 +02:00
}
@Override
public int compareTo(EnergyValue energyValue)
2014-04-29 03:24:31 +02:00
{
if (energyValue != null)
2014-04-29 03:24:31 +02:00
{
if (this.energyType == energyValue.getEnergyType())
2014-04-29 03:24:31 +02:00
{
return Float.compare(this.energyValue, energyValue.getEnergyValue());
2014-04-29 03:24:31 +02:00
}
else
2014-04-29 03:24:31 +02:00
{
return (this.energyType.ordinal() - energyValue.getEnergyType().ordinal());
2014-04-29 03:24:31 +02:00
}
}
else
2014-04-29 03:24:31 +02:00
{
return -1;
2014-04-29 03:24:31 +02:00
}
}
public EnergyType getEnergyType()
2014-04-29 03:24:31 +02:00
{
return this.energyType;
2014-04-29 03:24:31 +02:00
}
public float getEnergyValue()
2014-04-29 03:24:31 +02:00
{
return this.energyValue;
2014-04-29 03:24:31 +02:00
}
public NBTTagCompound writeToNBT(NBTTagCompound nbtTagCompound)
{
nbtTagCompound.setFloat("energyValue", energyValue);
nbtTagCompound.setInteger("energyType", energyType.ordinal());
return nbtTagCompound;
}
public static NBTTagCompound writeEnergyValueToNBT(EnergyValue energyValue)
{
NBTTagCompound nbtTagCompound = new NBTTagCompound();
energyValue.writeToNBT(nbtTagCompound);
return nbtTagCompound;
}
public static EnergyValue loadEnergyValueFromNBT(NBTTagCompound nbtTagCompound)
{
if (nbtTagCompound.hasKey("energyValue") && nbtTagCompound.hasKey("energyType"))
{
float energyValue = nbtTagCompound.getFloat("energyValue");
EnergyType energyType = EnergyType.getEnergyTypeFromOrdinal(nbtTagCompound.getInteger("energyType"));
return new EnergyValue(energyValue, energyType);
}
return null;
}
public static enum EnergyType
2014-04-29 03:24:31 +02:00
{
UNKNOWN, CORPOREAL, KINETIC, TEMPORAL, ESSENTIA, AMORPHOUS, VOID, OMNI;
public static final EnergyType DEFAULT = EnergyType.CORPOREAL;
public static EnergyType getEnergyTypeFromOrdinal(int ordinal)
{
if (ordinal == CORPOREAL.ordinal())
{
return CORPOREAL;
}
else if (ordinal == KINETIC.ordinal())
{
return KINETIC;
}
else if (ordinal == TEMPORAL.ordinal())
{
return TEMPORAL;
}
else if (ordinal == ESSENTIA.ordinal())
{
return ESSENTIA;
}
else if (ordinal == AMORPHOUS.ordinal())
{
return AMORPHOUS;
}
else if (ordinal == VOID.ordinal())
{
return VOID;
}
else if (ordinal == OMNI.ordinal())
{
return OMNI;
}
else
{
return UNKNOWN;
}
}
2014-04-29 03:24:31 +02:00
}
}