Skip to content

Commit 7fc5dd1

Browse files
committed
More Datagen for Recipes
1 parent c82cfd9 commit 7fc5dd1

File tree

18 files changed

+437
-36
lines changed

18 files changed

+437
-36
lines changed

src/main/java/com/rae/creatingspace/content/datagen/CSDatagen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public static void gatherData(GatherDataEvent event) {
4646

4747
//CS Recipes
4848
generator.addProvider(true, new CSStandardRecipeGen(output, lookupProvider));
49-
//generator.addProvider(true, new CSPressingRecipeGen(output, lookupProvider));
49+
generator.addProvider(true, new CSPressingRecipeGen(output, lookupProvider));
5050
}
5151
}
5252

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package com.rae.creatingspace.content.datagen;
2+
3+
import com.rae.creatingspace.content.datagen.recipe.CSMetalRecipeHelper;
4+
import com.rae.creatingspace.init.ingameobject.BlockInit;
5+
import com.rae.creatingspace.init.ingameobject.ItemInit;
6+
import com.simibubi.create.AllTags;
7+
import net.minecraft.data.recipes.RecipeOutput;
8+
import net.minecraft.world.item.Item;
9+
10+
import javax.annotation.Nullable;
11+
import java.util.List;
12+
13+
public class CSMetalSets {
14+
15+
public static final MetalSet ALUMINUM = new MetalSet(
16+
"aluminum",
17+
true,
18+
ItemInit.ALUMINUM_NUGGET.get(),
19+
ItemInit.ALUMINUM_INGOT.get(),
20+
BlockInit.ALUMINUM_BLOCK.asItem(),
21+
ItemInit.RAW_ALUMINUM.get(),
22+
BlockInit.MOON_ALUMINUM_ORE.asItem(),
23+
null
24+
);
25+
26+
public static final MetalSet COBALT = new MetalSet(
27+
"cobalt",
28+
true,
29+
ItemInit.COBALT_NUGGET.get(),
30+
ItemInit.COBALT_INGOT.get(),
31+
BlockInit.COBALT_BLOCK.asItem(),
32+
ItemInit.RAW_COBALT.get(),
33+
BlockInit.MOON_COBALT_ORE.asItem(),
34+
null
35+
);
36+
37+
public static final MetalSet NICKEL = new MetalSet(
38+
"nickel",
39+
true,
40+
ItemInit.NICKEL_NUGGET.get(),
41+
ItemInit.NICKEL_INGOT.get(),
42+
BlockInit.NICKEL_BLOCK.asItem(),
43+
ItemInit.RAW_NICKEL.get(),
44+
BlockInit.NICKEL_ORE.asItem(),
45+
BlockInit.MOON_NICKEL_ORE.asItem()
46+
);
47+
48+
public static final List<MetalSet> ALL = List.of(ALUMINUM, COBALT, NICKEL);
49+
50+
public record MetalSet(
51+
String name,
52+
boolean generateSmelting,
53+
Item nugget,
54+
Item ingot,
55+
Item block,
56+
@Nullable Item rawOre,
57+
@Nullable Item ore,
58+
@Nullable Item deepslateOre
59+
){}
60+
61+
protected void buildRecipes(RecipeOutput recipeOutput){
62+
CSMetalRecipeHelper.generateMetalRecipes(recipeOutput, ALUMINUM);
63+
CSMetalRecipeHelper.generateMetalRecipes(recipeOutput, COBALT);
64+
CSMetalRecipeHelper.generateMetalRecipes(recipeOutput, NICKEL);
65+
}
66+
67+
}
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package com.rae.creatingspace.content.datagen.recipe;
2+
3+
import com.rae.creatingspace.CreatingSpace;
4+
import com.rae.creatingspace.content.datagen.CSMetalSets;
5+
import com.rae.creatingspace.init.EngineMaterialInit;
6+
import com.rae.creatingspace.init.ingameobject.ItemInit;
7+
import com.simibubi.create.AllTags;
8+
import com.simibubi.create.foundation.data.recipe.PressingRecipeGen;
9+
import net.minecraft.advancements.Criterion;
10+
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
11+
import net.minecraft.core.HolderLookup;
12+
import net.minecraft.data.PackOutput;
13+
import net.minecraft.data.recipes.RecipeCategory;
14+
import net.minecraft.data.recipes.RecipeOutput;
15+
import net.minecraft.data.recipes.ShapedRecipeBuilder;
16+
import net.minecraft.data.recipes.ShapelessRecipeBuilder;
17+
import net.minecraft.resources.ResourceLocation;
18+
import net.minecraft.world.item.Item;
19+
20+
import java.util.concurrent.CompletableFuture;
21+
22+
public class CSMetalRecipeHelper {
23+
24+
public static void generateMetalRecipes(RecipeOutput output, CSMetalSets.MetalSet metal) {
25+
// 9 Nuggets → 1 Ingot
26+
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, metal.ingot())
27+
.define('#', AllTags.commonItemTag("nuggets/" + metal.name()))
28+
.pattern("###")
29+
.pattern("###")
30+
.pattern("###")
31+
.unlockedBy("has_nugget", has(metal.nugget()))
32+
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_ingot_from_nuggets"));
33+
34+
// 1 Ingot → 9 Nuggets
35+
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, metal.nugget(), 9)
36+
.requires(AllTags.commonItemTag("ingots/" + metal.name()))
37+
.unlockedBy("has_ingot", has(metal.ingot()))
38+
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_nugget"));
39+
40+
// 9 Ingots → 1 Block
41+
ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, metal.block())
42+
.define('#', AllTags.commonItemTag("ingots/" + metal.name()))
43+
.pattern("###")
44+
.pattern("###")
45+
.pattern("###")
46+
.unlockedBy("has_ingot", has(metal.ingot()))
47+
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_block"));
48+
49+
// 1 Block → 9 Ingots
50+
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, metal.ingot(), 9)
51+
.requires(AllTags.commonItemTag("storage_blocks/" + metal.name()))
52+
.unlockedBy("has_block", has(metal.block()))
53+
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_ingot_from_block"));
54+
}
55+
56+
public static void generateMetalAlloyRecipes(RecipeOutput output, CSMetalSets.MetalSet metal) {
57+
// 9 Nuggets → 1 Ingot
58+
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, metal.ingot())
59+
.define('#', AllTags.commonItemTag("nuggets/" + metal.name()))
60+
.pattern("###")
61+
.pattern("###")
62+
.pattern("###")
63+
.unlockedBy("has_nugget", has(metal.nugget()))
64+
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_ingot_from_nuggets"));
65+
66+
// 1 Ingot → 9 Nuggets
67+
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, metal.nugget(), 9)
68+
.requires(AllTags.commonItemTag("ingots/" + metal.name()))
69+
.unlockedBy("has_ingot", has(metal.ingot()))
70+
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_nugget"));
71+
72+
// 9 Ingots → 1 Block
73+
ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, metal.block())
74+
.define('#', AllTags.commonItemTag("ingots/" + metal.name()))
75+
.pattern("###")
76+
.pattern("###")
77+
.pattern("###")
78+
.unlockedBy("has_ingot", has(metal.ingot()))
79+
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_block"));
80+
81+
// 1 Block → 9 Ingots
82+
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, metal.ingot(), 9)
83+
.requires(AllTags.commonItemTag("storage_blocks/" + metal.name()))
84+
.unlockedBy("has_block", has(metal.block()))
85+
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_ingot_from_block"));
86+
}
87+
88+
public static void generateMetalPressingRecipes(RecipeOutput output, CSMetalSets.MetalSet metal) {
89+
90+
}
91+
92+
// helper for criteria
93+
private static Criterion<InventoryChangeTrigger.TriggerInstance> has(Item item) {
94+
return InventoryChangeTrigger.TriggerInstance.hasItems(item);
95+
}
96+
97+
private ResourceLocation createLocation(String recipeName) {
98+
return ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, recipeName);
99+
}
100+
}
101+

