diff --git a/src/main/java/org/betterx/bclib/api/v2/advancement/AdvancementBuilderElements.java b/src/main/java/org/betterx/bclib/api/v2/advancement/AdvancementBuilderElements.java index e692ad77..dfb9f8ef 100644 --- a/src/main/java/org/betterx/bclib/api/v2/advancement/AdvancementBuilderElements.java +++ b/src/main/java/org/betterx/bclib/api/v2/advancement/AdvancementBuilderElements.java @@ -1,11 +1,12 @@ package org.betterx.bclib.api.v2.advancement; +import net.minecraft.advancements.AdvancementType; import net.minecraft.advancements.DisplayInfo; -import net.minecraft.advancements.FrameType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import java.util.Optional; import org.jetbrains.annotations.Nullable; class Display { @@ -13,7 +14,7 @@ class Display { Component title; net.minecraft.network.chat.Component description; @Nullable ResourceLocation background; - FrameType frame; + AdvancementType frame; boolean showToast; boolean announceChat; boolean hidden; @@ -25,7 +26,7 @@ class Display { this.icon = null; this.title = null; this.description = null; - frame = FrameType.TASK; + frame = AdvancementType.TASK; background = null; showToast = true; announceChat = true; @@ -36,7 +37,7 @@ class Display { DisplayInfo build() { return new DisplayInfo( icon, title, description, - background, frame, showToast, announceChat, hidden + Optional.of(background), frame, showToast, announceChat, hidden ); } } diff --git a/src/main/java/org/betterx/bclib/api/v3/datagen/AdvancementDataProvider.java b/src/main/java/org/betterx/bclib/api/v3/datagen/AdvancementDataProvider.java index c6853af7..827df9f1 100644 --- a/src/main/java/org/betterx/bclib/api/v3/datagen/AdvancementDataProvider.java +++ b/src/main/java/org/betterx/bclib/api/v3/datagen/AdvancementDataProvider.java @@ -3,6 +3,7 @@ package org.betterx.bclib.api.v3.datagen; import org.betterx.bclib.api.v2.advancement.AdvancementManager; import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementHolder; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricAdvancementProvider; @@ -21,7 +22,7 @@ public abstract class AdvancementDataProvider extends FabricAdvancementProvider protected abstract void bootstrap(); @Override - public void generateAdvancement(Consumer consumer) { + public void generateAdvancement(Consumer consumer) { bootstrap(); AdvancementManager.registerAllDataGen(modIDs, consumer); } diff --git a/src/main/java/org/betterx/bclib/api/v3/datagen/DatapackRecipeBuilder.java b/src/main/java/org/betterx/bclib/api/v3/datagen/DatapackRecipeBuilder.java index d162d665..4750c0a8 100644 --- a/src/main/java/org/betterx/bclib/api/v3/datagen/DatapackRecipeBuilder.java +++ b/src/main/java/org/betterx/bclib/api/v3/datagen/DatapackRecipeBuilder.java @@ -1,6 +1,6 @@ package org.betterx.bclib.api.v3.datagen; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import java.util.function.Consumer; @@ -11,5 +11,5 @@ public interface DatapackRecipeBuilder { default String getNamespace() { return this.getId().getNamespace(); } - void build(Consumer cc); + void build(RecipeOutput cc); } diff --git a/src/main/java/org/betterx/bclib/api/v3/datagen/RecipeDataProvider.java b/src/main/java/org/betterx/bclib/api/v3/datagen/RecipeDataProvider.java index d952dd1a..4399180e 100644 --- a/src/main/java/org/betterx/bclib/api/v3/datagen/RecipeDataProvider.java +++ b/src/main/java/org/betterx/bclib/api/v3/datagen/RecipeDataProvider.java @@ -2,7 +2,7 @@ package org.betterx.bclib.api.v3.datagen; import org.betterx.bclib.BCLib; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; @@ -25,7 +25,7 @@ public class RecipeDataProvider extends FabricRecipeProvider { } @Override - public void buildRecipes(Consumer exporter) { + public void buildRecipes(RecipeOutput exporter) { if (RECIPES == null) return; for (var r : RECIPES) { diff --git a/src/main/java/org/betterx/bclib/interfaces/AnvilScreenHandlerExtended.java b/src/main/java/org/betterx/bclib/interfaces/AnvilScreenHandlerExtended.java index e00a2a32..5ccf02ab 100644 --- a/src/main/java/org/betterx/bclib/interfaces/AnvilScreenHandlerExtended.java +++ b/src/main/java/org/betterx/bclib/interfaces/AnvilScreenHandlerExtended.java @@ -3,19 +3,21 @@ package org.betterx.bclib.interfaces; import org.betterx.bclib.recipes.AnvilRecipe; +import net.minecraft.world.item.crafting.RecipeHolder; + import java.util.List; public interface AnvilScreenHandlerExtended { - void bcl_updateCurrentRecipe(AnvilRecipe recipe); + void bcl_updateCurrentRecipe(RecipeHolder recipe); - AnvilRecipe bcl_getCurrentRecipe(); + RecipeHolder bcl_getCurrentRecipe(); - List bcl_getRecipes(); + List> bcl_getRecipes(); default void be_nextRecipe() { - List recipes = bcl_getRecipes(); + List> recipes = bcl_getRecipes(); if (recipes.size() < 2) return; - AnvilRecipe current = bcl_getCurrentRecipe(); + RecipeHolder current = bcl_getCurrentRecipe(); int i = recipes.indexOf(current) + 1; if (i >= recipes.size()) { i = 0; @@ -24,9 +26,9 @@ public interface AnvilScreenHandlerExtended { } default void be_previousRecipe() { - List recipes = bcl_getRecipes(); + List> recipes = bcl_getRecipes(); if (recipes.size() < 2) return; - AnvilRecipe current = bcl_getCurrentRecipe(); + RecipeHolder current = bcl_getCurrentRecipe(); int i = recipes.indexOf(current) - 1; if (i <= 0) { i = recipes.size() - 1; diff --git a/src/main/java/org/betterx/bclib/mixin/common/AnvilMenuMixin.java b/src/main/java/org/betterx/bclib/mixin/common/AnvilMenuMixin.java index d7ef0c97..9337ba77 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/AnvilMenuMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/AnvilMenuMixin.java @@ -11,15 +11,16 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.*; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.state.BlockState; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -32,16 +33,15 @@ import org.jetbrains.annotations.Nullable; @Mixin(AnvilMenu.class) public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilScreenHandlerExtended { - private List bcl_recipes = Collections.emptyList(); - private AnvilRecipe bcl_currentRecipe; - private DataSlot anvilLevel; + @Unique + private List> bcl_recipes = Collections.emptyList(); + @Unique + private RecipeHolder bcl_currentRecipe; - @Shadow - private int repairItemCountCost; - @Final - @Shadow - private DataSlot cost; + @Unique + private DataSlot bcl_anvilLevel; + public AnvilMenuMixin( @Nullable MenuType menuType, @@ -54,15 +54,15 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc @Inject(method = "(ILnet/minecraft/world/entity/player/Inventory;Lnet/minecraft/world/inventory/ContainerLevelAccess;)V", at = @At("TAIL")) public void be_initAnvilLevel(int syncId, Inventory inventory, ContainerLevelAccess context, CallbackInfo info) { - this.anvilLevel = addDataSlot(DataSlot.standalone()); + this.bcl_anvilLevel = addDataSlot(DataSlot.standalone()); if (context != ContainerLevelAccess.NULL) { int level = context.evaluate((world, blockPos) -> { Block anvilBlock = world.getBlockState(blockPos).getBlock(); return LeveledAnvilBlock.getAnvilCraftingLevel(anvilBlock); }, 0); - anvilLevel.set(level); + bcl_anvilLevel.set(level); } else { - anvilLevel.set(0); + bcl_anvilLevel.set(0); } } @@ -72,7 +72,7 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc @Inject(method = "mayPickup", at = @At("HEAD"), cancellable = true) protected void bcl_canTakeOutput(Player player, boolean present, CallbackInfoReturnable info) { if (bcl_currentRecipe != null) { - info.setReturnValue(bcl_currentRecipe.checkHammerDurability(inputSlots, player)); + info.setReturnValue(bcl_currentRecipe.value().checkHammerDurability(inputSlots, player)); } } @@ -94,8 +94,8 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc if (bcl_currentRecipe != null) { final int ingredientSlot = AnvilRecipe.getIngredientSlot(inputSlots); - inputSlots.getItem(ingredientSlot).shrink(bcl_currentRecipe.getInputCount()); - stack = bcl_currentRecipe.craft(inputSlots, player); + inputSlots.getItem(ingredientSlot).shrink(bcl_currentRecipe.value().getInputCount()); + stack = bcl_currentRecipe.value().craft(inputSlots, player); slotsChanged(inputSlots); access.execute((level, blockPos) -> { final BlockState anvilState = level.getBlockState(blockPos); @@ -119,12 +119,12 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc public void bcl_updateOutput(CallbackInfo info) { RecipeManager recipeManager = this.player.level().getRecipeManager(); bcl_recipes = recipeManager.getRecipesFor(AnvilRecipe.TYPE, inputSlots, player.level()); - if (bcl_recipes.size() > 0) { - int anvilLevel = this.anvilLevel.get(); + if (!bcl_recipes.isEmpty()) { + int anvilLevel = this.bcl_anvilLevel.get(); bcl_recipes = bcl_recipes.stream() - .filter(recipe -> anvilLevel >= recipe.getAnvilLevel()) + .filter(recipe -> anvilLevel >= recipe.value().getAnvilLevel()) .collect(Collectors.toList()); - if (bcl_recipes.size() > 0) { + if (!bcl_recipes.isEmpty()) { if (bcl_currentRecipe == null || !bcl_recipes.contains(bcl_currentRecipe)) { bcl_currentRecipe = bcl_recipes.get(0); } @@ -156,25 +156,26 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc return super.clickMenuButton(player, id); } + @Unique private void bcl_updateResult() { if (bcl_currentRecipe == null) return; - resultSlots.setItem(0, bcl_currentRecipe.assemble(inputSlots, this.player.level().registryAccess())); + resultSlots.setItem(0, bcl_currentRecipe.value().assemble(inputSlots, this.player.level().registryAccess())); broadcastChanges(); } @Override - public void bcl_updateCurrentRecipe(AnvilRecipe recipe) { + public void bcl_updateCurrentRecipe(RecipeHolder recipe) { this.bcl_currentRecipe = recipe; bcl_updateResult(); } @Override - public AnvilRecipe bcl_getCurrentRecipe() { + public RecipeHolder bcl_getCurrentRecipe() { return bcl_currentRecipe; } @Override - public List bcl_getRecipes() { + public List> bcl_getRecipes() { return bcl_recipes; } } diff --git a/src/main/java/org/betterx/bclib/recipes/AbstractBaseRecipeBuilder.java b/src/main/java/org/betterx/bclib/recipes/AbstractBaseRecipeBuilder.java index 173ae4da..600c62af 100644 --- a/src/main/java/org/betterx/bclib/recipes/AbstractBaseRecipeBuilder.java +++ b/src/main/java/org/betterx/bclib/recipes/AbstractBaseRecipeBuilder.java @@ -5,11 +5,11 @@ import org.betterx.bclib.api.v3.datagen.DatapackRecipeBuilder; import org.betterx.bclib.api.v3.datagen.RecipeDataProvider; import org.betterx.bclib.util.RecipeHelper; -import net.minecraft.advancements.CriterionTriggerInstance; +import net.minecraft.advancements.Criterion; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.RecipeProvider; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; @@ -21,7 +21,6 @@ import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import java.util.Arrays; -import java.util.function.Consumer; import java.util.stream.Collectors; public abstract class AbstractBaseRecipeBuilder implements DatapackRecipeBuilder { @@ -132,7 +131,7 @@ public abstract class AbstractBaseRecipeBuilder criterion); public final T build() { @@ -158,10 +157,10 @@ public abstract class AbstractBaseRecipeBuilder cc); + protected abstract void buildRecipe(RecipeOutput cc); @Override - public final void build(Consumer cc) { + public final void build(RecipeOutput cc) { if (!checkRecipe()) return; buildRecipe(cc); } diff --git a/src/main/java/org/betterx/bclib/recipes/AbstractDoubleInputRecipeBuilder.java b/src/main/java/org/betterx/bclib/recipes/AbstractDoubleInputRecipeBuilder.java index a3a56c1e..39d28f81 100644 --- a/src/main/java/org/betterx/bclib/recipes/AbstractDoubleInputRecipeBuilder.java +++ b/src/main/java/org/betterx/bclib/recipes/AbstractDoubleInputRecipeBuilder.java @@ -1,7 +1,6 @@ package org.betterx.bclib.recipes; import org.betterx.bclib.BCLib; -import org.betterx.bclib.util.ItemUtil; import org.betterx.bclib.util.RecipeHelper; import net.minecraft.resources.ResourceLocation; @@ -12,9 +11,6 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.level.ItemLike; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - public abstract class AbstractDoubleInputRecipeBuilder> extends AbstractSingleInputRecipeBuilder { protected Ingredient secondaryInput; @@ -62,18 +58,4 @@ public abstract class AbstractDoubleInputRecipeBuilder> extends AbstractSimpleRecipeBuilder { @@ -46,73 +42,49 @@ public abstract class AbstractSingleInputRecipeBuilder trigger) { this.advancement.addCriterion(name, trigger); return (T) this; } @Override - protected void buildRecipe(Consumer cc) { + protected void buildRecipe(RecipeOutput cc) { setupAdvancementForResult(); - cc.accept(new AbstractSingleInputRecipeBuilder.Result()); + final AdvancementHolder advancementHolder = advancement.build(getId()); + final R recipe = createRecipe(getId()); + cc.accept(getId(), recipe, advancementHolder); } + protected abstract R createRecipe(ResourceLocation id); + protected abstract RecipeSerializer getSerializer(); - protected void serializeRecipeData(JsonObject root) { - root.add("input", ItemUtil.toJsonIngredientWithNBT(primaryInput)); - - if (group != null && !group.isEmpty()) { - root.addProperty("group", group); - } - - root.add("result", ItemUtil.toJsonRecipeWithNBT(output)); - } - protected void setupAdvancementForResult() { - advancement.parent(RecipeBuilder.ROOT_RECIPE_ADVANCEMENT) - .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(id)) - .rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(id)) - .requirements(RequirementsStrategy.OR); + advancement + .parent(RecipeBuilder.ROOT_RECIPE_ADVANCEMENT)//automatically at root level + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(id)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(id)) + .requirements(AdvancementRequirements.Strategy.OR); } protected ResourceLocation createAdvancementId() { return id.withPrefix("recipes/" + category.getFolderName() + "/"); } - public class Result implements FinishedRecipe { - private final ResourceLocation advancementId; + public class Result implements RecipeOutput { + @Override + public void accept( + ResourceLocation resourceLocation, + Recipe recipe, + @Nullable AdvancementHolder advancementHolder + ) { - protected Result() { - this.advancementId = createAdvancementId(); } @Override - public ResourceLocation getId() { - return AbstractSingleInputRecipeBuilder.this.getId(); - } - - @Override - public RecipeSerializer getType() { - return getSerializer(); - } - - @Nullable - @Override - public JsonObject serializeAdvancement() { - return advancement.serializeToJson(); - } - - @Nullable - @Override - public ResourceLocation getAdvancementId() { - return advancementId; - } - - @Override - public void serializeRecipeData(JsonObject root) { - AbstractSingleInputRecipeBuilder.this.serializeRecipeData(root); + public Advancement.Builder advancement() { + return null; } } } diff --git a/src/main/java/org/betterx/bclib/recipes/AbstractUnlockableRecipeBuilder.java b/src/main/java/org/betterx/bclib/recipes/AbstractUnlockableRecipeBuilder.java index 73e069d3..2284327c 100644 --- a/src/main/java/org/betterx/bclib/recipes/AbstractUnlockableRecipeBuilder.java +++ b/src/main/java/org/betterx/bclib/recipes/AbstractUnlockableRecipeBuilder.java @@ -1,6 +1,6 @@ package org.betterx.bclib.recipes; -import net.minecraft.advancements.CriterionTriggerInstance; +import net.minecraft.advancements.Criterion; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; @@ -15,7 +15,7 @@ public abstract class AbstractUnlockableRecipeBuilder unlocks = new HashMap<>(); + protected final Map> unlocks = new HashMap<>(); @Override public T unlockedBy(ItemLike item) { @@ -28,8 +28,8 @@ public abstract class AbstractUnlockableRecipeBuilder criterion) { + this.unlocks.put(name, criterion); return (T) this; } } diff --git a/src/main/java/org/betterx/bclib/recipes/CookingRecipeBuilder.java b/src/main/java/org/betterx/bclib/recipes/CookingRecipeBuilder.java index 8ef7c97e..53cc36d6 100644 --- a/src/main/java/org/betterx/bclib/recipes/CookingRecipeBuilder.java +++ b/src/main/java/org/betterx/bclib/recipes/CookingRecipeBuilder.java @@ -2,7 +2,7 @@ package org.betterx.bclib.recipes; import org.betterx.bclib.BCLib; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; @@ -139,7 +139,7 @@ public class CookingRecipeBuilder extends AbstractUnlockableRecipeBuilder cc, SimpleCookingRecipeBuilder builder, String postfix) { + private void buildRecipe(RecipeOutput cc, SimpleCookingRecipeBuilder builder, String postfix) { ResourceLocation loc = new ResourceLocation(id.getNamespace(), id.getPath() + "_" + postfix); for (var item : unlocks.entrySet()) { builder.unlockedBy(item.getKey(), item.getValue()); @@ -148,7 +148,7 @@ public class CookingRecipeBuilder extends AbstractUnlockableRecipeBuilder cc) { + protected void buildRecipe(RecipeOutput cc) { if (smelting) { buildRecipe( cc, diff --git a/src/main/java/org/betterx/bclib/recipes/CraftingRecipeBuilder.java b/src/main/java/org/betterx/bclib/recipes/CraftingRecipeBuilder.java index ba1e0437..f02935d6 100644 --- a/src/main/java/org/betterx/bclib/recipes/CraftingRecipeBuilder.java +++ b/src/main/java/org/betterx/bclib/recipes/CraftingRecipeBuilder.java @@ -2,8 +2,8 @@ package org.betterx.bclib.recipes; import org.betterx.bclib.BCLib; -import net.minecraft.advancements.CriterionTriggerInstance; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.advancements.Criterion; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.resources.ResourceLocation; @@ -16,7 +16,6 @@ import net.minecraft.world.level.ItemLike; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import java.util.function.Consumer; public class CraftingRecipeBuilder extends AbstractBaseRecipeBuilder { private String[] shape; @@ -35,7 +34,7 @@ public class CraftingRecipeBuilder extends AbstractBaseRecipeBuilder unlocks = new HashMap<>(); + protected final Map> unlocks = new HashMap<>(); protected final Map materials = new HashMap<>(); @Override @@ -112,10 +111,10 @@ public class CraftingRecipeBuilder extends AbstractBaseRecipeBuilder criterion) { + this.unlocks.put(name, criterion); return this; } @@ -132,7 +131,7 @@ public class CraftingRecipeBuilder extends AbstractBaseRecipeBuilder cc) { + protected void buildRecipe(RecipeOutput cc) { if (shape != null) buildShaped(cc); else buildShapeless(cc); } @@ -145,11 +144,11 @@ public class CraftingRecipeBuilder extends AbstractBaseRecipeBuilder cc) { + protected void buildShapeless(RecipeOutput cc) { final ShapelessRecipeBuilder builder = ShapelessRecipeBuilder.shapeless( category, output.getItem(), output.getCount() ); - for (Map.Entry item : unlocks.entrySet()) { + for (Map.Entry> item : unlocks.entrySet()) { builder.unlockedBy(item.getKey(), item.getValue()); } for (Map.Entry mat : materials.entrySet()) { @@ -201,11 +200,11 @@ public class CraftingRecipeBuilder extends AbstractBaseRecipeBuilder cc) { + protected void buildShaped(RecipeOutput cc) { final ShapedRecipeBuilder builder = ShapedRecipeBuilder.shaped( category, output.getItem(), output.getCount() ); - for (Map.Entry item : unlocks.entrySet()) { + for (Map.Entry> item : unlocks.entrySet()) { builder.unlockedBy(item.getKey(), item.getValue()); } for (Map.Entry mat : materials.entrySet()) { diff --git a/src/main/java/org/betterx/bclib/recipes/SmithingRecipeBuilder.java b/src/main/java/org/betterx/bclib/recipes/SmithingRecipeBuilder.java index 11f0ebd3..270d5e18 100644 --- a/src/main/java/org/betterx/bclib/recipes/SmithingRecipeBuilder.java +++ b/src/main/java/org/betterx/bclib/recipes/SmithingRecipeBuilder.java @@ -2,7 +2,7 @@ package org.betterx.bclib.recipes; import org.betterx.bclib.BCLib; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.SmithingTransformRecipeBuilder; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; @@ -85,7 +85,7 @@ public class SmithingRecipeBuilder extends AbstractUnlockableRecipeBuilder cc) { + protected void buildRecipe(RecipeOutput cc) { final SmithingTransformRecipeBuilder builder = SmithingTransformRecipeBuilder.smithing( Ingredient.of(template), primaryInput, diff --git a/src/main/java/org/betterx/bclib/recipes/StonecutterRecipeBuilder.java b/src/main/java/org/betterx/bclib/recipes/StonecutterRecipeBuilder.java index 0fc23d71..701b275c 100644 --- a/src/main/java/org/betterx/bclib/recipes/StonecutterRecipeBuilder.java +++ b/src/main/java/org/betterx/bclib/recipes/StonecutterRecipeBuilder.java @@ -1,13 +1,14 @@ package org.betterx.bclib.recipes; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.advancements.Criterion; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.SingleItemRecipeBuilder; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.level.ItemLike; -import java.util.function.Consumer; +import java.util.Map; public class StonecutterRecipeBuilder extends AbstractUnlockableRecipeBuilder { @@ -53,11 +54,11 @@ public class StonecutterRecipeBuilder extends AbstractUnlockableRecipeBuilder cc) { + protected void buildRecipe(RecipeOutput cc) { final SingleItemRecipeBuilder builder = SingleItemRecipeBuilder.stonecutting( primaryInput, category, output.getItem(), output.getCount() ); - for (var item : unlocks.entrySet()) { + for (Map.Entry> item : unlocks.entrySet()) { builder.unlockedBy(item.getKey(), item.getValue()); } builder.group(group);