/******************************************************************************* * Copyright 2011-2014 SirSengir * * This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details. ******************************************************************************/ package forestry.api.lepidopterology; import java.util.ArrayList; import java.util.Collection; import net.minecraft.entity.EntityLiving; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import com.mojang.authlib.GameProfile; import forestry.api.genetics.IAllele; import forestry.api.genetics.IIndividual; import forestry.api.genetics.ISpeciesRoot; public interface IButterflyRoot extends ISpeciesRoot { @Override boolean isMember(ItemStack stack); @Override IButterfly getMember(ItemStack stack); @Override IButterfly getMember(NBTTagCompound compound); @Override ItemStack getMemberStack(IIndividual butterfly, int type); /* GENOME CONVERSION */ @Override IButterfly templateAsIndividual(IAllele[] template); @Override IButterfly templateAsIndividual(IAllele[] templateActive, IAllele[] templateInactive); @Override IButterflyGenome templateAsGenome(IAllele[] template); @Override IButterflyGenome templateAsGenome(IAllele[] templateActive, IAllele[] templateInactive); /* BUTTERFLY SPECIFIC */ ILepidopteristTracker getBreedingTracker(World world, GameProfile player); /** * Spawns the given butterfly in the world. * @param butterfly * @return butterfly entity on success, null otherwise. */ EntityLiving spawnButterflyInWorld(World world, IButterfly butterfly, double x, double y, double z); /** * @return true if passed item is mated. */ boolean isMated(ItemStack stack); /* TEMPLATES */ @Override ArrayList<IButterfly> getIndividualTemplates(); /* MUTATIONS */ @Override Collection<IButterflyMutation> getMutations(boolean shuffle); EnumFlutterType getType(ItemStack stack); }