Add implosion compressor recipes

This commit is contained in:
mezz 2015-12-31 01:07:35 -08:00
parent 5addee32e6
commit aed7b5c0c4
6 changed files with 169 additions and 3 deletions

View file

@ -10,7 +10,7 @@ import techreborn.tiles.TileImplosionCompressor;
public class GuiImplosionCompressor extends GuiContainer {
private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/implosion_compressor.png");
public static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/implosion_compressor.png");
TileImplosionCompressor compresser;
ContainerImplosionCompressor containerImplosionCompressor;

View file

@ -11,4 +11,5 @@ public class RecipeCategoryUids {
public static final String CHEMICAL_REACTOR = "TechReborn.ChemicalReactor";
public static final String FUSION_REACTOR = "TechReborn.FusionReactor";
public static final String GRINDER = "TechReborn.Grinder";
public static final String IMPLOSION_COMPRESSOR = "TechReborn.ImplosionCompressor";
}

View file

@ -17,6 +17,7 @@ import mezz.jei.api.recipe.transfer.IRecipeTransferRegistry;
import techreborn.api.reactor.FusionReactorRecipeHelper;
import techreborn.api.recipe.RecipeHandler;
import techreborn.api.recipe.machines.AssemblingMachineRecipe;
import techreborn.api.recipe.machines.ImplosionCompressorRecipe;
import techreborn.client.container.ContainerAlloyFurnace;
import techreborn.client.container.ContainerAlloySmelter;
import techreborn.client.container.ContainerAssemblingMachine;
@ -25,6 +26,7 @@ import techreborn.client.container.ContainerCentrifuge;
import techreborn.client.container.ContainerChemicalReactor;
import techreborn.client.container.ContainerFusionReactor;
import techreborn.client.container.ContainerGrinder;
import techreborn.client.container.ContainerImplosionCompressor;
import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeCategory;
import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeHandler;
import techreborn.compat.jei.assemblingMachine.AssemblingMachineRecipeCategory;
@ -39,6 +41,8 @@ import techreborn.compat.jei.fusionReactor.FusionReactorRecipeCategory;
import techreborn.compat.jei.fusionReactor.FusionReactorRecipeHandler;
import techreborn.compat.jei.grinder.GrinderRecipeCategory;
import techreborn.compat.jei.grinder.GrinderRecipeHandler;
import techreborn.compat.jei.implosionCompressor.ImplosionCompressorRecipeCategory;
import techreborn.compat.jei.implosionCompressor.ImplosionCompressorRecipeHandler;
@mezz.jei.api.JEIPlugin
public class TechRebornJeiPlugin implements IModPlugin {
@ -70,7 +74,8 @@ public class TechRebornJeiPlugin implements IModPlugin {
new CentrifugeRecipeCategory(guiHelper),
new ChemicalReactorRecipeCategory(guiHelper),
new FusionReactorRecipeCategory(guiHelper),
new GrinderRecipeCategory(guiHelper)
new GrinderRecipeCategory(guiHelper),
new ImplosionCompressorRecipeCategory(guiHelper)
);
registry.addRecipeHandlers(
@ -80,7 +85,8 @@ public class TechRebornJeiPlugin implements IModPlugin {
new CentrifugeRecipeHandler(),
new ChemicalReactorRecipeHandler(),
new FusionReactorRecipeHandler(),
new GrinderRecipeHandler()
new GrinderRecipeHandler(),
new ImplosionCompressorRecipeHandler()
);
registry.addRecipes(RecipeHandler.recipeList);
@ -100,6 +106,7 @@ public class TechRebornJeiPlugin implements IModPlugin {
recipeTransferRegistry.addRecipeTransferHandler(ContainerChemicalReactor.class, RecipeCategoryUids.CHEMICAL_REACTOR, 0, 2, 8, 36);
recipeTransferRegistry.addRecipeTransferHandler(ContainerFusionReactor.class, RecipeCategoryUids.FUSION_REACTOR, 0, 2, 3, 36);
recipeTransferRegistry.addRecipeTransferHandler(ContainerGrinder.class, RecipeCategoryUids.GRINDER, 0, 2, 6, 36);
recipeTransferRegistry.addRecipeTransferHandler(ContainerImplosionCompressor.class, RecipeCategoryUids.IMPLOSION_COMPRESSOR, 0, 2, 4, 36);
}
@Override
@ -116,6 +123,11 @@ public class TechRebornJeiPlugin implements IModPlugin {
AssemblingMachineRecipe assemblingMachineRecipe = new AssemblingMachineRecipe(diamondBlock, diamondBlock, dirtBlock, time, 120);
debugRecipes.add(assemblingMachineRecipe);
}
for (int i = 0; i < 10; i++) {
int time = (int) Math.round(200 + Math.random() * 100);
ImplosionCompressorRecipe recipe = new ImplosionCompressorRecipe(diamondBlock, diamondBlock, dirtBlock, dirtBlock, time, 120);
debugRecipes.add(recipe);
}
registry.addRecipes(debugRecipes);
}
}

View file

@ -0,0 +1,90 @@
package techreborn.compat.jei.implosionCompressor;
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.GuiImplosionCompressor;
import techreborn.compat.jei.RecipeCategoryUids;
public class ImplosionCompressorRecipeCategory 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 ImplosionCompressorRecipeCategory(IGuiHelper guiHelper) {
background = guiHelper.createDrawable(GuiImplosionCompressor.texture, 16, 25, 116, 36);
IDrawableStatic electricityDrawable = guiHelper.createDrawable(GuiImplosionCompressor.texture, 176, 0, 14, 14);
electricity = guiHelper.createAnimatedDrawable(electricityDrawable, 300, IDrawableAnimated.StartDirection.TOP, true);
title = StatCollector.translateToLocal("tile.techreborn.implosioncompressor.name");
}
@Nonnull
@Override
public String getUid() {
return RecipeCategoryUids.IMPLOSION_COMPRESSOR;
}
@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, 20, 0);
guiItemStacks.init(INPUT_SLOT_1, true, 20, 18);
guiItemStacks.init(OUTPUT_SLOT_0, false, 76, 9);
guiItemStacks.init(OUTPUT_SLOT_1, false, 94, 9);
if (recipeWrapper instanceof ImplosionCompressorRecipeWrapper) {
ImplosionCompressorRecipeWrapper recipe = (ImplosionCompressorRecipeWrapper) recipeWrapper;
List<ItemStack> inputs = recipe.getInputs();
guiItemStacks.set(INPUT_SLOT_0, inputs.get(0));
if (inputs.size() > 1) {
guiItemStacks.set(INPUT_SLOT_1, inputs.get(1));
}
List<ItemStack> outputs = recipe.getOutputs();
guiItemStacks.set(OUTPUT_SLOT_0, outputs.get(0));
if (outputs.size() > 1) {
guiItemStacks.set(OUTPUT_SLOT_1, outputs.get(1));
}
}
}
}

