aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationPlant.java40
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBase.java23
2 files changed, 52 insertions, 11 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationPlant.java b/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationPlant.java
index 9c0b530164..2c575528ab 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationPlant.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationPlant.java
@@ -12,6 +12,7 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_PROCESSING_AR
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_PROCESSING_ARRAY_ACTIVE;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_PROCESSING_ARRAY_ACTIVE_GLOW;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_PROCESSING_ARRAY_GLOW;
+import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY;
import static gregtech.api.util.GTRecipeBuilder.SECONDS;
import static gregtech.api.util.GTStructureUtility.ofFrame;
import static gregtech.common.tileentities.machines.multi.purification.MTEPurificationUnitBase.WATER_BOOST_BONUS_CHANCE;
@@ -36,6 +37,8 @@ import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructa
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import com.gtnewhorizons.modularui.api.drawable.IDrawable;
+import com.gtnewhorizons.modularui.api.drawable.UITexture;
import com.gtnewhorizons.modularui.api.drawable.shapes.Rectangle;
import com.gtnewhorizons.modularui.api.forge.ItemStackHandler;
import com.gtnewhorizons.modularui.api.math.Alignment;
@@ -95,6 +98,13 @@ public class MTEPurificationPlant extends MTEExtendedPowerMultiBlockBase<MTEPuri
*/
private final List<LinkedPurificationUnit> mLinkedUnits = new ArrayList<>();
+ /**
+ * Debug mode is an operational mode that does not produce output or consume input, but cuts down
+ * processing time for players to more easily debug their automation setups.
+ */
+ private boolean debugMode = false;
+ public static final int CYCLE_TIME_IN_DEBUG = 30 * SECONDS;
+
private static final IStructureDefinition<MTEPurificationPlant> STRUCTURE_DEFINITION = StructureDefinition
.<MTEPurificationPlant>builder()
.addShape(STRUCTURE_PIECE_MAIN, PurificationPlantStructureString.STRUCTURE_STRING)
@@ -207,6 +217,7 @@ public class MTEPurificationPlant extends MTEExtendedPowerMultiBlockBase<MTEPuri
.addInfo("Every purification unit has a configuration window to configure maximum parallel amount.")
.addInfo(
"This will only scale purified water input, ALL fluid output and power usage. Other catalysts and outputs are unchanged.")
+ .addInfo("Toggle debug mode to reduce cycle time to 30s but disable water I/O.")
.addSeparator()
.addInfo(
EnumChatFormatting.AQUA + ""
@@ -339,6 +350,10 @@ public class MTEPurificationPlant extends MTEExtendedPowerMultiBlockBase<MTEPuri
return mMaintenanceHatches.size() == 1;
}
+ public boolean debugModeOn() {
+ return debugMode;
+ }
+
@Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
super.onPostTick(aBaseMetaTileEntity, aTick);
@@ -417,7 +432,9 @@ public class MTEPurificationPlant extends MTEExtendedPowerMultiBlockBase<MTEPuri
private void startCycle() {
mProgresstime = 0;
- mMaxProgresstime = CYCLE_TIME_TICKS;
+ // Debug mode uses shorter cycles
+ if (debugMode) mMaxProgresstime = CYCLE_TIME_IN_DEBUG;
+ else mMaxProgresstime = CYCLE_TIME_TICKS;
mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
// Find active units and notify them that the cycle started
@@ -705,7 +722,26 @@ public class MTEPurificationPlant extends MTEExtendedPowerMultiBlockBase<MTEPuri
// Add status window button
builder.widget(makeStatusWindowButton());
- // Add parallel count number input
+ //
+ builder.widget(
+ new ButtonWidget().setPlayClickSound(true)
+ .setOnClick((c, w) -> debugMode = !debugMode)
+ .setBackground(() -> {
+ List<UITexture> ret = new ArrayList<>();
+ if (debugMode) {
+ ret.add(GTUITextures.BUTTON_STANDARD_PRESSED);
+ ret.add(GTUITextures.OVERLAY_BUTTON_MACHINEMODE_DEFAULT);
+ } else {
+ ret.add(GTUITextures.BUTTON_STANDARD);
+ ret.add(GTUITextures.OVERLAY_BUTTON_MACHINEMODE_DEFAULT);
+ }
+ return ret.toArray(new IDrawable[0]);
+ })
+ .attachSyncer(new FakeSyncWidget.BooleanSyncer(() -> debugMode, b -> debugMode = b), builder)
+ .addTooltip("Toggle debug mode.")
+ .setTooltipShowUpDelay(TOOLTIP_DELAY)
+ .setPos(174, 112)
+ .setSize(16, 16));
builder.widget(createPowerSwitchButton(builder));
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBase.java
index ffb929074a..ac316f7678 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBase.java
@@ -367,8 +367,10 @@ public abstract class MTEPurificationUnitBase<T extends MTEExtendedPowerMultiBlo
this.depleteInput(inputWater);
}
- // Consume inputs
- this.depleteRecipeInputs();
+ // Consume inputs, only if debug mode is off
+ if (!getController().debugModeOn()) {
+ this.depleteRecipeInputs();
+ }
// Initialize recipe and progress information.
this.mMaxProgresstime = cycleTime;
this.mProgresstime = progressTime;
@@ -414,13 +416,16 @@ public abstract class MTEPurificationUnitBase<T extends MTEExtendedPowerMultiBlo
public void endCycle() {
ThreadLocalRandom random = ThreadLocalRandom.current();
- // First see if the recipe succeeded. For some reason random.nextFloat does not compile, so we use this
- // hack instead.
- float successRoll = random.nextInt(0, 10000) / 100.0f;
- if (successRoll <= calculateFinalSuccessChance()) {
- addRecipeOutputs();
- } else {
- onRecipeFail();
+ // Only add output if debug mode was not on
+ if (!getController().debugModeOn()) {
+ // First see if the recipe succeeded. For some reason random.nextFloat does not compile, so we use this
+ // hack instead.
+ float successRoll = random.nextInt(0, 10000) / 100.0f;
+ if (successRoll <= calculateFinalSuccessChance()) {
+ addRecipeOutputs();
+ } else {
+ onRecipeFail();
+ }
}
// Reset recipe values for next iteration