Skip to content

Commit

Permalink
Add Splicer JEI recipes, improve Inoculator JEI recipes
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Jan 20, 2017
1 parent a990ce3 commit 3530a0e
Show file tree
Hide file tree
Showing 11 changed files with 173 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import binnie.genetics.integration.jei.inoculator.InoculatorRecipeCategory;
import binnie.genetics.integration.jei.inoculator.InoculatorRecipeMaker;
import binnie.genetics.integration.jei.inoculator.InoculatorRecipeWrapper;
import binnie.genetics.integration.jei.inoculator.SplicerRecipeCategory;
import binnie.genetics.integration.jei.inoculator.SplicerRecipeWrapper;
import binnie.genetics.integration.jei.isolator.IsolatorRecipeCategory;
import binnie.genetics.integration.jei.isolator.IsolatorRecipeMaker;
import binnie.genetics.integration.jei.isolator.IsolatorRecipeWrapper;
Expand All @@ -21,6 +23,7 @@
import binnie.genetics.integration.jei.sequencer.SequencerRecipeCategory;
import binnie.genetics.integration.jei.sequencer.SequencerRecipeMaker;
import binnie.genetics.integration.jei.sequencer.SequencerRecipeWrapper;
import binnie.genetics.machine.AdvGeneticMachine;
import binnie.genetics.machine.GeneticMachine;
import binnie.genetics.machine.LaboratoryMachine;
import binnie.genetics.machine.incubator.Incubator;
Expand Down Expand Up @@ -65,7 +68,8 @@ public void register(IModRegistry registry) {
new IsolatorRecipeCategory(),
new PolymeriserRecipeCategory(),
new SequencerRecipeCategory(),
new InoculatorRecipeCategory()
new InoculatorRecipeCategory(),
new SplicerRecipeCategory()
);

