Add grinder recipes

This commit is contained in:
mezz 2015-12-31 00:56:09 -08:00
parent c187f931ce
commit 5addee32e6
14 changed files with 205 additions and 13 deletions

View file

@ -110,7 +110,7 @@ dependencies {
compile name: "CraftTweaker", version: "1.8.8-3.0.0", classifier: "Dev" compile name: "CraftTweaker", version: "1.8.8-3.0.0", classifier: "Dev"
// shade 'IC2-Classic-API-STANDALONE:IC2-Classic-API-STANDALONE:1.1.0.19-5:api' // shade 'IC2-Classic-API-STANDALONE:IC2-Classic-API-STANDALONE:1.1.0.19-5:api'
compile 'RebornCore:RebornCore-1.8.9:1.3.0.+:dev' compile 'RebornCore:RebornCore-1.8.9:1.3.0.+:dev'
deobfCompile "mezz.jei:jei_1.8.9:2.13.0.52" deobfCompile "mezz.jei:jei_1.8.9:2.13.2.54"
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
} }

View file

@ -10,7 +10,7 @@ import techreborn.tiles.TileGrinder;
public class GuiGrinder extends GuiContainer { public class GuiGrinder extends GuiContainer {
private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/industrial_grinder.png"); public static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/industrial_grinder.png");
TileGrinder grinder; TileGrinder grinder;
ContainerGrinder containerGrinder; ContainerGrinder containerGrinder;

View file

@ -9,10 +9,10 @@ import net.minecraft.item.ItemStack;
import mezz.jei.api.recipe.BlankRecipeWrapper; import mezz.jei.api.recipe.BlankRecipeWrapper;
import techreborn.api.recipe.BaseRecipe; import techreborn.api.recipe.BaseRecipe;
public abstract class BaseRecipeWrapper extends BlankRecipeWrapper { public abstract class BaseRecipeWrapper<T extends BaseRecipe> extends BlankRecipeWrapper {
protected final BaseRecipe baseRecipe; protected final T baseRecipe;
public BaseRecipeWrapper(BaseRecipe baseRecipe) { public BaseRecipeWrapper(T baseRecipe) {
this.baseRecipe = baseRecipe; this.baseRecipe = baseRecipe;
} }

View file

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

View file

@ -24,6 +24,7 @@ import techreborn.client.container.ContainerBlastFurnace;
import techreborn.client.container.ContainerCentrifuge; import techreborn.client.container.ContainerCentrifuge;
import techreborn.client.container.ContainerChemicalReactor; import techreborn.client.container.ContainerChemicalReactor;
import techreborn.client.container.ContainerFusionReactor; import techreborn.client.container.ContainerFusionReactor;
import techreborn.client.container.ContainerGrinder;
import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeCategory; import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeCategory;
import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeHandler; import techreborn.compat.jei.alloySmelter.AlloySmelterRecipeHandler;
import techreborn.compat.jei.assemblingMachine.AssemblingMachineRecipeCategory; import techreborn.compat.jei.assemblingMachine.AssemblingMachineRecipeCategory;
@ -36,6 +37,8 @@ import techreborn.compat.jei.chemicalReactor.ChemicalReactorRecipeCategory;
import techreborn.compat.jei.chemicalReactor.ChemicalReactorRecipeHandler; import techreborn.compat.jei.chemicalReactor.ChemicalReactorRecipeHandler;
import techreborn.compat.jei.fusionReactor.FusionReactorRecipeCategory; import techreborn.compat.jei.fusionReactor.FusionReactorRecipeCategory;
import techreborn.compat.jei.fusionReactor.FusionReactorRecipeHandler; import techreborn.compat.jei.fusionReactor.FusionReactorRecipeHandler;
import techreborn.compat.jei.grinder.GrinderRecipeCategory;
import techreborn.compat.jei.grinder.GrinderRecipeHandler;
@mezz.jei.api.JEIPlugin @mezz.jei.api.JEIPlugin
public class TechRebornJeiPlugin implements IModPlugin { public class TechRebornJeiPlugin implements IModPlugin {
@ -66,7 +69,8 @@ public class TechRebornJeiPlugin implements IModPlugin {
new BlastFurnaceRecipeCategory(guiHelper), new BlastFurnaceRecipeCategory(guiHelper),
new CentrifugeRecipeCategory(guiHelper), new CentrifugeRecipeCategory(guiHelper),
new ChemicalReactorRecipeCategory(guiHelper), new ChemicalReactorRecipeCategory(guiHelper),
new FusionReactorRecipeCategory(guiHelper) new FusionReactorRecipeCategory(guiHelper),
new GrinderRecipeCategory(guiHelper)
); );
registry.addRecipeHandlers( registry.addRecipeHandlers(
@ -75,7 +79,8 @@ public class TechRebornJeiPlugin implements IModPlugin {
new BlastFurnaceRecipeHandler(), new BlastFurnaceRecipeHandler(),
new CentrifugeRecipeHandler(), new CentrifugeRecipeHandler(),
new ChemicalReactorRecipeHandler(), new ChemicalReactorRecipeHandler(),
new FusionReactorRecipeHandler() new FusionReactorRecipeHandler(),
new GrinderRecipeHandler()
); );
registry.addRecipes(RecipeHandler.recipeList); registry.addRecipes(RecipeHandler.recipeList);
@ -94,6 +99,7 @@ public class TechRebornJeiPlugin implements IModPlugin {
recipeTransferRegistry.addRecipeTransferHandler(ContainerCentrifuge.class, RecipeCategoryUids.CENTRIFUGE, 0, 2, 11, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerCentrifuge.class, RecipeCategoryUids.CENTRIFUGE, 0, 2, 11, 36);
recipeTransferRegistry.addRecipeTransferHandler(ContainerChemicalReactor.class, RecipeCategoryUids.CHEMICAL_REACTOR, 0, 2, 8, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerChemicalReactor.class, RecipeCategoryUids.CHEMICAL_REACTOR, 0, 2, 8, 36);
recipeTransferRegistry.addRecipeTransferHandler(ContainerFusionReactor.class, RecipeCategoryUids.FUSION_REACTOR, 0, 2, 3, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerFusionReactor.class, RecipeCategoryUids.FUSION_REACTOR, 0, 2, 3, 36);
recipeTransferRegistry.addRecipeTransferHandler(ContainerGrinder.class, RecipeCategoryUids.GRINDER, 0, 2, 6, 36);
} }
@Override @Override

View file

@ -12,7 +12,7 @@ import techreborn.client.gui.GuiAlloySmelter;
import techreborn.compat.jei.BaseRecipeWrapper; import techreborn.compat.jei.BaseRecipeWrapper;
import techreborn.compat.jei.TechRebornJeiPlugin; import techreborn.compat.jei.TechRebornJeiPlugin;
public class AlloySmelterRecipeWrapper extends BaseRecipeWrapper { public class AlloySmelterRecipeWrapper extends BaseRecipeWrapper<AlloySmelterRecipe> {
private final IDrawableAnimated arrow; private final IDrawableAnimated arrow;
public AlloySmelterRecipeWrapper(AlloySmelterRecipe baseRecipe) { public AlloySmelterRecipeWrapper(AlloySmelterRecipe baseRecipe) {

View file

@ -12,7 +12,7 @@ import techreborn.client.gui.GuiAssemblingMachine;
import techreborn.compat.jei.BaseRecipeWrapper; import techreborn.compat.jei.BaseRecipeWrapper;
import techreborn.compat.jei.TechRebornJeiPlugin; import techreborn.compat.jei.TechRebornJeiPlugin;
public class AssemblingMachineRecipeWrapper extends BaseRecipeWrapper { public class AssemblingMachineRecipeWrapper extends BaseRecipeWrapper<AssemblingMachineRecipe> {
private final IDrawableAnimated progress; private final IDrawableAnimated progress;
public AssemblingMachineRecipeWrapper(AssemblingMachineRecipe baseRecipe) { public AssemblingMachineRecipeWrapper(AssemblingMachineRecipe baseRecipe) {

View file

@ -12,7 +12,7 @@ import techreborn.client.gui.GuiBlastFurnace;
import techreborn.compat.jei.BaseRecipeWrapper; import techreborn.compat.jei.BaseRecipeWrapper;
import techreborn.compat.jei.TechRebornJeiPlugin; import techreborn.compat.jei.TechRebornJeiPlugin;
public class BlastFurnaceRecipeWrapper extends BaseRecipeWrapper { public class BlastFurnaceRecipeWrapper extends BaseRecipeWrapper<BlastFurnaceRecipe> {
private final IDrawableAnimated progress; private final IDrawableAnimated progress;
public BlastFurnaceRecipeWrapper(BlastFurnaceRecipe baseRecipe) { public BlastFurnaceRecipeWrapper(BlastFurnaceRecipe baseRecipe) {

View file

@ -12,7 +12,7 @@ import techreborn.client.gui.GuiCentrifuge;
import techreborn.compat.jei.BaseRecipeWrapper; import techreborn.compat.jei.BaseRecipeWrapper;
import techreborn.compat.jei.TechRebornJeiPlugin; import techreborn.compat.jei.TechRebornJeiPlugin;
public class CentrifugeRecipeWrapper extends BaseRecipeWrapper { public class CentrifugeRecipeWrapper extends BaseRecipeWrapper<CentrifugeRecipe> {
private final IDrawableAnimated progressUp; private final IDrawableAnimated progressUp;
private final IDrawableAnimated progressLeft; private final IDrawableAnimated progressLeft;
private final IDrawableAnimated progressDown; private final IDrawableAnimated progressDown;

View file

@ -12,7 +12,7 @@ import techreborn.client.gui.GuiChemicalReactor;
import techreborn.compat.jei.BaseRecipeWrapper; import techreborn.compat.jei.BaseRecipeWrapper;
import techreborn.compat.jei.TechRebornJeiPlugin; import techreborn.compat.jei.TechRebornJeiPlugin;
public class ChemicalReactorRecipeWrapper extends BaseRecipeWrapper { public class ChemicalReactorRecipeWrapper extends BaseRecipeWrapper<ChemicalReactorRecipe> {
private final IDrawableAnimated progress; private final IDrawableAnimated progress;
public ChemicalReactorRecipeWrapper(ChemicalReactorRecipe baseRecipe) { public ChemicalReactorRecipeWrapper(ChemicalReactorRecipe baseRecipe) {

View file

@ -0,0 +1,105 @@
package techreborn.compat.jei.grinder;
import javax.annotation.Nonnull;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.FluidStack;
import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IGuiFluidStackGroup;
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.GuiGrinder;
import techreborn.compat.jei.RecipeCategoryUids;
import techreborn.tiles.TileGrinder;
public class GrinderRecipeCategory implements IRecipeCategory {
private static final int[] INPUT_SLOTS = {0, 1};
private static final int[] OUTPUT_SLOTS = {2, 3, 4, 5};
private static final int INPUT_TANK = 0;
private final IDrawable background;
private final IDrawable blankArea; // for covering the lightning power symbol
private final IDrawable tankOverlay;
private final String title;
public GrinderRecipeCategory(IGuiHelper guiHelper) {
background = guiHelper.createDrawable(GuiGrinder.texture, 7, 15, 141, 55);
blankArea = guiHelper.createDrawable(GuiGrinder.texture, 50, 45, 6, 6);
tankOverlay = guiHelper.createDrawable(GuiGrinder.texture, 176, 86, 12, 47);
title = StatCollector.translateToLocal("tile.techreborn.grinder.name");
}
@Nonnull
@Override
public String getUid() {
return RecipeCategoryUids.GRINDER;
}
@Nonnull
@Override
public String getTitle() {
return title;
}
@Nonnull
@Override
public IDrawable getBackground() {
return background;
}
@Override
public void drawExtras(Minecraft minecraft) {
blankArea.draw(minecraft, 129, 49);
}
@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, 24, 10);
guiItemStacks.init(INPUT_SLOTS[1], true, 24, 28);
guiItemStacks.init(OUTPUT_SLOTS[0], false, 69, 19);
guiItemStacks.init(OUTPUT_SLOTS[1], false, 87, 19);
guiItemStacks.init(OUTPUT_SLOTS[2], false, 105, 19);
guiItemStacks.init(OUTPUT_SLOTS[3], false, 123, 19);
IGuiFluidStackGroup guiFluidStacks = recipeLayout.getFluidStacks();
guiFluidStacks.init(INPUT_TANK, true, 4, 4, 12, 47, TileGrinder.TANK_CAPACITY, tankOverlay);
if (recipeWrapper instanceof GrinderRecipeWrapper) {
GrinderRecipeWrapper recipe = (GrinderRecipeWrapper) recipeWrapper;
List<ItemStack> inputs = recipe.getInputs();
for (int i = 0; i < inputs.size() && i < INPUT_SLOTS.length; i++) {
int inputSlot = INPUT_SLOTS[i];
ItemStack input = inputs.get(i);
guiItemStacks.set(inputSlot, input);
}
List<ItemStack> outputs = recipe.getOutputs();
for (int i = 0; i < outputs.size() && i < OUTPUT_SLOTS.length; i++) {
int outputSlot = OUTPUT_SLOTS[i];
ItemStack output = outputs.get(i);
guiItemStacks.set(outputSlot, output);
}
List<FluidStack> fluidInputs = recipe.getFluidInputs();
if (fluidInputs.size() > 0) {
guiFluidStacks.set(INPUT_TANK, fluidInputs.get(0));
}
}
}
}

View file

@ -0,0 +1,34 @@
package techreborn.compat.jei.grinder;
import javax.annotation.Nonnull;
import mezz.jei.api.recipe.IRecipeHandler;
import mezz.jei.api.recipe.IRecipeWrapper;
import techreborn.api.recipe.machines.ChemicalReactorRecipe;
import techreborn.api.recipe.machines.GrinderRecipe;
import techreborn.compat.jei.RecipeCategoryUids;
public class GrinderRecipeHandler implements IRecipeHandler<GrinderRecipe> {
@Nonnull
@Override
public Class<GrinderRecipe> getRecipeClass() {
return GrinderRecipe.class;
}
@Nonnull
@Override
public String getRecipeCategoryUid() {
return RecipeCategoryUids.GRINDER;
}
@Nonnull
@Override
public IRecipeWrapper getRecipeWrapper(@Nonnull GrinderRecipe recipe) {
return new GrinderRecipeWrapper(recipe);
}
@Override
public boolean isRecipeValid(@Nonnull GrinderRecipe recipe) {
return true;
}
}

View file

@ -0,0 +1,45 @@
package techreborn.compat.jei.grinder;
import javax.annotation.Nonnull;
import java.util.Collections;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraftforge.fluids.FluidStack;
import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawableAnimated;
import mezz.jei.api.gui.IDrawableStatic;
import techreborn.api.recipe.machines.GrinderRecipe;
import techreborn.client.gui.GuiGrinder;
import techreborn.compat.jei.BaseRecipeWrapper;
import techreborn.compat.jei.TechRebornJeiPlugin;
public class GrinderRecipeWrapper extends BaseRecipeWrapper<GrinderRecipe> {
private final IDrawableAnimated progress;
public GrinderRecipeWrapper(GrinderRecipe baseRecipe) {
super(baseRecipe);
IGuiHelper guiHelper = TechRebornJeiPlugin.jeiHelpers.getGuiHelper();
IDrawableStatic progressStatic = guiHelper.createDrawable(GuiGrinder.texture, 176, 14, 24, 17);
int ticksPerCycle = baseRecipe.tickTime();
this.progress = guiHelper.createAnimatedDrawable(progressStatic, ticksPerCycle, IDrawableAnimated.StartDirection.LEFT, false);
}
@Override
public List<FluidStack> getFluidInputs() {
if (baseRecipe.fluidStack != null) {
return Collections.singletonList(baseRecipe.fluidStack);
} else {
return Collections.emptyList();
}
}
@Override
public void drawAnimations(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight) {
super.drawAnimations(minecraft, recipeWidth, recipeHeight);
progress.draw(minecraft, 44, 20);
}
}

View file

@ -24,10 +24,11 @@ import techreborn.lib.Reference;
import techreborn.powerSystem.TilePowerAcceptor; import techreborn.powerSystem.TilePowerAcceptor;
public class TileGrinder extends TilePowerAcceptor implements IWrenchable, IFluidHandler, IInventory, ISidedInventory { public class TileGrinder extends TilePowerAcceptor implements IWrenchable, IFluidHandler, IInventory, ISidedInventory {
public static final int TANK_CAPACITY = 16000;
public int tickTime; public int tickTime;
public Inventory inventory = new Inventory(6, "TileGrinder", 64, this); public Inventory inventory = new Inventory(6, "TileGrinder", 64, this);
public Tank tank = new Tank("TileGrinder", 16000, this); public Tank tank = new Tank("TileGrinder", TANK_CAPACITY, this);
public RecipeCrafter crafter; public RecipeCrafter crafter;
public int connectionStatus; public int connectionStatus;