Test with stuff + Forestry potential support
This commit is contained in:
parent
5b05cf651b
commit
bd26e441cb
174 changed files with 5602 additions and 0 deletions
160
BM_src/forestry/api/genetics/ISpeciesRoot.java
Normal file
160
BM_src/forestry/api/genetics/ISpeciesRoot.java
Normal file
|
@ -0,0 +1,160 @@
|
|||
package forestry.api.genetics;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
* Describes a class of species (i.e. bees, trees, butterflies), provides helper functions and access to common functionality.
|
||||
*/
|
||||
public interface ISpeciesRoot {
|
||||
|
||||
/**
|
||||
* @return A unique identifier for the species class. Should consist of "root" + a common name for the species class in camel-case, i.e. "rootBees", "rootTrees", "rootButterflies".
|
||||
*/
|
||||
String getUID();
|
||||
|
||||
/**
|
||||
* @return Class of the sub-interface inheriting from {@link IIndividual}.
|
||||
*/
|
||||
Class getMemberClass();
|
||||
|
||||
/**
|
||||
* @return Integer denoting the number of (counted) species of this type in the world.
|
||||
*/
|
||||
int getSpeciesCount();
|
||||
|
||||
/**
|
||||
* Used to check whether a given itemstack contains genetic data corresponding to an {@link IIndividual} of this class.
|
||||
* @param stack itemstack to check.
|
||||
* @return true if the itemstack contains an {@link IIndividual} of this class, false otherwise.
|
||||
*/
|
||||
boolean isMember(ItemStack stack);
|
||||
|
||||
/**
|
||||
* Used to check whether a given itemstack contains genetic data corresponding to an {@link IIndividual} of this class and matches the given type.
|
||||
* @param stack itemstack to check.
|
||||
* @param type Integer denoting the type needed to match. (i.e. butterfly vs. butterfly serum; bee queens, princesses, drones; etc.)
|
||||
* @return true if the itemstack contains an {@link IIndividual} of this class, false otherwise.
|
||||
*/
|
||||
boolean isMember(ItemStack stack, int type);
|
||||
|
||||
/**
|
||||
* Used to check whether the given {@link IIndividual} is member of this class.
|
||||
* @param individual {@link IIndividual} to check.
|
||||
* @return true if the individual is member of this class, false otherwise.
|
||||
*/
|
||||
boolean isMember(IIndividual individual);
|
||||
|
||||
IIndividual getMember(ItemStack stack);
|
||||
|
||||
IIndividual getMember(NBTTagCompound compound);
|
||||
|
||||
ItemStack getMemberStack(IIndividual individual, int type);
|
||||
|
||||
/* BREEDING TRACKER */
|
||||
IBreedingTracker getBreedingTracker(World world, String player);
|
||||
|
||||
/* GENOME MANIPULATION */
|
||||
IIndividual templateAsIndividual(IAllele[] template);
|
||||
|
||||
IIndividual templateAsIndividual(IAllele[] templateActive, IAllele[] templateInactive);
|
||||
|
||||
IChromosome[] templateAsChromosomes(IAllele[] template);
|
||||
|
||||
IChromosome[] templateAsChromosomes(IAllele[] templateActive, IAllele[] templateInactive);
|
||||
|
||||
IGenome templateAsGenome(IAllele[] template);
|
||||
|
||||
IGenome templateAsGenome(IAllele[] templateActive, IAllele[] templateInactive);
|
||||
|
||||
/* TEMPLATES */
|
||||
/**
|
||||
* Registers a bee template using the UID of the first allele as identifier.
|
||||
*
|
||||
* @param template
|
||||
*/
|
||||
void registerTemplate(IAllele[] template);
|
||||
|
||||
/**
|
||||
* Registers a bee template using the passed identifier.
|
||||
*
|
||||
* @param template
|
||||
*/
|
||||
void registerTemplate(String identifier, IAllele[] template);
|
||||
|
||||
/**
|
||||
* Retrieves a registered template using the passed identifier.
|
||||
*
|
||||
* @param identifier
|
||||
* @return Array of {@link IAllele} representing a genome.
|
||||
*/
|
||||
IAllele[] getTemplate(String identifier);
|
||||
|
||||
/**
|
||||
* @return Default individual template for use when stuff breaks.
|
||||
*/
|
||||
IAllele[] getDefaultTemplate();
|
||||
|
||||
/**
|
||||
* @param rand Random to use.
|
||||
* @return A random template from the pool of registered species templates.
|
||||
*/
|
||||
IAllele[] getRandomTemplate(Random rand);
|
||||
|
||||
Map<String, IAllele[]> getGenomeTemplates();
|
||||
ArrayList<? extends IIndividual> getIndividualTemplates();
|
||||
|
||||
/* MUTATIONS */
|
||||
/**
|
||||
* Use to register mutations.
|
||||
*
|
||||
* @param mutation
|
||||
*/
|
||||
void registerMutation(IMutation mutation);
|
||||
|
||||
/**
|
||||
* @return All registered mutations.
|
||||
*/
|
||||
Collection<? extends IMutation> getMutations(boolean shuffle);
|
||||
|
||||
/**
|
||||
* @param other Allele to match mutations against.
|
||||
* @return All registered mutations the given allele is part of.
|
||||
*/
|
||||
Collection<? extends IMutation> getCombinations(IAllele other);
|
||||
|
||||
/**
|
||||
* @param result {@link IAllele} to search for.
|
||||
* @return All registered mutations the given {@link IAllele} is the result of.
|
||||
*/
|
||||
Collection<? extends IMutation> getPaths(IAllele result, int chromosomeOrdinal);
|
||||
|
||||
/* RESEARCH */
|
||||
/**
|
||||
* @return List of generic catalysts which should be accepted for research by species of this class.
|
||||
*/
|
||||
Map<ItemStack, Float> getResearchCatalysts();
|
||||
|
||||
/**
|
||||
* Sets an item stack as a valid (generic) research catalyst for this class.
|
||||
* @param itemstack ItemStack to set as suitable.
|
||||
* @param suitability Float between 0 and 1 to indicate suitability.
|
||||
*/
|
||||
void setResearchSuitability(ItemStack itemstack, float suitability);
|
||||
|
||||
/**
|
||||
* @return Array of {@link IChromosomeType} which are in this species genome
|
||||
*/
|
||||
IChromosomeType[] getKaryotype();
|
||||
|
||||
/**
|
||||
* @return {@link IChromosomeType} which is the "key" for this species class, usually the species chromosome.
|
||||
*/
|
||||
IChromosomeType getKaryotypeKey();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue