Skip to content

Commit 3315f3e

Browse files
authored
Add convenience methods to the recipe builder (GregTechCEu#2765)
1 parent 0e6d52d commit 3315f3e

File tree

10 files changed

+226
-55
lines changed

10 files changed

+226
-55
lines changed

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

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package gregtech.api.recipes;
22

33
import gregtech.api.GTValues;
4+
import gregtech.api.fluids.store.FluidStorageKey;
45
import gregtech.api.items.metaitem.MetaItem;
56
import gregtech.api.metatileentity.MetaTileEntity;
67
import gregtech.api.metatileentity.multiblock.CleanroomType;
@@ -260,6 +261,10 @@ public R input(Block block, int count) {
260261
return input(new GTRecipeItemInput(new ItemStack(block, count)));
261262
}
262263

264+
public R input(Block block, int count, int meta) {
265+
return input(new GTRecipeItemInput(new ItemStack(block, count, meta)));
266+
}
267+
263268
public R input(Block block, int count, @SuppressWarnings("unused") boolean wild) {
264269
return input(new GTRecipeItemInput(new ItemStack(block, count, GTValues.W)));
265270
}
@@ -516,6 +521,10 @@ public R output(Block item, int count) {
516521
return outputs(new ItemStack(item, count));
517522
}
518523

524+
public R output(Block item, int count, int meta) {
525+
return outputs(new ItemStack(item, count, meta));
526+
}
527+
519528
public R output(MetaItem<?>.MetaValueItem item, int count) {
520529
return outputs(item.getStackForm(count));
521530
}
@@ -555,6 +564,14 @@ public R clearOutputs() {
555564
return (R) this;
556565
}
557566

567+
public R fluidInput(@NotNull Fluid fluid) {
568+
return fluidInputs(new GTRecipeFluidInput(fluid, 1));
569+
}
570+
571+
public R fluidInput(@NotNull Fluid fluid, int amount) {
572+
return fluidInputs(new GTRecipeFluidInput(fluid, amount));
573+
}
574+
558575
public R fluidInputs(Collection<GTRecipeInput> fluidIngredients) {
559576
this.fluidInputs.addAll(fluidIngredients);
560577
return (R) this;
@@ -569,20 +586,29 @@ public R fluidInputs(FluidStack input) {
569586
if (input != null && input.amount > 0) {
570587
this.fluidInputs.add(new GTRecipeFluidInput(input));
571588
} else if (input != null) {
572-
GTLog.logger.error("Fluid Input count cannot be less than 0. Actual: {}.", input.amount, new Throwable());
589+
GTLog.logger.error("Fluid Input count cannot be less than 1. Actual: {}.", input.amount,
590+
new IllegalArgumentException());
573591
} else {
574592
GTLog.logger.error("FluidStack cannot be null.");
575593
}
576594
return (R) this;
577595
}
578596

597+
public R fluidInputs(@NotNull Material material, int amount) {
598+
return fluidInputs(material.getFluid(amount));
599+
}
600+
601+
public R fluidInputs(@NotNull Material material, @NotNull FluidStorageKey storageKey, int amount) {
602+
return fluidInputs(material.getFluid(storageKey, amount));
603+
}
604+
579605
public R fluidInputs(FluidStack... fluidStacks) {
580606
ArrayList<GTRecipeInput> fluidIngredients = new ArrayList<>();
581607
for (FluidStack fluidStack : fluidStacks) {
582608
if (fluidStack != null && fluidStack.amount > 0) {
583609
fluidIngredients.add(new GTRecipeFluidInput(fluidStack));
584610
} else if (fluidStack != null) {
585-
GTLog.logger.error("Fluid Input count cannot be less than 0. Actual: {}.", fluidStack.amount,
611+
GTLog.logger.error("Fluid Input count cannot be less than 1. Actual: {}.", fluidStack.amount,
586612
new Throwable());
587613
} else {
588614
GTLog.logger.error("FluidStack cannot be null.");
@@ -597,13 +623,29 @@ public R clearFluidInputs() {
597623
return (R) this;
598624
}
599625

626+
public R fluidOutputs(@NotNull Fluid fluid) {
627+
return fluidOutputs(new FluidStack(fluid, 1));
628+
}
629+
630+
public R fluidOutputs(@NotNull Fluid fluid, int amount) {
631+
return fluidOutputs(new FluidStack(fluid, amount));
632+
}
633+
600634
public R fluidOutputs(FluidStack output) {
601635
if (output != null && output.amount > 0) {
602636
this.fluidOutputs.add(output);
603637
}
604638
return (R) this;
605639
}
606640

641+
public R fluidOutputs(@NotNull Material material, int amount) {
642+
return fluidOutputs(material.getFluid(amount));
643+
}
644+
645+
public R fluidOutputs(@NotNull Material material, @NotNull FluidStorageKey storageKey, int amount) {
646+
return fluidOutputs(material.getFluid(storageKey, amount));
647+
}
648+
607649
public R fluidOutputs(FluidStack... outputs) {
608650
return fluidOutputs(Arrays.asList(outputs));
609651
}

src/main/java/gregtech/api/recipes/builders/AssemblyLineRecipeBuilder.java

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package gregtech.api.recipes.builders;
22

3+
import gregtech.api.items.metaitem.MetaItem;
34
import gregtech.api.items.metaitem.stats.IDataItem;
5+
import gregtech.api.metatileentity.MetaTileEntity;
46
import gregtech.api.recipes.Recipe;
57
import gregtech.api.recipes.RecipeBuilder;
68
import gregtech.api.recipes.RecipeMap;
79
import gregtech.api.recipes.properties.impl.ResearchProperty;
810
import gregtech.api.recipes.properties.impl.ResearchPropertyData;
11+
import gregtech.api.unification.material.Material;
12+
import gregtech.api.unification.ore.OrePrefix;
913
import gregtech.api.util.AssemblyLineManager;
1014
import gregtech.api.util.EnumValidationResult;
1115
import gregtech.api.util.GTLog;
1216
import gregtech.common.ConfigHolder;
1317

18+
import net.minecraft.block.Block;
1419
import net.minecraft.item.ItemStack;
1520

1621
import org.jetbrains.annotations.NotNull;
@@ -126,7 +131,66 @@ public AssemblyLineRecipeBuilder scannerResearch(UnaryOperator<ResearchRecipeBui
126131
* @return this
127132
*/
128133
public AssemblyLineRecipeBuilder scannerResearch(@NotNull ItemStack researchStack) {
129-
return scannerResearch(b -> new ResearchRecipeBuilder.ScannerRecipeBuilder().researchStack(researchStack));
134+
return scannerResearch(b -> b.researchStack(researchStack));
135+
}
136+
137+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull MetaItem<?>.MetaValueItem metaItem) {
138+
return scannerResearch(b -> b.researchStack(metaItem));
139+
}
140+
141+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull MetaItem<?>.MetaValueItem metaItem, int amount) {
142+
return scannerResearch(b -> b.researchStack(metaItem, amount));
143+
}
144+
145+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull MetaItem<?>.MetaValueItem metaItem, int amount,
146+
boolean ignoreNBT) {
147+
return scannerResearch(b -> b.researchStack(metaItem, amount, ignoreNBT));
148+
}
149+
150+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull MetaTileEntity mte) {
151+
return scannerResearch(b -> b.researchStack(mte));
152+
}
153+
154+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull MetaTileEntity mte, int amount) {
155+
return scannerResearch(b -> b.researchStack(mte, amount));
156+
}
157+
158+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull MetaTileEntity mte, int amount, boolean ignoreNBT) {
159+
return scannerResearch(b -> b.researchStack(mte, amount, ignoreNBT));
160+
}
161+
162+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull OrePrefix prefix, @NotNull Material material) {
163+
return scannerResearch(b -> b.researchStack(prefix, material));
164+
}
165+
166+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull OrePrefix prefix, @NotNull Material material,
167+
int amount) {
168+
return scannerResearch(b -> b.researchStack(prefix, material, amount));
169+
}
170+
171+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull OrePrefix prefix, @NotNull Material material, int amount,
172+
boolean ignoreNBT) {
173+
return scannerResearch(b -> b.researchStack(prefix, material, amount, ignoreNBT));
174+
}
175+
176+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull Block block) {
177+
return scannerResearch(b -> b.researchStack(block));
178+
}
179+
180+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull Block block, int amount) {
181+
return scannerResearch(b -> b.researchStack(block, amount));
182+
}
183+
184+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull Block block, int amount, int meta) {
185+
return scannerResearch(b -> b.researchStack(block, amount, meta));
186+
}
187+
188+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull Block block, int amount, boolean ignoreNBT) {
189+
return scannerResearch(b -> b.researchStack(block, amount, ignoreNBT));
190+
}
191+
192+
public AssemblyLineRecipeBuilder scannerResearch(@NotNull Block block, int amount, int meta, boolean ignoreNBT) {
193+
return scannerResearch(b -> b.researchStack(block, amount, meta, ignoreNBT));
130194
}
131195

