use of binnie.core.api.genetics.IBreedingSystem in project Binnie by ForestryMC.
the class ManagerGenetics method getSystem.
public IBreedingSystem getSystem(final ISpeciesRoot root) {
String rootUID = root.getUID();
IBreedingSystem system = this.getSystem(rootUID);
Preconditions.checkState(system != null, "Could not find system for species root %s", rootUID);
return system;
}
use of binnie.core.api.genetics.IBreedingSystem in project Binnie by ForestryMC.
the class InoculatorRecipeMaker method create.
public static List<InoculatorRecipeWrapper> create() {
List<InoculatorRecipeWrapper> recipes = new ArrayList<>();
for (IBreedingSystem system : Binnie.GENETICS.getActiveSystems()) {
ISpeciesRoot root = system.getSpeciesRoot();
IChromosomeType speciesChromosomeType = root.getSpeciesChromosomeType();
IAllele[] defaultTemplate = root.getDefaultTemplate();
IIndividual individual = root.templateAsIndividual(defaultTemplate);
for (ISpeciesType speciesType : system.getActiveTypes()) {
if (system.isDNAManipulable(speciesType)) {
ItemStack memberStack = root.getMemberStack(individual, speciesType);
memberStack.setItemDamage(OreDictionary.WILDCARD_VALUE);
IAllele species = defaultTemplate[speciesChromosomeType.ordinal()];
ItemStack serum = ItemSerum.create(new Gene(species, speciesChromosomeType, root));
// set fully charged
serum.setItemDamage(0);
recipes.add(new InoculatorRecipeWrapper(serum, memberStack));
recipes.add(new SplicerRecipeWrapper(serum, memberStack));
ItemStack serumArray = ItemSerumArray.create(new Gene(species, speciesChromosomeType, root));
// set fully charged
serumArray.setItemDamage(0);
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));
}
}
}
return recipes;
}
Aggregations