Skip to content

Commit 8be3ae5

Browse files
Add to Air collector logic
1 parent 6d2af09 commit 8be3ae5

3 files changed

Lines changed: 23 additions & 8 deletions

File tree

src/main/java/gregtech/api/situation/Situations.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public class Situations {
2323
public static Situation NO_EXPORT_TANK = new Situation(204, "no_export_tank", SituationTypes.ERROR);
2424
public static Situation EXPECTED_CAPABILITY_UNAVAILABLE = new Situation(205, "null_capability", SituationTypes.ERROR);
2525
public static Situation WATER_CHECK_FAILED = new Situation(206, "water_check_failed", SituationTypes.ERROR);
26+
public static Situation BLOCKED_INTAKES = new Situation(207, "blocked_intakes", SituationTypes.ERROR);
27+
public static Situation DIMENSION_LACKS_ATMOSPHERE = new Situation(208, "dimension_lacks_atmosphere", SituationTypes.ERROR);
2628

2729
public static void init() {
2830
GTLog.logger.info("Registering situations...");

src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityAirCollector.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.util.List;
2626
import java.util.stream.IntStream;
2727

28+
import static gregtech.api.situation.Situations.*;
29+
2830
public class MetaTileEntityAirCollector extends TieredMetaTileEntity {
2931
private static final int PRODUCTION_CYCLE_LENGTH = 20;
3032

@@ -48,12 +50,19 @@ public void update() {
4850

4951
if (!getWorld().isRemote) {
5052
long energyToConsume = GTValues.V[getTier()];
51-
if (checkDimension() && checkOpenSides() && getTimer() % PRODUCTION_CYCLE_LENGTH == 0L && energyContainer.getEnergyStored() >= energyToConsume) {
52-
int fluidAmount = getCollectedFluidAmount();
53-
FluidStack fluidStack = Materials.Air.getFluid(fluidAmount);
54-
if (exportFluids.fill(fluidStack, false) == fluidAmount) {
55-
exportFluids.fill(fluidStack, true);
56-
energyContainer.removeEnergy(energyToConsume);
53+
if (getTimer() % PRODUCTION_CYCLE_LENGTH == 0L ) {
54+
if (energyContainer.getEnergyStored() >= energyToConsume) {
55+
if (checkDimension() && checkOpenSides()) {
56+
this.setSituation(WORKING);
57+
int fluidAmount = getCollectedFluidAmount();
58+
FluidStack fluidStack = Materials.Air.getFluid(fluidAmount);
59+
if (exportFluids.fill(fluidStack, false) == fluidAmount) {
60+
exportFluids.fill(fluidStack, true);
61+
energyContainer.removeEnergy(energyToConsume);
62+
}
63+
}
64+
} else {
65+
setSituation(INSUFFICIENT_POWER_TO_START);
5766
}
5867
}
5968
if (getTimer() % 5 == 0) {
@@ -69,12 +78,15 @@ private boolean checkOpenSides() {
6978
if (getWorld().isAirBlock(getPos().offset(side)))
7079
return true;
7180
}
81+
setSituation(BLOCKED_INTAKES);
7282
return false;
7383
}
7484

7585
private boolean checkDimension() {
7686
int dimensionId = getWorld().provider.getDimension();
77-
return IntStream.of(ConfigHolder.machineSpecific.airCollectorDimensionBlacklist).noneMatch(x -> x == dimensionId);
87+
boolean air = IntStream.of(ConfigHolder.machineSpecific.airCollectorDimensionBlacklist).noneMatch(x -> x == dimensionId);
88+
if (!air) setSituation(DIMENSION_LACKS_ATMOSPHERE);
89+
return air;
7890
}
7991

8092
private int getCollectedFluidAmount() {

src/main/resources/assets/gregtech/lang/en_us.lang

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,8 @@ gregtech.situation.no_import_inventory=Cant access inventory to import from
777777
gregtech.situation.no_export_inventory=Cant access inventory to export to
778778
gregtech.situation.no_import_tank=Cant access tank to import from
779779
gregtech.situation.no_export_tank=Cant access tank to export to
780-
780+
gregtech.situation.blocked_intakes=Blocked intakes
781+
gregtech.situation.dimension_lacks_atmosphere=Dimension lacks atmosphere
781782

782783
# %s is a localized material name
783784
item.material.oreprefix.oreBlackgranite=Granite %s Ore

0 commit comments

Comments
 (0)