@Override public void mate(ITree other) { mate = new TreeGenome(other.getGenome().getChromosomes()); }
@Override public final ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { ITree tree = getTree(world, pos); if (tree == null) { return ItemStack.EMPTY; } return tree.getGenome().getDecorativeLeaves(); }
@Override public EnumPlantType getPlantType() { return tree.getGenome().getPrimary().getPlantType(); }
private static int getRequiredMaturity(World world, ITree tree) { ITreekeepingMode treekeepingMode = TreeManager.treeRoot.getTreekeepingMode(world); float maturationModifier = treekeepingMode.getMaturationModifier(tree.getGenome(), 1f); return Math.round(tree.getRequiredMaturity() * maturationModifier); }
@Override public final List<ItemStack> onSheared(ItemStack item, IBlockAccess world, BlockPos pos, int fortune) { ITree tree = getTree(world, pos); if (tree == null) { tree = TreeDefinition.Oak.getIndividual(); } ItemStack decorativeLeaves = tree.getGenome().getDecorativeLeaves(); if (decorativeLeaves.isEmpty()) { return Collections.emptyList(); } else { return Collections.singletonList(decorativeLeaves); } }
public String getUnlocalizedName() { ITree tree = getTree(); if (tree == null) { return "for.leaves.corrupted"; } return tree.getGenome().getPrimary().getUnlocalizedName(); }
@Override public EnumPlantType getPlantType() { ITree tree = getTree(); if (tree == null) { return EnumPlantType.Plains; } return tree.getGenome().getPrimary().getPlantType(); }
@Override public IFruitFamily getFruitFamily() { ITree tree = getTree(); if (tree == null) { return EnumFruitFamily.NONE; } return tree.getGenome().getFruitProvider().getFamily(); }
@Override public float getFermentationModifier(ItemStack itemstack) { itemstack = GeneticsUtil.convertToGeneticEquivalent(itemstack); ITree tree = TreeManager.treeRoot.getMember(itemstack); if (tree == null) { return 1.0f; } return tree.getGenome().getSappiness() * 10; }
/** * Worldgen trees with default genomes should be converted to leaves without tile entities. */ private boolean shouldConvertToDefaultLeaves() { if (getOwnerHandler().getOwner() == null) { // null owner likely means it's a worldgen tree ITree tree = getTree(); return tree != null && tree.getGenome().matchesTemplateGenome(); } return false; }
@SideOnly(Side.CLIENT) private ILeafSpriteProvider getLeafSpriteProvider() { if (species != null) { return species.getLeafSpriteProvider(); } else { IAlleleTreeSpecies oakSpecies = TreeDefinition.Oak.getIndividual().getGenome().getPrimary(); return oakSpecies.getLeafSpriteProvider(); } }
private int determineFruitColour() { ITree tree = getTree(); if (tree == null) { tree = TreeDefinition.Cherry.getIndividual(); } ITreeGenome genome = tree.getGenome(); IFruitProvider fruit = genome.getFruitProvider(); return fruit.getColour(genome, world, getPos(), getRipeningTime()); }
private static boolean isSapling(ITreeGenome genome, World world, BlockPos pos) { if (!world.isBlockLoaded(pos)) { return false; } if (world.isAirBlock(pos)) { return false; } TileSapling sapling = TileUtil.getTile(world, pos, TileSapling.class); if (sapling == null) { return false; } ITree tree = sapling.getTree(); return tree != null && tree.getGenome().getPrimary().getUID().equals(genome.getPrimary().getUID()); } }
private Key createEmptyKey(TextureMap map, boolean fancy) { IAlleleTreeSpecies oakSpecies = TreeDefinition.Oak.getIndividual().getGenome().getPrimary(); ResourceLocation spriteLocation = oakSpecies.getLeafSpriteProvider().getSprite(false, fancy); TextureAtlasSprite sprite = map.getAtlasSprite(spriteLocation.toString()); return new Key(sprite, null, fancy); }
@Override public void postInit() { IFarmProperties orchardFarm = FarmRegistry.getInstance().getProperties(ForestryFarmIdentifier.ORCHARD); if (orchardFarm != null && ModuleHelper.isEnabled(ForestryModuleUids.ARBORICULTURE)) { ITreeRoot treeRoot = TreeManager.treeRoot; if (treeRoot != null) { for (ITree tree : treeRoot.getIndividualTemplates()) { IFruitProvider fruitProvider = tree.getGenome().getFruitProvider(); if (fruitProvider != AlleleFruits.fruitNone.getProvider()) { orchardFarm.addGermlings(treeRoot.getMemberStack(tree, EnumGermlingType.SAPLING)); orchardFarm.addProducts(fruitProvider.getProducts().keySet()); orchardFarm.addProducts(fruitProvider.getSpecialty().keySet()); } } } } }
@Override public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { TileSapling sapling = TileUtil.getTile(world, pos, TileSapling.class); if (sapling != null && sapling.getTree() != null) { state = state.withProperty(TREE, sapling.getTree().getGenome().getPrimary()); } else { state = state.withProperty(TREE, TreeDefinition.Oak.getGenome().getPrimary()); } return state; }
@Override public boolean isBiomeValid(ITree tree, Biome biome) { EnumTemperature biomeTemperature = EnumTemperature.getFromBiome(biome); EnumHumidity biomeHumidity = EnumHumidity.getFromValue(biome.getRainfall()); ITreeGenome genome = tree.getGenome(); if (temperature == null) { temperature = genome.getPrimary().getTemperature(); } if (humidity == null) { humidity = genome.getPrimary().getHumidity(); } return AlleleManager.climateHelper.isWithinLimits(biomeTemperature, biomeHumidity, temperature, temperatureTolerance, humidity, humidityTolerance); }
@Override public boolean generate(World worldIn, Random rand, BlockPos position) { this.world = worldIn; this.startX = position.getX(); this.startY = position.getY(); this.startZ = position.getZ(); this.girth = this.tree.getGirth(); this.height = (int) (this.randBetween(this.getHeight()[0], this.getHeight()[1]) * this.tree.getGenome().getHeight()); if (this.tree.canGrow(world, position, this.girth, this.height) != null) { this.generate(); return true; } return false; }
@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); } }
@Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { ItemStack mainHand = player.getHeldItem(EnumHand.MAIN_HAND); ItemStack offHand = player.getHeldItem(EnumHand.OFF_HAND); if (mainHand.isEmpty() && offHand.isEmpty()) { ITree tree = getTree(world, pos); if (tree == null) { return false; } IFruitProvider fruitProvider = tree.getGenome().getFruitProvider(); NonNullList<ItemStack> products = tree.produceStacks(world, pos, fruitProvider.getRipeningPeriod()); world.setBlockState(pos, ModuleArboriculture.getBlocks().getDefaultLeaves(tree.getIdent()), 2); for (ItemStack fruit : products) { ItemHandlerHelper.giveItemToPlayer(player, fruit); } return true; } return false; }