Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ tasks.withType(ProcessResources).configureEach {
mod_description : mod_description
]
inputs.properties replaceProperties

duplicatesStrategy = DuplicatesStrategy.EXCLUDE
filesMatching(['META-INF/neoforge.mods.toml']) {
expand replaceProperties
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,30 @@
import com.google.gson.JsonObject;
import com.rae.creatingspace.CreatingSpace;

import com.rae.creatingspace.content.datagen.recipe.CSPressingRecipeGen;
import com.rae.creatingspace.content.datagen.recipe.CSStandardRecipeGen;
import com.simibubi.create.foundation.utility.FilesHelper;
import com.tterrag.registrate.providers.ProviderType;
import com.tterrag.registrate.providers.RegistrateDataProvider;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import net.neoforged.neoforge.data.event.GatherDataEvent;

import java.util.Map.Entry;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;

import static com.rae.creatingspace.CreatingSpace.REGISTRATE;

public class CSDatagen {
public static void gatherData(GatherDataEvent event) {
addExtraRegistrateData();

DataGenerator generator = event.getGenerator();
PackOutput output = generator.getPackOutput();
CompletableFuture<HolderLookup.Provider> lookupProvider = event.getLookupProvider();
ExistingFileHelper existingFileHelper = event.getExistingFileHelper();

if (event.includeClient()) {
Expand All @@ -35,13 +45,20 @@ public static void gatherData(GatherDataEvent event) {
//ProcessingRecipeGen.registerAll(generator);

// AllOreFeatureConfigEntries.gatherData(event);

//CS Recipes
generator.addProvider(true, new CSStandardRecipeGen(output, lookupProvider));
generator.addProvider(true, new CSPressingRecipeGen(output, lookupProvider));

event.getGenerator().addProvider(true, REGISTRATE.setDataProvider(new RegistrateDataProvider(REGISTRATE, CreatingSpace.MODID, event)));
}
}

private static void addExtraRegistrateData() {
//CreateRegistrateTags.addGenerators();

CreatingSpace.REGISTRATE.addDataGenerator(ProviderType.LANG, provider -> {
/*
REGISTRATE.addDataGenerator(ProviderType.LANG, provider -> {
BiConsumer<String, String> langConsumer = provider::add;

provideDefaultLang("interface", langConsumer);
Expand All @@ -50,6 +67,7 @@ private static void addExtraRegistrateData() {
//AllSoundEvents.provideLang(langConsumer);
providePonderLang(langConsumer);
});
*/
}

private static void provideDefaultLang(String fileName, BiConsumer<String, String> consumer) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.rae.creatingspace.content.datagen;

import com.rae.creatingspace.content.datagen.recipe.CSMetalRecipeHelper;
import com.rae.creatingspace.init.ingameobject.BlockInit;
import com.rae.creatingspace.init.ingameobject.ItemInit;
import com.simibubi.create.AllTags;
import net.minecraft.data.recipes.RecipeOutput;
import net.minecraft.world.item.Item;

import javax.annotation.Nullable;
import java.util.List;

public class CSMetalSets {

public static final MetalSet ALUMINUM = new MetalSet(
"aluminum",
true,
ItemInit.ALUMINUM_NUGGET.get(),
ItemInit.ALUMINUM_INGOT.get(),
BlockInit.ALUMINUM_BLOCK.asItem(),
ItemInit.RAW_ALUMINUM.get(),
BlockInit.MOON_ALUMINUM_ORE.asItem(),
null
);

public static final MetalSet COBALT = new MetalSet(
"cobalt",
true,
ItemInit.COBALT_NUGGET.get(),
ItemInit.COBALT_INGOT.get(),
BlockInit.COBALT_BLOCK.asItem(),
ItemInit.RAW_COBALT.get(),
BlockInit.MOON_COBALT_ORE.asItem(),
null
);

public static final MetalSet NICKEL = new MetalSet(
"nickel",
true,
ItemInit.NICKEL_NUGGET.get(),
ItemInit.NICKEL_INGOT.get(),
BlockInit.NICKEL_BLOCK.asItem(),
ItemInit.RAW_NICKEL.get(),
BlockInit.NICKEL_ORE.asItem(),
BlockInit.MOON_NICKEL_ORE.asItem()
);

public static final List<String> ALL = List.of("aluminum","cobalt", "nickel");

public record MetalSet(
String name,
boolean generateSmelting,
Item nugget,
Item ingot,
Item block,
@Nullable Item rawOre,
@Nullable Item ore,
@Nullable Item deepslateOre
){}

protected void buildRecipes(RecipeOutput recipeOutput) {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.rae.creatingspace.content.datagen;

import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.data.recipes.RecipeOutput;
import net.minecraft.data.recipes.RecipeProvider;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;

public class CSRecipeProvider extends RecipeProvider {

protected final List<GeneratedRecipe> all = new ArrayList<>();

public CSRecipeProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
super(output, registries);
}

@Override
protected void buildRecipes(@NotNull RecipeOutput pRecipeOutput) {
all.forEach(c -> c.register(pRecipeOutput));
}

protected GeneratedRecipe register(GeneratedRecipe recipe) {
all.add(recipe);
return recipe;
}

@FunctionalInterface
public interface GeneratedRecipe {
void register(RecipeOutput output);
}

public static class Marker {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package com.rae.creatingspace.content.datagen.recipe;

import com.rae.creatingspace.CreatingSpace;
import com.rae.creatingspace.content.datagen.CSMetalSets;
import com.rae.creatingspace.init.EngineMaterialInit;
import com.rae.creatingspace.init.ingameobject.ItemInit;
import com.simibubi.create.AllTags;
import com.simibubi.create.foundation.data.recipe.PressingRecipeGen;
import net.minecraft.advancements.Criterion;
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.data.recipes.RecipeCategory;
import net.minecraft.data.recipes.RecipeOutput;
import net.minecraft.data.recipes.ShapedRecipeBuilder;
import net.minecraft.data.recipes.ShapelessRecipeBuilder;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;

import java.util.concurrent.CompletableFuture;

import static com.rae.creatingspace.CreatingSpace.resource;

public class CSMetalRecipeHelper {

public static void generateMetalRecipes(RecipeOutput output, CSMetalSets.MetalSet metal) {
// 9 Nuggets → 1 Ingot
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, metal.ingot())
.define('#', AllTags.commonItemTag("nuggets/" + metal.name()))
.pattern("###")
.pattern("###")
.pattern("###")
.unlockedBy("has_nugget", has(metal.nugget()))
.save(output, resource(metal.name() + "_ingot_from_nuggets"));

// 1 Ingot → 9 Nuggets
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, metal.nugget(), 9)
.requires(AllTags.commonItemTag("ingots/" + metal.name()))
.unlockedBy("has_ingot", has(metal.ingot()))
.save(output, resource(metal.name() + "_nugget"));

// 9 Ingots → 1 Block
ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, metal.block())
.define('#', AllTags.commonItemTag("ingots/" + metal.name()))
.pattern("###")
.pattern("###")
.pattern("###")
.unlockedBy("has_ingot", has(metal.ingot()))
.save(output, resource(metal.name() + "_block"));

// 1 Block → 9 Ingots
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, metal.ingot(), 9)
.requires(AllTags.commonItemTag("storage_blocks/" + metal.name()))
.unlockedBy("has_block", has(metal.block()))
.save(output, resource(metal.name() + "_ingot_from_block"));
}

public static void generateMetalAlloyRecipes(RecipeOutput output, CSMetalSets.MetalSet metal) {
// 9 Nuggets → 1 Ingot
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, metal.ingot())
.define('#', AllTags.commonItemTag("nuggets/" + metal.name()))
.pattern("###")
.pattern("###")
.pattern("###")
.unlockedBy("has_nugget", has(metal.nugget()))
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_ingot_from_nuggets"));

// 1 Ingot → 9 Nuggets
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, metal.nugget(), 9)
.requires(AllTags.commonItemTag("ingots/" + metal.name()))
.unlockedBy("has_ingot", has(metal.ingot()))
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_nugget"));

// 9 Ingots → 1 Block
ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, metal.block())
.define('#', AllTags.commonItemTag("ingots/" + metal.name()))
.pattern("###")
.pattern("###")
.pattern("###")
.unlockedBy("has_ingot", has(metal.ingot()))
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_block"));

// 1 Block → 9 Ingots
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, metal.ingot(), 9)
.requires(AllTags.commonItemTag("storage_blocks/" + metal.name()))
.unlockedBy("has_block", has(metal.block()))
.save(output, ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, metal.name() + "_ingot_from_block"));
}

