@Override public NonNullList<ItemStack> getFruits(ITreeGenome genome, World world, BlockPos pos, int ripeningTime) { NonNullList<ItemStack> product = NonNullList.create(); float modeYieldMod = TreeManager.treeRoot.getTreekeepingMode(world).getYieldModifier(genome, 1f); for (Map.Entry<ItemStack, Float> entry : products.entrySet()) { if (world.rand.nextFloat() <= genome.getYield() * modeYieldMod * entry.getValue()) { product.add(entry.getKey().copy()); } } return product; }
/** * The chance that this leaves contains fruits or the chance that a pod block spawns. * * @param genome The genome of the tree of the pod / leaves block. * @return The chance that this leaves contains fruits or the chance that a pod block spawns. */ default float getFruitChance(ITreeGenome genome, World world, BlockPos pos) { ITreeRoot treeRoot = TreeManager.treeRoot; if (treeRoot == null) { return 0.0F; } float yieldModifier = treeRoot.getTreekeepingMode(world).getYieldModifier(genome, 1.0F); return genome.getYield() * yieldModifier * 2.5F; }
@Override public boolean trySpawnFruitBlock(ITreeGenome genome, World world, Random rand, BlockPos pos) { if (rand.nextFloat() > genome.getSappiness()) { return false; } IAlleleFruit activeAllele = (IAlleleFruit) genome.getActiveAllele(EnumTreeChromosome.FRUITS); return TreeManager.treeRoot.setFruitBlock(world, genome, activeAllele, genome.getYield(), pos); }
@Override public boolean trySpawnFruitBlock(ITreeGenome genome, World world, Random rand, BlockPos pos) { if (rand.nextFloat() > getFruitChance(genome, world, pos)) { return false; } if (type == EnumPodType.COCOA) { return BlockUtil.tryPlantCocoaPod(world, pos); } else { IAlleleFruit activeAllele = (IAlleleFruit) genome.getActiveAllele(EnumTreeChromosome.FRUITS); return TreeManager.treeRoot.setFruitBlock(world, genome, activeAllele, genome.getYield(), pos); } }
if (rand.nextFloat() >= tree.getGenome().getSappiness() * tree.getGenome().getYield()) { return false;
@Override @SideOnly(Side.CLIENT) public int addBiologyPages(ITree tree, IWidget parent, int y, IAnalystManager analystManager) { IBreedingSystem treeSystem = Binnie.GENETICS.getSystem(TreeManager.treeRoot); String alleleName = treeSystem.getAlleleName(EnumTreeChromosome.SAPPINESS, tree.getGenome().getActiveAllele(EnumTreeChromosome.SAPPINESS)); new ControlTextCentered(parent, y, TextFormatting.ITALIC + I18N.localise(AnalystConstants.BIOLOGY_KEY + ".sappiness", alleleName)) .setColor(parent.getColor()); y += 20; int fertility = (int) (1.0f / tree.getGenome().getFertility()); if (fertility > 1) { new ControlTextCentered(parent, y, I18N.localise(AnalystConstants.BIOLOGY_KEY + ".fertility.leaves", fertility)) .setColor(parent.getColor()); } else { new ControlTextCentered(parent, y, I18N.localise(AnalystConstants.BIOLOGY_KEY + ".fertility.leaf")) .setColor(parent.getColor()); } y += 22; int butterflySpawn = Math.round(Constants.SPAWN_KOEF / (tree.getGenome().getSappiness() * tree.getGenome().getYield() * 0.5f)); new ControlTextCentered(parent, y, I18N.localise(AnalystConstants.BIOLOGY_KEY + ".mothSpawn.perLeaf", TimeUtil.getTimeString(butterflySpawn))) .setColor(parent.getColor()); y += 34; new ControlTextCentered(parent, y, I18N.localise(AnalystConstants.BIOLOGY_KEY + ".plantTypes")).setColor(parent.getColor()); y += 12; new ControlTextCentered(parent, y, TextFormatting.ITALIC + tree.getGenome().getPrimary().getPlantType().toString()) .setColor(parent.getColor()); return y; } }
new ControlText(contents, new Area(w2, y, w3, th), genome.getYield() + "x", TextJustification.MIDDLE_LEFT); y += th; new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.SAPPINESS) + " : ", TextJustification.MIDDLE_RIGHT);