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;
}
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);
}
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());
}
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();
}
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;
}
Aggregations