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,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