parent
afa90814d9
commit
d92448a63a
1 changed files with 27 additions and 20 deletions
|
@ -246,22 +246,20 @@ public abstract class AbstractTurbine extends MTEWorkableMultiblock {
|
||||||
|
|
||||||
public static class MultiTurbineLogic extends GeneratorRecipeLogic {
|
public static class MultiTurbineLogic extends GeneratorRecipeLogic {
|
||||||
|
|
||||||
|
protected int consumptionModifier;
|
||||||
|
|
||||||
protected MultiTurbineLogic(IntSupplier efficiency, RecipeMap<?> recipeMap, IRecipeWorkable machine) {
|
protected MultiTurbineLogic(IntSupplier efficiency, RecipeMap<?> recipeMap, IRecipeWorkable machine) {
|
||||||
super(efficiency, recipeMap, machine);
|
super(efficiency, recipeMap, machine);
|
||||||
metadataVerifier = rec -> rec.getInputs().isEmpty() && rec.getAllOutputs().isEmpty(); // only fluid recipes allow
|
metadataVerifier = rec -> rec.getInputs().isEmpty() && rec.getAllOutputs().isEmpty(); // only fluid recipes allow
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean depleteInputs() {
|
protected boolean depleteInputs() {
|
||||||
int fluidMult = (int) (getMachine().maxEUOutput() / leftEU);
|
|
||||||
|
|
||||||
if (previousRecipe != null) {
|
|
||||||
for (FluidStack fluid : previousRecipe.getFluidInputs()) {
|
for (FluidStack fluid : previousRecipe.getFluidInputs()) {
|
||||||
FluidStack dummy = fluid.copy();
|
FluidStack dummy = fluid.copy();
|
||||||
dummy.amount *= fluidMult;
|
dummy.amount *= consumptionModifier;
|
||||||
if (!getMachine().depleteInput(dummy))
|
if (!getMachine().depleteInput(dummy))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -308,12 +306,15 @@ public abstract class AbstractTurbine extends MTEWorkableMultiblock {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean updateRecipeProgress() {
|
protected boolean updateRecipeProgress() {
|
||||||
if ((getMachine().getBaseMetaTileEntity().getTimer() % 10 != 0 || getMachine().checkAir()) && depleteInputs()) {
|
if ((getMachine().getBaseMetaTileEntity().getTimer() % 10 != 0 || getMachine().checkAir())) {
|
||||||
getMachine().onRecipeUpdateTick();
|
getMachine().onRecipeUpdateTick();
|
||||||
int EU = (int) (getMachine().maxEUOutput() * (efficiency.getAsInt() / 100.0D));
|
long EU = Math.min((long) (getMachine().maxEUOutput() * (efficiency.getAsInt() / 100.0D)), leftEU);
|
||||||
getMachine().addEnergyOutput(EU);
|
leftEU -= EU;
|
||||||
} else getMachine().stopMachine();
|
getMachine().addEnergyOutput((int) EU);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getMachine().stopMachine();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,15 +323,21 @@ public abstract class AbstractTurbine extends MTEWorkableMultiblock {
|
||||||
if (getMachine().spaceForOutput(recipe)) {
|
if (getMachine().spaceForOutput(recipe)) {
|
||||||
previousRecipe = recipe;
|
previousRecipe = recipe;
|
||||||
progressTime = 1;
|
progressTime = 1;
|
||||||
leftEU = (long) recipe.getDuration() * recipe.getEUt();
|
|
||||||
|
int recipeBaseEu = recipe.getDuration() * recipe.getEUt();
|
||||||
|
consumptionModifier = Math.max(1, getMachine().maxEUOutput() / recipeBaseEu);
|
||||||
|
leftEU = (long) recipeBaseEu * consumptionModifier;
|
||||||
maxProgressTime = (int) Math.ceil(leftEU * 1.0D / getMachine().maxEUOutput());
|
maxProgressTime = (int) Math.ceil(leftEU * 1.0D / getMachine().maxEUOutput());
|
||||||
triggerMachine(true);
|
triggerMachine(true);
|
||||||
getMachine().startProcess();
|
getMachine().startProcess();
|
||||||
} else {
|
if (this.isActive() && this.depleteInputs()) {
|
||||||
getMachine().stopMachine();
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getMachine().stopMachine();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected AbstractTurbine getMachine() {
|
protected AbstractTurbine getMachine() {
|
||||||
return (AbstractTurbine) metaTileEntity.get();
|
return (AbstractTurbine) metaTileEntity.get();
|
||||||
|
|
Loading…
Reference in a new issue