diff --git a/Common/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json b/Common/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json new file mode 100644 index 0000000000..7842ada061 --- /dev/null +++ b/Common/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json @@ -0,0 +1,41 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "hexcasting:pans" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "hexcasting:amethyst_dust" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "hexcasting:pride_colorizer_pansexual" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "hexcasting:pride_colorizer_pansexual" + ] + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json b/Common/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json new file mode 100644 index 0000000000..5594b90072 --- /dev/null +++ b/Common/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json @@ -0,0 +1,38 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:tag_empty", + "tag": "hexcasting:pans" + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "hexcasting:amethyst_dust" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "hexcasting:pride_colorizer_pansexual_fallback" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "hexcasting:pride_colorizer_pansexual_fallback" + ] + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json b/Common/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json new file mode 100644 index 0000000000..731bdd561e --- /dev/null +++ b/Common/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json @@ -0,0 +1,30 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "hexcasting:pans" + } + } + ], + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "C": { + "tag": "hexcasting:pans" + }, + "D": { + "item": "hexcasting:amethyst_dust" + } + }, + "pattern": [ + " D ", + "DCD", + " D " + ], + "result": { + "count": 1, + "id": "hexcasting:pride_colorizer_pansexual" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json b/Common/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json new file mode 100644 index 0000000000..910fba5bb3 --- /dev/null +++ b/Common/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json @@ -0,0 +1,27 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:tag_empty", + "tag": "hexcasting:pans" + } + ], + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "C": { + "item": "minecraft:carrot" + }, + "D": { + "item": "hexcasting:amethyst_dust" + } + }, + "pattern": [ + " D ", + "DCD", + " D " + ], + "result": { + "count": 1, + "id": "hexcasting:pride_colorizer_pansexual" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/data/hexcasting/tags/item/pans.json b/Common/src/generated/resources/data/hexcasting/tags/item/pans.json new file mode 100644 index 0000000000..7344d4b459 --- /dev/null +++ b/Common/src/generated/resources/data/hexcasting/tags/item/pans.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "farmersdelight:skillet", + "required": false + } + ] +} \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/api/mod/HexTags.java b/Common/src/main/java/at/petrak/hexcasting/api/mod/HexTags.java index 8230034ac1..5525469669 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/mod/HexTags.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/mod/HexTags.java @@ -28,6 +28,9 @@ public static final class Items { public static final TagKey AMETHYST_BLOCKS = create("amethyst_blocks"); public static final TagKey QUENCHED_ALLAY_BLOCKS = create("quenched_allay_blocks"); + public static final TagKey PANS = create("pans"); + + public static TagKey create(String name) { return create(modLoc(name)); } diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/IXplatConditionsBuilder.java b/Common/src/main/java/at/petrak/hexcasting/datagen/IXplatConditionsBuilder.java index d283711fab..2ba88a91ff 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/IXplatConditionsBuilder.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/IXplatConditionsBuilder.java @@ -1,9 +1,15 @@ package at.petrak.hexcasting.datagen; import net.minecraft.data.recipes.RecipeBuilder; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; public interface IXplatConditionsBuilder extends RecipeBuilder { IXplatConditionsBuilder whenModLoaded(String modid); IXplatConditionsBuilder whenModMissing(String modid); + + IXplatConditionsBuilder whenTagEmpty(TagKey tag); + + IXplatConditionsBuilder whenTagPopulated(TagKey tag); } diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/IXplatIngredients.java b/Common/src/main/java/at/petrak/hexcasting/datagen/IXplatIngredients.java index e378438608..6f1da466b0 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/IXplatIngredients.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/IXplatIngredients.java @@ -1,7 +1,9 @@ package at.petrak.hexcasting.datagen; import at.petrak.hexcasting.datagen.recipe.builders.FarmersDelightToolIngredient; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.Ingredient; import java.util.EnumMap; @@ -25,8 +27,6 @@ public interface IXplatIngredients { Ingredient stick(); - Ingredient whenModIngredient(Ingredient defaultIngredient, String modid, Ingredient modIngredient); - FarmersDelightToolIngredient axeStrip(); FarmersDelightToolIngredient axeDig(); diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java b/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java index 74471a67e3..4f817a0293 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java @@ -210,12 +210,7 @@ public void buildRecipes(RecipeOutput recipes) { gayRecipe(recipes, ItemPridePigment.Type.INTERSEX, Ingredient.of(Items.AZALEA)); gayRecipe(recipes, ItemPridePigment.Type.LESBIAN, Ingredient.of(Items.HONEYCOMB)); gayRecipe(recipes, ItemPridePigment.Type.NONBINARY, Ingredient.of(Items.MOSS_BLOCK)); - // TODO port: This is neither an item value nor a tag value. - /*gayRecipe(recipes, ItemPridePigment.Type.PANSEXUAL, ingredients.whenModIngredient( - Ingredient.of(Items.CARROT), - "farmersdelight", - CompatIngredientValue.of("farmersdelight:skillet") - ));*/ + gayRecipe(recipes, ItemPridePigment.Type.PANSEXUAL, HexTags.Items.PANS, Ingredient.of(Items.CARROT)); gayRecipe(recipes, ItemPridePigment.Type.PLURAL, Ingredient.of(Items.REPEATER)); gayRecipe(recipes, ItemPridePigment.Type.TRANSGENDER, Ingredient.of(Items.EGG)); @@ -613,6 +608,33 @@ private void gayRecipe(RecipeOutput recipes, ItemPridePigment.Type type, Ingredi .save(recipes); } + private void gayRecipe(RecipeOutput recipes, ItemPridePigment.Type type, TagKey mainMaterial, Ingredient fallback) { + var colorizer = HexItems.PRIDE_PIGMENTS.get(type); + var defaultLocation = BuiltInRegistries.ITEM.getKey(colorizer.get()); + + ShapedRecipeBuilder mainRecipe = ShapedRecipeBuilder.shaped(RecipeCategory.MISC, colorizer.get()) + .define('D', HexItems.AMETHYST_DUST.get()) + .define('C', mainMaterial) + .pattern(" D ") + .pattern("DCD") + .pattern(" D ") + .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST.get())); + conditions.apply(mainRecipe) + .whenTagPopulated(mainMaterial) + .save(recipes); + + ShapedRecipeBuilder fallbackRecipe = ShapedRecipeBuilder.shaped(RecipeCategory.MISC, colorizer.get()) + .define('D', HexItems.AMETHYST_DUST.get()) + .define('C', fallback) + .pattern(" D ") + .pattern("DCD") + .pattern(" D ") + .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST.get())); + conditions.apply(fallbackRecipe) + .whenTagEmpty(mainMaterial) + .save(recipes, defaultLocation.withPath(original -> original + "_fallback")); + } + private > void specialRecipe(RecipeOutput consumer, RecipeSerializer serializer, Function recipeFunc) { var name = BuiltInRegistries.RECIPE_SERIALIZER.getKey(serializer); SpecialRecipeBuilder.special(recipeFunc::apply).save(consumer, HexAPI.MOD_ID + ":dynamic" + name.getPath()); diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/builders/CompatIngredientValue.java b/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/builders/CompatIngredientValue.java deleted file mode 100644 index 3ff9575318..0000000000 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/builders/CompatIngredientValue.java +++ /dev/null @@ -1,33 +0,0 @@ -package at.petrak.hexcasting.datagen.recipe.builders; - -import com.google.gson.JsonObject; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; -import java.util.Collections; -import java.util.stream.Stream; - -public class CompatIngredientValue implements Ingredient.Value { - public final String item; - - public CompatIngredientValue(String name) { - this.item = name; - } - - public @NotNull Collection getItems() { - return Collections.emptyList(); - } - - public @NotNull JsonObject serialize() { - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("item", item); - return jsonObject; - } - - public static Ingredient of(String itemName) { - return new Ingredient(Stream.of(new CompatIngredientValue(itemName))); - } -} - diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexItemTagProvider.java b/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexItemTagProvider.java index 710c88f321..b896749e6f 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexItemTagProvider.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexItemTagProvider.java @@ -7,6 +7,7 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Item; @@ -46,6 +47,9 @@ protected void addTags(HolderLookup.Provider provider) { add(tag(HexTags.Items.SEAL_MATERIALS), Items.HONEYCOMB); + add(tag(HexTags.Items.PANS), + ResourceLocation.fromNamespaceAndPath("farmersdelight", "skillet")); + this.copy(HexTags.Blocks.EDIFIED_LOGS, HexTags.Items.EDIFIED_LOGS); this.copy(HexTags.Blocks.EDIFIED_PLANKS, HexTags.Items.EDIFIED_PLANKS); this.copy(HexTags.Blocks.IMPETI, HexTags.Items.IMPETI); @@ -75,4 +79,10 @@ void add(TagAppender appender, Item... items) { appender.add(BuiltInRegistries.ITEM.getResourceKey(item).orElseThrow()); } } + + void add(TagAppender appender, ResourceLocation... locations) { + for (ResourceLocation location : locations) { + appender.addOptional(location); + } + } } diff --git a/Fabric/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json b/Fabric/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json new file mode 100644 index 0000000000..b7b510688d --- /dev/null +++ b/Fabric/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json @@ -0,0 +1,41 @@ +{ + "fabric:load_conditions": [ + { + "condition": "fabric:tags_populated", + "registry": "minecraft:item", + "values": [ + "hexcasting:pans" + ] + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "hexcasting:amethyst_dust" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "hexcasting:pride_colorizer_pansexual" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "hexcasting:pride_colorizer_pansexual" + ] + } +} \ No newline at end of file diff --git a/Fabric/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json b/Fabric/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json new file mode 100644 index 0000000000..b468c49ba3 --- /dev/null +++ b/Fabric/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json @@ -0,0 +1,44 @@ +{ + "fabric:load_conditions": [ + { + "condition": "fabric:not", + "value": { + "condition": "fabric:tags_populated", + "registry": "minecraft:item", + "values": [ + "hexcasting:pans" + ] + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "hexcasting:amethyst_dust" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "hexcasting:pride_colorizer_pansexual_fallback" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "hexcasting:pride_colorizer_pansexual_fallback" + ] + } +} \ No newline at end of file diff --git a/Fabric/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json b/Fabric/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json new file mode 100644 index 0000000000..faf211185b --- /dev/null +++ b/Fabric/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json @@ -0,0 +1,30 @@ +{ + "fabric:load_conditions": [ + { + "condition": "fabric:tags_populated", + "registry": "minecraft:item", + "values": [ + "hexcasting:pans" + ] + } + ], + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "C": { + "tag": "hexcasting:pans" + }, + "D": { + "item": "hexcasting:amethyst_dust" + } + }, + "pattern": [ + " D ", + "DCD", + " D " + ], + "result": { + "count": 1, + "id": "hexcasting:pride_colorizer_pansexual" + } +} \ No newline at end of file diff --git a/Fabric/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json b/Fabric/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json new file mode 100644 index 0000000000..5bec8777e9 --- /dev/null +++ b/Fabric/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json @@ -0,0 +1,33 @@ +{ + "fabric:load_conditions": [ + { + "condition": "fabric:not", + "value": { + "condition": "fabric:tags_populated", + "registry": "minecraft:item", + "values": [ + "hexcasting:pans" + ] + } + } + ], + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "C": { + "item": "minecraft:carrot" + }, + "D": { + "item": "hexcasting:amethyst_dust" + } + }, + "pattern": [ + " D ", + "DCD", + " D " + ], + "result": { + "count": 1, + "id": "hexcasting:pride_colorizer_pansexual" + } +} \ No newline at end of file diff --git a/Fabric/src/generated/resources/data/hexcasting/tags/item/pans.json b/Fabric/src/generated/resources/data/hexcasting/tags/item/pans.json new file mode 100644 index 0000000000..7344d4b459 --- /dev/null +++ b/Fabric/src/generated/resources/data/hexcasting/tags/item/pans.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "farmersdelight:skillet", + "required": false + } + ] +} \ No newline at end of file diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/datagen/HexFabricConditionsBuilder.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/datagen/HexFabricConditionsBuilder.java index 2303636f13..0f893085b9 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/datagen/HexFabricConditionsBuilder.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/datagen/HexFabricConditionsBuilder.java @@ -1,6 +1,7 @@ package at.petrak.hexcasting.fabric.datagen; import at.petrak.hexcasting.datagen.IXplatConditionsBuilder; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; import net.fabricmc.fabric.api.resource.conditions.v1.ResourceCondition; import net.fabricmc.fabric.api.resource.conditions.v1.ResourceConditions; import net.fabricmc.fabric.impl.datagen.FabricDataGenHelper; @@ -10,6 +11,7 @@ import net.minecraft.data.recipes.RecipeBuilder; import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.Recipe; import org.jetbrains.annotations.NotNull; @@ -38,6 +40,18 @@ public IXplatConditionsBuilder whenModMissing(String modid) { return this; } + @Override + public IXplatConditionsBuilder whenTagEmpty(TagKey tag) { + conditions.add(ResourceConditions.not(ResourceConditions.tagsPopulated(tag))); + return this; + } + + @Override + public IXplatConditionsBuilder whenTagPopulated(TagKey tag) { + conditions.add(ResourceConditions.tagsPopulated(tag)); + return this; + } + @Override public RecipeBuilder unlockedBy(@NotNull String string, @NotNull Criterion criterionTriggerInstance) { return parent.unlockedBy(string, criterionTriggerInstance); @@ -60,15 +74,20 @@ public void save(@NotNull RecipeOutput consumer, @NotNull ResourceLocation resou RecipeOutput withConditions = new RecipeOutput() { @Override - public void accept(ResourceLocation resourceLocation, Recipe recipe, @Nullable AdvancementHolder advancementHolder) { - FabricDataGenHelper.addConditions(consumer, array); - consumer.accept(resourceLocation, recipe, advancementHolder); + public void accept(ResourceLocation identifier, Recipe recipe, @Nullable AdvancementHolder advancementEntry) { + FabricDataGenHelper.addConditions(recipe, array); + consumer.accept(identifier, recipe, advancementEntry); } @Override public Advancement.Builder advancement() { return consumer.advancement(); } + + @Override + public ResourceLocation getRecipeIdentifier(ResourceLocation recipeId) { + return consumer.getRecipeIdentifier(recipeId); + } }; parent.save(withConditions, resourceLocation); diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/datagen/HexFabricDataGenerators.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/datagen/HexFabricDataGenerators.java index 71fa27950d..6e1a59584d 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/datagen/HexFabricDataGenerators.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/datagen/HexFabricDataGenerators.java @@ -13,9 +13,11 @@ import com.google.gson.JsonObject; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; import net.minecraft.core.RegistrySetBuilder; import net.minecraft.core.registries.Registries; import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.*; @@ -36,7 +38,18 @@ public void onInitializeDataGenerator(FabricDataGenerator gen) { var xtags = IXplatAbstractions.INSTANCE.tags(); var provider = gen.getRegistries(); - pack.addProvider((FabricDataGenerator.Pack.Factory) x -> new HexplatRecipes(x, provider, INGREDIENTS, HexFabricConditionsBuilder::new)); + pack.addProvider((FabricDataGenerator.Pack.Factory) x -> { + HexplatRecipes original = new HexplatRecipes(x, provider, INGREDIENTS, HexFabricConditionsBuilder::new); + + FabricRecipeProvider wrapper = new FabricRecipeProvider(x, provider) { + @Override + public void buildRecipes(RecipeOutput exporter) { + original.buildRecipes(exporter); + } + }; + + return wrapper; + }); var btagProviderWrapper = new BlockTagProviderWrapper(); // CURSED pack.addProvider((output, lookup) -> { @@ -136,11 +149,6 @@ public Ingredient stick() { )); } - @Override - public Ingredient whenModIngredient(Ingredient defaultIngredient, String modid, Ingredient modIngredient) { - return FabricModConditionalIngredient.of(defaultIngredient, modid, modIngredient); - } - private final FarmersDelightToolIngredient AXE_INGREDIENT = () -> { JsonObject object = new JsonObject(); object.addProperty("type", "farmersdelight:tool"); diff --git a/Neoforge/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json b/Neoforge/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json new file mode 100644 index 0000000000..7842ada061 --- /dev/null +++ b/Neoforge/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual.json @@ -0,0 +1,41 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "hexcasting:pans" + } + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "hexcasting:amethyst_dust" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "hexcasting:pride_colorizer_pansexual" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "hexcasting:pride_colorizer_pansexual" + ] + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json b/Neoforge/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json new file mode 100644 index 0000000000..5594b90072 --- /dev/null +++ b/Neoforge/src/generated/resources/data/hexcasting/advancement/recipes/misc/pride_colorizer_pansexual_fallback.json @@ -0,0 +1,38 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:tag_empty", + "tag": "hexcasting:pans" + } + ], + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "hexcasting:amethyst_dust" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "hexcasting:pride_colorizer_pansexual_fallback" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "hexcasting:pride_colorizer_pansexual_fallback" + ] + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json b/Neoforge/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json new file mode 100644 index 0000000000..731bdd561e --- /dev/null +++ b/Neoforge/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual.json @@ -0,0 +1,30 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "hexcasting:pans" + } + } + ], + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "C": { + "tag": "hexcasting:pans" + }, + "D": { + "item": "hexcasting:amethyst_dust" + } + }, + "pattern": [ + " D ", + "DCD", + " D " + ], + "result": { + "count": 1, + "id": "hexcasting:pride_colorizer_pansexual" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json b/Neoforge/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json new file mode 100644 index 0000000000..910fba5bb3 --- /dev/null +++ b/Neoforge/src/generated/resources/data/hexcasting/recipe/pride_colorizer_pansexual_fallback.json @@ -0,0 +1,27 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:tag_empty", + "tag": "hexcasting:pans" + } + ], + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "C": { + "item": "minecraft:carrot" + }, + "D": { + "item": "hexcasting:amethyst_dust" + } + }, + "pattern": [ + " D ", + "DCD", + " D " + ], + "result": { + "count": 1, + "id": "hexcasting:pride_colorizer_pansexual" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/data/hexcasting/tags/item/pans.json b/Neoforge/src/generated/resources/data/hexcasting/tags/item/pans.json new file mode 100644 index 0000000000..7344d4b459 --- /dev/null +++ b/Neoforge/src/generated/resources/data/hexcasting/tags/item/pans.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "farmersdelight:skillet", + "required": false + } + ] +} \ No newline at end of file diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/ForgeHexConditionsBuilder.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/ForgeHexConditionsBuilder.java index ac7cac67af..3419e06c62 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/ForgeHexConditionsBuilder.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/ForgeHexConditionsBuilder.java @@ -5,6 +5,7 @@ import net.minecraft.data.recipes.RecipeBuilder; import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.neoforged.neoforge.common.conditions.ICondition; import net.neoforged.neoforge.common.conditions.IConditionBuilder; @@ -34,6 +35,18 @@ public IXplatConditionsBuilder whenModMissing(String modid) { return this; } + @Override + public IXplatConditionsBuilder whenTagEmpty(TagKey tag) { + conditions.add(tagEmpty(tag)); + return this; + } + + @Override + public IXplatConditionsBuilder whenTagPopulated(TagKey tag) { + conditions.add(not(tagEmpty(tag))); + return this; + } + @Override public @NotNull RecipeBuilder unlockedBy(@NotNull String string, @NotNull Criterion criterion) { diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/ForgeHexDataGenerators.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/ForgeHexDataGenerators.java index d50c7aa784..dafccd451f 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/ForgeHexDataGenerators.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/ForgeHexDataGenerators.java @@ -21,9 +21,12 @@ import net.minecraft.data.DataGenerator; import net.minecraft.data.advancements.AdvancementProvider; import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; @@ -161,11 +164,6 @@ public Ingredient stick() { )); } - @Override - public Ingredient whenModIngredient(Ingredient defaultIngredient, String modid, Ingredient modIngredient) { - return ForgeModConditionalIngredient.of(defaultIngredient, modid, modIngredient).toVanilla(); - } - // https://github.com/vectorwing/FarmersDelight/blob/1.18.2/src/generated/resources/data/farmersdelight/recipes/cutting/amethyst_block.json @Override public FarmersDelightToolIngredient axeStrip() {