From 090de6360853528cdf75110cce9e7f647461a612 Mon Sep 17 00:00:00 2001 From: mezz Date: Thu, 31 Dec 2015 02:27:07 -0800 Subject: [PATCH] Add Vacuum Freezer recipes --- .../client/gui/GuiVacuumFreezer.java | 2 +- .../compat/jei/RecipeCategoryUids.java | 1 + .../compat/jei/TechRebornJeiPlugin.java | 10 ++- .../VacuumFreezerRecipeCategory.java | 70 +++++++++++++++++++ .../VacuumFreezerRecipeHandler.java | 33 +++++++++ .../VacuumFreezerRecipeWrapper.java | 32 +++++++++ 6 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeCategory.java create mode 100644 src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeHandler.java create mode 100644 src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeWrapper.java diff --git a/src/main/java/techreborn/client/gui/GuiVacuumFreezer.java b/src/main/java/techreborn/client/gui/GuiVacuumFreezer.java index 9b16ce01f..977b5da6e 100644 --- a/src/main/java/techreborn/client/gui/GuiVacuumFreezer.java +++ b/src/main/java/techreborn/client/gui/GuiVacuumFreezer.java @@ -19,7 +19,7 @@ import java.io.IOException; public class GuiVacuumFreezer extends GuiContainer { - private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/vacuum_freezer.png"); + public static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/vacuum_freezer.png"); TileVacuumFreezer crafter; ContainerVacuumFreezer containerVacuumFreezer; diff --git a/src/main/java/techreborn/compat/jei/RecipeCategoryUids.java b/src/main/java/techreborn/compat/jei/RecipeCategoryUids.java index a35b093fe..2f3efa342 100644 --- a/src/main/java/techreborn/compat/jei/RecipeCategoryUids.java +++ b/src/main/java/techreborn/compat/jei/RecipeCategoryUids.java @@ -14,4 +14,5 @@ public class RecipeCategoryUids { public static final String IMPLOSION_COMPRESSOR = "TechReborn.ImplosionCompressor"; public static final String INDUSTRIAL_ELECTROLYZER = "TechReborn.IndustrialElectrolyzer"; public static final String INDUSTRIAL_SAWMILL = "TechReborn.IndustrialSawmill"; + public static final String VACUUM_FREEZER = "TechReborn.VacuumFreezer"; } diff --git a/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java b/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java index 1f0b35447..928eae654 100644 --- a/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java +++ b/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java @@ -29,6 +29,7 @@ import techreborn.client.container.ContainerGrinder; import techreborn.client.container.ContainerImplosionCompressor; import techreborn.client.container.ContainerIndustrialElectrolyzer; import techreborn.client.container.ContainerIndustrialSawmill; +import techreborn.client.container.ContainerVacuumFreezer; import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeCategory; import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeHandler; import techreborn.compat.jei.assemblingMachine.AssemblingMachineRecipeCategory; @@ -49,6 +50,8 @@ import techreborn.compat.jei.industrialElectrolyzer.IndustrialElectrolyzerRecipe import techreborn.compat.jei.industrialElectrolyzer.IndustrialElectrolyzerRecipeHandler; import techreborn.compat.jei.industrialSawmill.IndustrialSawmillRecipeCategory; import techreborn.compat.jei.industrialSawmill.IndustrialSawmillRecipeHandler; +import techreborn.compat.jei.vacuumFreezer.VacuumFreezerRecipeCategory; +import techreborn.compat.jei.vacuumFreezer.VacuumFreezerRecipeHandler; @mezz.jei.api.JEIPlugin public class TechRebornJeiPlugin implements IModPlugin { @@ -83,7 +86,8 @@ public class TechRebornJeiPlugin implements IModPlugin { new GrinderRecipeCategory(guiHelper), new ImplosionCompressorRecipeCategory(guiHelper), new IndustrialElectrolyzerRecipeCategory(guiHelper), - new IndustrialSawmillRecipeCategory(guiHelper) + new IndustrialSawmillRecipeCategory(guiHelper), + new VacuumFreezerRecipeCategory(guiHelper) ); registry.addRecipeHandlers( @@ -96,7 +100,8 @@ public class TechRebornJeiPlugin implements IModPlugin { new GrinderRecipeHandler(), new ImplosionCompressorRecipeHandler(), new IndustrialElectrolyzerRecipeHandler(), - new IndustrialSawmillRecipeHandler() + new IndustrialSawmillRecipeHandler(), + new VacuumFreezerRecipeHandler() ); registry.addRecipes(RecipeHandler.recipeList); @@ -119,6 +124,7 @@ public class TechRebornJeiPlugin implements IModPlugin { recipeTransferRegistry.addRecipeTransferHandler(ContainerImplosionCompressor.class, RecipeCategoryUids.IMPLOSION_COMPRESSOR, 0, 2, 4, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerIndustrialElectrolyzer.class, RecipeCategoryUids.INDUSTRIAL_ELECTROLYZER, 0, 2, 7, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerIndustrialSawmill.class, RecipeCategoryUids.INDUSTRIAL_SAWMILL, 0, 2, 5, 36); + recipeTransferRegistry.addRecipeTransferHandler(ContainerVacuumFreezer.class, RecipeCategoryUids.VACUUM_FREEZER, 0, 1, 2, 36); } @Override diff --git a/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeCategory.java b/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeCategory.java new file mode 100644 index 000000000..38285f4c3 --- /dev/null +++ b/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeCategory.java @@ -0,0 +1,70 @@ +package techreborn.compat.jei.vacuumFreezer; + +import javax.annotation.Nonnull; + +import net.minecraft.client.Minecraft; +import net.minecraft.util.StatCollector; + +import mezz.jei.api.IGuiHelper; +import mezz.jei.api.gui.IDrawable; +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.GuiVacuumFreezer; +import techreborn.compat.jei.RecipeCategoryUids; +import techreborn.compat.jei.RecipeUtil; + +public class VacuumFreezerRecipeCategory implements IRecipeCategory { + private static final int[] INPUT_SLOTS = {0}; + private static final int[] OUTPUT_SLOTS = {1}; + + private final IDrawable background; + private final String title; + + public VacuumFreezerRecipeCategory(IGuiHelper guiHelper) { + background = guiHelper.createDrawable(GuiVacuumFreezer.texture, 55, 30, 82, 26); + title = StatCollector.translateToLocal("tile.techreborn.vacuumfreezer.name"); + } + + @Nonnull + @Override + public String getUid() { + return RecipeCategoryUids.VACUUM_FREEZER; + } + + @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) { + + } + + @Override + public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull IRecipeWrapper recipeWrapper) { + IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); + guiItemStacks.init(INPUT_SLOTS[0], true, 0, 3); + + guiItemStacks.init(OUTPUT_SLOTS[0], false, 60, 4); + + if (recipeWrapper instanceof VacuumFreezerRecipeWrapper) { + VacuumFreezerRecipeWrapper recipe = (VacuumFreezerRecipeWrapper) recipeWrapper; + RecipeUtil.setRecipeItems(recipeLayout, recipe, INPUT_SLOTS, OUTPUT_SLOTS, null, null); + } + } +} diff --git a/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeHandler.java b/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeHandler.java new file mode 100644 index 000000000..84a160d59 --- /dev/null +++ b/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeHandler.java @@ -0,0 +1,33 @@ +package techreborn.compat.jei.vacuumFreezer; + +import javax.annotation.Nonnull; + +import mezz.jei.api.recipe.IRecipeHandler; +import mezz.jei.api.recipe.IRecipeWrapper; +import techreborn.api.recipe.machines.VacuumFreezerRecipe; +import techreborn.compat.jei.RecipeCategoryUids; + +public class VacuumFreezerRecipeHandler implements IRecipeHandler { + @Nonnull + @Override + public Class getRecipeClass() { + return VacuumFreezerRecipe.class; + } + + @Nonnull + @Override + public String getRecipeCategoryUid() { + return RecipeCategoryUids.VACUUM_FREEZER; + } + + @Nonnull + @Override + public IRecipeWrapper getRecipeWrapper(@Nonnull VacuumFreezerRecipe recipe) { + return new VacuumFreezerRecipeWrapper(recipe); + } + + @Override + public boolean isRecipeValid(@Nonnull VacuumFreezerRecipe recipe) { + return true; + } +} diff --git a/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeWrapper.java b/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeWrapper.java new file mode 100644 index 000000000..25be1179c --- /dev/null +++ b/src/main/java/techreborn/compat/jei/vacuumFreezer/VacuumFreezerRecipeWrapper.java @@ -0,0 +1,32 @@ +package techreborn.compat.jei.vacuumFreezer; + +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.VacuumFreezerRecipe; +import techreborn.client.gui.GuiVacuumFreezer; +import techreborn.compat.jei.BaseRecipeWrapper; +import techreborn.compat.jei.TechRebornJeiPlugin; + +public class VacuumFreezerRecipeWrapper extends BaseRecipeWrapper { + private final IDrawableAnimated progress; + + public VacuumFreezerRecipeWrapper(VacuumFreezerRecipe baseRecipe) { + super(baseRecipe); + IGuiHelper guiHelper = TechRebornJeiPlugin.jeiHelpers.getGuiHelper(); + IDrawableStatic progressStatic = guiHelper.createDrawable(GuiVacuumFreezer.texture, 176, 14, 20, 11); + + int ticksPerCycle = baseRecipe.tickTime(); + this.progress = guiHelper.createAnimatedDrawable(progressStatic, ticksPerCycle, IDrawableAnimated.StartDirection.LEFT, false); + } + + @Override + public void drawAnimations(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight) { + super.drawAnimations(minecraft, recipeWidth, recipeHeight); + progress.draw(minecraft, 25, 7); + } +}