Files
MagicBees/src/main/java/magicbees/tileentity/AuraCharges.java
T

70 lines
2.1 KiB
Java
Raw Normal View History

2015-03-28 02:51:41 -07:00
package magicbees.tileentity;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import magicbees.bees.AuraCharge;
2015-03-28 02:51:41 -07:00
public class AuraCharges {
private static final String auraChargesTagName = "AuraCharges";
private final Map<AuraCharge, Long> charges = new HashMap<AuraCharge, Long>(AuraCharge.values().length);
2015-03-28 02:51:41 -07:00
public void start(AuraCharge auraChargeType, World worldObj) {
2015-03-28 02:51:41 -07:00
charges.put(auraChargeType, worldObj.getTotalWorldTime());
}
public boolean isActive(AuraCharge auraChargeType) {
2015-03-28 02:51:41 -07:00
return charges.keySet().contains(auraChargeType);
}
public boolean isExpired(AuraCharge auraChargeType, World worldObj) {
2015-03-28 02:51:41 -07:00
Long chargeStart = charges.get(auraChargeType);
return chargeStart == null || chargeStart + auraChargeType.duration <= worldObj.getTotalWorldTime();
}
public void stop(AuraCharge AuraChargeType) {
2015-03-28 02:51:41 -07:00
charges.remove(AuraChargeType);
}
public void writeToNBT(NBTTagCompound nbtTagCompound) {
NBTTagCompound auraChargeTags = new NBTTagCompound();
for (Map.Entry<AuraCharge, Long> chargeEntry : charges.entrySet()) {
2015-03-28 02:51:41 -07:00
String chargeName = chargeEntry.getKey().toString();
Long chargeStart = chargeEntry.getValue();
auraChargeTags.setLong(chargeName, chargeStart);
}
nbtTagCompound.setTag(auraChargesTagName, auraChargeTags);
}
public void readFromNBT(NBTTagCompound nbtTagCompound) {
NBTTagCompound auraChargeTags = nbtTagCompound.getCompoundTag(auraChargesTagName);
for (AuraCharge auraCharge : AuraCharge.values()) {
2015-03-28 02:51:41 -07:00
String chargeName = auraCharge.toString();
Long chargeStart = auraChargeTags.getLong(chargeName);
if (chargeStart > 0) {
charges.put(auraCharge, chargeStart);
}
}
}
public int writeToFlags() {
int flags = 0;
for (AuraCharge auraChargeType : charges.keySet()) {
2015-03-28 02:51:41 -07:00
flags |= auraChargeType.flag;
}
return flags;
}
public void readFromFlags(int flags) {
charges.clear();
for (AuraCharge auraCharge : AuraCharge.values()) {
2015-03-28 02:51:41 -07:00
if ((flags & auraCharge.flag) > 0) {
charges.put(auraCharge, 0L);
}
}
}
}