Skip to content

Commit

Permalink
Add to Air collector logic
Browse files Browse the repository at this point in the history
  • Loading branch information
PrototypeTrousers committed Mar 8, 2021
1 parent be80553 commit 636815b
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
2 changes: 2 additions & 0 deletions src/main/java/gregtech/api/situation/Situations.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ public class Situations {
public static Situation NO_EXPORT_TANK = new Situation(204, "no_export_tank", SituationTypes.ERROR);
public static Situation EXPECTED_CAPABILITY_UNAVAILABLE = new Situation(205, "null_capability", SituationTypes.ERROR);
public static Situation WATER_CHECK_FAILED = new Situation(206, "water_check_failed", SituationTypes.ERROR);
public static Situation BLOCKED_INTAKES = new Situation(207, "blocked_intakes", SituationTypes.ERROR);
public static Situation DIMENSION_LACKS_ATMOSPHERE = new Situation(208, "dimension_lacks_atmosphere", SituationTypes.ERROR);

public static void init() {
GTLog.logger.info("Registering situations...");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import java.util.List;
import java.util.stream.IntStream;

import static gregtech.api.situation.Situations.*;

public class MetaTileEntityAirCollector extends TieredMetaTileEntity {
private static final int PRODUCTION_CYCLE_LENGTH = 20;

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

if (!getWorld().isRemote) {
long energyToConsume = GTValues.V[getTier()];
if (checkDimension() && checkOpenSides() && getTimer() % PRODUCTION_CYCLE_LENGTH == 0L && energyContainer.getEnergyStored() >= energyToConsume) {
int fluidAmount = getCollectedFluidAmount();
FluidStack fluidStack = Materials.Air.getFluid(fluidAmount);
if (exportFluids.fill(fluidStack, false) == fluidAmount) {
exportFluids.fill(fluidStack, true);
energyContainer.removeEnergy(energyToConsume);
if (getTimer() % PRODUCTION_CYCLE_LENGTH == 0L ) {
if (energyContainer.getEnergyStored() >= energyToConsume) {
if (checkDimension() && checkOpenSides()) {
this.setSituation(WORKING);
int fluidAmount = getCollectedFluidAmount();
FluidStack fluidStack = Materials.Air.getFluid(fluidAmount);
if (exportFluids.fill(fluidStack, false) == fluidAmount) {
exportFluids.fill(fluidStack, true);
energyContainer.removeEnergy(energyToConsume);
}
}
} else {
setSituation(INSUFFICIENT_POWER_TO_START);
}
}
if (getTimer() % 5 == 0) {
Expand All @@ -69,12 +78,15 @@ private boolean checkOpenSides() {
if (getWorld().isAirBlock(getPos().offset(side)))
return true;
}
setSituation(BLOCKED_INTAKES);
return false;
}

private boolean checkDimension() {
int dimensionId = getWorld().provider.getDimension();
return IntStream.of(ConfigHolder.machineSpecific.airCollectorDimensionBlacklist).noneMatch(x -> x == dimensionId);
boolean air = IntStream.of(ConfigHolder.machineSpecific.airCollectorDimensionBlacklist).noneMatch(x -> x == dimensionId);
if (!air) setSituation(DIMENSION_LACKS_ATMOSPHERE);
return air;
}

private int getCollectedFluidAmount() {
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/assets/gregtech/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,8 @@ gregtech.situation.no_import_inventory=Cant access inventory to import from
gregtech.situation.no_export_inventory=Cant access inventory to export to
gregtech.situation.no_import_tank=Cant access tank to import from
gregtech.situation.no_export_tank=Cant access tank to export to

gregtech.situation.blocked_intakes=Blocked intakes
gregtech.situation.dimension_lacks_atmosphere=Dimension lacks atmosphere

# %s is a localized material name
item.material.oreprefix.oreBlackgranite=Granite %s Ore
Expand Down

0 comments on commit 636815b

Please sign in to comment.