Search in sources :

Example 11 with IBee

use of forestry.api.apiculture.IBee in project ForestryMC by ForestryMC.

the class HiveBeeHousingInventory method getDrone.

@Override
public ItemStack getDrone() {
    if (drone == null) {
        IBee bee = hive.getContainedBee();
        drone = BeeManager.beeRoot.getMemberStack(bee, EnumBeeType.DRONE);
    }
    return drone;
}
Also used : IBee(forestry.api.apiculture.IBee)

Example 12 with IBee

use of forestry.api.apiculture.IBee in project Binnie by ForestryMC.

the class Splicer method setGene.

public static void setGene(IGene gene, ItemStack target, boolean setPrimary, boolean setSecondary) {
    int chromosomeID = gene.getChromosome().ordinal();
    Class<? extends IAllele> cls = gene.getChromosome().getAlleleClass();
    if (!cls.isInstance(gene.getAllele())) {
        return;
    }
    NBTTagCompound targetTag = target.getTagCompound();
    NBTTagCompound mate = null;
    if (targetTag != null && targetTag.hasKey("Mate")) {
        mate = targetTag.getCompoundTag("Mate").copy();
    }
    ISpeciesRoot speciesRoot = AlleleManager.alleleRegistry.getSpeciesRoot(target);
    Preconditions.checkNotNull(speciesRoot);
    IIndividual original = speciesRoot.getMember(target);
    Preconditions.checkNotNull(original);
    IChromosome[] chromosomes = original.getGenome().getChromosomes();
    IAllele[] primaryAlleles = new IAllele[chromosomes.length];
    IAllele[] secondaryAlleles = new IAllele[chromosomes.length];
    for (int i = 0; i < chromosomes.length; i++) {
        IChromosome chromosome = chromosomes[i];
        if (i == chromosomeID && setPrimary) {
            primaryAlleles[i] = gene.getAllele();
        } else {
            primaryAlleles[i] = chromosome.getPrimaryAllele();
        }
        if (i == chromosomeID && setSecondary) {
            secondaryAlleles[i] = gene.getAllele();
        } else {
            secondaryAlleles[i] = chromosome.getSecondaryAllele();
        }
    }
    IIndividual individual = speciesRoot.templateAsIndividual(primaryAlleles, secondaryAlleles);
    if (original.isAnalyzed()) {
        individual.analyze();
    }
    if (original instanceof IBee) {
        IBee individualBee = (IBee) individual;
        IBee originalBee = (IBee) original;
        individualBee.setIsNatural(originalBee.isNatural());
    }
    NBTTagCompound nbt = new NBTTagCompound();
    individual.writeToNBT(nbt);
    if (mate != null) {
        nbt.setTag("Mate", mate);
    }
    target.setTagCompound(nbt);
}
Also used : IAllele(forestry.api.genetics.IAllele) ISpeciesRoot(forestry.api.genetics.ISpeciesRoot) IIndividual(forestry.api.genetics.IIndividual) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) IChromosome(forestry.api.genetics.IChromosome) IBee(forestry.api.apiculture.IBee)

Example 13 with IBee

use of forestry.api.apiculture.IBee in project Binnie by ForestryMC.

the class PageSpeciesGenome method onValueChanged.

@Override
public void onValueChanged(IAlleleSpecies species) {
    IAllele[] template = BeeManager.beeRoot.getTemplate(species.getUID());
    if (template == null) {
        return;
    }
    IBeeGenome genome = BeeManager.beeRoot.templateAsGenome(template);
    IBee bee = BeeManager.beeRoot.getBee(genome);
    speedText.setValue(rateSpeed(genome.getSpeed()));
    lifespanText.setValue(rateLifespan(genome.getLifespan()));
    fertilityText.setValue(I18N.localise(DatabaseConstants.BEE_GENOME_KEY + ".children", genome.getFertility()));
    floweringText.setValue(rateFlowering(genome.getFlowering()));
    Vec3i area = genome.getTerritory();
    territoryText.setValue(area.getX() + "x" + area.getY() + 'x' + area.getZ());
    String behavior = I18N.localise(DatabaseConstants.BEE_GENOME_KEY + ".daytime");
    if (genome.getPrimary().isNocturnal()) {
        behavior = I18N.localise(DatabaseConstants.BEE_GENOME_KEY + ".nighttime");
    }
    if (genome.getNeverSleeps()) {
        behavior = I18N.localise(DatabaseConstants.BEE_GENOME_KEY + ".allDay");
    }
    nocturnalText.setValue(behavior);
    if (genome.getCaveDwelling()) {
        caveDwellingText.setValue(I18N.localise(DatabaseConstants.BEE_GENOME_KEY + ".notNeeded"));
    } else {
        caveDwellingText.setValue(I18N.localise(DatabaseConstants.BEE_GENOME_KEY + ".required"));
    }
    tolerantFlyerText.setValue(tolerated(genome.getToleratesRain()));
    if (genome.getFlowerProvider() != null) {
        flowerText.setValue(genome.getFlowerProvider().getDescription());
    } else {
        flowerText.setValue(AlleleHelper.toDisplay(EnumTolerance.NONE));
    }
    effectText.setValue(genome.getEffect().getAlleleName());
}
Also used : IAllele(forestry.api.genetics.IAllele) Vec3i(net.minecraft.util.math.Vec3i) IBee(forestry.api.apiculture.IBee) IBeeGenome(forestry.api.apiculture.IBeeGenome)

