diff --git a/src/main/java/techreborn/client/gui/GuiBlastFurnace.java b/src/main/java/techreborn/client/gui/GuiBlastFurnace.java index 35cd0a182..d521406f7 100644 --- a/src/main/java/techreborn/client/gui/GuiBlastFurnace.java +++ b/src/main/java/techreborn/client/gui/GuiBlastFurnace.java @@ -22,7 +22,7 @@ import java.io.IOException; public class GuiBlastFurnace extends GuiContainer { - private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/industrial_blast_furnace.png"); + public static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/industrial_blast_furnace.png"); TileBlastFurnace blastfurnace; diff --git a/src/main/java/techreborn/compat/jei/RecipeCategoryUids.java b/src/main/java/techreborn/compat/jei/RecipeCategoryUids.java index e10b02521..4ce102684 100644 --- a/src/main/java/techreborn/compat/jei/RecipeCategoryUids.java +++ b/src/main/java/techreborn/compat/jei/RecipeCategoryUids.java @@ -6,5 +6,6 @@ public class RecipeCategoryUids { public static final String ALLOY_SMELTER = "AlloySmelter"; public static final String ASSEMBLING_MACHINE = "AssemblingMachine"; + public static final String BLAST_FURNACE = "BlastFurnace"; public static final String FUSION_REACTOR = "FusionReactor"; } diff --git a/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java b/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java index 46a917933..5795660d6 100644 --- a/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java +++ b/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java @@ -20,11 +20,14 @@ import techreborn.api.recipe.machines.AssemblingMachineRecipe; import techreborn.client.container.ContainerAlloyFurnace; import techreborn.client.container.ContainerAlloySmelter; import techreborn.client.container.ContainerAssemblingMachine; +import techreborn.client.container.ContainerBlastFurnace; import techreborn.client.container.ContainerFusionReactor; import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeCategory; import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeHandler; import techreborn.compat.jei.assemblingMachine.AssemblingMachineRecipeCategory; import techreborn.compat.jei.assemblingMachine.AssemblingMachineRecipeHandler; +import techreborn.compat.jei.blastFurnace.BlastFurnaceRecipeCategory; +import techreborn.compat.jei.blastFurnace.BlastFurnaceRecipeHandler; import techreborn.compat.jei.fusionReactor.FusionReactorRecipeCategory; import techreborn.compat.jei.fusionReactor.FusionReactorRecipeHandler; @@ -54,12 +57,14 @@ public class TechRebornJeiPlugin implements IModPlugin { registry.addRecipeCategories( new AlloySmelterRecipeCategory(guiHelper), new AssemblingMachineRecipeCategory(guiHelper), + new BlastFurnaceRecipeCategory(guiHelper), new FusionReactorRecipeCategory(guiHelper) ); registry.addRecipeHandlers( new AlloySmelterRecipeHandler(), new AssemblingMachineRecipeHandler(), + new BlastFurnaceRecipeHandler(), new FusionReactorRecipeHandler() ); @@ -75,6 +80,7 @@ public class TechRebornJeiPlugin implements IModPlugin { recipeTransferRegistry.addRecipeTransferHandler(ContainerAlloySmelter.class, RecipeCategoryUids.ALLOY_SMELTER, 0, 2, 8, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerAlloyFurnace.class, VanillaRecipeCategoryUid.FUEL, 3, 1, 4, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerAssemblingMachine.class, RecipeCategoryUids.ASSEMBLING_MACHINE, 0, 2, 8, 36); + recipeTransferRegistry.addRecipeTransferHandler(ContainerBlastFurnace.class, RecipeCategoryUids.BLAST_FURNACE, 0, 2, 4, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerFusionReactor.class, RecipeCategoryUids.FUSION_REACTOR, 0, 2, 3, 36); } diff --git a/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeCategory.java b/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeCategory.java new file mode 100644 index 000000000..0948d9237 --- /dev/null +++ b/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeCategory.java @@ -0,0 +1,90 @@ +package techreborn.compat.jei.blastFurnace; + +import javax.annotation.Nonnull; +import java.util.List; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +import mezz.jei.api.IGuiHelper; +import mezz.jei.api.gui.IDrawable; +import mezz.jei.api.gui.IDrawableAnimated; +import mezz.jei.api.gui.IDrawableStatic; +import mezz.jei.api.gui.IGuiItemStackGroup; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.recipe.IRecipeCategory; +import mezz.jei.api.recipe.IRecipeWrapper; +import techreborn.client.gui.GuiBlastFurnace; +import techreborn.compat.jei.RecipeCategoryUids; + +public class BlastFurnaceRecipeCategory implements IRecipeCategory { + private static final int INPUT_SLOT_0 = 0; + private static final int INPUT_SLOT_1 = 1; + private static final int OUTPUT_SLOT_0 = 2; + private static final int OUTPUT_SLOT_1 = 3; + + private final IDrawable background; + private final IDrawable electricity; + private final String title; + + public BlastFurnaceRecipeCategory(IGuiHelper guiHelper) { + background = guiHelper.createDrawable(GuiBlastFurnace.texture, 10, 24, 129, 36); + IDrawableStatic electricityDrawable = guiHelper.createDrawable(GuiBlastFurnace.texture, 176, 0, 14, 14); + electricity = guiHelper.createAnimatedDrawable(electricityDrawable, 300, IDrawableAnimated.StartDirection.TOP, true); + title = StatCollector.translateToLocal("tile.techreborn.blastfurnace.name"); + } + + @Nonnull + @Override + public String getUid() { + return RecipeCategoryUids.BLAST_FURNACE; + } + + @Nonnull + @Override + public String getTitle() { + return title; + } + + @Nonnull + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public void drawExtras(Minecraft minecraft) { + + } + + @Override + public void drawAnimations(Minecraft minecraft) { + electricity.draw(minecraft, 0, 12); + } + + @Override + public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull IRecipeWrapper recipeWrapper) { + IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); + guiItemStacks.init(INPUT_SLOT_0, true, 29, 0); + guiItemStacks.init(INPUT_SLOT_1, true, 29, 18); + guiItemStacks.init(OUTPUT_SLOT_0, false, 89, 10); + guiItemStacks.init(OUTPUT_SLOT_1, false, 107, 10); + + if (recipeWrapper instanceof BlastFurnaceRecipeWrapper) { + BlastFurnaceRecipeWrapper recipe = (BlastFurnaceRecipeWrapper) recipeWrapper; + + List inputs = recipe.getInputs(); + guiItemStacks.set(INPUT_SLOT_0, inputs.get(0)); + if (inputs.size() > 1) { + guiItemStacks.set(INPUT_SLOT_1, inputs.get(1)); + } + + List outputs = recipe.getOutputs(); + guiItemStacks.set(OUTPUT_SLOT_0, outputs.get(0)); + if (outputs.size() > 1) { + guiItemStacks.set(OUTPUT_SLOT_1, outputs.get(1)); + } + } + } +} diff --git a/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeHandler.java b/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeHandler.java new file mode 100644 index 000000000..3196534d3 --- /dev/null +++ b/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeHandler.java @@ -0,0 +1,33 @@ +package techreborn.compat.jei.blastFurnace; + +import javax.annotation.Nonnull; + +import mezz.jei.api.recipe.IRecipeHandler; +import mezz.jei.api.recipe.IRecipeWrapper; +import techreborn.api.recipe.machines.BlastFurnaceRecipe; +import techreborn.compat.jei.RecipeCategoryUids; + +public class BlastFurnaceRecipeHandler implements IRecipeHandler { + @Nonnull + @Override + public Class getRecipeClass() { + return BlastFurnaceRecipe.class; + } + + @Nonnull + @Override + public String getRecipeCategoryUid() { + return RecipeCategoryUids.BLAST_FURNACE; + } + + @Nonnull + @Override + public IRecipeWrapper getRecipeWrapper(@Nonnull BlastFurnaceRecipe recipe) { + return new BlastFurnaceRecipeWrapper(recipe); + } + + @Override + public boolean isRecipeValid(@Nonnull BlastFurnaceRecipe recipe) { + return true; + } +} diff --git a/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeWrapper.java b/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeWrapper.java new file mode 100644 index 000000000..98835fe78 --- /dev/null +++ b/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeWrapper.java @@ -0,0 +1,30 @@ +package techreborn.compat.jei.blastFurnace; + +import javax.annotation.Nonnull; + +import net.minecraft.client.Minecraft; + +import mezz.jei.api.IGuiHelper; +import mezz.jei.api.gui.IDrawableAnimated; +import mezz.jei.api.gui.IDrawableStatic; +import techreborn.api.recipe.machines.BlastFurnaceRecipe; +import techreborn.client.gui.GuiBlastFurnace; +import techreborn.compat.jei.BaseRecipeWrapper; +import techreborn.compat.jei.TechRebornJeiPlugin; + +public class BlastFurnaceRecipeWrapper extends BaseRecipeWrapper { + private final IDrawableAnimated progress; + + public BlastFurnaceRecipeWrapper(BlastFurnaceRecipe baseRecipe) { + super(baseRecipe); + IGuiHelper guiHelper = TechRebornJeiPlugin.jeiHelpers.getGuiHelper(); + IDrawableStatic progressStatic = guiHelper.createDrawable(GuiBlastFurnace.texture, 176, 14, 20, 11); + this.progress = guiHelper.createAnimatedDrawable(progressStatic, baseRecipe.tickTime(), IDrawableAnimated.StartDirection.LEFT, false); + } + + @Override + public void drawAnimations(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight) { + super.drawAnimations(minecraft, recipeWidth, recipeHeight); + progress.draw(minecraft, 54, 13); + } +}