Skip to content

Commit 807092a

Browse files
committed
Revert "remove RecipeMap minimums"
This reverts commit 201c564.
1 parent 806dfd2 commit 807092a

File tree

9 files changed

+115
-102
lines changed

9 files changed

+115
-102
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ protected boolean checkStructureComponents(List<IMultiblockPart> parts, Map<Mult
121121
//basically check minimal requirements for inputs count
122122
int itemInputsCount = abilities.getOrDefault(MultiblockAbility.STEAM_IMPORT_ITEMS, Collections.emptyList())
123123
.stream().map(it -> (IItemHandler) it).mapToInt(IItemHandler::getSlots).sum();
124-
return itemInputsCount > 0 && abilities.containsKey(MultiblockAbility.STEAM);
124+
return itemInputsCount >= recipeMap.getMinInputs() &&
125+
abilities.containsKey(MultiblockAbility.STEAM);
125126
}
126127
}

src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -143,21 +143,15 @@ protected void addDisplayText(List<ITextComponent> textList) {
143143
@Override
144144
protected boolean checkStructureComponents(List<IMultiblockPart> parts, Map<MultiblockAbility<Object>, List<Object>> abilities) {
145145
//basically check minimal requirements for inputs count
146+
//noinspection SuspiciousMethodCalls
146147
int itemInputsCount = abilities.getOrDefault(MultiblockAbility.IMPORT_ITEMS, Collections.emptyList())
147148
.stream().map(it -> (IItemHandler) it).mapToInt(IItemHandler::getSlots).sum();
148-
int itemOutputsCount = abilities.getOrDefault(MultiblockAbility.EXPORT_ITEMS, Collections.emptyList())
149-
.stream().map(it -> (IItemHandler) it).mapToInt(IItemHandler::getSlots).sum();
150-
149+
//noinspection SuspiciousMethodCalls
151150
int fluidInputsCount = abilities.getOrDefault(MultiblockAbility.IMPORT_FLUIDS, Collections.emptyList()).size();
152-
int fluidOutputsCount = abilities.getOrDefault(MultiblockAbility.EXPORT_FLUIDS, Collections.emptyList()).size();
153-
154-
return abilities.containsKey(MultiblockAbility.INPUT_ENERGY) &&
155-
(recipeMap.getMaxFluidInputs() > 0 && recipeMap.getMaxInputs() > 0
156-
|| ((recipeMap.getMaxFluidInputs() != 0 || itemInputsCount > 0) &&
157-
(recipeMap.getMaxInputs() != 0 || fluidInputsCount > 0))) &&
158-
(recipeMap.getMaxFluidOutputs() > 0 && recipeMap.getMaxOutputs() > 0
159-
|| ((recipeMap.getMaxFluidOutputs() != 0 || itemOutputsCount > 0) &&
160-
(recipeMap.getMaxOutputs() != 0 || fluidOutputsCount > 0)));
151+
//noinspection SuspiciousMethodCalls
152+
return itemInputsCount >= recipeMap.getMinInputs() &&
153+
fluidInputsCount >= recipeMap.getMinFluidInputs() &&
154+
abilities.containsKey(MultiblockAbility.INPUT_ENERGY);
161155
}
162156

163157
@Override

src/main/java/gregtech/api/recipes/RecipeMap.java

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,10 @@ public class RecipeMap<R extends RecipeBuilder<R>> {
5353
public final String unlocalizedName;
5454

5555
private final R recipeBuilderSample;
56-
private final int maxInputs, maxOutputs;
57-
private final int maxFluidInputs, maxFluidOutputs;
56+
private final int minInputs, maxInputs;
57+
private final int minOutputs, maxOutputs;
58+
private final int minFluidInputs, maxFluidInputs;
59+
private final int minFluidOutputs, maxFluidOutputs;
5860
protected final TByteObjectMap<TextureArea> slotOverlays;
5961
protected TextureArea specialTexture;
6062
protected int[] specialTexturePosition;
@@ -65,16 +67,24 @@ public class RecipeMap<R extends RecipeBuilder<R>> {
6567
private final Map<FluidKey, Collection<Recipe>> recipeFluidMap = new HashMap<>();
6668
private final List<Recipe> recipeList = new ArrayList<>();
6769

68-
public RecipeMap(String unlocalizedName, int inputs, int outputs, int fluidInputs, int fluidOutputs, R defaultRecipe, boolean isHidden) {
70+
public RecipeMap(String unlocalizedName,
71+
int minInputs, int maxInputs, int minOutputs, int maxOutputs,
72+
int minFluidInputs, int maxFluidInputs, int minFluidOutputs, int maxFluidOutputs,
73+
R defaultRecipe, boolean isHidden) {
6974
this.unlocalizedName = unlocalizedName;
7075
this.slotOverlays = new TByteObjectHashMap<>();
7176
this.progressBarTexture = GuiTextures.PROGRESS_BAR_ARROW;
7277
this.moveType = MoveType.HORIZONTAL;
7378

74-
this.maxInputs = inputs;
75-
this.maxFluidInputs = fluidInputs;
76-
this.maxOutputs = outputs;
77-
this.maxFluidOutputs = fluidOutputs;
79+
this.minInputs = minInputs;
80+
this.minFluidInputs = minFluidInputs;
81+
this.minOutputs = minOutputs;
82+
this.minFluidOutputs = minFluidOutputs;
83+
84+
this.maxInputs = maxInputs;
85+
this.maxFluidInputs = maxFluidInputs;
86+
this.maxOutputs = maxOutputs;
87+
this.maxFluidOutputs = maxFluidOutputs;
7888

7989
this.isHidden = isHidden;
8090
defaultRecipe.setRecipeMap(this);
@@ -182,36 +192,23 @@ public boolean removeRecipe(Recipe recipe) {
182192
protected ValidationResult<Recipe> postValidateRecipe(ValidationResult<Recipe> validationResult) {
183193
EnumValidationResult recipeStatus = validationResult.getType();
184194
Recipe recipe = validationResult.getResult();
185-
int totalInputs = recipe.getInputs().size() + recipe.getFluidInputs().size();
186-
int totalOutputs = recipe.getOutputs().size() + recipe.getFluidOutputs().size() + recipe.getChancedOutputs().size();
187-
188-
if (totalInputs < 0) {
189-
GTLog.logger.error("Invalid amount of recipe inputs. Actual: {}. Must have at least 1 input (Fluid or Item).", totalInputs);
190-
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
191-
recipeStatus = EnumValidationResult.INVALID;
192-
}
193-
if (totalOutputs < 0) {
194-
GTLog.logger.error("Invalid amount of recipe outputs. Actual: {}. Must have at least 1 output (Fluid or Item).", totalOutputs);
195-
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
196-
recipeStatus = EnumValidationResult.INVALID;
197-
}
198-
if (!GTUtility.isBetweenInclusive(0, getMaxInputs(), recipe.getInputs().size())) {
199-
GTLog.logger.error("Invalid amount of recipe inputs. Actual: {}. Should be less than {} inclusive.", recipe.getInputs().size(), getMaxInputs());
195+
if (!GTUtility.isBetweenInclusive(getMinInputs(), getMaxInputs(), recipe.getInputs().size())) {
196+
GTLog.logger.error("Invalid amount of recipe inputs. Actual: {}. Should be between {} and {} inclusive.", recipe.getInputs().size(), getMinInputs(), getMaxInputs());
200197
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
201198
recipeStatus = EnumValidationResult.INVALID;
202199
}
203-
if (!GTUtility.isBetweenInclusive(0, getMaxOutputs(), recipe.getOutputs().size() + recipe.getChancedOutputs().size())) {
204-
GTLog.logger.error("Invalid amount of recipe outputs. Actual: {}. Should be less than {} inclusive.", recipe.getOutputs().size() + recipe.getChancedOutputs().size(), getMaxOutputs());
200+
if (!GTUtility.isBetweenInclusive(getMinOutputs(), getMaxOutputs(), recipe.getOutputs().size() + recipe.getChancedOutputs().size())) {
201+
GTLog.logger.error("Invalid amount of recipe outputs. Actual: {}. Should be between {} and {} inclusive.", recipe.getOutputs().size() + recipe.getChancedOutputs().size(), getMinOutputs(), getMaxOutputs());
205202
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
206203
recipeStatus = EnumValidationResult.INVALID;
207204
}
208-
if (!GTUtility.isBetweenInclusive(0, getMaxFluidInputs(), recipe.getFluidInputs().size())) {
209-
GTLog.logger.error("Invalid amount of recipe fluid inputs. Actual: {}. Should be less than {} inclusive.", recipe.getFluidInputs().size(), getMaxFluidInputs());
205+
if (!GTUtility.isBetweenInclusive(getMinFluidInputs(), getMaxFluidInputs(), recipe.getFluidInputs().size())) {
206+
GTLog.logger.error("Invalid amount of recipe fluid inputs. Actual: {}. Should be between {} and {} inclusive.", recipe.getFluidInputs().size(), getMinFluidInputs(), getMaxFluidInputs());
210207
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
211208
recipeStatus = EnumValidationResult.INVALID;
212209
}
213-
if (!GTUtility.isBetweenInclusive(0, getMaxFluidOutputs(), recipe.getFluidOutputs().size())) {
214-
GTLog.logger.error("Invalid amount of recipe fluid outputs. Actual: {}. Should be less than {} inclusive.", recipe.getFluidOutputs().size(), getMaxFluidOutputs());
210+
if (!GTUtility.isBetweenInclusive(getMinFluidOutputs(), getMaxFluidOutputs(), recipe.getFluidOutputs().size())) {
211+
GTLog.logger.error("Invalid amount of recipe fluid outputs. Actual: {}. Should be between {} and {} inclusive.", recipe.getFluidOutputs().size(), getMinFluidOutputs(), getMaxFluidOutputs());
215212
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
216213
recipeStatus = EnumValidationResult.INVALID;
217214
}
@@ -237,10 +234,10 @@ public Recipe findRecipe(long voltage, IItemHandlerModifiable inputs, IMultipleT
237234
public Recipe findRecipe(long voltage, List<ItemStack> inputs, List<FluidStack> fluidInputs, int outputFluidTankCapacity, MatchingMode matchingMode) {
238235
if (recipeList.isEmpty())
239236
return null;
240-
if (GTUtility.amountOfNonNullElements(fluidInputs) < 1) {
237+
if (minFluidInputs > 0 && GTUtility.amountOfNonNullElements(fluidInputs) < minFluidInputs) {
241238
return null;
242239
}
243-
if (GTUtility.amountOfNonEmptyStacks(inputs) < 1) {
240+
if (minInputs > 0 && GTUtility.amountOfNonEmptyStacks(inputs) < minInputs) {
244241
return null;
245242
}
246243
if (maxInputs > 0) {
@@ -448,21 +445,41 @@ public CTRecipeBuilder ctRecipeBuilder() {
448445
return new CTRecipeBuilder(recipeBuilder());
449446
}
450447

448+
@ZenGetter("minInputs")
449+
public int getMinInputs() {
450+
return minInputs;
451+
}
452+
451453
@ZenGetter("maxInputs")
452454
public int getMaxInputs() {
453455
return maxInputs;
454456
}
455457

458+
@ZenGetter("minOutputs")
459+
public int getMinOutputs() {
460+
return minOutputs;
461+
}
462+
456463
@ZenGetter("maxOutputs")
457464
public int getMaxOutputs() {
458465
return maxOutputs;
459466
}
460467

468+
@ZenGetter("minFluidInputs")
469+
public int getMinFluidInputs() {
470+
return minFluidInputs;
471+
}
472+
461473
@ZenGetter("maxFluidInputs")
462474
public int getMaxFluidInputs() {
463475
return maxFluidInputs;
464476
}
465477

478+
@ZenGetter("minFluidOutputs")
479+
public int getMinFluidOutputs() {
480+
return minFluidOutputs;
481+
}
482+
466483
@ZenGetter("maxFluidOutputs")
467484
public int getMaxFluidOutputs() {
468485
return maxFluidOutputs;

0 commit comments

Comments
 (0)