Merge pull request #1548 from draknyte1/Fix-Multi-Power-Injection
Fixed Power injection for Multiblocks.
This commit is contained in:
commit
628cff9b3a
2 changed files with 68 additions and 10 deletions
|
@ -505,15 +505,77 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
|
|||
}
|
||||
|
||||
public boolean addEnergyOutput(long aEU) {
|
||||
if (aEU <= 0) return true;
|
||||
for (GT_MetaTileEntity_Hatch_Dynamo tHatch : mDynamoHatches) {
|
||||
if (isValidMetaTileEntity(tHatch)) {
|
||||
if (tHatch.getBaseMetaTileEntity().increaseStoredEnergyUnits(aEU, false)) {
|
||||
return true;
|
||||
if (aEU <= 0) {
|
||||
return true;
|
||||
}
|
||||
if (mDynamoHatches.size() > 0) {
|
||||
return addEnergyOutputMultipleDynamos(aEU, true);
|
||||
}
|
||||
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 false;
|
||||
return injected > 0;
|
||||
}
|
||||
|
||||
public long getMaxInputVoltage() {
|
||||
|
|
|
@ -165,10 +165,6 @@ public abstract class GT_MetaTileEntity_LargeTurbine extends GT_MetaTileEntity_M
|
|||
} else {
|
||||
this.mMaxProgresstime = 1;
|
||||
this.mEfficiencyIncrease = (10);
|
||||
if(this.mDynamoHatches.size()>0){
|
||||
if(this.mDynamoHatches.get(0).getBaseMetaTileEntity().getOutputVoltage() < (int)((long)mEUt * (long)mEfficiency / 10000L)){
|
||||
explodeMultiblock();}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue