diff --git a/src/main/java/gregtech/api/recipes/RecipeBuilder.java b/src/main/java/gregtech/api/recipes/RecipeBuilder.java index 1554b02b868..26d3d70e346 100644 --- a/src/main/java/gregtech/api/recipes/RecipeBuilder.java +++ b/src/main/java/gregtech/api/recipes/RecipeBuilder.java @@ -25,6 +25,7 @@ import gregtech.api.unification.OreDictUnifier; import gregtech.api.unification.material.Material; import gregtech.api.unification.ore.OrePrefix; +import gregtech.api.unification.stack.ItemMaterialInfo; import gregtech.api.util.EnumValidationResult; import gregtech.api.util.GTLog; import gregtech.api.util.GTUtility; @@ -93,6 +94,8 @@ public class RecipeBuilder> { protected boolean ignoreAllBuildActions = false; protected Map> ignoredBuildActions; + private boolean withItemRecycling; + protected RecipeBuilder() { this.inputs = new ArrayList<>(); this.outputs = new ArrayList<>(); @@ -137,6 +140,7 @@ protected RecipeBuilder(RecipeBuilder recipeBuilder) { if (recipeBuilder.ignoredBuildActions != null) { this.ignoredBuildActions = new Object2ObjectOpenHashMap<>(recipeBuilder.ignoredBuildActions); } + this.withItemRecycling = recipeBuilder.hasItemRecycling(); } public R cleanroom(@Nullable CleanroomType cleanroom) { @@ -964,6 +968,14 @@ public R ignoreBuildAction(ResourceLocation buildActionName) { return (R) this; } + /** + * Generate Recycling Data based on this recipe's Items + */ + public R withRecycling() { + this.withItemRecycling = true; + return (R) this; + } + public ValidationResult build() { EnumValidationResult result = recipePropertyStorageErrored ? EnumValidationResult.INVALID : validate(); return ValidationResult.newResult(result, new Recipe(inputs, outputs, @@ -1071,6 +1083,15 @@ public void buildAndRegister() { buildAction.getValue().accept((R) this); } } + if (hasItemRecycling()) { + // ignore input fluids for item-only recycling + ItemStack outputStack = getOutputs().get(0); + ItemMaterialInfo info = RecyclingHandler.getRecyclingIngredients(getInputs(), outputStack.getCount()); + if (info != null) { + OreDictUnifier.registerOre(outputStack, info); + } + } + ValidationResult validationResult = build(); recipeMap.addRecipe(validationResult); } @@ -1151,6 +1172,10 @@ public boolean ignoresAllBuildActions() { return ignoredBuildActions; } + public boolean hasItemRecycling() { + return withItemRecycling; + } + @Override public String toString() { return new ToStringBuilder(this) diff --git a/src/main/java/gregtech/api/recipes/RecipeMaps.java b/src/main/java/gregtech/api/recipes/RecipeMaps.java index 414ead42aba..0f17d0609e3 100644 --- a/src/main/java/gregtech/api/recipes/RecipeMaps.java +++ b/src/main/java/gregtech/api/recipes/RecipeMaps.java @@ -4,7 +4,6 @@ import gregtech.api.gui.GuiTextures; import gregtech.api.gui.widgets.ProgressWidget; import gregtech.api.gui.widgets.ProgressWidget.MoveType; -import gregtech.api.recipes.builders.AssemblerRecipeBuilder; import gregtech.api.recipes.builders.AssemblyLineRecipeBuilder; import gregtech.api.recipes.builders.BlastRecipeBuilder; import gregtech.api.recipes.builders.CircuitAssemblerRecipeBuilder; @@ -29,15 +28,12 @@ import gregtech.api.recipes.ui.impl.DistillationTowerUI; import gregtech.api.recipes.ui.impl.FormingPressUI; import gregtech.api.recipes.ui.impl.ResearchStationUI; -import gregtech.api.unification.OreDictUnifier; import gregtech.api.unification.material.Materials; -import gregtech.api.unification.stack.ItemMaterialInfo; import gregtech.api.util.AssemblyLineManager; import gregtech.api.util.GTUtility; import gregtech.core.sound.GTSoundEvents; import net.minecraft.init.SoundEvents; -import net.minecraft.item.ItemStack; import crafttweaker.annotations.ZenRegister; import stanhebben.zenscript.annotations.ZenClass; @@ -144,8 +140,8 @@ public final class RecipeMaps { * */ @ZenProperty - public static final RecipeMap ASSEMBLER_RECIPES = new RecipeMapBuilder<>("assembler", - new AssemblerRecipeBuilder()) + public static final RecipeMap ASSEMBLER_RECIPES = new RecipeMapBuilder<>("assembler", + new SimpleRecipeBuilder()) .itemInputs(9) .itemOutputs(1) .fluidInputs(1) @@ -162,17 +158,6 @@ public final class RecipeMaps { .buildAndRegister(); } }) - .onBuild(gregtechId("assembler_recycling"), recipeBuilder -> { - if (recipeBuilder.isWithRecycling()) { - // ignore input fluids for recycling - ItemStack outputStack = recipeBuilder.getOutputs().get(0); - ItemMaterialInfo info = RecyclingHandler.getRecyclingIngredients(recipeBuilder.getInputs(), - outputStack.getCount()); - if (info != null) { - OreDictUnifier.registerOre(outputStack, info); - } - } - }) .build(); /** diff --git a/src/main/java/gregtech/api/recipes/builders/AssemblerRecipeBuilder.java b/src/main/java/gregtech/api/recipes/builders/AssemblerRecipeBuilder.java deleted file mode 100644 index f0b10d42502..00000000000 --- a/src/main/java/gregtech/api/recipes/builders/AssemblerRecipeBuilder.java +++ /dev/null @@ -1,42 +0,0 @@ -package gregtech.api.recipes.builders; - -import gregtech.api.recipes.Recipe; -import gregtech.api.recipes.RecipeBuilder; -import gregtech.api.recipes.RecipeMap; - -public class AssemblerRecipeBuilder extends RecipeBuilder { - - private boolean withRecycling; - - public AssemblerRecipeBuilder() {/**/} - - @SuppressWarnings("unused") - public AssemblerRecipeBuilder(Recipe recipe, RecipeMap recipeMap) { - super(recipe, recipeMap); - } - - public AssemblerRecipeBuilder(AssemblerRecipeBuilder recipeBuilder) { - super(recipeBuilder); - if (recipeBuilder.isWithRecycling()) { - this.withRecycling = true; - } - } - - @Override - public AssemblerRecipeBuilder copy() { - var builder = new AssemblerRecipeBuilder(this); - if (withRecycling) { - return builder.withRecycling(); - } - return builder; - } - - public AssemblerRecipeBuilder withRecycling() { - withRecycling = true; - return this; - } - - public boolean isWithRecycling() { - return withRecycling; - } -} diff --git a/src/main/java/gregtech/loaders/recipe/handlers/WireRecipeHandler.java b/src/main/java/gregtech/loaders/recipe/handlers/WireRecipeHandler.java index ead8bc0b1d2..7d6351bdbff 100644 --- a/src/main/java/gregtech/loaders/recipe/handlers/WireRecipeHandler.java +++ b/src/main/java/gregtech/loaders/recipe/handlers/WireRecipeHandler.java @@ -2,7 +2,6 @@ import gregtech.api.GTValues; import gregtech.api.recipes.ModHandler; -import gregtech.api.recipes.builders.AssemblerRecipeBuilder; import gregtech.api.unification.OreDictUnifier; import gregtech.api.unification.material.Material; import gregtech.api.unification.material.properties.PropertyKey; @@ -118,7 +117,7 @@ public static void generateCableCovering(OrePrefix wirePrefix, Material material // Rubber Recipe (ULV-EV cables) if (voltageTier <= GTValues.EV) { - AssemblerRecipeBuilder builder = ASSEMBLER_RECIPES.recipeBuilder().EUt(VA[ULV]).duration(100) + var builder = ASSEMBLER_RECIPES.recipeBuilder().EUt(VA[ULV]).duration(100) .input(wirePrefix, material) .output(cablePrefix, material) .fluidInputs(Rubber.getFluid(GTValues.L * insulationAmount)); @@ -130,7 +129,7 @@ public static void generateCableCovering(OrePrefix wirePrefix, Material material } // Silicone Rubber Recipe (all cables) - AssemblerRecipeBuilder builder = ASSEMBLER_RECIPES.recipeBuilder().EUt(VA[ULV]).duration(100) + var builder = ASSEMBLER_RECIPES.recipeBuilder().EUt(VA[ULV]).duration(100) .input(wirePrefix, material) .output(cablePrefix, material);