public static void generateMetalPressingRecipes(RecipeOutput output, CSMetalSets.MetalSet metal) {

}

// helper for criteria
private static Criterion<InventoryChangeTrigger.TriggerInstance> has(Item item) {
return InventoryChangeTrigger.TriggerInstance.hasItems(item);
}

private ResourceLocation createLocation(String recipeName) {
return ResourceLocation.fromNamespaceAndPath(CreatingSpace.MODID, recipeName);
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.rae.creatingspace.content.datagen.recipe;

import com.rae.creatingspace.content.datagen.CSRecipeProvider;
import com.rae.creatingspace.init.ingameobject.ItemInit;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.AllTags;
import com.simibubi.create.content.processing.recipe.ProcessingRecipe;
import com.simibubi.create.content.processing.recipe.ProcessingRecipeBuilder;
import com.simibubi.create.content.processing.recipe.ProcessingRecipeSerializer;
import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen;
import net.createmod.catnip.registry.RegisteredObjectsHelper;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.ItemLike;

import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;

import static com.rae.creatingspace.CreatingSpace.resource;

@SuppressWarnings("unused")
public class CSPressingRecipeGen extends ProcessingRecipeGen {

GeneratedRecipe

ALUMINUM_SHEET = create(resource("aluminum_sheet"), b -> b
.require(AllTags.commonItemTag("ingots/aluminum"))
.output(ItemInit.ALUMINUM_SHEET)),
NICKEL_SHEET = create(resource( "nickel_sheet"), b -> b.require(AllTags.commonItemTag("ingots/nickel"))
.output(ItemInit.NICKEL_SHEET)),
COBALT_SHEET = create(resource("cobalt_sheet"), b -> b.require(AllTags.commonItemTag("ingots/cobalt"))
.output(ItemInit.COBALT_SHEET)),
COPRONICKEL_SHEET = create(resource("copronickel_sheet"), b -> b
.require(AllTags.commonItemTag("ingots/copronickel"))
.output(resource("copronickel_sheet"))),
REINFORCED_COPPER_SHEET = create(resource("reinforced_copper_sheet"), b -> b
.require(AllTags.commonItemTag("ingots/reinforced_copper"))
.output(resource("reinforced_copper_sheet"))),
MONEL_SHEET = create(resource("monel_sheet"), b -> b
.require(AllTags.commonItemTag("ingots/monel"))
.output(resource("monel_sheet"))),
INCONEL_SHEET = create(resource("inconel_sheet"), b -> b
.require(AllTags.commonItemTag("ingots/inconel"))
.output(resource("inconel_sheet"))),
HASTELLOY_SHEET = create(resource("hastelloy_sheet"), b -> b
.require(AllTags.commonItemTag("ingots/hastelloy"))
.output(resource("hastelloy_sheet")));

public CSPressingRecipeGen(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
super(output, registries);
}

@Override
protected AllRecipeTypes getRecipeType() {
return AllRecipeTypes.PRESSING;
}
}
Loading