Skip to content

Commit 201c564

Browse files
committed
remove RecipeMap minimums
1 parent 9a307e1 commit 201c564

File tree

9 files changed

+102
-115
lines changed

9 files changed

+102
-115
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ protected boolean checkStructureComponents(List<IMultiblockPart> parts, Map<Mult
118118
//basically check minimal requirements for inputs count
119119
int itemInputsCount = abilities.getOrDefault(MultiblockAbility.STEAM_IMPORT_ITEMS, Collections.emptyList())
120120
.stream().map(it -> (IItemHandler) it).mapToInt(IItemHandler::getSlots).sum();
121-
return itemInputsCount >= recipeMap.getMinInputs() &&
122-
abilities.containsKey(MultiblockAbility.STEAM);
121+
return itemInputsCount > 0 && abilities.containsKey(MultiblockAbility.STEAM);
123122
}
124123
}

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,21 @@ 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
147146
int itemInputsCount = abilities.getOrDefault(MultiblockAbility.IMPORT_ITEMS, Collections.emptyList())
148147
.stream().map(it -> (IItemHandler) it).mapToInt(IItemHandler::getSlots).sum();
149-
//noinspection SuspiciousMethodCalls
148+
int itemOutputsCount = abilities.getOrDefault(MultiblockAbility.EXPORT_ITEMS, Collections.emptyList())
149+
.stream().map(it -> (IItemHandler) it).mapToInt(IItemHandler::getSlots).sum();
150+
150151
int fluidInputsCount = abilities.getOrDefault(MultiblockAbility.IMPORT_FLUIDS, Collections.emptyList()).size();
151-
//noinspection SuspiciousMethodCalls
152-
return itemInputsCount >= recipeMap.getMinInputs() &&
153-
fluidInputsCount >= recipeMap.getMinFluidInputs() &&
154-
abilities.containsKey(MultiblockAbility.INPUT_ENERGY);
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)));
155161
}
156162

157163
@Override

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

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

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

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) {
68+
public RecipeMap(String unlocalizedName, int inputs, int outputs, int fluidInputs, int fluidOutputs, R defaultRecipe, boolean isHidden) {
7469
this.unlocalizedName = unlocalizedName;
7570
this.slotOverlays = new TByteObjectHashMap<>();
7671
this.progressBarTexture = GuiTextures.PROGRESS_BAR_ARROW;
7772
this.moveType = MoveType.HORIZONTAL;
7873

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;
74+
this.maxInputs = inputs;
75+
this.maxFluidInputs = fluidInputs;
76+
this.maxOutputs = outputs;
77+
this.maxFluidOutputs = fluidOutputs;
8878

8979
this.isHidden = isHidden;
9080
defaultRecipe.setRecipeMap(this);
@@ -192,23 +182,36 @@ public boolean removeRecipe(Recipe recipe) {
192182
protected ValidationResult<Recipe> postValidateRecipe(ValidationResult<Recipe> validationResult) {
193183
EnumValidationResult recipeStatus = validationResult.getType();
194184
Recipe recipe = validationResult.getResult();
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());
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());
197200
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
198201
recipeStatus = EnumValidationResult.INVALID;
199202
}
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());
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());
202205
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
203206
recipeStatus = EnumValidationResult.INVALID;
204207
}
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());
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());
207210
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
208211
recipeStatus = EnumValidationResult.INVALID;
209212
}
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());
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());
212215
GTLog.logger.error("Stacktrace:", new IllegalArgumentException());
213216
recipeStatus = EnumValidationResult.INVALID;
214217
}
@@ -234,10 +237,10 @@ public Recipe findRecipe(long voltage, IItemHandlerModifiable inputs, IMultipleT
234237
public Recipe findRecipe(long voltage, List<ItemStack> inputs, List<FluidStack> fluidInputs, int outputFluidTankCapacity, MatchingMode matchingMode) {
235238
if (recipeList.isEmpty())
236239
return null;
237-
if (minFluidInputs > 0 && GTUtility.amountOfNonNullElements(fluidInputs) < minFluidInputs) {
240+
if (GTUtility.amountOfNonNullElements(fluidInputs) < 1) {
238241
return null;
239242
}
240-
if (minInputs > 0 && GTUtility.amountOfNonEmptyStacks(inputs) < minInputs) {
243+
if (GTUtility.amountOfNonEmptyStacks(inputs) < 1) {
241244
return null;
242245
}
243246
if (maxInputs > 0) {
@@ -445,41 +448,21 @@ public CTRecipeBuilder ctRecipeBuilder() {
445448
return new CTRecipeBuilder(recipeBuilder());
446449
}
447450

448-
@ZenGetter("minInputs")
449-
public int getMinInputs() {
450-
return minInputs;
451-
}
452-
453451
@ZenGetter("maxInputs")
454452
public int getMaxInputs() {
455453
return maxInputs;
456454
}
457455

458-
@ZenGetter("minOutputs")
459-
public int getMinOutputs() {
460-
return minOutputs;
461-
}
462-
463456
@ZenGetter("maxOutputs")
464457
public int getMaxOutputs() {
465458
return maxOutputs;
466459
}
467460

468-
@ZenGetter("minFluidInputs")
469-
public int getMinFluidInputs() {
470-
return minFluidInputs;
471-
}
472-
473461
@ZenGetter("maxFluidInputs")
474462
public int getMaxFluidInputs() {
475463
return maxFluidInputs;
476464
}
477465

478-
@ZenGetter("minFluidOutputs")
479-
public int getMinFluidOutputs() {
480-
return minFluidOutputs;
481-
}
482-
483466
@ZenGetter("maxFluidOutputs")
484467
public int getMaxFluidOutputs() {
485468
return maxFluidOutputs;

0 commit comments

Comments
 (0)