/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.genetics;
import java.util.EnumSet;
import net.minecraftforge.common.EnumPlantType;
/**
* Can be implemented by tile entities, if they wish to be pollinatable.
*
* @author SirSengir
*/
public interface IPollinatable {
/**
* @return plant types this pollinatable is classified as. (Can be used by bees to determine whether to interact or not.
*/
EnumSet<EnumPlantType> getPlantType();
/**
* @return IIndividual containing the genetic information of this IPollinatable
*/
IIndividual getPollen();
/**
* Checks whether this {@link IPollinatable} can mate with the given pollen.
*
* Must be the one to check genetic equivalency.
*
* @param pollen
* IIndividual representing the pollen.
* @return true if mating is possible, false otherwise.
*/
boolean canMateWith(IIndividual pollen);
/**
* Pollinates this entity.
*
* @param pollen
* IIndividual representing the pollen.
*/
void mateWith(IIndividual pollen);
}