registry.addRecipeHandlers(
Expand All @@ -74,14 +78,16 @@ public void register(IModRegistry registry) {
new SimpleRecipeHandler<>(IsolatorRecipeWrapper.class, RecipeUids.ISOLATOR),
new SimpleRecipeHandler<>(PolymeriserRecipeWrapper.class, RecipeUids.POLYMERISER),
new SimpleRecipeHandler<>(SequencerRecipeWrapper.class, RecipeUids.SEQUENCER),
new SimpleRecipeHandler<>(InoculatorRecipeWrapper.class, RecipeUids.INOCULATOR)
new SimpleRecipeHandler<>(InoculatorRecipeWrapper.class, RecipeUids.INOCULATOR),
new SimpleRecipeHandler<>(SplicerRecipeWrapper.class, RecipeUids.SPLICER)
);

registry.addRecipeCategoryCraftingItem(LaboratoryMachine.Incubator.get(1), RecipeUids.INCUBATOR, RecipeUids.INCUBATOR_LARVAE);
registry.addRecipeCategoryCraftingItem(GeneticMachine.Isolator.get(1), RecipeUids.ISOLATOR);
registry.addRecipeCategoryCraftingItem(GeneticMachine.Polymeriser.get(1), RecipeUids.POLYMERISER);
registry.addRecipeCategoryCraftingItem(GeneticMachine.Sequencer.get(1), RecipeUids.SEQUENCER);
registry.addRecipeCategoryCraftingItem(GeneticMachine.Inoculator.get(1), RecipeUids.INOCULATOR);
registry.addRecipeCategoryCraftingItem(AdvGeneticMachine.Splicer.get(1), RecipeUids.SPLICER);

registry.addRecipes(Incubator.getRecipes());
registry.addRecipes(LarvaeIncubatorRecipeMaker.create(Incubator.getLarvaeRecipe()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ public class RecipeUids {
public static final String POLYMERISER = "binnie.genetics.polymeriser";
public static final String SEQUENCER = "binnie.genetics.sequencer";
public static final String INOCULATOR = "binnie.genetics.inoculator";
public static final String SPLICER = "binnie.genetics.splicer";
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,15 @@

public class InoculatorRecipeCategory extends BlankRecipeCategory<InoculatorRecipeWrapper> {
private final IDrawableAnimated arrowAnimated;
private final boolean splicer;

public InoculatorRecipeCategory() {
this(false);
}

protected InoculatorRecipeCategory(boolean splicer) {
this.arrowAnimated = GeneticsJeiPlugin.drawables.createArrowAnimated(56);
this.splicer = splicer;
}

@Override
Expand All @@ -45,8 +51,10 @@ public IDrawable getBackground() {

@Override
public void drawExtras(Minecraft minecraft) {
IDrawable tank = GeneticsJeiPlugin.drawables.getTank();
tank.draw(minecraft, 0, 0);
if (!splicer) {
IDrawable tank = GeneticsJeiPlugin.drawables.getTank();
tank.draw(minecraft, 0, 0);
}

IDrawable arrow = GeneticsJeiPlugin.drawables.getArrow();
arrow.draw(minecraft, 69, 25);
Expand All @@ -61,16 +69,20 @@ public void drawExtras(Minecraft minecraft) {

@Override
public void setRecipe(IRecipeLayout recipeLayout, InoculatorRecipeWrapper recipeWrapper, IIngredients ingredients) {
IDrawable tankOverlay = GeneticsJeiPlugin.drawables.getTankOverlay();
IGuiFluidStackGroup fluidStacks = recipeLayout.getFluidStacks();
fluidStacks.init(Inoculator.TANK_VEKTOR, true, 1, 1, 16, 58, 100, false, tankOverlay);
fluidStacks.set(ingredients);
if (!splicer) {
IDrawable tankOverlay = GeneticsJeiPlugin.drawables.getTankOverlay();
IGuiFluidStackGroup fluidStacks = recipeLayout.getFluidStacks();
fluidStacks.init(Inoculator.TANK_VEKTOR, true, 1, 1, 16, 58, 100, false, tankOverlay);
fluidStacks.set(ingredients);
}

IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks();
itemStacks.init(0, true, 22, 0);
itemStacks.init(1, true, 42, 21);
itemStacks.init(2, false, 92, 21);

recipeWrapper.setCurrentIngredients(itemStacks.getGuiIngredients());

IFocus<?> focus = recipeLayout.getFocus();
Object focusValue = focus.getValue();
if (focusValue instanceof ItemStack) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import binnie.Binnie;
import binnie.core.genetics.BreedingSystem;
import binnie.core.genetics.Gene;
import binnie.genetics.genetics.Engineering;
import binnie.genetics.item.ItemSerum;
import binnie.genetics.item.ItemSerumArray;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.IIndividual;
Expand Down Expand Up @@ -33,8 +35,20 @@ public static List<InoculatorRecipeWrapper> create() {
ItemStack serum = ItemSerum.create(new Gene(species, speciesChromosomeType, root));
serum.setItemDamage(0); // set fully charged

InoculatorRecipeWrapper recipeWrapper = new InoculatorRecipeWrapper(serum, memberStack);
recipes.add(recipeWrapper);
recipes.add(new InoculatorRecipeWrapper(serum, memberStack));
recipes.add(new SplicerRecipeWrapper(serum, memberStack));

ItemStack serumArray = ItemSerumArray.create(new Gene(species, speciesChromosomeType, root));
serumArray.setItemDamage(0); // set fully charged
for (IChromosomeType chromosomeType : root.getKaryotype()) {
if (chromosomeType != speciesChromosomeType) {
IAllele allele = defaultTemplate[chromosomeType.ordinal()];
Engineering.addGene(serumArray, new Gene(allele, chromosomeType, root));
}
}

recipes.add(new InoculatorRecipeWrapper(serumArray, memberStack));
recipes.add(new SplicerRecipeWrapper(serumArray, memberStack));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,39 @@

import binnie.genetics.item.GeneticLiquid;
import binnie.genetics.machine.inoculator.InoculatorLogic;
import binnie.genetics.machine.splicer.SplicerLogic;
import mezz.jei.api.gui.IGuiIngredient;
import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.BlankRecipeWrapper;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import org.apache.commons.lang3.time.DurationFormatUtils;

import javax.annotation.Nullable;
import java.awt.Color;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Arrays;
import java.util.Map;

public class InoculatorRecipeWrapper extends BlankRecipeWrapper {
private static final FluidStack BACTERIA_VECTOR = GeneticLiquid.BacteriaVector.get(InoculatorLogic.BACTERIA_PER_PROCESS);

private final ItemStack inputSerum;
private final ItemStack wildcardTarget;
private final boolean splicer;
@Nullable
private Map<Integer, ? extends IGuiIngredient<ItemStack>> currentIngredients;

public InoculatorRecipeWrapper(ItemStack inputSerum, ItemStack wildcardTarget) {
this(inputSerum, wildcardTarget, false);
}

protected InoculatorRecipeWrapper(ItemStack inputSerum, ItemStack wildcardTarget, boolean splicer) {
this.inputSerum = inputSerum;
this.wildcardTarget = wildcardTarget;
this.splicer = splicer;
}

@Override
Expand All @@ -30,12 +46,56 @@ public void getIngredients(IIngredients ingredients) {

ingredients.setOutput(ItemStack.class, wildcardTarget);

ingredients.setInput(FluidStack.class, BACTERIA_VECTOR);
if (!splicer) {
ingredients.setInput(FluidStack.class, BACTERIA_VECTOR);
}
}

public void setCurrentIngredients(Map<Integer, ? extends IGuiIngredient<ItemStack>> currentIngredients) {
this.currentIngredients = currentIngredients;
}

@Override
public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
if (currentIngredients == null) {
return;
}

ItemStack inputSerum = null;
ItemStack targetStack = null;

IGuiIngredient<ItemStack> guiIngredient = currentIngredients.get(0);
if (guiIngredient != null) {
inputSerum = guiIngredient.getDisplayedIngredient();
}
guiIngredient = currentIngredients.get(1);
if (guiIngredient != null) {
targetStack = guiIngredient.getDisplayedIngredient();
}

if (inputSerum != null && targetStack != null) {
int power;
int processTicks;
if (splicer) {
int numGenes = SplicerLogic.getGenesToUse(inputSerum, targetStack);
power = SplicerLogic.getProcessEnergy(numGenes);
processTicks = SplicerLogic.getProcessLength(numGenes);
} else {
power = InoculatorLogic.getProcessBaseEnergy(inputSerum);
processTicks = InoculatorLogic.getProcessLength(inputSerum);
}

// todo: 1.11 use MinecraftForgeClient#getLocale() for integer formatting
NumberFormat decimalFormat = DecimalFormat.getIntegerInstance();
String powerString = decimalFormat.format(power) + " RF";
int xPower = 15 + (recipeWidth - minecraft.fontRendererObj.getStringWidth(powerString)) / 2;
minecraft.fontRendererObj.drawString(powerString, xPower, 5, Color.gray.getRGB());

// todo: find a localized duration formatter
String processTime = DurationFormatUtils.formatDurationWords(processTicks * 1000 / 20, true, true);
int xTime = 15 + (recipeWidth - minecraft.fontRendererObj.getStringWidth(processTime)) / 2;
minecraft.fontRendererObj.drawString(processTime, xTime, 45, Color.gray.getRGB());
}
}

public ItemStack getInputSerum() {
Expand All @@ -45,4 +105,5 @@ public ItemStack getInputSerum() {
public ItemStack getWildcardTarget() {
return wildcardTarget;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package binnie.genetics.integration.jei.inoculator;

import binnie.genetics.integration.jei.RecipeUids;

public class SplicerRecipeCategory extends InoculatorRecipeCategory {
public SplicerRecipeCategory() {
super(true);
}

@Override
public String getUid() {
return RecipeUids.SPLICER;
}

@Override
public String getTitle() {
return "Splicing";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package binnie.genetics.integration.jei.inoculator;

import net.minecraft.item.ItemStack;

public class SplicerRecipeWrapper extends InoculatorRecipeWrapper {
public SplicerRecipeWrapper(ItemStack inputSerum, ItemStack wildcardTarget) {
super(inputSerum, wildcardTarget, true);
}
}
2 changes: 1 addition & 1 deletion src/main/java/binnie/genetics/item/ItemGene.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public void addInformation(final ItemStack itemstack, final EntityPlayer entityP
public abstract String getItemStackDisplayName(final ItemStack p0);

@Override
public void getSubItems(final Item par1, final CreativeTabs par2CreativeTabs, final List itemList) {
public void getSubItems(final Item par1, final CreativeTabs par2CreativeTabs, final List<ItemStack> itemList) {
}

public abstract IGeneItem getGeneItem(final ItemStack p0);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/binnie/genetics/item/ItemSerum.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public int getMaxCharges(ItemStack itemStack) {
}

@Override
public void getSubItems(final Item par1, final CreativeTabs par2CreativeTabs, final List itemList) {
public void getSubItems(final Item par1, final CreativeTabs par2CreativeTabs, final List<ItemStack> itemList) {
for (final ISpeciesRoot root : AlleleManager.alleleRegistry.getSpeciesRoot().values()) {
final Map<IChromosomeType, List<IAllele>> chromosomeMap = Binnie.Genetics.getChromosomeMap(root);
for (final Map.Entry<IChromosomeType, List<IAllele>> entry : chromosomeMap.entrySet()) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/binnie/genetics/item/ItemSerumArray.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public GeneArrayItem getGeneItem(final ItemStack stack) {
}

@Override
public void getSubItems(final Item par1, final CreativeTabs par2CreativeTabs, final List itemList) {
public void getSubItems(final Item par1, final CreativeTabs par2CreativeTabs, final List<ItemStack> itemList) {
for (final ISpeciesRoot root : AlleleManager.alleleRegistry.getSpeciesRoot().values()) {
for (final IIndividual template : root.getIndividualTemplates()) {
if (template.getGenome().getPrimary().isSecret()) {
Expand Down
Loading

0 comments on commit 3530a0e

Please sign in to comment.