Skip to content

Commit f5002d4

Browse files
authored
Better With Using Custom Ingredient Classes (#335)
* better with custom ingredients * fix betterwithaddons rotting example using absent item
1 parent 6068fb9 commit f5002d4

File tree

8 files changed

+30
-19
lines changed

8 files changed

+30
-19
lines changed

examples/postInit/betterwithaddons.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ mods.betterwithaddons.rotting.recipeBuilder()
141141
.register()
142142

143143
mods.betterwithaddons.rotting.recipeBuilder()
144-
.input(item('placeholdername:snack'))
144+
.input(item('minecraft:apple'))
145145
.time(100)
146146
.key('groovy_example')
147147
.rotted(item('minecraft:clay') * 4)

examples/postInit/betterwithmods.groovy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ mods.betterwithmods.cauldron.removeByOutput(item('minecraft:gunpowder'))
4242
// mods.betterwithmods.cauldron.removeAll()
4343

4444
mods.betterwithmods.cauldron.recipeBuilder()
45-
.input(item('minecraft:clay'))
45+
.input(item('minecraft:clay') * 3)
4646
.output(item('minecraft:diamond'))
4747
.heat(2)
4848
.register()
@@ -62,7 +62,7 @@ mods.betterwithmods.crucible.removeByOutput(item('minecraft:gunpowder'))
6262
// mods.betterwithmods.crucible.removeAll()
6363

6464
mods.betterwithmods.crucible.recipeBuilder()
65-
.input(item('minecraft:clay'))
65+
.input(item('minecraft:clay') * 3)
6666
.output(item('minecraft:diamond'))
6767
.heat(2)
6868
.register()
@@ -98,7 +98,7 @@ mods.betterwithmods.hopper.recipeBuilder()
9898

9999
mods.betterwithmods.hopper.recipeBuilder()
100100
.name('betterwithmods:wicker')
101-
.input(item('minecraft:clay'))
101+
.input(item('minecraft:clay') * 3)
102102
.inWorldItemOutput(item('minecraft:gold_ingot'))
103103
.register()
104104

@@ -150,7 +150,7 @@ mods.betterwithmods.mill_stone.removeByOutput(item('minecraft:blaze_powder'))
150150
// mods.betterwithmods.mill_stone.removeAll()
151151

152152
mods.betterwithmods.mill_stone.recipeBuilder()
153-
.input(item('minecraft:diamond'))
153+
.input(item('minecraft:diamond') * 3)
154154
.output(item('minecraft:gold_ingot') * 16)
155155
.register()
156156

src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithaddons/Rotting.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public boolean isEnabled() {
3939

4040
@RecipeBuilderDescription(example = {
4141
@Example(".input(item('minecraft:gold_ingot'))"),
42-
@Example(".input(item('placeholdername:snack')).time(100).key('groovy_example').rotted(item('minecraft:clay') * 4)")
42+
@Example(".input(item('minecraft:apple')).time(100).key('groovy_example').rotted(item('minecraft:clay') * 4)")
4343
})
4444
public RecipeBuilder recipeBuilder() {
4545
return new RecipeBuilder();

src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.cleanroommc.groovyscript.compat.mods.betterwithmods;
22

3+
import betterwithmods.util.StackIngredient;
4+
import com.cleanroommc.groovyscript.api.IIngredient;
35
import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer;
6+
import net.minecraft.item.crafting.Ingredient;
47

58
public class BetterWithMods extends GroovyPropertyContainer {
69

@@ -14,4 +17,17 @@ public class BetterWithMods extends GroovyPropertyContainer {
1417
public final Heat heat = new Heat();
1518
public final Hopper hopper = new Hopper();
1619
public final HopperFilters hopperFilters = new HopperFilters();
20+
21+
public static class Helper {
22+
23+
/**
24+
* Because Better With Mods checks if the ingredient is an instanceof {@link StackIngredient}
25+
* to determine if the Ingredient has an amount, we have to use their custom Ingredient.
26+
* <p>
27+
* If this isn't used, then the recipe may appear correctly in JEI but will actually only consume 1 when done in-game.
28+
*/
29+
public static Ingredient fromIIngredient(IIngredient ingredient) {
30+
return StackIngredient.fromIngredient(ingredient.getAmount(), ingredient.toMcIngredient());
31+
}
32+
}
1733
}

src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
public class Cauldron extends StandardListRegistry<CookingPotRecipe> {
2020

2121
@RecipeBuilderDescription(example = {
22-
@Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).heat(2)"),
22+
@Example(".input(item('minecraft:clay') * 3).output(item('minecraft:diamond')).heat(2)"),
2323
@Example(".input(item('minecraft:diamond')).output(item('minecraft:gold_ingot') * 16).ignoreHeat()")
2424
})
2525
public RecipeBuilder recipeBuilder() {
@@ -110,7 +110,7 @@ public void validate(GroovyLog.Msg msg) {
110110
public @Nullable CookingPotRecipe register() {
111111
if (!validate()) return null;
112112

113-
CookingPotRecipe recipe = new CookingPotRecipe(input.stream().map(IIngredient::toMcIngredient).collect(Collectors.toList()), output, heat);
113+
CookingPotRecipe recipe = new CookingPotRecipe(input.stream().map(BetterWithMods.Helper::fromIIngredient).collect(Collectors.toList()), output, heat);
114114
recipe.setIgnoreHeat(ignoreHeat);
115115
recipe.setPriority(priority);
116116
ModSupport.BETTER_WITH_MODS.get().cauldron.add(recipe);

src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
public class Crucible extends StandardListRegistry<CookingPotRecipe> {
2222

2323
@RecipeBuilderDescription(example = {
24-
@Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).heat(2)"),
24+
@Example(".input(item('minecraft:clay') * 3).output(item('minecraft:diamond')).heat(2)"),
2525
@Example(".input(item('minecraft:diamond')).output(item('minecraft:gold_ingot') * 16).ignoreHeat()")
2626
})
2727
public RecipeBuilder recipeBuilder() {
@@ -115,7 +115,7 @@ public void validate(GroovyLog.Msg msg) {
115115
public @Nullable CookingPotRecipe register() {
116116
if (!validate()) return null;
117117

118-
CookingPotRecipe recipe = new CookingPotRecipe(input.stream().map(IIngredient::toMcIngredient).collect(Collectors.toList()), output, heat);
118+
CookingPotRecipe recipe = new CookingPotRecipe(input.stream().map(BetterWithMods.Helper::fromIIngredient).collect(Collectors.toList()), output, heat);
119119
recipe.setIgnoreHeat(ignoreHeat);
120120
recipe.setPriority(priority);
121121
ModSupport.BETTER_WITH_MODS.get().crucible.add(recipe);

src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class Hopper extends StandardListRegistry<HopperInteractions.HopperRecipe
1818

1919
@RecipeBuilderDescription(example = {
2020
@Example(".name('betterwithmods:iron_bar').input(ore('sand')).output(item('minecraft:clay')).inWorldItemOutput(item('minecraft:gold_ingot'))"),
21-
@Example(".name('betterwithmods:wicker').input(item('minecraft:clay')).inWorldItemOutput(item('minecraft:gold_ingot'))")
21+
@Example(".name('betterwithmods:wicker').input(item('minecraft:clay') * 3).inWorldItemOutput(item('minecraft:gold_ingot'))")
2222
})
2323
public RecipeBuilder recipeBuilder() {
2424
return new RecipeBuilder();
@@ -103,7 +103,7 @@ public void validate(GroovyLog.Msg msg) {
103103
public @Nullable HopperInteractions.HopperRecipe register() {
104104
if (!validate()) return null;
105105

106-
HopperInteractions.HopperRecipe recipe = new HopperInteractions.HopperRecipe(super.name.toString(), input.get(0).toMcIngredient(), output, inWorldItemOutput);
106+
HopperInteractions.HopperRecipe recipe = new HopperInteractions.HopperRecipe(super.name.toString(), BetterWithMods.Helper.fromIIngredient(input.get(0)), output, inWorldItemOutput);
107107
ModSupport.BETTER_WITH_MODS.get().hopper.add(recipe);
108108
return recipe;
109109
}

src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public Collection<MillRecipe> getRecipes() {
3030
}
3131

3232
@RecipeBuilderDescription(example = {
33-
@Example(".input(item('minecraft:diamond')).output(item('minecraft:gold_ingot') * 16)"),
33+
@Example(".input(item('minecraft:diamond') * 3).output(item('minecraft:gold_ingot') * 16)"),
3434
@Example(".input(item('minecraft:diamond_block')).output(item('minecraft:gold_ingot'), item('minecraft:gold_block'), item('minecraft:clay'))")
3535
})
3636
public RecipeBuilder recipeBuilder() {
@@ -105,11 +105,6 @@ public String getErrorMsg() {
105105
return "Error adding Better With Mods Mill recipe";
106106
}
107107

108-
@Override
109-
protected int getMaxItemInput() {
110-
return 1;
111-
}
112-
113108
@Override
114109
public void validate(GroovyLog.Msg msg) {
115110
validateItems(msg, 1, 3, 1, 3);
@@ -122,7 +117,7 @@ public void validate(GroovyLog.Msg msg) {
122117
public @Nullable MillRecipe register() {
123118
if (!validate()) return null;
124119

125-
MillRecipe recipe = new MillRecipe(input.stream().map(IIngredient::toMcIngredient).collect(Collectors.toList()), output);
120+
MillRecipe recipe = new MillRecipe(input.stream().map(BetterWithMods.Helper::fromIIngredient).collect(Collectors.toList()), output);
126121
recipe.setSound(soundEvent);
127122
recipe.setTicks(ticks);
128123
recipe.setPriority(priority);

0 commit comments

Comments
 (0)