Example 14 with IBee

use of forestry.api.apiculture.IBee in project ForestryMC by ForestryMC.

the class BeekeepingLogic method tickBreed.

// / BREEDING
private void tickBreed() {
    beeProgressMax = totalBreedingTime;
    IBeeHousingInventory beeInventory = housing.getBeeInventory();
    ItemStack droneStack = beeInventory.getDrone();
    ItemStack princessStack = beeInventory.getQueen();
    EnumBeeType droneType = BeeManager.beeRoot.getType(droneStack);
    EnumBeeType princessType = BeeManager.beeRoot.getType(princessStack);
    if (droneType != EnumBeeType.DRONE || princessType != EnumBeeType.PRINCESS) {
        beeProgress = 0;
        return;
    }
    if (beeProgress < totalBreedingTime) {
        beeProgress++;
    }
    if (beeProgress < totalBreedingTime) {
        return;
    }
    // Mate and replace princess with queen
    IBee princess = BeeManager.beeRoot.getMember(princessStack);
    IBee drone = BeeManager.beeRoot.getMember(droneStack);
    princess.mate(drone);
    NBTTagCompound nbttagcompound = new NBTTagCompound();
    princess.writeToNBT(nbttagcompound);
    queenStack = new ItemStack(ModuleApiculture.getItems().beeQueenGE);
    queenStack.setTagCompound(nbttagcompound);
    beeInventory.setQueen(queenStack);
    // Register the new queen with the breeding tracker
    BeeManager.beeRoot.getBreedingTracker(housing.getWorldObj(), housing.getOwner()).registerQueen(princess);
    // Remove drone
    beeInventory.getDrone().shrink(1);
    // Reset breeding time
    queen = princess;
    beeProgress = princess.getHealth();
    beeProgressMax = princess.getMaxHealth();
}
Also used : IBeeHousingInventory(forestry.api.apiculture.IBeeHousingInventory) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) IBee(forestry.api.apiculture.IBee) ItemStack(net.minecraft.item.ItemStack) EnumBeeType(forestry.api.apiculture.EnumBeeType)

Example 15 with IBee

use of forestry.api.apiculture.IBee in project ForestryMC by ForestryMC.

the class TileHive method getContainedBee.

public IBee getContainedBee() {
    if (this.containedBee == null) {
        IBeeGenome beeGenome = null;
        ItemStack containedBee = contained.getStackInSlot(0);
        if (!containedBee.isEmpty()) {
            IBee bee = BeeManager.beeRoot.getMember(containedBee);
            if (bee != null) {
                beeGenome = bee.getGenome();
            }
        }
        if (beeGenome == null) {
            beeGenome = getGenomeFromBlock();
        }
        if (beeGenome == null) {
            beeGenome = BeeDefinition.FOREST.getGenome();
        }
        this.containedBee = BeeManager.beeRoot.getBee(beeGenome);
    }
    return this.containedBee;
}
Also used : IBee(forestry.api.apiculture.IBee) IBeeGenome(forestry.api.apiculture.IBeeGenome) ItemStack(net.minecraft.item.ItemStack)

Aggregations

IBee (forestry.api.apiculture.IBee)33 ItemStack (net.minecraft.item.ItemStack)17 IBeeGenome (forestry.api.apiculture.IBeeGenome)7 EnumBeeType (forestry.api.apiculture.EnumBeeType)6 World (net.minecraft.world.World)6 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)5 SideOnly (net.minecraftforge.fml.relauncher.SideOnly)4 IBeeHousingInventory (forestry.api.apiculture.IBeeHousingInventory)3 IBeeRoot (forestry.api.apiculture.IBeeRoot)3 IAllele (forestry.api.genetics.IAllele)3 GuiAlyzer (forestry.core.gui.GuiAlyzer)3 TextLayoutHelper (forestry.core.gui.TextLayoutHelper)3 ArrayList (java.util.ArrayList)3 IBeekeepingMode (forestry.api.apiculture.IBeekeepingMode)2 IHiveDrop (forestry.api.apiculture.IHiveDrop)2 IHiveFrame (forestry.api.apiculture.IHiveFrame)2 IChromosome (forestry.api.genetics.IChromosome)2 Random (java.util.Random)2 Item (net.minecraft.item.Item)2 IncubatorRecipe (binnie.genetics.machine.incubator.IncubatorRecipe)1