Fixed Large turbine logic (dupe)

Closes #186
This commit is contained in:
TheDarkDnKTv 2023-08-06 22:13:02 +09:00
parent afa90814d9
commit d92448a63a

View file

@ -246,21 +246,19 @@ 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); for (FluidStack fluid : previousRecipe.getFluidInputs()) {
FluidStack dummy = fluid.copy();
if (previousRecipe != null) { dummy.amount *= consumptionModifier;
for (FluidStack fluid : previousRecipe.getFluidInputs()) { if (!getMachine().depleteInput(dummy))
FluidStack dummy = fluid.copy(); return false;
dummy.amount *= fluidMult;
if (!getMachine().depleteInput(dummy))
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,13 +323,19 @@ 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