132196
/**

src/main/java/gregtech/api/recipes/builders/ResearchRecipeBuilder.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@
44
import gregtech.api.items.metaitem.MetaItem;
55
import gregtech.api.items.metaitem.stats.IDataItem;
66
import gregtech.api.items.metaitem.stats.IItemBehaviour;
7+
import gregtech.api.metatileentity.MetaTileEntity;
8+
import gregtech.api.unification.OreDictUnifier;
9+
import gregtech.api.unification.material.Material;
10+
import gregtech.api.unification.ore.OrePrefix;
711
import gregtech.api.util.AssemblyLineManager;
812
import gregtech.api.util.GTStringUtils;
913

14+
import net.minecraft.block.Block;
1015
import net.minecraft.item.ItemStack;
1116

1217
import org.jetbrains.annotations.NotNull;
@@ -24,6 +29,7 @@ public T researchStack(@NotNull ItemStack researchStack) {
2429
this.researchStack = researchStack;
2530
this.ignoreNBT = true;
2631
}
32+
// noinspection unchecked
2733
return (T) this;
2834
}
2935

@@ -32,23 +38,83 @@ public T researchStack(@NotNull ItemStack researchStack, boolean ignoreNBT) {
3238
this.researchStack = researchStack;
3339
this.ignoreNBT = ignoreNBT;
3440
}
41+
// noinspection unchecked
3542
return (T) this;
3643
}
3744

45+
public T researchStack(@NotNull MetaItem<?>.MetaValueItem metaItem) {
46+
return researchStack(metaItem.getStackForm());
47+
}
48+
49+
public T researchStack(@NotNull MetaItem<?>.MetaValueItem metaItem, int amount) {
50+
return researchStack(metaItem.getStackForm(amount));
51+
}
52+
53+
public T researchStack(@NotNull MetaItem<?>.MetaValueItem metaItem, int amount, boolean ignoreNBT) {
54+
return researchStack(metaItem.getStackForm(amount), ignoreNBT);
55+
}
56+
57+
public T researchStack(@NotNull MetaTileEntity mte) {
58+
return researchStack(mte.getStackForm());
59+
}
60+
61+
public T researchStack(@NotNull MetaTileEntity mte, int amount) {
62+
return researchStack(mte.getStackForm(amount));
63+
}
64+
65+
public T researchStack(@NotNull MetaTileEntity mte, int amount, boolean ignoreNBT) {
66+
return researchStack(mte.getStackForm(amount), ignoreNBT);
67+
}
68+
69+
public T researchStack(@NotNull OrePrefix prefix, @NotNull Material material) {
70+
return researchStack(OreDictUnifier.get(prefix, material));
71+
}
72+
73+
public T researchStack(@NotNull OrePrefix prefix, @NotNull Material material, int amount) {
74+
return researchStack(OreDictUnifier.get(prefix, material, amount));
75+
}
76+
77+
public T researchStack(@NotNull OrePrefix prefix, @NotNull Material material, int amount, boolean ignoreNBT) {
78+
return researchStack(OreDictUnifier.get(prefix, material, amount), ignoreNBT);
79+
}
80+
81+
public T researchStack(@NotNull Block block) {
82+
return researchStack(new ItemStack(block));
83+
}
84+
85+
public T researchStack(@NotNull Block block, int amount) {
86+
return researchStack(new ItemStack(block, amount));
87+
}
88+
89+
public T researchStack(@NotNull Block block, int amount, int meta) {
90+
return researchStack(new ItemStack(block, amount, meta));
91+
}
92+
93+
public T researchStack(@NotNull Block block, int amount, boolean ignoreNBT) {
94+
return researchStack(new ItemStack(block, amount), ignoreNBT);
95+
}
96+
97+
public T researchStack(@NotNull Block block, int amount, int meta, boolean ignoreNBT) {
98+
return researchStack(new ItemStack(block, amount, meta), ignoreNBT);
99+
}
100+
38101
public T dataStack(@NotNull ItemStack dataStack) {
39102
if (!dataStack.isEmpty()) {
40103
this.dataStack = dataStack;
41104
}
105+
// noinspection unchecked
42106
return (T) this;
43107
}
44108

45109
public T researchId(String researchId) {
46110
this.researchId = researchId;
111+
// noinspection unchecked
47112
return (T) this;
48113
}
49114

50115
public T EUt(long eut) {
51116
this.eut = eut;
117+
// noinspection unchecked
52118
return (T) this;
53119
}
54120

src/main/java/gregtech/loaders/recipe/AssemblyLineLoader.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package gregtech.loaders.recipe;
22

3-
import gregtech.api.unification.OreDictUnifier;
43
import gregtech.api.unification.material.MarkerMaterials.Tier;
54

65
import static gregtech.api.GTValues.*;
@@ -28,7 +27,7 @@ public static void init() {
2827
.fluidInputs(NiobiumTitanium.getFluid(L * 8))
2928
.outputs(FUSION_REACTOR[0].getStackForm())
3029
.scannerResearch(b -> b
31-
.researchStack(OreDictUnifier.get(wireGtSingle, IndiumTinBariumTitaniumCuprate))
30+
.researchStack(wireGtSingle, IndiumTinBariumTitaniumCuprate)
3231
.duration(1200)
3332
.EUt(VA[IV]))
3433
.duration(800).EUt(VA[LuV]).buildAndRegister();
@@ -46,7 +45,7 @@ public static void init() {
4645
.fluidInputs(VanadiumGallium.getFluid(L * 8))
4746
.outputs(FUSION_REACTOR[1].getStackForm())
4847
.stationResearch(b -> b
49-
.researchStack(FUSION_REACTOR[0].getStackForm())
48+
.researchStack(FUSION_REACTOR[0])
5049
.CWUt(16)
5150
.EUt(VA[ZPM]))
5251
.duration(1000).EUt(61440).buildAndRegister();
@@ -64,7 +63,7 @@ public static void init() {
6463
.fluidInputs(YttriumBariumCuprate.getFluid(L * 8))
6564
.outputs(FUSION_REACTOR[2].getStackForm())
6665
.stationResearch(b -> b
67-
.researchStack(FUSION_REACTOR[1].getStackForm())
66+
.researchStack(FUSION_REACTOR[1])
6867
.CWUt(96)
6968
.EUt(VA[UV]))
7069
.duration(1000).EUt(VA[ZPM]).buildAndRegister();

src/main/java/gregtech/loaders/recipe/BatteryRecipes.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ private static void gemBatteries() {
360360
.input(bolt, Naquadah, 16)
361361
.fluidInputs(SolderingAlloy.getFluid(L * 5))
362362
.output(ENERGY_LAPOTRONIC_ORB_CLUSTER)
363-
.scannerResearch(ENERGY_LAPOTRONIC_ORB.getStackForm())
363+
.scannerResearch(ENERGY_LAPOTRONIC_ORB)
364364
.buildAndRegister();
365365

366366
// Energy Module
@@ -381,7 +381,7 @@ private static void gemBatteries() {
381381
.fluidInputs(SolderingAlloy.getFluid(L * 10))
382382
.output(ENERGY_MODULE)
383383
.stationResearch(b -> b
384-
.researchStack(ENERGY_LAPOTRONIC_ORB_CLUSTER.getStackForm())
384+
.researchStack(ENERGY_LAPOTRONIC_ORB_CLUSTER)
385385
.CWUt(16))
386386
.buildAndRegister();
387387

@@ -404,7 +404,7 @@ private static void gemBatteries() {
404404
.fluidInputs(Polybenzimidazole.getFluid(L * 4))
405405
.output(ENERGY_CLUSTER)
406406
.stationResearch(b -> b
407-
.researchStack(ENERGY_MODULE.getStackForm())
407+
.researchStack(ENERGY_MODULE)
408408
.CWUt(96)
409409
.EUt(VA[ZPM]))
410410
.buildAndRegister();
@@ -429,7 +429,7 @@ private static void gemBatteries() {
429429
.fluidInputs(Naquadria.getFluid(L * 18))
430430
.output(ULTIMATE_BATTERY)
431431
.stationResearch(b -> b
432-
.researchStack(ENERGY_CLUSTER.getStackForm())
432+
.researchStack(ENERGY_CLUSTER)
433433
.CWUt(144)
434434
.EUt(VA[UHV]))
435435
.buildAndRegister();

0 commit comments

Comments
 (0)