Add assembling machine recipes

This commit is contained in:
mezz 2015-12-30 21:40:21 -08:00
parent 4b804c3521
commit 05d8a5c787
7 changed files with 173 additions and 3 deletions

View file

@ -10,7 +10,7 @@ import techreborn.tiles.TileAssemblingMachine;
public class GuiAssemblingMachine extends GuiContainer {
private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/assembling_machine.png");
public static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/assembling_machine.png");
TileAssemblingMachine assemblingmachine;
ContainerAssemblingMachine containerAssemblingMachine;

View file

@ -5,5 +5,6 @@ public class RecipeCategoryUids {
}
public static final String ALLOY_SMELTER = "AlloySmelter";
public static final String ASSEMBLING_MACHINE = "AssemblingMachine";
public static final String FUSION_REACTOR = "FusionReactor";
}

View file

@ -1,5 +1,11 @@
package techreborn.compat.jei;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import mezz.jei.api.IGuiHelper;
import mezz.jei.api.IItemRegistry;
import mezz.jei.api.IJeiHelpers;
@ -10,11 +16,15 @@ import mezz.jei.api.recipe.VanillaRecipeCategoryUid;
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.client.container.ContainerAlloyFurnace;
import techreborn.client.container.ContainerAlloySmelter;
import techreborn.client.container.ContainerAssemblingMachine;
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.fusionReactor.FusionReactorRecipeCategory;
import techreborn.compat.jei.fusionReactor.FusionReactorRecipeHandler;
@ -43,21 +53,28 @@ public class TechRebornJeiPlugin implements IModPlugin {
registry.addRecipeCategories(
new AlloySmelterRecipeCategory(guiHelper),
new AssemblingMachineRecipeCategory(guiHelper),
new FusionReactorRecipeCategory(guiHelper)
);
registry.addRecipeHandlers(
new AlloySmelterRecipeHandler(),
new AssemblingMachineRecipeHandler(),
new FusionReactorRecipeHandler()
);
registry.addRecipes(RecipeHandler.recipeList);
registry.addRecipes(FusionReactorRecipeHelper.reactorRecipes);
if (mezz.jei.config.Config.isDebugModeEnabled()) {
addDebugRecipes(registry);
}
IRecipeTransferRegistry recipeTransferRegistry = registry.getRecipeTransferRegistry();
recipeTransferRegistry.addRecipeTransferHandler(ContainerAlloyFurnace.class, RecipeCategoryUids.ALLOY_SMELTER, 0, 2, 4, 36);
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(ContainerFusionReactor.class, RecipeCategoryUids.FUSION_REACTOR, 0, 2, 3, 36);
}
@ -65,4 +82,16 @@ public class TechRebornJeiPlugin implements IModPlugin {
public void onRecipeRegistryAvailable(IRecipeRegistry recipeRegistry) {
}
private static void addDebugRecipes(IModRegistry registry) {
ItemStack diamondBlock = new ItemStack(Blocks.diamond_block);
ItemStack dirtBlock = new ItemStack(Blocks.dirt);
List<Object> debugRecipes = new ArrayList<>();
for (int i = 0; i < 10; i++) {
int time = (int) Math.round(200 + Math.random() * 100);
AssemblingMachineRecipe assemblingMachineRecipe = new AssemblingMachineRecipe(diamondBlock, diamondBlock, dirtBlock, time, 120);
debugRecipes.add(assemblingMachineRecipe);
}
registry.addRecipes(debugRecipes);
}
}

View file

@ -27,8 +27,8 @@ public class AlloySmelterRecipeCategory implements IRecipeCategory {
public AlloySmelterRecipeCategory(IGuiHelper guiHelper) {
background = guiHelper.createDrawable(GuiAlloySmelter.texture, 46, 16, 91, 54);
IDrawableStatic flameDrawable = guiHelper.createDrawable(GuiAlloySmelter.texture, 176, 0, 14, 14);
electricity = guiHelper.createAnimatedDrawable(flameDrawable, 300, IDrawableAnimated.StartDirection.TOP, true);
IDrawableStatic electricityDrawable = guiHelper.createDrawable(GuiAlloySmelter.texture, 176, 0, 14, 14);
electricity = guiHelper.createAnimatedDrawable(electricityDrawable, 300, IDrawableAnimated.StartDirection.TOP, true);
title = StatCollector.translateToLocal("techreborn.jei.category.alloy.furnace");
}

View file

@ -0,0 +1,77 @@
package techreborn.compat.jei.assemblingMachine;
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.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.GuiAssemblingMachine;
import techreborn.compat.jei.RecipeCategoryUids;
public class AssemblingMachineRecipeCategory implements IRecipeCategory {
private static final int INPUT_SLOT_0 = 0;
private static final int INPUT_SLOT_1 = 1;
private static final int OUTPUT_SLOT = 2;
private final IDrawable background;
private final IDrawableAnimated electricity;
private final String title;
public AssemblingMachineRecipeCategory(IGuiHelper guiHelper) {
background = guiHelper.createDrawable(GuiAssemblingMachine.texture, 46, 16, 91, 54);
IDrawableStatic electricityDrawable = guiHelper.createDrawable(GuiAssemblingMachine.texture, 176, 0, 14, 14);
electricity = guiHelper.createAnimatedDrawable(electricityDrawable, 300, IDrawableAnimated.StartDirection.TOP, true);
title = StatCollector.translateToLocal("tile.techreborn.assemblingmachine.name");
}
@Nonnull
@Override
public String getUid() {
return RecipeCategoryUids.ASSEMBLING_MACHINE;
}
@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, 10, 20);
}
@Override
public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull IRecipeWrapper recipeWrapper) {
IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks();
guiItemStacks.init(INPUT_SLOT_0, true, 0, 0);
guiItemStacks.init(INPUT_SLOT_1, true, 18, 0);
guiItemStacks.init(OUTPUT_SLOT, false, 69, 18);
if (recipeWrapper instanceof AssemblingMachineRecipeWrapper) {
AssemblingMachineRecipeWrapper recipe = (AssemblingMachineRecipeWrapper) recipeWrapper;
guiItemStacks.set(INPUT_SLOT_0, recipe.getInputs().get(0));
guiItemStacks.set(INPUT_SLOT_1, recipe.getInputs().get(1));
guiItemStacks.set(OUTPUT_SLOT, recipe.getOutputs());
}
}
}

View file

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

View file

@ -0,0 +1,30 @@
package techreborn.compat.jei.assemblingMachine;
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.AssemblingMachineRecipe;
import techreborn.client.gui.GuiAssemblingMachine;
import techreborn.compat.jei.BaseRecipeWrapper;
import techreborn.compat.jei.TechRebornJeiPlugin;
public class AssemblingMachineRecipeWrapper extends BaseRecipeWrapper {
private final IDrawableAnimated progress;
public AssemblingMachineRecipeWrapper(AssemblingMachineRecipe baseRecipe) {
super(baseRecipe);
IGuiHelper guiHelper = TechRebornJeiPlugin.jeiHelpers.getGuiHelper();
IDrawableStatic progressStatic = guiHelper.createDrawable(GuiAssemblingMachine.texture, 176, 14, 20, 18);
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, 40, 18);
}
}