aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java31
-rw-r--r--src/main/resources/assets/goodgenerator/lang/en_US.lang1
2 files changed, 28 insertions, 4 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java b/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java
index e162cf9e30..b2635d9c2b 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java
@@ -4,6 +4,7 @@ import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY;
import static gregtech.api.util.GT_StructureUtility.*;
+import static net.minecraft.util.StatCollector.translateToLocal;
import java.math.BigInteger;
import java.util.ArrayList;
@@ -26,6 +27,10 @@ import org.jetbrains.annotations.NotNull;
import com.github.bartimaeusnek.bartworks.API.BorosilicateGlass;
import com.github.technus.tectech.TecTech;
import com.github.technus.tectech.thing.gui.TecTechUITextures;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.INameFunction;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.IStatusFunction;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.LedStatus;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.Parameters;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
@@ -75,7 +80,6 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
protected final ArrayList<YOTTAHatch> mYottaHatch = new ArrayList<>();
private static final BigInteger ONE_HUNDRED = BigInteger.valueOf(100);
- private static final BigInteger FIVE = BigInteger.valueOf(5);
/** Tank capacity */
public BigInteger mStorage = BigInteger.ZERO;
@@ -104,6 +108,21 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
protected boolean voidExcessEnabled = false;
+ protected Parameters.Group.ParameterIn tickRateSettings;
+
+ /** Name of the tick rate setting */
+ private static final INameFunction<YottaFluidTank> TICK_RATE_SETTING_NAME = (base,
+ p) -> translateToLocal("gt.blockmachines.YottaFluidTank.cfgi.0");
+ /** Status of the tick rate setting */
+ private static final IStatusFunction<YottaFluidTank> TICK_RATE_STATUS = (base, p) -> LedStatus
+ .fromLimitsInclusiveOuterBoundary(p.get(), 1, 0, 100, 100);
+
+ @Override
+ protected void parametersInstantiation_EM() {
+ tickRateSettings = parametrization.getGroup(9, true)
+ .makeInParameter(1, 20, TICK_RATE_SETTING_NAME, TICK_RATE_STATUS);
+ }
+
public YottaFluidTank(int id, String name, String nameRegional) {
super(id, name, nameRegional);
}
@@ -443,8 +462,9 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
super.onRunningTick(aStack);
if (this.getBaseMetaTileEntity()
.isServerSide()) {
+ long tickRate = Math.min(100L, Math.max(1L, (long) tickRateSettings.get()));
++workTickCounter;
- if (workTickCounter < 20) {
+ if (workTickCounter < tickRate) {
return true;
}
workTickCounter = 0;
@@ -484,11 +504,14 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
}
if (mFluid != null) {
- // Try to drain 1% of the tank per tick, so 20% per second aka 1/5
- int outputAmount = mStorageCurrent.divide(FIVE)
+ // Try to drain 1% of the tank per tick
+ int outputAmount = mStorageCurrent.divide(ONE_HUNDRED)
.min(MAX_INT_BIGINT)
.max(BigInteger.ONE)
.intValueExact();
+ if (outputAmount != 1) outputAmount = (int) Math.min(Integer.MAX_VALUE, (long) outputAmount * tickRate);
+ else outputAmount = Math.min(mStorageCurrent.intValueExact(), outputAmount * (int) tickRate);
+
final int originalOutputAmount = outputAmount;
for (final GT_MetaTileEntity_Hatch outputHatch : mOutputHatches) {
diff --git a/src/main/resources/assets/goodgenerator/lang/en_US.lang b/src/main/resources/assets/goodgenerator/lang/en_US.lang
index 3a5f05ed46..56727b2f6d 100644
--- a/src/main/resources/assets/goodgenerator/lang/en_US.lang
+++ b/src/main/resources/assets/goodgenerator/lang/en_US.lang
@@ -312,6 +312,7 @@ gui.YOTTank.button.locking=Fluid locking
gui.LargeFusion.0=Energy Capacity:
gui.LargeFusion.1=Stored Energy:
gt.blockmachines.LargeFusionComputerPP.cfgi.0=Batch Size
+gt.blockmachines.YottaFluidTank.cfgi.0=Tick rate (Update I/O every x ticks)
# RecipeMaps
gg.recipe.naquadah_reactor=Large Naquadah Reactor