protected AlleleTemplate() { alleles = TreeManager.treeRoot.getDefaultTemplate(); alleles[EnumTreeChromosome.FRUITS.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.fruitNone"); }
@Override public String getName() { return this.toString().toLowerCase(Locale.ENGLISH); }
@Override public IChromosomeType[] getKaryotype() { return EnumTreeChromosome.values(); }
@Override public ItemStack getDecorativeLeaves() { IAllele species; if (treeSpecies == null) { species = TreeDefinition.Oak.getTemplate()[EnumTreeChromosome.SPECIES.ordinal()]; } else { species = treeSpecies; } return ModuleWood.getDecorativeLeaves(species.getUID()); } }
@Override public IAllele[] getTemplate() { if (defaultTemplate == null) { defaultTemplate = new IAllele[EnumTreeChromosome.values().length]; AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.FRUITS, AlleleFruits.fruitNone); AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.HEIGHT, EnumAllele.Height.SMALL); AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOWER); AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.YIELD, EnumAllele.Yield.LOWEST); AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWEST); AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.EFFECT, AlleleLeafEffects.leavesNone); AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.AVERAGE); AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.GIRTH, 1); AlleleHelper.getInstance().set(defaultTemplate, EnumTreeChromosome.FIREPROOF, EnumAllele.Fireproof.FALSE); } return Arrays.copyOf(defaultTemplate, defaultTemplate.length); }
@Override public ItemStack getDecorativeLeaves() { IAllele allele = treeSpecies; if (allele == null) { allele = TreeDefinition.Oak.getTemplate()[EnumTreeChromosome.SPECIES.ordinal()]; } return ModuleArboriculture.getBlocks().getDecorativeLeaves(allele.getUID()); }
types = EnumBeeChromosome.values(); } else if (genome instanceof TreeGenome) { types = EnumTreeChromosome.values(); } else if (genome instanceof ButterflyGenome) { types = EnumButterflyChromosome.values();
allele0 = (IAlleleTreeSpecies) parent1[EnumTreeChromosome.SPECIES.ordinal()].getPrimaryAllele(); allele1 = (IAlleleTreeSpecies) parent2[EnumTreeChromosome.SPECIES.ordinal()].getSecondaryAllele(); allele0 = (IAlleleTreeSpecies) parent2[EnumTreeChromosome.SPECIES.ordinal()].getPrimaryAllele(); allele1 = (IAlleleTreeSpecies) parent1[EnumTreeChromosome.SPECIES.ordinal()].getSecondaryAllele();
IFlowerGenome genome2; if (world.rand.nextBoolean()) { alleleFirst = (IAlleleFlowerSpecies) parentFirst[EnumTreeChromosome.SPECIES.ordinal()].getPrimaryAllele(); alleleSecond = (IAlleleFlowerSpecies) parentSecond[EnumTreeChromosome.SPECIES.ordinal()].getSecondaryAllele(); genome0 = genomeFirst; genome2 = genomeSecond; } else { alleleFirst = (IAlleleFlowerSpecies) parentSecond[EnumTreeChromosome.SPECIES.ordinal()].getPrimaryAllele(); alleleSecond = (IAlleleFlowerSpecies) parentFirst[EnumTreeChromosome.SPECIES.ordinal()].getSecondaryAllele(); genome0 = genomeSecond; genome2 = genomeFirst;
@Override public void readData(PacketBufferForestry data) { String speciesUID = data.readString(); // this is called instead of super.readData, be careful! byte leafState = data.readByte(); isFruitLeaf = (leafState & hasFruitFlag) > 0; isPollinatedState = (leafState & isPollinatedFlag) > 0; String fruitAlleleUID = null; if (isFruitLeaf) { fruitAlleleUID = data.readString(); colourFruits = data.readInt(); } IAllele[] treeTemplate = TreeManager.treeRoot.getTemplate(speciesUID); if (treeTemplate != null) { if (fruitAlleleUID != null) { IAllele fruitAllele = AlleleManager.alleleRegistry.getAllele(fruitAlleleUID); if (fruitAllele instanceof IAlleleFruit) { treeTemplate[EnumTreeChromosome.FRUITS.ordinal()] = fruitAllele; } } ITree tree = TreeManager.treeRoot.templateAsIndividual(treeTemplate); if (isPollinatedState) { tree.mate(tree); } setTree(tree); world.markBlockRangeForRenderUpdate(getPos(), getPos()); } }