Skip to content

Commit 65d1a04

Browse files
add more situations to the recipe logic
1 parent 32bd971 commit 65d1a04

3 files changed

Lines changed: 32 additions & 19 deletions

File tree

src/main/java/gregtech/api/capability/impl/AbstractRecipeLogic.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,6 @@ protected void trySearchNewRecipe() {
171171
}
172172
if (this.currentRecipe != null && setupAndConsumeRecipeInputs(this.currentRecipe)) {
173173
setupRecipe(this.currentRecipe);
174-
} else {
175-
metaTileEntity.setSituation(OUTPUT_INVENTORY_FULL);
176174
}
177175
}
178176

@@ -244,11 +242,20 @@ protected boolean setupAndConsumeRecipeInputs(Recipe recipe) {
244242
IItemHandlerModifiable exportInventory = getOutputInventory();
245243
IMultipleTankHandler importFluids = getInputTank();
246244
IMultipleTankHandler exportFluids = getOutputTank();
247-
return (totalEUt >= 0 ? getEnergyStored() >= (totalEUt > getEnergyCapacity() / 2 ? resultOverclock[0] : totalEUt) :
248-
(getEnergyStored() - resultOverclock[0] <= getEnergyCapacity())) &&
249-
MetaTileEntity.addItemsToItemHandler(exportInventory, true, recipe.getAllItemOutputs(exportInventory.getSlots())) &&
250-
MetaTileEntity.addFluidsToFluidHandler(exportFluids, true, recipe.getFluidOutputs()) &&
251-
recipe.matches(true, importInventory, importFluids);
245+
if (!(totalEUt >= 0 ? getEnergyStored() >= (totalEUt > getEnergyCapacity() / 2 ? resultOverclock[0] : totalEUt) :
246+
(getEnergyStored() - resultOverclock[0] <= getEnergyCapacity()))) {
247+
metaTileEntity.setSituation(INSUFFICIENT_POWER_TO_START);
248+
return false;
249+
}
250+
if (!MetaTileEntity.addItemsToItemHandler(exportInventory, true, recipe.getAllItemOutputs(exportInventory.getSlots()))) {
251+
metaTileEntity.setSituation(OUTPUT_SLOTS_FULL);
252+
return false;
253+
}
254+
if (!MetaTileEntity.addFluidsToFluidHandler(exportFluids, true, recipe.getFluidOutputs())) {
255+
metaTileEntity.setSituation(OUTPUT_TANKS_FULL);
256+
return false;
257+
}
258+
return recipe.matches(true, importInventory, importFluids);
252259
}
253260

254261
protected int[] calculateOverclock(int EUt, long voltage, int duration) {

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

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,20 @@ public class Situations {
88
public static Situation IDLE = new Situation(2, "idle", SituationTypes.IDLE);
99
public static Situation DISABLED_BY_CONTROLLER = new Situation(3, "disabled_by_controller", SituationTypes.IDLE);
1010

11-
public static Situation EMPTY_SOURCE = new Situation(4, "empty_source", SituationTypes.WARNING);
12-
public static Situation INSUFFICIENT_POWER = new Situation(5, "insufficient_power", SituationTypes.WARNING);
13-
public static Situation NO_MATCHING_RECIPE = new Situation(6, "no_matching_recipe", SituationTypes.WARNING);
14-
public static Situation OUTPUT_INVENTORY_FULL = new Situation(7, "output_inventory_full", SituationTypes.WARNING);
15-
public static Situation TARGET_INVENTORY_FULL = new Situation(8, "target_inventory_full", SituationTypes.WARNING);
16-
17-
public static Situation NO_IMPORT_INVENTORY = new Situation(9, "no_import_inventory", SituationTypes.ERROR);
18-
public static Situation NO_EXPORT_INVENTORY = new Situation(10, "no_export_inventory", SituationTypes.ERROR);
19-
public static Situation NO_IMPORT_TANK = new Situation(11, "no_import_tank", SituationTypes.ERROR);
20-
public static Situation NO_EXPORT_TANK = new Situation(12, "no_export_tank", SituationTypes.ERROR);
21-
public static Situation EXPECTED_CAPABILITY_UNAVAILABLE = new Situation(13, "null_capability", SituationTypes.ERROR);
11+
public static Situation EMPTY_SOURCE = new Situation(100, "empty_source", SituationTypes.WARNING);
12+
public static Situation INSUFFICIENT_POWER = new Situation(101, "insufficient_power", SituationTypes.WARNING);
13+
public static Situation INSUFFICIENT_POWER_TO_START = new Situation(102, "insufficient_power_to_start", SituationTypes.WARNING);
14+
public static Situation NO_MATCHING_RECIPE = new Situation(103, "no_matching_recipe", SituationTypes.WARNING);
15+
public static Situation OUTPUT_SLOTS_FULL = new Situation(104, "output_slots_full", SituationTypes.WARNING);
16+
public static Situation OUTPUT_TANKS_FULL = new Situation(105, "output_tanks_full", SituationTypes.WARNING);
17+
public static Situation OUTPUT_INVENTORY_FULL = new Situation(106, "output_inventory_full", SituationTypes.WARNING);
18+
public static Situation TARGET_INVENTORY_FULL = new Situation(107, "target_inventory_full", SituationTypes.WARNING);
19+
20+
public static Situation NO_IMPORT_INVENTORY = new Situation(201, "no_import_inventory", SituationTypes.ERROR);
21+
public static Situation NO_EXPORT_INVENTORY = new Situation(202, "no_export_inventory", SituationTypes.ERROR);
22+
public static Situation NO_IMPORT_TANK = new Situation(203, "no_import_tank", SituationTypes.ERROR);
23+
public static Situation NO_EXPORT_TANK = new Situation(204, "no_export_tank", SituationTypes.ERROR);
24+
public static Situation EXPECTED_CAPABILITY_UNAVAILABLE = new Situation(205, "null_capability", SituationTypes.ERROR);
2225

2326
public static void init() {
2427
GTLog.logger.info("Registering situations...");

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,9 +763,12 @@ gregtech.situation.working=Working
763763
gregtech.situation.null_capability=Error accessing inventory from this side
764764
gregtech.situation.empty_source=This inventory is empty
765765
gregtech.situation.insufficient_power=Not enough power to run this recipe
766+
gregtech.situation.insufficient_power_to_start=Not enough power to start this recipe
766767
gregtech.situation.no_matching_recipe=No recipe found
767768
gregtech.situation.target_inventory_full=The target inventory is full
768-
gregtech.situation.output_inventory_full=Output is full
769+
gregtech.situation.output_slots_full=Output slots are full
770+
gregtech.situation.output_tanks_full=Output tanks are full
771+
gregtech.situation.output_inventory_full=Output slots and tanks are full
769772
gregtech.situation.no_import_inventory=Cant access inventory to import from
770773
gregtech.situation.no_export_inventory=Cant access inventory to export to
771774
gregtech.situation.no_import_tank=Cant access tank to import from

0 commit comments

Comments
 (0)