Fixed Power injection for Multiblocks.
All Energy Producing Multis will explode if they cannot handle the output load. All Energy Producing Multis also now support multi amp dynamo hatches, which may be added by addons.
This commit is contained in:
parent
7b592a645c
commit
11ba5e8594
2 changed files with 68 additions and 10 deletions
|
@ -505,16 +505,78 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addEnergyOutput(long aEU) {
|
public boolean addEnergyOutput(long aEU) {
|
||||||
if (aEU <= 0) return true;
|
if (aEU <= 0) {
|
||||||
for (GT_MetaTileEntity_Hatch_Dynamo tHatch : mDynamoHatches) {
|
|
||||||
if (isValidMetaTileEntity(tHatch)) {
|
|
||||||
if (tHatch.getBaseMetaTileEntity().increaseStoredEnergyUnits(aEU, false)) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
if (mDynamoHatches.size() > 0) {
|
||||||
|
return addEnergyOutputMultipleDynamos(aEU, true);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
public boolean addEnergyOutputMultipleDynamos(long aEU, boolean aAllowMixedVoltageDynamos) {
|
||||||
|
int injected = 0;
|
||||||
|
long totalOutput = 0;
|
||||||
|
long aFirstVoltageFound = -1;
|
||||||
|
boolean aFoundMixedDynamos = false;
|
||||||
|
for (GT_MetaTileEntity_Hatch_Dynamo aDynamo : mDynamoHatches) {
|
||||||
|
if( aDynamo == null ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (isValidMetaTileEntity(aDynamo)) {
|
||||||
|
long aVoltage = aDynamo.maxEUOutput();
|
||||||
|
long aTotal = aDynamo.maxAmperesOut() * aVoltage;
|
||||||
|
// Check against voltage to check when hatch mixing
|
||||||
|
if (aFirstVoltageFound == -1) {
|
||||||
|
aFirstVoltageFound = aVoltage;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/**
|
||||||
|
* Calcualtes overclocked ness using long integers
|
||||||
|
* @param aEUt - recipe EUt
|
||||||
|
* @param aDuration - recipe Duration
|
||||||
|
* @param mAmperage - should be 1 ?
|
||||||
|
*/
|
||||||
|
//Long time calculation
|
||||||
|
if (aFirstVoltageFound != aVoltage) {
|
||||||
|
aFoundMixedDynamos = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
totalOutput += aTotal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (totalOutput < aEU || (aFoundMixedDynamos && !aAllowMixedVoltageDynamos)) {
|
||||||
|
explodeMultiblock();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
long leftToInject;
|
||||||
|
//Long EUt calculation
|
||||||
|
long aVoltage;
|
||||||
|
//Isnt too low EUt check?
|
||||||
|
int aAmpsToInject;
|
||||||
|
int aRemainder;
|
||||||
|
int ampsOnCurrentHatch;
|
||||||
|
//xEUt *= 4;//this is effect of everclocking
|
||||||
|
for (GT_MetaTileEntity_Hatch_Dynamo aDynamo : mDynamoHatches) {
|
||||||
|
if (isValidMetaTileEntity(aDynamo)) {
|
||||||
|
leftToInject = aEU - injected;
|
||||||
|
aVoltage = aDynamo.maxEUOutput();
|
||||||
|
aAmpsToInject = (int) (leftToInject / aVoltage);
|
||||||
|
aRemainder = (int) (leftToInject - (aAmpsToInject * aVoltage));
|
||||||
|
ampsOnCurrentHatch= (int) Math.min(aDynamo.maxAmperesOut(), aAmpsToInject);
|
||||||
|
for (int i = 0; i < ampsOnCurrentHatch; i++) {
|
||||||
|
aDynamo.getBaseMetaTileEntity().increaseStoredEnergyUnits(aVoltage, false);
|
||||||
|
}
|
||||||
|
injected+=aVoltage*ampsOnCurrentHatch;
|
||||||
|
if(aRemainder>0 && ampsOnCurrentHatch<aDynamo.maxAmperesOut()){
|
||||||
|
aDynamo.getBaseMetaTileEntity().increaseStoredEnergyUnits(aRemainder, false);
|
||||||
|
injected+=aRemainder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return injected > 0;
|
||||||
|
}
|
||||||
|
|
||||||
public long getMaxInputVoltage() {
|
public long getMaxInputVoltage() {
|
||||||
long rVoltage = 0;
|
long rVoltage = 0;
|
||||||
|
|
|
@ -165,10 +165,6 @@ public abstract class GT_MetaTileEntity_LargeTurbine extends GT_MetaTileEntity_M
|
||||||
} else {
|
} else {
|
||||||
this.mMaxProgresstime = 1;
|
this.mMaxProgresstime = 1;
|
||||||
this.mEfficiencyIncrease = (10);
|
this.mEfficiencyIncrease = (10);
|
||||||
if(this.mDynamoHatches.size()>0){
|
|
||||||
if(this.mDynamoHatches.get(0).getBaseMetaTileEntity().getOutputVoltage() < (int)((long)mEUt * (long)mEfficiency / 10000L)){
|
|
||||||
explodeMultiblock();}
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue