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;
|
|
|
|
|
2014-08-29 22:25:31 +02:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
2015-02-06 05:06:53 +01:00
|
|
|
import net.minecraft.util.ChatComponentText;
|
|
|
|
import net.minecraft.util.IChatComponent;
|
2014-08-29 22:25:31 +02:00
|
|
|
|
2016-05-28 20:57:10 +02:00
|
|
|
public final class EnergyValue implements Comparable<EnergyValue> {
|
2023-01-03 17:47:36 +01:00
|
|
|
private static final DecimalFormat DECIMAL_FORMAT
|
|
|
|
= new DecimalFormat("###,###,###,###,###.###");
|
2014-10-03 21:55:22 +02:00
|
|
|
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);
|
2014-09-12 22:11:18 +02:00
|
|
|
}
|
|
|
|
|
2016-05-14 04:28:10 +02:00
|
|
|
public EnergyValue(Number energyValue) {
|
|
|
|
this.energyValue = energyValue.floatValue();
|
|
|
|
}
|
|
|
|
|
2016-05-17 04:02:23 +02:00
|
|
|
public float getValue() {
|
|
|
|
return this.energyValue;
|
|
|
|
}
|
|
|
|
|
|
|
|
public IChatComponent getChatComponent() {
|
|
|
|
return new ChatComponentText("" + this.getValue());
|
2014-04-29 03:24:31 +02:00
|
|
|
}
|
|
|
|
|
2014-07-10 22:05:14 +02:00
|
|
|
@Override
|
2016-05-17 04:02:23 +02:00
|
|
|
public String toString() {
|
2016-05-28 20:57:10 +02:00
|
|
|
return DECIMAL_FORMAT.format(energyValue);
|
2014-04-29 03:24:31 +02:00
|
|
|
}
|
|
|
|
|
2014-07-10 22:05:14 +02:00
|
|
|
@Override
|
2016-05-17 04:02:23 +02:00
|
|
|
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 {
|
2014-07-10 22:05:14 +02:00
|
|
|
return -1;
|
2014-04-29 03:24:31 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-17 04:02:23 +02:00
|
|
|
public NBTTagCompound writeToNBT(NBTTagCompound nbtTagCompound) {
|
2014-08-29 22:25:31 +02:00
|
|
|
nbtTagCompound.setFloat("energyValue", energyValue);
|
|
|
|
return nbtTagCompound;
|
|
|
|
}
|
|
|
|
|
2016-05-17 04:02:23 +02:00
|
|
|
public void readFromNBT(NBTTagCompound nbtTagCompound) {
|
|
|
|
if (nbtTagCompound.hasKey("energyValue")) {
|
2015-03-22 21:52:48 +01:00
|
|
|
this.energyValue = nbtTagCompound.getFloat("energyValue");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-17 04:02:23 +02:00
|
|
|
public static NBTTagCompound writeEnergyValueToNBT(EnergyValue energyValue) {
|
2014-08-29 22:25:31 +02:00
|
|
|
NBTTagCompound nbtTagCompound = new NBTTagCompound();
|
|
|
|
energyValue.writeToNBT(nbtTagCompound);
|
|
|
|
return nbtTagCompound;
|
|
|
|
}
|
|
|
|
|
2016-05-17 04:02:23 +02:00
|
|
|
public static EnergyValue loadEnergyValueFromNBT(NBTTagCompound nbtTagCompound) {
|
|
|
|
if (nbtTagCompound.hasKey("energyValue")) {
|
|
|
|
float energyValue = nbtTagCompound.getFloat("energyValue");
|
2015-03-22 21:52:48 +01:00
|
|
|
return new EnergyValue(energyValue);
|
2014-08-29 22:25:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2016-05-17 04:02:23 +02:00
|
|
|
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 {
|
2016-05-17 04:02:23 +02:00
|
|
|
return null;
|
|
|
|
}
|
2016-05-14 04:28:10 +02:00
|
|
|
}
|
2014-04-29 03:24:31 +02:00
|
|
|
}
|