@Override public float getChance(final IMutation mutation, final EntityPlayer player, final IAlleleSpecies firstSpecies, final IAlleleSpecies secondSpecies) { ISpeciesRoot speciesRoot = this.getSpeciesRoot(); final ITreeGenome genome0 = (ITreeGenome) speciesRoot.templateAsGenome(speciesRoot.getTemplate(firstSpecies)); final ITreeGenome genome2 = (ITreeGenome) speciesRoot.templateAsGenome(speciesRoot.getTemplate(secondSpecies)); return ((ITreeMutation) mutation).getChance(player.world, player.getPosition(), (IAlleleTreeSpecies) firstSpecies, (IAlleleTreeSpecies) secondSpecies, genome0, genome2); }
@Override public float getChance(final IMutation mutation, final EntityPlayer player, final IAlleleSpecies firstSpecies, final IAlleleSpecies secondSpecies) { return ((IBeeMutation) mutation). getChance(new VirtualBeeHousing(player), (IAlleleBeeSpecies) firstSpecies, (IAlleleBeeSpecies) secondSpecies, (IBeeGenome) this.getSpeciesRoot(). templateAsGenome(this.getSpeciesRoot().getTemplate(firstSpecies)), (IBeeGenome) this.getSpeciesRoot().templateAsGenome(this.getSpeciesRoot().getTemplate(secondSpecies)) ); }
@Override public Collection<IAlleleSpecies> getTreesThatBearFruit(final ItemStack fruit, final boolean master, final World world, final GameProfile player) { final Collection<IAlleleSpecies> set = master ? this.getAllSpecies() : this.getDiscoveredSpecies(world, player); final List<IAlleleSpecies> found = new ArrayList<>(); for (final IAlleleSpecies species : set) { final IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies) species; final ITreeGenome genome = (ITreeGenome) this.getSpeciesRoot().templateAsGenome(this.getSpeciesRoot().getTemplate(tSpecies)); for (final ItemStack fruit2 : genome.getFruitProvider().getProducts().keySet()) { if (fruit2.isItemEqual(fruit)) { found.add(species); } } } return found; }
@Override public Collection<IAlleleSpecies> getTreesThatCanBearFruit(final ItemStack fruit, final boolean master, final World world, final GameProfile player) { final Collection<IAlleleSpecies> set = master ? this.getAllSpecies() : this.getDiscoveredSpecies(world, player); final List<IAlleleSpecies> found = new ArrayList<>(); final Set<IFruitFamily> providers = new HashSet<>(); for (final IAlleleSpecies species : set) { final IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies) species; final ITreeGenome genome = (ITreeGenome) this.getSpeciesRoot().templateAsGenome(this.getSpeciesRoot().getTemplate(tSpecies)); for (final ItemStack fruit2 : genome.getFruitProvider().getProducts().keySet()) { if (fruit2.isItemEqual(fruit)) { providers.add(genome.getFruitProvider().getFamily()); } } } for (final IAlleleSpecies species : set) { final IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies) species; for (final IFruitFamily family : providers) { if (tSpecies.getSuitableFruit().contains(family)) { found.add(species); break; } } } return found; }
@Override public final void calculateArrays() { super.calculateArrays(); for (final IAlleleSpecies species : this.allActiveSpecies) { final IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies) species; final ITreeGenome genome = (ITreeGenome) this.getSpeciesRoot().templateAsGenome(this.getSpeciesRoot().getTemplate(tSpecies)); IAlleleTreeSpecies treeSpecies = genome.getPrimary(); final ItemStack wood = treeSpecies.getWoodProvider().getWoodStack(); if (!wood.isEmpty()) { this.allWoods.add(wood); } /*for (final ItemStack wood : tSpecies.getRoot().templateAsIndividual(getSpeciesRoot().getTemplate(tSpecies.getUID())).getProduceList()) { this.allWoods.add(wood); }*/ this.allFruits.addAll(genome.getFruitProvider().getProducts().keySet()); } }
@Override public void onSyncBreedingTracker(final IBreedingTracker tracker) { this.discoveredFruits.clear(); this.discoveredWoods.clear(); for (final IAlleleSpecies species : this.getDiscoveredSpecies(tracker)) { final IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies) species; final ITreeGenome genome = (ITreeGenome) this.getSpeciesRoot().templateAsGenome(this.getSpeciesRoot().getTemplate(tSpecies)); IAlleleTreeSpecies treeSpecies = genome.getPrimary(); final ItemStack wood = treeSpecies.getWoodProvider().getWoodStack(); if (!wood.isEmpty()) { this.discoveredWoods.add(wood); } /*for (final ItemStack wood : tSpecies.getRoot().templateAsIndividual(getSpeciesRoot().getTemplate(tSpecies.getUID())).getProduceList()) { this.discoveredWoods.add(wood); }*/ this.discoveredFruits.addAll(genome.getFruitProvider().getProducts().keySet()); } }
private static IChromosome getChromosome(ItemStack itemStack, IChromosomeType chromosomeType, ISpeciesRoot speciesRoot) { NBTTagCompound nbtTagCompound = itemStack.getTagCompound(); if (nbtTagCompound == null) { nbtTagCompound = new NBTTagCompound(); itemStack.setTagCompound(nbtTagCompound); } NBTTagCompound genomeNbt = nbtTagCompound.getCompoundTag("Genome"); if (genomeNbt.isEmpty()) { Log.error("Got a genetic item with no genome, setting it to a default value."); genomeNbt = new NBTTagCompound(); IAllele[] defaultTemplate = speciesRoot.getDefaultTemplate(); IGenome genome = speciesRoot.templateAsGenome(defaultTemplate); genome.writeToNBT(genomeNbt); nbtTagCompound.setTag("Genome", genomeNbt); } IChromosome[] chromosomes = getChromosomes(genomeNbt, speciesRoot); return chromosomes[chromosomeType.ordinal()]; }