/******************************************************************************* * Copyright 2011-2014 SirSengir * * This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details. ******************************************************************************/ package forestry.api.apiculture; import java.util.ArrayList; import java.util.Collection; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import com.mojang.authlib.GameProfile; import forestry.api.core.IStructureLogic; import forestry.api.genetics.IAllele; import forestry.api.genetics.ISpeciesRoot; public interface IBeeRoot extends ISpeciesRoot { /** * @return true if passed item is a Forestry bee. Equal to getType(ItemStack stack) != EnumBeeType.NONE */ @Override boolean isMember(ItemStack stack); /** * @return {@link IBee} pattern parsed from the passed stack's nbt data. */ @Override IBee getMember(ItemStack stack); @Override IBee getMember(NBTTagCompound compound); /* GENOME CONVERSION */ @Override IBee templateAsIndividual(IAllele[] template); @Override IBee templateAsIndividual(IAllele[] templateActive, IAllele[] templateInactive); @Override IBeeGenome templateAsGenome(IAllele[] template); @Override IBeeGenome templateAsGenome(IAllele[] templateActive, IAllele[] templateInactive); /* BREEDING TRACKER */ /** * @param world * @return {@link IApiaristTracker} associated with the passed world. */ IApiaristTracker getBreedingTracker(World world, GameProfile player); /* BEE SPECIFIC */ /** * @return type of bee encoded on the itemstack. EnumBeeType.NONE if it isn't a bee. */ EnumBeeType getType(ItemStack stack); /** * @return true if passed item is a drone. Equal to getType(ItemStack stack) == EnumBeeType.DRONE */ boolean isDrone(ItemStack stack); /** * @return true if passed item is mated (i.e. a queen) */ boolean isMated(ItemStack stack); /** * @param genome * Valid {@link IBeeGenome} * @return {@link IBee} from the passed genome */ IBee getBee(World world, IBeeGenome genome); /** * Creates an IBee suitable for a queen containing the necessary second genome for the mate. * * @param genome * Valid {@link IBeeGenome} * @param mate * Valid {@link IBee} representing the mate. * @return Mated {@link IBee} from the passed genomes. */ IBee getBee(World world, IBeeGenome genome, IBee mate); /* TEMPLATES */ @Override ArrayList<IBee> getIndividualTemplates(); /* MUTATIONS */ @Override Collection<IBeeMutation> getMutations(boolean shuffle); /* GAME MODE */ void resetBeekeepingMode(); ArrayList<IBeekeepingMode> getBeekeepingModes(); IBeekeepingMode getBeekeepingMode(World world); IBeekeepingMode getBeekeepingMode(String name); void registerBeekeepingMode(IBeekeepingMode mode); void setBeekeepingMode(World world, String name); /* MISC */ /** * @param housing * Object implementing IBeeHousing. * @return IBeekeepingLogic */ IBeekeepingLogic createBeekeepingLogic(IBeeHousing housing); /** * TileEntities wanting to function as alveary components need to implement structure logic for validation. * * @return IStructureLogic for alvearies. */ IStructureLogic createAlvearyStructureLogic(IAlvearyComponent structure); }