package mods.eln.sixnode.electricalbreaker; import mods.eln.misc.INBTTReady; import mods.eln.sim.IProcess; import mods.eln.sixnode.electricalcable.ElectricalCableDescriptor; import net.minecraft.nbt.NBTTagCompound; public class ElectricalBreakerCutProcess implements IProcess, INBTTReady { ElectricalBreakerElement breaker; double T = 0; public ElectricalBreakerCutProcess(ElectricalBreakerElement breaker) { this.breaker = breaker; } @Override public void process(double time) { double U = breaker.aLoad.getU(); double I = breaker.aLoad.getCurrent(); double Tmax = 0; ElectricalCableDescriptor cable = breaker.cableDescriptor; if (cable == null) { T = 0; } else { Math.min(I, cable.electricalNominalPower / cable.electricalMaximalVoltage * 10); double P = I * I * cable.electricalRs * 2 - T / cable.thermalRp * 0.9; /*if (P > 200) { int i = 0; i++; Utils.println(P); }*/ //double pMax = Eln.electricalCableDeltaTMax * cable.thermalC; if (I > 1) { int idx = 0; idx++; } T += P / cable.thermalC * time; Tmax = cable.thermalWarmLimit * 0.8; } //Utils.println(T); if (U >= breaker.voltageMax || U < breaker.voltageMin || T > Tmax) { breaker.setSwitchState(false); } } @Override public void readFromNBT(NBTTagCompound nbt, String str) { T = nbt.getFloat(str + "T"); } @Override public void writeToNBT(NBTTagCompound nbt, String str) { nbt.setFloat(str + "T", (float) T); } }