|
10 | 10 | import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; |
11 | 11 | import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; |
12 | 12 | import com.gregtechceu.gtceu.api.data.tag.TagPrefix; |
| 13 | +import com.gregtechceu.gtceu.api.item.tool.GTToolType; |
13 | 14 | import com.gregtechceu.gtceu.api.item.tool.ToolHelper; |
14 | 15 | import com.gregtechceu.gtceu.data.recipe.builder.*; |
15 | 16 |
|
16 | 17 | import net.minecraft.data.recipes.FinishedRecipe; |
| 18 | +import net.minecraft.data.recipes.RecipeCategory; |
| 19 | +import net.minecraft.data.recipes.SmithingTransformRecipeBuilder; |
17 | 20 | import net.minecraft.resources.ResourceLocation; |
18 | 21 | import net.minecraft.tags.TagKey; |
19 | 22 | import net.minecraft.world.item.Item; |
|
22 | 25 | import net.minecraft.world.level.ItemLike; |
23 | 26 |
|
24 | 27 | import com.tterrag.registrate.util.entry.ItemProviderEntry; |
25 | | -import it.unimi.dsi.fastutil.chars.*; |
| 28 | +import it.unimi.dsi.fastutil.chars.Char2IntOpenHashMap; |
| 29 | +import it.unimi.dsi.fastutil.chars.CharArraySet; |
| 30 | +import it.unimi.dsi.fastutil.chars.CharSet; |
26 | 31 | import it.unimi.dsi.fastutil.objects.Reference2LongOpenHashMap; |
27 | 32 | import org.jetbrains.annotations.NotNull; |
28 | 33 |
|
29 | 34 | import java.util.function.Consumer; |
30 | 35 |
|
| 36 | +import static com.tterrag.registrate.providers.RegistrateRecipeProvider.has; |
| 37 | + |
31 | 38 | public class VanillaRecipeHelper { |
32 | 39 |
|
33 | 40 | public static void addSmeltingRecipe(Consumer<FinishedRecipe> provider, @NotNull String regName, TagKey<Item> input, |
@@ -618,6 +625,38 @@ public static void addShapelessRecipe(Consumer<FinishedRecipe> provider, @NotNul |
618 | 625 | builder.save(provider); |
619 | 626 | } |
620 | 627 |
|
| 628 | + public static void addSmithingTransformRecipe(Consumer<FinishedRecipe> provider, @NotNull ResourceLocation regName, |
| 629 | + @NotNull Item result, @NotNull ItemLike baseInput, |
| 630 | + @NotNull ItemLike template, @NotNull ItemLike addition, |
| 631 | + @NotNull RecipeCategory category) { |
| 632 | + SmithingTransformRecipeBuilder |
| 633 | + .smithing(Ingredient.of(template), Ingredient.of(baseInput), Ingredient.of(addition), category, result) |
| 634 | + .unlocks(String.format("has_%s", baseInput), has(baseInput)) |
| 635 | + .save(provider, regName); |
| 636 | + } |
| 637 | + |
| 638 | + public static void addSmithingTransformRecipe(Consumer<FinishedRecipe> provider, @NotNull String regName, |
| 639 | + @NotNull Item result, @NotNull ItemLike baseInput, |
| 640 | + @NotNull ItemLike template, @NotNull ItemLike addition) { |
| 641 | + addSmithingTransformRecipe(provider, GTCEu.id(regName), result, baseInput, template, addition, |
| 642 | + RecipeCategory.MISC); |
| 643 | + } |
| 644 | + |
| 645 | + public static void addToolUpgradingRecipe(@NotNull Consumer<FinishedRecipe> provider, @NotNull GTToolType tool, |
| 646 | + @NotNull Material upgradeMaterial, @NotNull Material baseMaterial, |
| 647 | + @NotNull ItemLike template, @NotNull ItemLike addition) { |
| 648 | + ItemStack upgradeToolStack = ToolHelper.get(tool, upgradeMaterial); |
| 649 | + ItemStack baseToolStack = ToolHelper.get(tool, baseMaterial); |
| 650 | + |
| 651 | + if (upgradeToolStack.isEmpty() || baseToolStack.isEmpty()) return; |
| 652 | + |
| 653 | + VanillaRecipeHelper.addSmithingTransformRecipe(provider, |
| 654 | + String.format("%s_%s_smithing_transform_from_%s", upgradeMaterial.getName(), tool.name, |
| 655 | + baseMaterial.getName()), |
| 656 | + upgradeToolStack.getItem(), baseToolStack.getItem(), |
| 657 | + template, addition); |
| 658 | + } |
| 659 | + |
621 | 660 | /** |
622 | 661 | * @param material the material to check |
623 | 662 | * @return if the material is a wood |
|
0 commit comments