View file

@ -0,0 +1,33 @@
package techreborn.compat.jei.implosionCompressor;
import javax.annotation.Nonnull;
import mezz.jei.api.recipe.IRecipeHandler;
import mezz.jei.api.recipe.IRecipeWrapper;
import techreborn.api.recipe.machines.ImplosionCompressorRecipe;
import techreborn.compat.jei.RecipeCategoryUids;
public class ImplosionCompressorRecipeHandler implements IRecipeHandler<ImplosionCompressorRecipe> {
@Nonnull
@Override
public Class<ImplosionCompressorRecipe> getRecipeClass() {
return ImplosionCompressorRecipe.class;
}
@Nonnull
@Override
public String getRecipeCategoryUid() {
return RecipeCategoryUids.IMPLOSION_COMPRESSOR;
}
@Nonnull
@Override
public IRecipeWrapper getRecipeWrapper(@Nonnull ImplosionCompressorRecipe recipe) {
return new ImplosionCompressorRecipeWrapper(recipe);
}
@Override
public boolean isRecipeValid(@Nonnull ImplosionCompressorRecipe recipe) {
return true;
}
}

View file

@ -0,0 +1,30 @@
package techreborn.compat.jei.implosionCompressor;
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.ImplosionCompressorRecipe;
import techreborn.client.gui.GuiImplosionCompressor;
import techreborn.compat.jei.BaseRecipeWrapper;
import techreborn.compat.jei.TechRebornJeiPlugin;
public class ImplosionCompressorRecipeWrapper extends BaseRecipeWrapper<ImplosionCompressorRecipe> {
private final IDrawableAnimated progress;
public ImplosionCompressorRecipeWrapper(ImplosionCompressorRecipe baseRecipe) {
super(baseRecipe);
IGuiHelper guiHelper = TechRebornJeiPlugin.jeiHelpers.getGuiHelper();
IDrawableStatic progressStatic = guiHelper.createDrawable(GuiImplosionCompressor.texture, 176, 14, 21, 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, 44, 13);
}
}