package mods.eln.sixnode.electricalwatch; import mods.eln.item.electricalitem.BatteryItem; import mods.eln.misc.INBTTReady; import mods.eln.sim.IProcess; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class ElectricalWatchSlowProcess implements IProcess, INBTTReady { ElectricalWatchElement element; boolean upToDate = false; long oldDate = 1379; public ElectricalWatchSlowProcess(ElectricalWatchElement element) { this.element = element; } double getBatteryLevel() { ItemStack batteryStack = element.getInventory().getStackInSlot(ElectricalWatchContainer.batteryId); BatteryItem battery = (BatteryItem) BatteryItem.getDescriptor(batteryStack); if (battery != null) { return battery.getEnergy(batteryStack) / battery.getEnergyMax(batteryStack); } else { return 0; } } @Override public void process(double time) { ItemStack batteryStack = element.getInventory().getStackInSlot(ElectricalWatchContainer.batteryId); BatteryItem battery = (BatteryItem) BatteryItem.getDescriptor(batteryStack); double energy; if (battery == null || (energy = battery.getEnergy(batteryStack)) < element.descriptor.powerConsumtion * time * 4) { if (upToDate) { upToDate = false; oldDate = element.sixNode.coordonate.world().getWorldTime(); if (batteryStack != null) battery.setEnergy(batteryStack, 0); element.needPublish(); } } else { if (!upToDate) { upToDate = true; element.needPublish(); } battery.setEnergy(batteryStack, energy - element.descriptor.powerConsumtion * time); } } @Override public void readFromNBT(NBTTagCompound nbt, String str) { upToDate = nbt.getBoolean(str + "upToDate"); oldDate = nbt.getLong(str + "oldDate"); } @Override public void writeToNBT(NBTTagCompound nbt, String str) { nbt.setBoolean(str + "upToDate", upToDate); nbt.setLong(str + "oldDate", oldDate); } }