From e45eade6688414890fdd0e26251e18bcb95854a7 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 28 Jul 2022 18:30:53 +0200 Subject: [PATCH] [Change] Moved Alloying Recipes to BCLib --- build.gradle | 2 +- .../betterend/blocks/EndStoneSmelter.java | 3 +- .../betterend/blocks/basis/EndAnvilBlock.java | 4 - .../entities/EndStoneSmelterBlockEntity.java | 2 +- .../client/gui/EndStoneSmelterMenu.java | 2 +- .../complexmaterials/MetalMaterial.java | 12 +- .../integration/emi/EMIAlloyingRecipe.java | 74 ----- .../betterend/integration/emi/EMIPlugin.java | 32 +- .../integration/jei/JEIAlloyingCategory.java | 2 +- .../jei/JEIAlloyingFuelCategory.java | 2 +- .../betterend/integration/jei/JEIPlugin.java | 2 +- .../integration/rei/REIAlloyingDisplay.java | 2 +- .../betterend/integration/rei/REIPlugin.java | 2 +- .../betterend/recipe/AlloyingRecipes.java | 80 ++--- .../recipe/builders/AlloyingRecipe.java | 301 ------------------ .../builders/AlloyingRecipeBuilder.java | 14 + .../assets/betterend/lang/de_de.json | 2 - .../assets/betterend/lang/en_us.json | 2 - src/main/resources/fabric.mod.json | 3 +- 19 files changed, 72 insertions(+), 471 deletions(-) delete mode 100644 src/main/java/org/betterx/betterend/integration/emi/EMIAlloyingRecipe.java delete mode 100644 src/main/java/org/betterx/betterend/recipe/builders/AlloyingRecipe.java create mode 100644 src/main/java/org/betterx/betterend/recipe/builders/AlloyingRecipeBuilder.java diff --git a/build.gradle b/build.gradle index 26f6b072..5d3486c3 100644 --- a/build.gradle +++ b/build.gradle @@ -66,7 +66,7 @@ dependencies { //needed for trinkets, otherwise BetterEnd would require users to install trinkets modApi "dev.onyxstudios.cardinal-components-api:cardinal-components-base:${project.cca_version}" modCompileOnly "dev.emi:trinkets:${project.trinkets_version}" - modCompileOnly "dev.emi:emi:${emi_version}" + modImplementation "dev.emi:emi:${emi_version}" //modRuntimeOnly "dev.emi:emi:${emi_version}" } diff --git a/src/main/java/org/betterx/betterend/blocks/EndStoneSmelter.java b/src/main/java/org/betterx/betterend/blocks/EndStoneSmelter.java index e92ecd56..5829e259 100644 --- a/src/main/java/org/betterx/betterend/blocks/EndStoneSmelter.java +++ b/src/main/java/org/betterx/betterend/blocks/EndStoneSmelter.java @@ -1,6 +1,7 @@ package org.betterx.betterend.blocks; import org.betterx.bclib.blocks.BaseBlockWithEntity; +import org.betterx.bclib.interfaces.AlloyingRecipeWorkstation; import org.betterx.betterend.blocks.entities.EndStoneSmelterBlockEntity; import org.betterx.betterend.registry.EndBlockEntities; @@ -41,7 +42,7 @@ import com.google.common.collect.Lists; import java.util.List; import org.jetbrains.annotations.Nullable; -public class EndStoneSmelter extends BaseBlockWithEntity { +public class EndStoneSmelter extends BaseBlockWithEntity implements AlloyingRecipeWorkstation { public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; public static final BooleanProperty LIT = BlockStateProperties.LIT; public static final String ID = "end_stone_smelter"; diff --git a/src/main/java/org/betterx/betterend/blocks/basis/EndAnvilBlock.java b/src/main/java/org/betterx/betterend/blocks/basis/EndAnvilBlock.java index 9038eacc..23626c14 100644 --- a/src/main/java/org/betterx/betterend/blocks/basis/EndAnvilBlock.java +++ b/src/main/java/org/betterx/betterend/blocks/basis/EndAnvilBlock.java @@ -16,8 +16,4 @@ public class EndAnvilBlock extends LeveledAnvilBlock { super(color, level); this.metalMaterial = metalMaterial; } - - public int getCraftingLevel() { - return level; - } } diff --git a/src/main/java/org/betterx/betterend/blocks/entities/EndStoneSmelterBlockEntity.java b/src/main/java/org/betterx/betterend/blocks/entities/EndStoneSmelterBlockEntity.java index e4e4c197..ae372e01 100644 --- a/src/main/java/org/betterx/betterend/blocks/entities/EndStoneSmelterBlockEntity.java +++ b/src/main/java/org/betterx/betterend/blocks/entities/EndStoneSmelterBlockEntity.java @@ -1,9 +1,9 @@ package org.betterx.betterend.blocks.entities; +import org.betterx.bclib.recipes.AlloyingRecipe; import org.betterx.betterend.BetterEnd; import org.betterx.betterend.blocks.EndStoneSmelter; import org.betterx.betterend.client.gui.EndStoneSmelterMenu; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; import org.betterx.betterend.registry.EndBlockEntities; import net.minecraft.core.BlockPos; diff --git a/src/main/java/org/betterx/betterend/client/gui/EndStoneSmelterMenu.java b/src/main/java/org/betterx/betterend/client/gui/EndStoneSmelterMenu.java index e0ec8e74..485f8a1a 100644 --- a/src/main/java/org/betterx/betterend/client/gui/EndStoneSmelterMenu.java +++ b/src/main/java/org/betterx/betterend/client/gui/EndStoneSmelterMenu.java @@ -1,9 +1,9 @@ package org.betterx.betterend.client.gui; +import org.betterx.bclib.recipes.AlloyingRecipe; import org.betterx.betterend.blocks.entities.EndStoneSmelterBlockEntity; import org.betterx.betterend.client.gui.slot.SmelterFuelSlot; import org.betterx.betterend.client.gui.slot.SmelterOutputSlot; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; import org.betterx.betterend.registry.EndMenuTypes; import net.minecraft.world.Container; diff --git a/src/main/java/org/betterx/betterend/complexmaterials/MetalMaterial.java b/src/main/java/org/betterx/betterend/complexmaterials/MetalMaterial.java index f5c60442..e7c29bf2 100644 --- a/src/main/java/org/betterx/betterend/complexmaterials/MetalMaterial.java +++ b/src/main/java/org/betterx/betterend/complexmaterials/MetalMaterial.java @@ -19,7 +19,7 @@ import org.betterx.betterend.config.Configs; import org.betterx.betterend.item.EndArmorItem; import org.betterx.betterend.item.tool.EndHammerItem; import org.betterx.betterend.item.tool.EndPickaxe; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; +import org.betterx.betterend.recipe.builders.AlloyingRecipeBuilder; import org.betterx.betterend.registry.EndBlocks; import org.betterx.betterend.registry.EndItems; import org.betterx.worlds.together.tag.v3.TagManager; @@ -231,11 +231,11 @@ public class MetalMaterial { .checkConfig(Configs.RECIPE_CONFIG) .setGroup("end_ingot") .buildWithBlasting(); - AlloyingRecipe.Builder.create(name + "_ingot_alloy") - .setInput(alloyingOre, alloyingOre) - .setOutput(ingot, 3) - .setExpiriense(2.1F) - .build(); + AlloyingRecipeBuilder.create(name + "_ingot_alloy") + .setInput(alloyingOre, alloyingOre) + .setOutput(ingot, 3) + .setExpiriense(2.1F) + .build(); } // Basic recipes diff --git a/src/main/java/org/betterx/betterend/integration/emi/EMIAlloyingRecipe.java b/src/main/java/org/betterx/betterend/integration/emi/EMIAlloyingRecipe.java deleted file mode 100644 index 2627695b..00000000 --- a/src/main/java/org/betterx/betterend/integration/emi/EMIAlloyingRecipe.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.betterx.betterend.integration.emi; - -import org.betterx.betterend.recipe.builders.AlloyingRecipe; - -import net.minecraft.resources.ResourceLocation; - -import dev.emi.emi.api.recipe.EmiRecipe; -import dev.emi.emi.api.recipe.EmiRecipeCategory; -import dev.emi.emi.api.render.EmiTexture; -import dev.emi.emi.api.stack.EmiIngredient; -import dev.emi.emi.api.stack.EmiStack; -import dev.emi.emi.api.widget.WidgetHolder; - -import java.util.List; - -public class EMIAlloyingRecipe implements EmiRecipe { - private final ResourceLocation id; - private final List input; - private final List output; - - public EMIAlloyingRecipe(AlloyingRecipe recipe) { - this.id = recipe.getId(); - this.input = List.of( - EmiIngredient.of(recipe.getIngredients().get(0)), - EmiIngredient.of(recipe.getIngredients().get(1)) - ); - this.output = List.of(EmiStack.of(recipe.getResultItem())); - } - - @Override - public EmiRecipeCategory getCategory() { - return EMIPlugin.END_SMELTER_CATEGORY; - } - - @Override - public ResourceLocation getId() { - return id; - } - - @Override - public List getInputs() { - return input; - } - - @Override - public List getOutputs() { - return output; - } - - @Override - public int getDisplayWidth() { - return 76; - } - - @Override - public int getDisplayHeight() { - return 18; - } - - @Override - public void addWidgets(WidgetHolder widgets) { - // Add an arrow texture to indicate processing - widgets.addTexture(EmiTexture.EMPTY_ARROW, 46, 1); - - // Adds an input slot on the left - widgets.addSlot(input.get(0), 0, 0); - widgets.addSlot(input.get(1), 20, 0); - - // Adds an output slot on the right - // Note that output slots need to call `recipeContext` to inform EMI about their recipe context - // This includes being able to resolve recipe trees, favorite stacks with recipe context, and more - widgets.addSlot(output.get(0), 58, 0).recipeContext(this); - } -} diff --git a/src/main/java/org/betterx/betterend/integration/emi/EMIPlugin.java b/src/main/java/org/betterx/betterend/integration/emi/EMIPlugin.java index 7514fc36..2795b931 100644 --- a/src/main/java/org/betterx/betterend/integration/emi/EMIPlugin.java +++ b/src/main/java/org/betterx/betterend/integration/emi/EMIPlugin.java @@ -1,40 +1,10 @@ package org.betterx.betterend.integration.emi; -import org.betterx.bclib.BCLib; -import org.betterx.betterend.BetterEnd; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; -import org.betterx.betterend.registry.EndBlocks; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.RecipeManager; - -import dev.emi.emi.api.EmiPlugin; import dev.emi.emi.api.EmiRegistry; -import dev.emi.emi.api.recipe.EmiRecipeCategory; -import dev.emi.emi.api.stack.EmiStack; - -public class EMIPlugin implements EmiPlugin { - public static final ResourceLocation MY_SPRITE_SHEET = BetterEnd.makeID( - "textures/gui/emi_simplified_textures.png" - ); - - public static final EmiStack END_SMELTER_WORKSTATION = EmiStack.of(EndBlocks.END_STONE_SMELTER); - public static final EmiRecipeCategory END_SMELTER_CATEGORY = new EmiRecipeCategory( - BCLib.makeID("end_stone_smelter"), - END_SMELTER_WORKSTATION//, - //new EmiTexture(MY_SPRITE_SHEET, 0, 0, 16, 16) - ); +public class EMIPlugin implements dev.emi.emi.api.EmiPlugin { @Override public void register(EmiRegistry emiRegistry) { - emiRegistry.addCategory(END_SMELTER_CATEGORY); - // Add all the workstations your category uses - emiRegistry.addWorkstation(END_SMELTER_CATEGORY, END_SMELTER_WORKSTATION); - - RecipeManager manager = emiRegistry.getRecipeManager(); - for (AlloyingRecipe recipe : manager.getAllRecipesFor(AlloyingRecipe.TYPE)) { - emiRegistry.addRecipe(new EMIAlloyingRecipe(recipe)); - } } } diff --git a/src/main/java/org/betterx/betterend/integration/jei/JEIAlloyingCategory.java b/src/main/java/org/betterx/betterend/integration/jei/JEIAlloyingCategory.java index a16d12de..649f23e1 100644 --- a/src/main/java/org/betterx/betterend/integration/jei/JEIAlloyingCategory.java +++ b/src/main/java/org/betterx/betterend/integration/jei/JEIAlloyingCategory.java @@ -1,7 +1,7 @@ package org.betterx.betterend.integration.jei; +import org.betterx.bclib.recipes.AlloyingRecipe; import org.betterx.betterend.BetterEnd; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; import org.betterx.betterend.registry.EndBlocks; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/src/main/java/org/betterx/betterend/integration/jei/JEIAlloyingFuelCategory.java b/src/main/java/org/betterx/betterend/integration/jei/JEIAlloyingFuelCategory.java index f0cd9ca5..bd1fc99a 100644 --- a/src/main/java/org/betterx/betterend/integration/jei/JEIAlloyingFuelCategory.java +++ b/src/main/java/org/betterx/betterend/integration/jei/JEIAlloyingFuelCategory.java @@ -1,8 +1,8 @@ package org.betterx.betterend.integration.jei; +import org.betterx.bclib.recipes.AlloyingRecipe; import org.betterx.betterend.BetterEnd; import org.betterx.betterend.blocks.entities.EndStoneSmelterBlockEntity; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; import org.betterx.betterend.registry.EndBlocks; import org.betterx.ui.layout.values.Rectangle; diff --git a/src/main/java/org/betterx/betterend/integration/jei/JEIPlugin.java b/src/main/java/org/betterx/betterend/integration/jei/JEIPlugin.java index a5c122e9..5d3fa929 100644 --- a/src/main/java/org/betterx/betterend/integration/jei/JEIPlugin.java +++ b/src/main/java/org/betterx/betterend/integration/jei/JEIPlugin.java @@ -1,7 +1,7 @@ package org.betterx.betterend.integration.jei; +import org.betterx.bclib.recipes.AlloyingRecipe; import org.betterx.betterend.BetterEnd; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; import org.betterx.betterend.registry.EndBlocks; import net.minecraft.client.Minecraft; diff --git a/src/main/java/org/betterx/betterend/integration/rei/REIAlloyingDisplay.java b/src/main/java/org/betterx/betterend/integration/rei/REIAlloyingDisplay.java index eaa74167..b408eaac 100644 --- a/src/main/java/org/betterx/betterend/integration/rei/REIAlloyingDisplay.java +++ b/src/main/java/org/betterx/betterend/integration/rei/REIAlloyingDisplay.java @@ -1,7 +1,7 @@ package org.betterx.betterend.integration.rei; +import org.betterx.bclib.recipes.AlloyingRecipe; import org.betterx.betterend.blocks.entities.EndStoneSmelterBlockEntity; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; diff --git a/src/main/java/org/betterx/betterend/integration/rei/REIPlugin.java b/src/main/java/org/betterx/betterend/integration/rei/REIPlugin.java index ff416df1..3b87f9fd 100644 --- a/src/main/java/org/betterx/betterend/integration/rei/REIPlugin.java +++ b/src/main/java/org/betterx/betterend/integration/rei/REIPlugin.java @@ -1,10 +1,10 @@ package org.betterx.betterend.integration.rei; import org.betterx.bclib.blocks.BaseFurnaceBlock; +import org.betterx.bclib.recipes.AlloyingRecipe; import org.betterx.bclib.recipes.AnvilRecipe; import org.betterx.betterend.BetterEnd; import org.betterx.betterend.blocks.basis.EndAnvilBlock; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; import org.betterx.betterend.recipe.builders.InfusionRecipe; import org.betterx.betterend.registry.EndBlocks; diff --git a/src/main/java/org/betterx/betterend/recipe/AlloyingRecipes.java b/src/main/java/org/betterx/betterend/recipe/AlloyingRecipes.java index a251da50..1a520779 100644 --- a/src/main/java/org/betterx/betterend/recipe/AlloyingRecipes.java +++ b/src/main/java/org/betterx/betterend/recipe/AlloyingRecipes.java @@ -1,6 +1,6 @@ package org.betterx.betterend.recipe; -import org.betterx.betterend.recipe.builders.AlloyingRecipe; +import org.betterx.betterend.recipe.builders.AlloyingRecipeBuilder; import org.betterx.betterend.registry.EndBlocks; import org.betterx.betterend.registry.EndItems; import org.betterx.betterend.registry.EndTags; @@ -10,44 +10,44 @@ import net.minecraft.world.level.block.Blocks; public class AlloyingRecipes { public static void register() { - AlloyingRecipe.Builder.create("additional_iron") - .setInput(EndTags.ALLOYING_IRON, EndTags.ALLOYING_IRON) - .setOutput(Items.IRON_INGOT, 3) - .setExpiriense(2.1F) - .build(); - AlloyingRecipe.Builder.create("additional_gold") - .setInput(EndTags.ALLOYING_GOLD, EndTags.ALLOYING_GOLD) - .setOutput(Items.GOLD_INGOT, 3) - .setExpiriense(3F) - .build(); - AlloyingRecipe.Builder.create("additional_copper") - .setInput(EndTags.ALLOYING_COPPER, EndTags.ALLOYING_COPPER) - .setOutput(Items.COPPER_INGOT, 3) - .setExpiriense(3F) - .build(); - AlloyingRecipe.Builder.create("additional_netherite") - .setInput(Blocks.ANCIENT_DEBRIS, Blocks.ANCIENT_DEBRIS) - .setOutput(Items.NETHERITE_SCRAP, 3) - .setExpiriense(6F) - .setSmeltTime(1000) - .build(); - AlloyingRecipe.Builder.create("terminite_ingot") - .setInput(Items.IRON_INGOT, EndItems.ENDER_DUST) - .setOutput(EndBlocks.TERMINITE.ingot, 1) - .setExpiriense(2.5F) - .setSmeltTime(450) - .build(); - AlloyingRecipe.Builder.create("aeternium_ingot") - .setInput(EndBlocks.TERMINITE.ingot, Items.NETHERITE_INGOT) - .setOutput(EndItems.AETERNIUM_INGOT, 1) - .setExpiriense(4.5F) - .setSmeltTime(850) - .build(); - AlloyingRecipe.Builder.create("terminite_ingot_thallasium") - .setInput(EndBlocks.THALLASIUM.ingot, EndItems.ENDER_DUST) - .setOutput(EndBlocks.TERMINITE.ingot, 1) - .setExpiriense(2.5F) - .setSmeltTime(450) - .build(); + AlloyingRecipeBuilder.create("additional_iron") + .setInput(EndTags.ALLOYING_IRON, EndTags.ALLOYING_IRON) + .setOutput(Items.IRON_INGOT, 3) + .setExpiriense(2.1F) + .build(); + AlloyingRecipeBuilder.create("additional_gold") + .setInput(EndTags.ALLOYING_GOLD, EndTags.ALLOYING_GOLD) + .setOutput(Items.GOLD_INGOT, 3) + .setExpiriense(3F) + .build(); + AlloyingRecipeBuilder.create("additional_copper") + .setInput(EndTags.ALLOYING_COPPER, EndTags.ALLOYING_COPPER) + .setOutput(Items.COPPER_INGOT, 3) + .setExpiriense(3F) + .build(); + AlloyingRecipeBuilder.create("additional_netherite") + .setInput(Blocks.ANCIENT_DEBRIS, Blocks.ANCIENT_DEBRIS) + .setOutput(Items.NETHERITE_SCRAP, 3) + .setExpiriense(6F) + .setSmeltTime(1000) + .build(); + AlloyingRecipeBuilder.create("terminite_ingot") + .setInput(Items.IRON_INGOT, EndItems.ENDER_DUST) + .setOutput(EndBlocks.TERMINITE.ingot, 1) + .setExpiriense(2.5F) + .setSmeltTime(450) + .build(); + AlloyingRecipeBuilder.create("aeternium_ingot") + .setInput(EndBlocks.TERMINITE.ingot, Items.NETHERITE_INGOT) + .setOutput(EndItems.AETERNIUM_INGOT, 1) + .setExpiriense(4.5F) + .setSmeltTime(850) + .build(); + AlloyingRecipeBuilder.create("terminite_ingot_thallasium") + .setInput(EndBlocks.THALLASIUM.ingot, EndItems.ENDER_DUST) + .setOutput(EndBlocks.TERMINITE.ingot, 1) + .setExpiriense(2.5F) + .setSmeltTime(450) + .build(); } } diff --git a/src/main/java/org/betterx/betterend/recipe/builders/AlloyingRecipe.java b/src/main/java/org/betterx/betterend/recipe/builders/AlloyingRecipe.java deleted file mode 100644 index cde02a86..00000000 --- a/src/main/java/org/betterx/betterend/recipe/builders/AlloyingRecipe.java +++ /dev/null @@ -1,301 +0,0 @@ -package org.betterx.betterend.recipe.builders; - -import org.betterx.bclib.interfaces.UnknownReceipBookCategory; -import org.betterx.bclib.recipes.BCLRecipeManager; -import org.betterx.bclib.util.ItemUtil; -import org.betterx.bclib.util.RecipeHelper; -import org.betterx.betterend.BetterEnd; -import org.betterx.betterend.config.Configs; -import org.betterx.betterend.registry.EndBlocks; - -import net.minecraft.core.NonNullList; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.util.GsonHelper; -import net.minecraft.world.Container; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.RecipeType; -import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.Level; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - -public class AlloyingRecipe implements Recipe, UnknownReceipBookCategory { - public final static String GROUP = "alloying"; - public final static RecipeType TYPE = BCLRecipeManager.registerType(BetterEnd.MOD_ID, GROUP); - public final static Serializer SERIALIZER = BCLRecipeManager.registerSerializer( - BetterEnd.MOD_ID, - GROUP, - new Serializer() - ); - - protected final RecipeType type; - protected final ResourceLocation id; - protected final Ingredient primaryInput; - protected final Ingredient secondaryInput; - protected final ItemStack output; - protected final String group; - protected final float experience; - protected final int smeltTime; - - public AlloyingRecipe( - ResourceLocation id, - String group, - Ingredient primaryInput, - Ingredient secondaryInput, - ItemStack output, - float experience, - int smeltTime - ) { - this.group = group; - this.id = id; - this.primaryInput = primaryInput; - this.secondaryInput = secondaryInput; - this.output = output; - this.experience = experience; - this.smeltTime = smeltTime; - this.type = TYPE; - } - - public float getExperience() { - return this.experience; - } - - public int getSmeltTime() { - return this.smeltTime; - } - - @Override - public NonNullList getIngredients() { - NonNullList defaultedList = NonNullList.create(); - defaultedList.add(primaryInput); - defaultedList.add(secondaryInput); - - return defaultedList; - } - - @Override - public boolean matches(Container inv, Level world) { - return this.primaryInput.test(inv.getItem(0)) && this.secondaryInput.test(inv.getItem(1)) || this.primaryInput.test( - inv.getItem(1)) && this.secondaryInput.test(inv.getItem(0)); - } - - @Override - public ItemStack assemble(Container inv) { - return this.output.copy(); - } - - @Override - public boolean canCraftInDimensions(int width, int height) { - return true; - } - - @Override - public ItemStack getResultItem() { - return this.output; - } - - @Override - public ResourceLocation getId() { - return this.id; - } - - @Override - public RecipeSerializer getSerializer() { - return SERIALIZER; - } - - @Override - public RecipeType getType() { - return this.type; - } - - @Override - @Environment(EnvType.CLIENT) - public String getGroup() { - return this.group; - } - - @Environment(EnvType.CLIENT) - public ItemStack getToastSymbol() { - return new ItemStack(EndBlocks.END_STONE_SMELTER); - } - - public static class Builder { - private final static Builder INSTANCE = new Builder(); - private static boolean exist; - - public static Builder create(ResourceLocation id) { - INSTANCE.id = id; - INSTANCE.group = String.format("%s_%s", GROUP, id); - INSTANCE.primaryInput = null; - INSTANCE.secondaryInput = null; - INSTANCE.output = null; - INSTANCE.experience = 0.0F; - INSTANCE.smeltTime = 350; - exist = Configs.RECIPE_CONFIG.getBoolean("alloying", id.getPath(), true); - - return INSTANCE; - } - - public static Builder create(String id) { - return create(BetterEnd.makeID(id)); - } - - private ResourceLocation id; - private Ingredient primaryInput; - private Ingredient secondaryInput; - private ItemStack output; - private String group; - private float experience; - private int smeltTime; - private boolean alright = true; - - private Builder() { - } - - public Builder setGroup(String group) { - this.group = group; - return this; - } - - public Builder setPrimaryInput(ItemLike... inputs) { - for (ItemLike item : inputs) { - this.alright &= RecipeHelper.exists(item); - } - this.primaryInput = Ingredient.of(inputs); - return this; - } - - public Builder setSecondaryInput(ItemLike... inputs) { - for (ItemLike item : inputs) { - this.alright &= RecipeHelper.exists(item); - } - this.secondaryInput = Ingredient.of(inputs); - return this; - } - - public Builder setPrimaryInput(TagKey input) { - this.primaryInput = Ingredient.of(input); - return this; - } - - public Builder setSecondaryInput(TagKey input) { - this.secondaryInput = Ingredient.of(input); - return this; - } - - public Builder setInput(ItemLike primaryInput, ItemLike secondaryInput) { - this.setPrimaryInput(primaryInput); - this.setSecondaryInput(secondaryInput); - return this; - } - - public Builder setInput(TagKey primaryInput, TagKey secondaryInput) { - this.setPrimaryInput(primaryInput); - this.setSecondaryInput(secondaryInput); - return this; - } - - public Builder setOutput(ItemLike output, int amount) { - this.alright &= RecipeHelper.exists(output); - this.output = new ItemStack(output, amount); - return this; - } - - public Builder setExpiriense(float amount) { - this.experience = amount; - return this; - } - - public Builder setSmeltTime(int time) { - this.smeltTime = time; - return this; - } - - public void build() { - if (exist) { - if (primaryInput == null) { - BetterEnd.LOGGER.warning( - "Primary input for Alloying recipe can't be 'null', recipe {} will be ignored!", - id - ); - return; - } - if (secondaryInput == null) { - BetterEnd.LOGGER.warning( - "Secondary input for Alloying can't be 'null', recipe {} will be ignored!", - id - ); - return; - } - if (output == null) { - BetterEnd.LOGGER.warning("Output for Alloying can't be 'null', recipe {} will be ignored!", id); - return; - } - if (BCLRecipeManager.getRecipe(TYPE, id) != null) { - BetterEnd.LOGGER.warning("Can't add Alloying recipe! Id {} already exists!", id); - return; - } - if (!alright) { - BetterEnd.LOGGER.debug("Can't add Alloying recipe {}! Ingeredient or output not exists.", id); - return; - } - BCLRecipeManager.addRecipe( - TYPE, - new AlloyingRecipe(id, group, primaryInput, secondaryInput, output, experience, smeltTime) - ); - } - } - } - - public static class Serializer implements RecipeSerializer { - @Override - public AlloyingRecipe fromJson(ResourceLocation id, JsonObject json) { - JsonArray ingredients = GsonHelper.getAsJsonArray(json, "ingredients"); - Ingredient primaryInput = Ingredient.fromJson(ingredients.get(0)); - Ingredient secondaryInput = Ingredient.fromJson(ingredients.get(1)); - String group = GsonHelper.getAsString(json, "group", ""); - JsonObject result = GsonHelper.getAsJsonObject(json, "result"); - ItemStack output = ItemUtil.fromJsonRecipe(result); - if (output == null) { - throw new IllegalStateException("Output item does not exists!"); - } - float experience = GsonHelper.getAsFloat(json, "experience", 0.0F); - int smeltTime = GsonHelper.getAsInt(json, "smelttime", 350); - - return new AlloyingRecipe(id, group, primaryInput, secondaryInput, output, experience, smeltTime); - } - - @Override - public AlloyingRecipe fromNetwork(ResourceLocation id, FriendlyByteBuf packetBuffer) { - String group = packetBuffer.readUtf(32767); - Ingredient primary = Ingredient.fromNetwork(packetBuffer); - Ingredient secondary = Ingredient.fromNetwork(packetBuffer); - ItemStack output = packetBuffer.readItem(); - float experience = packetBuffer.readFloat(); - int smeltTime = packetBuffer.readVarInt(); - - return new AlloyingRecipe(id, group, primary, secondary, output, experience, smeltTime); - } - - @Override - public void toNetwork(FriendlyByteBuf packetBuffer, AlloyingRecipe recipe) { - packetBuffer.writeUtf(recipe.group); - recipe.primaryInput.toNetwork(packetBuffer); - recipe.secondaryInput.toNetwork(packetBuffer); - packetBuffer.writeItem(recipe.output); - packetBuffer.writeFloat(recipe.experience); - packetBuffer.writeVarInt(recipe.smeltTime); - } - } -} diff --git a/src/main/java/org/betterx/betterend/recipe/builders/AlloyingRecipeBuilder.java b/src/main/java/org/betterx/betterend/recipe/builders/AlloyingRecipeBuilder.java new file mode 100644 index 00000000..ba5f31c0 --- /dev/null +++ b/src/main/java/org/betterx/betterend/recipe/builders/AlloyingRecipeBuilder.java @@ -0,0 +1,14 @@ +package org.betterx.betterend.recipe.builders; + +import org.betterx.bclib.recipes.AlloyingRecipe; +import org.betterx.betterend.BetterEnd; +import org.betterx.betterend.config.Configs; + +public class AlloyingRecipeBuilder extends AlloyingRecipe.Builder { + private AlloyingRecipeBuilder() { + } + + public static AlloyingRecipe.Builder create(String id) { + return AlloyingRecipe.Builder.create(BetterEnd.MOD_ID, id, Configs.RECIPE_CONFIG); + } +} diff --git a/src/main/resources/assets/betterend/lang/de_de.json b/src/main/resources/assets/betterend/lang/de_de.json index e5340a57..5c267c6d 100644 --- a/src/main/resources/assets/betterend/lang/de_de.json +++ b/src/main/resources/assets/betterend/lang/de_de.json @@ -620,7 +620,5 @@ "item.betterend.thallasium_sword_blade": "Thallasiumschwertklinge", "item.betterend.thallasium_sword_handle": "Thallasiumschwertgriff", "block.betterend.aeternium_anvil": "Ätheramboss", - "emi.ctegory.bclib.end_stone_smelter": "Endsteinschmelzofen", - "tag.c.barrel": "Fässer", "tag.betterend.alloying_iron": "Eisenlegierung" } diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index b307acf7..b509b832 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -819,7 +819,5 @@ "block.betterend.pallidium_thin": "Pallidium (Thin Cover)", "block.betterend.pallidium_tiny": "Pallidium (Tiny Cover)", "block.betterend.flammalix": "Flammalix", - "emi.ctegory.bclib.end_stone_smelter": "End Stone Smelter", - "tag.c.barrel": "Barrels", "tag.betterend.alloying_iron": "Iron Alloys" } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 9bf9c86b..15fdefcc 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -49,8 +49,7 @@ "fabric": ">=0.56.0", "minecraft": [ "1.19", - "1.19.1", - "1.19.1-rc.3" + "1.19.1" ], "bclib": "2.0.x" },