@Override public IFruitFamily getFruitFamily() { return allele.getProvider().getFamily(); }
@Override public Map<ItemStack, Float> getProducts() { return genome.getFruitProvider().getProducts(); }
@Override public String getAlleleName() { return getProvider().getDescription(); }
@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 void setTree(ITree tree) { ITree oldTree = getTree(); super.setTree(tree); ITreeGenome genome = tree.getGenome(); species = genome.getPrimary(); if (oldTree != null && !tree.equals(oldTree)) { checkFruit = true; } if (tree.canBearFruit() && checkFruit && world != null && !world.isRemote) { IFruitProvider fruitProvider = genome.getFruitProvider(); if (fruitProvider.isFruitLeaf(genome, world, getPos())) { isFruitLeaf = fruitProvider.getFruitChance(genome, world, getPos()) >= world.rand.nextFloat(); } } if (isFruitLeaf) { IFruitProvider fruitProvider = genome.getFruitProvider(); if (world != null && world.isRemote) { fruitSprite = fruitProvider.getSprite(genome, world, getPos(), getRipeningTime()); } ripeningPeriod = (short) tree.getGenome().getFruitProvider().getRipeningPeriod(); } else if (world != null && world.isRemote) { fruitSprite = null; } markDirty(); }
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()); try { if (a.getUID().contains("fruitCocoa")) {
@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; }
ResourceLocation fruitSprite = fruitProvider.getSprite(genome, world, BlockPos.ORIGIN, 100); if (fruitSprite != null && !treeSpecies.getUID().equals("forestry.treeOak")) { TextureAtlasSprite fruit = map.getAtlasSprite(fruitSprite.toString()); int fruitColour = fruitProvider.getColour(genome, world, BlockPos.ORIGIN, 100); new ControlBlockIconDisplay(contents, w2, y, fruit).setColor(fruitColour); Map<ItemStack, Float> products = fruitProvider.getProducts(); ItemStack log = treeSpecies.getWoodProvider().getWoodStack(); if (log.isEmpty()) {
@Override public float getResearchSuitability(ItemStack itemstack) { if (itemstack.isEmpty()) { return 0f; } List<IFruitFamily> suitableFruit = getSuitableFruit(); for (IFruitFamily fruitFamily : suitableFruit) { Collection<IFruitProvider> fruitProviders = TreeManager.treeRoot.getFruitProvidersForFruitFamily(fruitFamily); for (IFruitProvider fruitProvider : fruitProviders) { Map<ItemStack, Float> products = fruitProvider.getProducts(); for (ItemStack stack : products.keySet()) { if (stack.isItemEqual(itemstack)) { return 1.0f; } } Map<ItemStack, Float> specialtyChances = fruitProvider.getSpecialty(); for (ItemStack stack : specialtyChances.keySet()) { if (stack.isItemEqual(itemstack)) { return 1.0f; } } } } return super.getResearchSuitability(itemstack); }
strike = TextFormatting.STRIKETHROUGH.toString(); textLayout.drawLine(strike + tree.getGenome().getFruitProvider().getDescription(), GuiAlyzer.COLUMN_1, fruitDominance0); if (!tree.getGenome().getSecondary().getSuitableFruit().contains(fruit1.getProvider().getFamily()) && fruit1 != AlleleFruits.fruitNone) { strike = TextFormatting.STRIKETHROUGH.toString(); textLayout.drawLine(strike + fruit1.getProvider().getDescription(), GuiAlyzer.COLUMN_2, fruitDominance1); IFruitFamily primary = tree.getGenome().getFruitProvider().getFamily(); IFruitFamily secondary = ((IAlleleFruit) tree.getGenome().getInactiveAllele(EnumTreeChromosome.FRUITS)).getProvider().getFamily();
String speciesUid = genome.getPrimary().getUID(); IBlockState defaultLeaves; if (fruitProvider.isFruitLeaf(genome, world, pos) && rand.nextFloat() <= fruitProvider.getFruitChance(genome, world, pos)) { defaultLeaves = ModuleArboriculture.getBlocks().getDefaultLeavesFruit(speciesUid); } else {
@Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockState state, @Nullable IBlockAccess worldIn, @Nullable BlockPos pos, int tintIndex) { TreeDefinition treeDefinition = state.getValue(getVariant()); ITreeGenome genome = treeDefinition.getGenome(); if (tintIndex == BlockAbstractLeaves.FRUIT_COLOR_INDEX) { IFruitProvider fruitProvider = genome.getFruitProvider(); return fruitProvider.getDecorativeColor(); } ILeafSpriteProvider spriteProvider = genome.getPrimary().getLeafSpriteProvider(); return spriteProvider.getColor(false); } }
@Override protected void bakeBlock(BlockDecorativeLeaves block, Key key, IModelBaker baker, boolean inventory) { TreeDefinition treeDefinition = key.definition; TextureMap map = Minecraft.getMinecraft().getTextureMapBlocks(); ITreeGenome genome = treeDefinition.getGenome(); IAlleleTreeSpecies species = genome.getPrimary(); ILeafSpriteProvider leafSpriteProvider = species.getLeafSpriteProvider(); ResourceLocation leafSpriteLocation = leafSpriteProvider.getSprite(false, key.fancy); TextureAtlasSprite leafSprite = map.getAtlasSprite(leafSpriteLocation.toString()); // Render the plain leaf block. baker.addBlockModel(null, leafSprite, BlockAbstractLeaves.FOLIAGE_COLOR_INDEX); // Render overlay for fruit leaves. ResourceLocation fruitSpriteLocation = genome.getFruitProvider().getDecorativeSprite(); if (fruitSpriteLocation != null) { TextureAtlasSprite fruitSprite = map.getAtlasSprite(fruitSpriteLocation.toString()); baker.addBlockModel(null, fruitSprite, BlockAbstractLeaves.FRUIT_COLOR_INDEX); } // Set the particle sprite baker.setParticleSprite(leafSprite); }
@Nullable @Override public String getModelName() { return getProvider().getModelName(); }
@Override public String getModID() { return getProvider().getModID(); }
@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; }
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()); }
@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()); } } } } }
if (!species.getSuitableFruit().contains(fruit.getProvider().getFamily()) && fruit != AlleleFruits.fruitNone) { strike = TextFormatting.STRIKETHROUGH.toString(); container.label(strike + fruit.getProvider().getDescription(), GuiElementAlignment.TOP_CENTER, textStyle); IFruitFamily family = fruit.getProvider().getFamily();