Skip to content
This repository has been archived by the owner on May 26, 2024. It is now read-only.

Commit

Permalink
fluidIntoPower should be long type, because ichorium huge turbine can…
Browse files Browse the repository at this point in the history
… generate power greater than Integer.MAX_VALUE on SC Turbine.
  • Loading branch information
koiNoCirculation committed Feb 27, 2024
1 parent 7a86a76 commit 4a6c000
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ protected boolean filtersFluid() {
}

@Override
int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
long fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
if (aFluids.size() >= 1) {
int tEU = 0;
int actualOptimalFlow = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ protected boolean filtersFluid() {
}

// How much the turbine should be producing with this flow
int newPower = fluidIntoPower(tFluids, optFlow, baseEff, flowMultipliers);
long newPower = fluidIntoPower(tFluids, optFlow, baseEff, flowMultipliers);

// Reduce produced power depending on the ratio between fuel value and turbine EU/t with the following
// formula:
Expand All @@ -182,7 +182,7 @@ protected boolean filtersFluid() {
fuelValue = getFuelValue(new FluidStack(tFluids.get(0), 0));
}
float magicValue = (fuelValue * 0.005f) * (fuelValue * 0.005f);
float efficiencyLoss = Math.min(1.0f, magicValue / euPerTurbine);
long efficiencyLoss = (long) Math.min(1.0f, magicValue / euPerTurbine);
newPower *= efficiencyLoss;

long difference = newPower - this.lEUt; // difference between current output and new output
Expand Down Expand Up @@ -218,7 +218,7 @@ protected boolean filtersFluid() {
}

@Override
int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
long fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
if (aFluids.size() >= 1) {
aOptFlow *= 800; // CHANGED THINGS HERE, check recipe runs once per 20 ticks
int tEU = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ public int getFuelValue(FluidStack aLiquid) {
}

@Override
int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
long fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
int tEU = 0;
int totalFlow = 0; // Byproducts are based on actual flow
int flow = 0;
int remainingFlow = MathUtils.safeInt((long) (aOptFlow * 1.25f * flowMultipliers[0])); // Allowed to use up to
// 125% of optimal flow.
// Variable required outside of loop for
// multi-hatch scenarios.
this.realOptFlow = (double) aOptFlow * (double) flowMultipliers[0];
int remainingFlow = MathUtils.safeInt((long) (realOptFlow * 1.25f)); // Allowed to use up to
// 125% of optimal flow.

storedFluid = 0;
FluidStack tSCSteam = FluidRegistry.getFluidStack("supercriticalsteam", 1);
Expand All @@ -88,7 +88,7 @@ int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, f
tEU = MathUtils.safeInt((long) tEU * (long) aBaseEff / 10000L);
}

return (int) Math.min(tEU * 100L, Integer.MAX_VALUE);
return tEU * 100L;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public int getFuelValue(FluidStack aLiquid) {
}

@Override
int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
long fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
if (looseFit) {
aOptFlow *= 4;
if (aBaseEff > 10000) {
Expand All @@ -80,12 +80,14 @@ int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, f
int tEU = 0;
int totalFlow = 0; // Byproducts are based on actual flow
int flow = 0;
int remainingFlow = MathUtils.safeInt((long) (aOptFlow * flowMultipliers[0] * 1.25f)); // Allowed to use up to
// 125% of optimal flow.

// Variable required outside of loop for
// multi-hatch scenarios.
this.realOptFlow = (double) aOptFlow * (double) flowMultipliers[0];

int remainingFlow = MathUtils.safeInt((long) (realOptFlow * 1.25f)); // Allowed to use up to
// 125% of optimal flow.

storedFluid = 0;
for (int i = 0; i < aFluids.size() && remainingFlow > 0; i++) {
String fluidName = aFluids.get(i).getFluid().getUnlocalizedName(aFluids.get(i));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public int getFuelValue(FluidStack aLiquid) {
}

@Override
int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
long fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) {
if (looseFit) {
aOptFlow *= 4;
if (aBaseEff > 10000) {
Expand All @@ -89,14 +89,16 @@ int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, f
int tEU = 0;
int totalFlow = 0; // Byproducts are based on actual flow
int flow = 0;
int remainingFlow = MathUtils.safeInt((long) (aOptFlow * (double) flowMultipliers[0] * 1.25f)); // Allowed to
// use up to
// 125% of
// optimal flow.

// Variable required outside of loop for
// multi-hatch scenarios.
this.realOptFlow = (double) aOptFlow * (double) flowMultipliers[0];

int remainingFlow = MathUtils.safeInt((long) (realOptFlow * 1.25f)); // Allowed to
// use up to
// 125% of
// optimal flow.

storedFluid = 0;
for (int i = 0; i < aFluids.size() && remainingFlow > 0; i++) { // loop through each hatch; extract inputs and
// track totals.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ protected void depleteTurbineFromStock(ItemStack aTurbine) {
}

// How much the turbine should be producing with this flow
int newPower = fluidIntoPower(tFluids, optFlow, baseEff, flowMultipliers);
long newPower = fluidIntoPower(tFluids, optFlow, baseEff, flowMultipliers);
long difference = newPower - this.lEUt; // difference between current output and new output

// Magic numbers: can always change by at least 10 eu/t, but otherwise by at most 1 percent of the
Expand Down Expand Up @@ -553,7 +553,7 @@ public int getMaxParallelRecipes() {
return (getFullTurbineAssemblies().size());
}

abstract int fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers);
abstract long fluidIntoPower(ArrayList<FluidStack> aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers);

@Override
public int getDamageToComponent(ItemStack aStack) {
Expand Down

0 comments on commit 4a6c000

Please sign in to comment.