diff options
author | Mary <33456283+FourIsTheNumber@users.noreply.github.com> | 2024-09-04 07:03:17 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-04 11:03:17 +0000 |
commit | 1904f6d4e3a571696ad815200a4de8b2e5df2f29 (patch) | |
tree | b06e39034ac7a96fbaef429193f624148d7679ea /src/main/java/gregtech/api/util | |
parent | ebefc70b6d41c19c61fc21f548a942a0331f7fb6 (diff) | |
download | GT5-Unofficial-1904f6d4e3a571696ad815200a4de8b2e5df2f29.tar.gz GT5-Unofficial-1904f6d4e3a571696ad815200a4de8b2e5df2f29.tar.bz2 GT5-Unofficial-1904f6d4e3a571696ad815200a4de8b2e5df2f29.zip |
Implement itemInputsUnsafe (#3042)
Co-authored-by: boubou19 <miisterunknown@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/api/util')
-rw-r--r-- | src/main/java/gregtech/api/util/GTOreDictUnificator.java | 10 | ||||
-rw-r--r-- | src/main/java/gregtech/api/util/GTRecipe.java | 4 | ||||
-rw-r--r-- | src/main/java/gregtech/api/util/GTRecipeBuilder.java | 19 |
3 files changed, 27 insertions, 6 deletions
diff --git a/src/main/java/gregtech/api/util/GTOreDictUnificator.java b/src/main/java/gregtech/api/util/GTOreDictUnificator.java index 6168b03211..8060c5e49b 100644 --- a/src/main/java/gregtech/api/util/GTOreDictUnificator.java +++ b/src/main/java/gregtech/api/util/GTOreDictUnificator.java @@ -140,8 +140,16 @@ public class GTOreDictUnificator { return GTUtility.copyAmount(aAmount, aReplacement); } + /** + * Wrapper for setStackArray that assumes safe copying + */ public static ItemStack[] setStackArray(boolean aUseBlackList, ItemStack... aStacks) { - for (int i = 0; i < aStacks.length; i++) aStacks[i] = get(aUseBlackList, GTUtility.copyOrNull(aStacks[i])); + return setStackArray(aUseBlackList, false, aStacks); + } + + public static ItemStack[] setStackArray(boolean aUseBlackList, boolean aUnsafe, ItemStack... aStacks) { + for (int i = 0; i < aStacks.length; i++) + aStacks[i] = get(aUseBlackList, GTUtility.copyOrNull(aStacks[i]), aUnsafe); return aStacks; } diff --git a/src/main/java/gregtech/api/util/GTRecipe.java b/src/main/java/gregtech/api/util/GTRecipe.java index 7aa3dfbdfb..d27412d4ec 100644 --- a/src/main/java/gregtech/api/util/GTRecipe.java +++ b/src/main/java/gregtech/api/util/GTRecipe.java @@ -252,8 +252,8 @@ public class GTRecipe implements Comparable<GTRecipe> { aFluidInputs = ArrayExt.withoutNulls(aFluidInputs, FluidStack[]::new); aFluidOutputs = ArrayExt.withoutNulls(aFluidOutputs, FluidStack[]::new); - GTOreDictUnificator.setStackArray(true, aInputs); - GTOreDictUnificator.setStackArray(true, aOutputs); + GTOreDictUnificator.setStackArray(true, true, aInputs); + GTOreDictUnificator.setStackArray(true, true, aOutputs); for (ItemStack tStack : aOutputs) GTUtility.updateItemStack(tStack); diff --git a/src/main/java/gregtech/api/util/GTRecipeBuilder.java b/src/main/java/gregtech/api/util/GTRecipeBuilder.java index 6f8acfb2dc..1426c1c264 100644 --- a/src/main/java/gregtech/api/util/GTRecipeBuilder.java +++ b/src/main/java/gregtech/api/util/GTRecipeBuilder.java @@ -163,8 +163,9 @@ public class GTRecipeBuilder { .toArray(FluidStack[]::new); } - private static ItemStack[] fix(ItemStack[] inputs) { - return GTOreDictUnificator.setStackArray(true, ArrayExt.withoutTrailingNulls(inputs, ItemStack[]::new)); + private static ItemStack[] fix(ItemStack[] inputs, boolean aUnsafe) { + return GTOreDictUnificator + .setStackArray(true, aUnsafe, ArrayExt.withoutTrailingNulls(inputs, ItemStack[]::new)); } public static GTRecipeBuilder builder() { @@ -250,7 +251,19 @@ public class GTRecipeBuilder { public GTRecipeBuilder itemInputs(ItemStack... inputs) { if (skip) return this; if (debugNull() && containsNull(inputs)) handleNullRecipeComponents("itemInputs"); - inputsBasic = fix(inputs); + inputsBasic = fix(inputs, false); + inputsOreDict = null; + alts = null; + return this; + } + + /** + * Non-OreDicted item inputs, allowing stack sizes greater than 64. Assumes input is not unified + */ + public GTRecipeBuilder itemInputsUnsafe(ItemStack... inputs) { + if (skip) return this; + if (debugNull() && containsNull(inputs)) handleNullRecipeComponents("itemInputs"); + inputsBasic = fix(inputs, true); inputsOreDict = null; alts = null; return this; |