src/main/java/com/rae/creatingspace/content/datagen/recipe/CSPressingRecipeGen.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
import com.rae.creatingspace.CreatingSpace;
44
import com.rae.creatingspace.init.ingameobject.ItemInit;
55
import com.simibubi.create.AllTags;
6-
import com.simibubi.create.foundation.data.recipe.Mods;
76
import com.simibubi.create.foundation.data.recipe.PressingRecipeGen;
87
import net.minecraft.core.HolderLookup;
98
import net.minecraft.data.PackOutput;
109
import net.minecraft.resources.ResourceLocation;
11-
import net.neoforged.neoforge.common.Tags;
1210

1311
import java.util.concurrent.CompletableFuture;
1412

@@ -17,12 +15,14 @@ public class CSPressingRecipeGen extends PressingRecipeGen {
1715
public CSPressingRecipeGen(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
1816
super(output, registries);
1917

20-
//GeneratedRecipe
21-
22-
//ALUMINUM = create("aluminum_ingot", b -> b.require(AllTags.commonItemTag("c:ingots/aluminum"))
23-
// .output(ItemInit.ALUMINUM_SHEET.get()));
24-
//NICKEL = create("aluminum_ingot", b -> b.require(AllTags.commonItemTag("c:ingots/nickel"))
25-
// .output(ItemInit.NICKEL_SHEET.get()));
26-
18+
create(createLocation("aluminum_sheet"), b -> b.require(AllTags.commonItemTag("ingots/aluminum"))
19+
.output(ItemInit.ALUMINUM_SHEET.get()));
20+
create(createLocation( "nickel_sheet"), b -> b.require(AllTags.commonItemTag("ingots/nickel"))
21+
.output(ItemInit.NICKEL_SHEET.get()));
22+
create(createLocation("cobalt_sheet"), b -> b.require(AllTags.commonItemTag("ingots/cobalt"))
23+
.output(ItemInit.COBALT_SHEET.get()));
24+
}
25+
private ResourceLocation createLocation(String recipeName) {
26+
return ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, recipeName);
2727
}
2828
}

0 commit comments

Comments
 (0)