@Override public IFruitFamily getFruitFamily() { return allele.getProvider().getFamily(); }
@Override public Collection<IFruitProvider> getFruitProvidersForFruitFamily(IFruitFamily fruitFamily) { if (providersForFamilies.isEmpty()) { @SuppressWarnings("unchecked") Collection<IAlleleFruit> fruitAlleles = (Collection<IAlleleFruit>) (Object) AlleleManager.alleleRegistry.getRegisteredAlleles(EnumTreeChromosome.FRUITS); for (IAlleleFruit alleleFruit : fruitAlleles) { IFruitProvider fruitProvider = alleleFruit.getProvider(); Collection<IFruitProvider> fruitProviders = providersForFamilies.computeIfAbsent(fruitProvider.getFamily(), k -> new ArrayList<>()); fruitProviders.add(fruitProvider); } } return providersForFamilies.computeIfAbsent(fruitFamily, k -> new ArrayList<>()); } }
@Override public boolean canBearFruit() { return genome.getPrimary().getSuitableFruit().contains(genome.getFruitProvider().getFamily()); }
@Override public IFruitFamily getFruitFamily() { ITree tree = getTree(); if (tree == null) { return EnumFruitFamily.NONE; } return tree.getGenome().getFruitProvider().getFamily(); }
@Override public boolean allowsFruitBlocks() { IFruitProvider provider = getGenome().getFruitProvider(); if (!provider.requiresFruitBlocks()) { return false; } Collection<IFruitFamily> suitable = genome.getPrimary().getSuitableFruit(); return suitable.contains(provider.getFamily()); }
@Override public boolean trySpawnFruitBlock(World world, Random rand, BlockPos pos) { IFruitProvider provider = getGenome().getFruitProvider(); Collection<IFruitFamily> suitable = genome.getPrimary().getSuitableFruit(); return suitable.contains(provider.getFamily()) && provider.trySpawnFruitBlock(getGenome(), world, rand, pos); }
@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; }
Collection<ItemStack> stacks = new UniqueItemStackSet(); for (IAllele a : fruitAlleles) { if (((IAlleleFruit) a).getProvider().getFamily() == fam) { stacks.addAll(((IAlleleFruit) a).getProvider().getProducts().keySet()); stacks.addAll(((IAlleleFruit) a).getProvider().getSpecialty().keySet());
if (!tree.getGenome().getSecondary().getSuitableFruit().contains(fruit1.getProvider().getFamily()) && fruit1 != AlleleFruits.fruitNone) { strike = TextFormatting.STRIKETHROUGH.toString(); IFruitFamily primary = tree.getGenome().getFruitProvider().getFamily(); IFruitFamily secondary = ((IAlleleFruit) tree.getGenome().getInactiveAllele(EnumTreeChromosome.FRUITS)).getProvider().getFamily();