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

68 lines
2.3 KiB
Java
Raw Normal View History

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