@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 isPureBred(EnumTreeChromosome chromosome) { return genome.getActiveAllele(chromosome).getUID().equals(genome.getInactiveAllele(chromosome).getUID()); }
@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); } }
String sappiness = TextFormatting.GOLD + "S: " + genome.getActiveAllele(EnumTreeChromosome.SAPPINESS).getAlleleName(); String maturation = TextFormatting.RED + "M: " + genome.getActiveAllele(EnumTreeChromosome.MATURATION).getAlleleName(); String height = TextFormatting.LIGHT_PURPLE + "H: " + genome.getActiveAllele(EnumTreeChromosome.HEIGHT).getAlleleName(); String girth = TextFormatting.AQUA + "G: " + String.format("%sx%s", genome.getGirth(), genome.getGirth()); String saplings = TextFormatting.YELLOW + "S: " + genome.getActiveAllele(EnumTreeChromosome.FERTILITY).getAlleleName(); String yield = TextFormatting.WHITE + "Y: " + genome.getActiveAllele(EnumTreeChromosome.YIELD).getAlleleName(); list.add(String.format("%s, %s", saplings, maturation)); list.add(String.format("%s, %s", height, girth)); list.add(String.format("%s, %s", yield, sappiness)); IAlleleBoolean primaryFireproof = (IAlleleBoolean) genome.getActiveAllele(EnumTreeChromosome.FIREPROOF); if (primaryFireproof.getValue()) { list.add(TextFormatting.RED + Translator.translateToLocal("for.gui.fireresist")); IAllele fruit = getGenome().getActiveAllele(EnumTreeChromosome.FRUITS); if (fruit != AlleleFruits.fruitNone) { String strike = "";
@Override public boolean setLogBlock(ITreeGenome genome, World world, BlockPos pos, EnumFacing facing) { AlleleBoolean fireproofAllele = (AlleleBoolean) genome.getActiveAllele(EnumTreeChromosome.FIREPROOF); boolean fireproof = fireproofAllele.getValue(); IBlockState logBlock = TreeManager.woodAccess.getBlock(woodType, WoodBlockKind.LOG, fireproof); BlockLog.EnumAxis axis = BlockLog.EnumAxis.fromFacingAxis(facing.getAxis()); return world.setBlockState(pos, logBlock.withProperty(BlockLog.LOG_AXIS, axis)); }
@Override public boolean setLogBlock(ITreeGenome genome, World world, BlockPos pos, EnumFacing facing) { AlleleBoolean fireproofAllele = (AlleleBoolean) genome.getActiveAllele(EnumTreeChromosome.FIREPROOF); boolean fireproof = fireproofAllele.getValue(); IBlockState logBlock = TreeManager.woodAccess.getBlock(woodType, WoodBlockKind.LOG, fireproof); BlockLog.EnumAxis axis = BlockLog.EnumAxis.fromFacingAxis(facing.getAxis()); if (logBlock.getBlock() instanceof BlockLog) { logBlock = logBlock.withProperty(BlockLog.LOG_AXIS, axis); } return world.setBlockState(pos, logBlock); }
@Override public IEffectData[] doEffect(IEffectData[] storedData, World world, BlockPos pos) { IAlleleLeafEffect effect = (IAlleleLeafEffect) getGenome().getActiveAllele(EnumTreeChromosome.EFFECT); storedData[0] = doEffect(effect, storedData[0], world, pos); // Return here if the primary can already not be combined if (!effect.isCombinable()) { return storedData; } IAlleleLeafEffect secondary = (IAlleleLeafEffect) getGenome().getInactiveAllele(EnumTreeChromosome.EFFECT); if (!secondary.isCombinable()) { return storedData; } storedData[1] = doEffect(secondary, storedData[1], world, pos); return storedData; }
y += 12; IBreedingSystem treeSystem = Binnie.GENETICS.getSystem(TreeManager.treeRoot); String yieldAlleleName = treeSystem.getAlleleName(EnumTreeChromosome.YIELD, ind.getGenome().getActiveAllele(EnumTreeChromosome.YIELD)); new ControlTextCentered(this, y, TextFormatting.ITALIC + I18N.localise(AnalystConstants.FRUIT_KEY + ".yield") + ": " + yieldAlleleName).setColor(getColor()); y += 20;
@Override public void writeData(PacketBufferForestry data) { super.writeData(data); byte leafState = 0; boolean hasFruit = hasFruit(); if (isPollinated()) { leafState |= isPollinatedFlag; } if (hasFruit) { leafState |= hasFruitFlag; } data.writeByte(leafState); if (hasFruit) { String fruitAlleleUID = getTree().getGenome().getActiveAllele(EnumTreeChromosome.FRUITS).getUID(); int colourFruits = getFruitColour(); data.writeString(fruitAlleleUID); data.writeInt(colourFruits); } }
new ControlTextCentered(this, y, TextFormatting.UNDERLINE + getTitle()).setColor(getColor()); y += 12; if (((IAlleleBoolean) ind.getGenome().getActiveAllele(EnumTreeChromosome.FIREPROOF)).getValue()) { new ControlIconDisplay(this, (getWidth() - 16) / 2, y, analystManager.getIcons().getIconNoFire()).addTooltip(I18N.localise(AnalystConstants.WOOD_KEY + ".fireproof")); } else {
IAlleleFruit fruit = (IAlleleFruit) (mode == DatabaseMode.ACTIVE ? tree.getGenome().getActiveAllele(EnumTreeChromosome.FRUITS) : tree.getGenome().getInactiveAllele(EnumTreeChromosome.FRUITS)); ITextStyle textStyle = GuiElementFactory.INSTANCE.getStateStyle(tree.getGenome().getActiveAllele(EnumTreeChromosome.FRUITS).isDominant());
int fruitDominance0 = guiAlyzer.getColorCoding(tree.getGenome().getActiveAllele(EnumTreeChromosome.FRUITS).isDominant()); int fruitDominance1 = guiAlyzer.getColorCoding(tree.getGenome().getInactiveAllele(EnumTreeChromosome.FRUITS).isDominant()); IAllele fruit0 = tree.getGenome().getActiveAllele(EnumTreeChromosome.FRUITS); if (!tree.canBearFruit() && fruit0 != AlleleFruits.fruitNone) { strike = TextFormatting.STRIKETHROUGH.toString();
textLayout.newLineCompressed(); IAlleleInteger activeGirth = (IAlleleInteger) tree.getGenome().getActiveAllele(EnumTreeChromosome.GIRTH); IAlleleInteger inactiveGirth = (IAlleleInteger) tree.getGenome().getInactiveAllele(EnumTreeChromosome.GIRTH); textLayout.drawLine(Translator.translateToLocal("for.gui.girth"), GuiAlyzer.COLUMN_0);
@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; } }