Test with stuff + Forestry potential support
This commit is contained in:
parent
5b05cf651b
commit
bd26e441cb
174 changed files with 5602 additions and 0 deletions
221
BM_src/forestry/api/genetics/IAlleleRegistry.java
Normal file
221
BM_src/forestry/api/genetics/IAlleleRegistry.java
Normal file
|
@ -0,0 +1,221 @@
|
|||
package forestry.api.genetics;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import forestry.api.genetics.IClassification.EnumClassLevel;
|
||||
|
||||
/**
|
||||
* Manages {@link ISpeciesRoot}, {@link IAllele}s, {@link IFruitFamily}s, {@link IClassification}, the blacklist and allows creation of research notes.
|
||||
*
|
||||
* @author SirSengir
|
||||
*/
|
||||
public interface IAlleleRegistry {
|
||||
|
||||
/* SPECIES ROOT CLASSES */
|
||||
/**
|
||||
* Register a {@link ISpeciesRoot}.
|
||||
* @param root {@link ISpeciesRoot} to register.
|
||||
*/
|
||||
void registerSpeciesRoot(ISpeciesRoot root);
|
||||
|
||||
/**
|
||||
* @return Map of all registered {@link ISpeciesRoot}.
|
||||
*/
|
||||
Map<String, ISpeciesRoot> getSpeciesRoot();
|
||||
|
||||
/**
|
||||
* Retrieve the {@link ISpeciesRoot} with the given uid.
|
||||
* @param uid Unique id for the species class, i.e. "rootBees", "rootTrees", "rootButterflies".
|
||||
* @return {@link ISpeciesRoot} if it exists, null otherwise.
|
||||
*/
|
||||
ISpeciesRoot getSpeciesRoot(String uid);
|
||||
|
||||
/**
|
||||
* Retrieve a matching {@link ISpeciesRoot} for the given itemstack.
|
||||
* @param stack An itemstack possibly containing NBT data which can be converted by a species root.
|
||||
* @return {@link ISpeciesRoot} if found, null otherwise.
|
||||
*/
|
||||
ISpeciesRoot getSpeciesRoot(ItemStack stack);
|
||||
|
||||
/**
|
||||
* Retrieve a matching {@link ISpeciesRoot} for the given {@link IIndividual}-class.
|
||||
* @param clz Class extending {@link IIndividual}.
|
||||
* @return {@link ISpeciesRoot} if found, null otherwise.
|
||||
*/
|
||||
ISpeciesRoot getSpeciesRoot(Class<? extends IIndividual> clz);
|
||||
|
||||
/* INDIVIDUAL */
|
||||
/**
|
||||
* Tests the itemstack for genetic information.
|
||||
*
|
||||
* @param stack
|
||||
* @return true if the itemstack is an individual.
|
||||
*/
|
||||
boolean isIndividual(ItemStack stack);
|
||||
|
||||
/**
|
||||
* Retrieve genetic information from an itemstack.
|
||||
*
|
||||
* @param stack
|
||||
* Stack to retrieve genetic information for.
|
||||
* @return IIndividual containing genetic information, null if none could be extracted.
|
||||
*/
|
||||
IIndividual getIndividual(ItemStack stack);
|
||||
|
||||
/* ALLELES */
|
||||
|
||||
/**
|
||||
* @return HashMap of all currently registered alleles.
|
||||
*/
|
||||
Map<String, IAllele> getRegisteredAlleles();
|
||||
|
||||
/**
|
||||
* Registers an allele.
|
||||
*
|
||||
* @param allele
|
||||
* IAllele to register.
|
||||
*/
|
||||
void registerAllele(IAllele allele);
|
||||
|
||||
/**
|
||||
* @return HashMap of all registered deprecated alleles and their corresponding replacements
|
||||
*/
|
||||
Map<String, IAllele> getDeprecatedAlleleReplacements();
|
||||
|
||||
/**
|
||||
* Registers an old allele UID and the new IAllele to replace instances of it with.
|
||||
*
|
||||
* @param deprecatedAlleleUID
|
||||
* the old allele's UID
|
||||
* @param replacement
|
||||
* the IAllele that the deprecated Allele will be replaced with.
|
||||
*/
|
||||
void registerDeprecatedAlleleReplacement(String deprecatedAlleleUID, IAllele replacement);
|
||||
|
||||
/**
|
||||
* Gets an allele
|
||||
*
|
||||
* @param uid
|
||||
* String based unique identifier of the allele to retrieve.
|
||||
* @return IAllele if found or a replacement is found in the Deprecated Allele map, null otherwise.
|
||||
*/
|
||||
IAllele getAllele(String uid);
|
||||
|
||||
/* THIS SHOULD BE PHASED OUT */
|
||||
@Deprecated
|
||||
void reloadMetaMap(World world);
|
||||
|
||||
@Deprecated
|
||||
IAllele getFromMetaMap(int meta);
|
||||
|
||||
@Deprecated
|
||||
int getFromUIDMap(String uid);
|
||||
|
||||
/* CLASSIFICATIONS */
|
||||
/**
|
||||
* @return HashMap of all currently registered classifications.
|
||||
*/
|
||||
Map<String, IClassification> getRegisteredClassifications();
|
||||
|
||||
/**
|
||||
* Registers a classification.
|
||||
*
|
||||
* @param classification
|
||||
* IClassification to register.
|
||||
*/
|
||||
void registerClassification(IClassification classification);
|
||||
|
||||
/**
|
||||
* Creates and returns a classification.
|
||||
*
|
||||
* @param level
|
||||
* EnumClassLevel of the classification to create.
|
||||
* @param uid
|
||||
* String based unique identifier. Implementation will throw an exception if the key is already taken.
|
||||
* @param scientific
|
||||
* Binomial for the given classification.
|
||||
* @return Created {@link IClassification} for easier chaining.
|
||||
*/
|
||||
IClassification createAndRegisterClassification(EnumClassLevel level, String uid, String scientific);
|
||||
|
||||
/**
|
||||
* Gets a classification.
|
||||
*
|
||||
* @param uid
|
||||
* String based unique identifier of the classification to retrieve.
|
||||
* @return {@link IClassification} if found, null otherwise.
|
||||
*/
|
||||
IClassification getClassification(String uid);
|
||||
|
||||
/* FRUIT FAMILIES */
|
||||
/**
|
||||
* Get all registered fruit families.
|
||||
*
|
||||
* @return A map of registered fruit families and their UIDs.
|
||||
*/
|
||||
Map<String, IFruitFamily> getRegisteredFruitFamilies();
|
||||
|
||||
/**
|
||||
* Registers a new fruit family.
|
||||
*
|
||||
* @param family
|
||||
*/
|
||||
void registerFruitFamily(IFruitFamily family);
|
||||
|
||||
/**
|
||||
* Retrieves a fruit family identified by uid.
|
||||
*
|
||||
* @param uid
|
||||
* @return {IFruitFamily} if found, false otherwise.
|
||||
*/
|
||||
IFruitFamily getFruitFamily(String uid);
|
||||
|
||||
/* ALLELE HANDLERS */
|
||||
/**
|
||||
* Registers a new IAlleleHandler
|
||||
*
|
||||
* @param handler
|
||||
* IAlleleHandler to register.
|
||||
*/
|
||||
void registerAlleleHandler(IAlleleHandler handler);
|
||||
|
||||
/* BLACKLIST */
|
||||
/**
|
||||
* Blacklist an allele identified by its UID from mutation.
|
||||
*
|
||||
* @param uid
|
||||
* UID of the allele to blacklist.
|
||||
*/
|
||||
void blacklistAllele(String uid);
|
||||
|
||||
/**
|
||||
* @return Current blacklisted alleles.
|
||||
*/
|
||||
Collection<String> getAlleleBlacklist();
|
||||
|
||||
/**
|
||||
* @param uid
|
||||
* UID of the species to vet.
|
||||
* @return true if the allele is blacklisted.
|
||||
*/
|
||||
boolean isBlacklisted(String uid);
|
||||
|
||||
/* RESEARCH */
|
||||
/**
|
||||
* @param researcher Username of the player who researched this note.
|
||||
* @param species {@link IAlleleSpecies} to encode on the research note.
|
||||
* @return An itemstack containing a research note with the given species encoded onto it.
|
||||
*/
|
||||
ItemStack getSpeciesNoteStack(String researcher, IAlleleSpecies species);
|
||||
|
||||
/**
|
||||
* @param researcher Username of the player who researched this note.
|
||||
* @param mutation {@link IMutation} to encode on the research note.
|
||||
* @return An itemstack containing a research note with the given mutation encoded onto it.
|
||||
*/
|
||||
ItemStack getMutationNoteStack(String researcher, IMutation mutation);
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue