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

88 lines
2.6 KiB
Java
Raw Normal View History

2015-05-07 19:45:06 +02:00
package com.pahimar.ee3.api.exchange;
2014-04-29 03:24:31 +02:00
2023-01-03 17:47:36 +01:00
import java.math.BigDecimal;
import java.text.DecimalFormat;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.IChatComponent;
public final class EnergyValue implements Comparable<EnergyValue> {
2023-01-03 17:47:36 +01:00
private static final DecimalFormat DECIMAL_FORMAT
= new DecimalFormat("###,###,###,###,###.###");
private float energyValue;
2014-04-29 03:24:31 +02:00
2023-01-03 17:47:36 +01:00
public EnergyValue() {
2015-04-19 21:01:35 +02:00
this(0);
}
public EnergyValue(Number energyValue) {
this.energyValue = energyValue.floatValue();
}
public float getValue() {
return this.energyValue;
}
public IChatComponent getChatComponent() {
return new ChatComponentText("" + this.getValue());
2014-04-29 03:24:31 +02:00
}
@Override
public String toString() {
return DECIMAL_FORMAT.format(energyValue);
2014-04-29 03:24:31 +02:00
}
@Override
public boolean equals(Object object) {
return object instanceof EnergyValue && (compareTo((EnergyValue) object) == 0);
}
@Override
public int compareTo(EnergyValue energyValue) {
if (energyValue != null) {
2015-04-19 21:01:35 +02:00
return Float.compare(this.energyValue, energyValue.getValue());
2023-01-03 17:47:36 +01:00
} else {
return -1;
2014-04-29 03:24:31 +02:00
}
}
public NBTTagCompound writeToNBT(NBTTagCompound nbtTagCompound) {
nbtTagCompound.setFloat("energyValue", energyValue);
return nbtTagCompound;
}
public void readFromNBT(NBTTagCompound nbtTagCompound) {
if (nbtTagCompound.hasKey("energyValue")) {
this.energyValue = nbtTagCompound.getFloat("energyValue");
}
}
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")) {
float energyValue = nbtTagCompound.getFloat("energyValue");
return new EnergyValue(energyValue);
}
return null;
}
public static EnergyValue factor(EnergyValue energyValue, Number factor) {
if ((Float.compare(factor.floatValue(), 0f) != 0) && (energyValue != null)) {
2023-01-03 17:47:36 +01:00
return new EnergyValue(
new BigDecimal(energyValue.getValue() * 1f / factor.floatValue())
.setScale(3, BigDecimal.ROUND_HALF_EVEN)
.floatValue()
);
} else {
return null;
}
}
2014-04-29 03:24:31 +02:00
}