Search in sources :

Example 21 with ITreeGenome

use of forestry.api.arboriculture.ITreeGenome in project Binnie by ForestryMC.

the class PagePlanksTrees method getTreesThatMakePlanks.

private static Collection<IAlleleSpecies> getTreesThatMakePlanks(ItemStack fruit, boolean master, World world, GameProfile player) {
    if (fruit == null) {
        return new ArrayList<>();
    }
    ITreeRoot treeRoot = TreeManager.treeRoot;
    IBreedingSystem system = Binnie.GENETICS.getSystem(treeRoot);
    final Collection<IAlleleSpecies> set = master ? system.getAllSpecies() : system.getDiscoveredSpecies(world, player);
    final List<IAlleleSpecies> found = new ArrayList<>();
    for (final IAlleleSpecies species : set) {
        final IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies) species;
        ITreeGenome genome = treeRoot.templateAsGenome(treeRoot.getTemplate(tSpecies));
        IAlleleTreeSpecies treeSpecies = genome.getPrimary();
        final ItemStack woodStack = treeSpecies.getWoodProvider().getWoodStack();
        ItemStack plankProduct = LumbermillRecipeManager.getPlankProduct(woodStack, world);
        if (!plankProduct.isEmpty() && fruit.isItemEqual(plankProduct)) {
            found.add(species);
        }
    }
    return found;
}
Also used : IAlleleTreeSpecies(forestry.api.arboriculture.IAlleleTreeSpecies) ITreeRoot(forestry.api.arboriculture.ITreeRoot) IAlleleSpecies(forestry.api.genetics.IAlleleSpecies) ArrayList(java.util.ArrayList) IBreedingSystem(binnie.core.api.genetics.IBreedingSystem) ItemStack(net.minecraft.item.ItemStack) ITreeGenome(forestry.api.arboriculture.ITreeGenome)

Example 22 with ITreeGenome

use of forestry.api.arboriculture.ITreeGenome in project Binnie by ForestryMC.

the class PageSpeciesTreeGenome method onValueChanged.

// TODO: unused ?
/*public static String tolerated(final boolean t) {
		if (t) {
			return I18N.localise("binniecore.gui.tolerated");
		}
		return I18N.localise("binniecore.gui.nottolerated");
	}*/
@Override
public void onValueChanged(final IAlleleSpecies species) {
    this.deleteAllChildren();
    final IAllele[] template = TreeManager.treeRoot.getTemplate(species.getUID());
    if (template == null) {
        return;
    }
    final ITree tree = TreeManager.treeRoot.templateAsIndividual(template);
    final ITreeGenome genome = tree.getGenome();
    final IAlleleTreeSpecies treeSpecies = genome.getPrimary();
    final int w = 144;
    final int h = 176;
    new ControlText(this, new Area(0, 4, w, 16), this.getValue().toString(), TextJustification.MIDDLE_CENTER);
    final ControlScrollableContent scrollable = new ControlScrollableContent(this, 4, 20, w - 8, h - 8 - 16, 12);
    final Control contents = new Control(scrollable, 0, 0, w - 8 - 12, h - 8 - 16);
    final int tw = w - 8 - 12;
    final int w2 = 65;
    final int w3 = tw - 50;
    int y = 0;
    final int th = 14;
    final int th2 = 18;
    final IBreedingSystem syst = Binnie.GENETICS.getSystem(TreeManager.treeRoot);
    new ControlText(contents, new Area(w2, y, w3, th), treeSpecies.getPlantType().toString(), TextJustification.MIDDLE_LEFT);
    y += th;
    new ControlText(contents, new Area(0, y, w2, th), I18N.localise("binniecore.gui.temperature.short") + " : ", TextJustification.MIDDLE_RIGHT);
    new ControlText(contents, new Area(w2, y, w3, th), treeSpecies.getTemperature().getName(), TextJustification.MIDDLE_LEFT);
    y += th;
    Minecraft minecraft = Minecraft.getMinecraft();
    World world = minecraft.world;
    TextureMap map = minecraft.getTextureMapBlocks();
    ILeafSpriteProvider spriteProvider = treeSpecies.getLeafSpriteProvider();
    TextureAtlasSprite leaf = map.getAtlasSprite(spriteProvider.getSprite(false, false).toString());
    int leafColour = spriteProvider.getColor(false);
    new ControlText(contents, new Area(0, y, w2, th2), I18N.localise("extratrees.gui.database.leaves") + " : ", TextJustification.MIDDLE_RIGHT);
    new ControlBlockIconDisplay(contents, w2, y, leaf).setColor(leafColour);
    IFruitProvider fruitProvider = genome.getFruitProvider();
    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);
    }
    y += th2;
    Map<ItemStack, Float> products = fruitProvider.getProducts();
    ItemStack log = treeSpecies.getWoodProvider().getWoodStack();
    if (log.isEmpty()) {
        new ControlText(contents, new Area(0, y, w2, th2), I18N.localise("extratrees.gui.database.log") + " : ", TextJustification.MIDDLE_RIGHT);
        final ControlItemDisplay display = new ControlItemDisplay(contents, w2, y);
        display.setItemStack(log);
        display.setTooltip();
        y += th2;
    }
    new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.HEIGHT) + " : ", TextJustification.MIDDLE_RIGHT);
    new ControlText(contents, new Area(w2, y, w3, th), genome.getHeight() + "x", TextJustification.MIDDLE_LEFT);
    y += th;
    new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.FERTILITY) + " : ", TextJustification.MIDDLE_RIGHT);
    new ControlText(contents, new Area(w2, y, w3, th), genome.getFertility() + "x", TextJustification.MIDDLE_LEFT);
    y += th;
    List<ItemStack> fruits = new ArrayList<>(products.keySet());
    if (!fruits.isEmpty()) {
        new ControlText(contents, new Area(0, y, w2, th2), syst.getChromosomeShortName(EnumTreeChromosome.FRUITS) + " : ", TextJustification.MIDDLE_RIGHT);
        for (ItemStack fruitw : fruits) {
            final ControlItemDisplay display2 = new ControlItemDisplay(contents, w2, y);
            display2.setItemStack(fruitw);
            display2.setTooltip();
            y += th2;
        }
    }
    new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.YIELD) + " : ", TextJustification.MIDDLE_RIGHT);
    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);
    new ControlText(contents, new Area(w2, y, w3, th), genome.getSappiness() + "x", TextJustification.MIDDLE_LEFT);
    y += th;
    new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.MATURATION) + " : ", TextJustification.MIDDLE_RIGHT);
    new ControlText(contents, new Area(w2, y, w3, th), genome.getMaturationTime() + "x", TextJustification.MIDDLE_LEFT);
    y += th;
    new ControlText(contents, new Area(0, y, w2, th), syst.getChromosomeShortName(EnumTreeChromosome.GIRTH) + " : ", TextJustification.MIDDLE_RIGHT);
    new ControlText(contents, new Area(w2, y, w3, th), genome.getGirth() + "x" + genome.getGirth(), TextJustification.MIDDLE_LEFT);
    y += th;
    contents.setSize(new Point(contents.getSize().xPos(), y));
    scrollable.setScrollableContent(contents);
}
Also used : ControlItemDisplay(binnie.core.gui.minecraft.control.ControlItemDisplay) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) ArrayList(java.util.ArrayList) World(net.minecraft.world.World) IFruitProvider(forestry.api.arboriculture.IFruitProvider) IAlleleTreeSpecies(forestry.api.arboriculture.IAlleleTreeSpecies) Control(binnie.core.gui.controls.core.Control) ResourceLocation(net.minecraft.util.ResourceLocation) ControlText(binnie.core.gui.controls.ControlText) IBreedingSystem(binnie.core.api.genetics.IBreedingSystem) ITree(forestry.api.arboriculture.ITree) Point(binnie.core.gui.geometry.Point) Minecraft(net.minecraft.client.Minecraft) Point(binnie.core.gui.geometry.Point) IAllele(forestry.api.genetics.IAllele) Area(binnie.core.gui.geometry.Area) TextureMap(net.minecraft.client.renderer.texture.TextureMap) ILeafSpriteProvider(forestry.api.arboriculture.ILeafSpriteProvider) ItemStack(net.minecraft.item.ItemStack) ITreeGenome(forestry.api.arboriculture.ITreeGenome) ControlScrollableContent(binnie.core.gui.controls.scroll.ControlScrollableContent)

Example 23 with ITreeGenome

use of forestry.api.arboriculture.ITreeGenome in project Binnie by ForestryMC.

the class BlockETDefaultLeaves method getLeafDrop.

@Override
protected void getLeafDrop(NonNullList<ItemStack> drops, World world, @Nullable GameProfile playerProfile, BlockPos pos, float saplingModifier, int fortune) {
    ITree tree = getTree(world, pos);
    if (tree == null) {
        return;
    }
    // Add saplings
    List<ITree> saplings = tree.getSaplings(world, playerProfile, pos, saplingModifier);
    for (ITree sapling : saplings) {
        if (sapling != null) {
            drops.add(TreeManager.treeRoot.getMemberStack(sapling, EnumGermlingType.SAPLING));
        }
    }
    // Add fruits
    ITreeGenome genome = tree.getGenome();
    IFruitProvider fruitProvider = genome.getFruitProvider();
    if (fruitProvider.isFruitLeaf(genome, world, pos)) {
        NonNullList<ItemStack> produceStacks = tree.produceStacks(world, pos, Integer.MAX_VALUE);
        drops.addAll(produceStacks);
    }
}
Also used : ITree(forestry.api.arboriculture.ITree) ItemStack(net.minecraft.item.ItemStack) ITreeGenome(forestry.api.arboriculture.ITreeGenome) IFruitProvider(forestry.api.arboriculture.IFruitProvider)

Example 24 with ITreeGenome

use of forestry.api.arboriculture.ITreeGenome in project Binnie by ForestryMC.

the class BlockETDefaultLeaves method colorMultiplier.

@Override
@SideOnly(Side.CLIENT)
public int colorMultiplier(IBlockState state, @Nullable IBlockAccess worldIn, @Nullable BlockPos pos, int tintIndex) {
    ETTreeDefinition treeDefinition = getTreeDefinition(state);
    if (treeDefinition == null) {
        treeDefinition = ETTreeDefinition.OrchardApple;
    }
    ITreeGenome genome = treeDefinition.getGenome();
    if (tintIndex == 0) {
        return genome.getPrimary().getLeafSpriteProvider().getColor(false);
    } else {
        IFruitProvider fruitProvider = genome.getFruitProvider();
        return fruitProvider.getDecorativeColor();
    }
}
Also used : ETTreeDefinition(binnie.extratrees.genetics.ETTreeDefinition) ITreeGenome(forestry.api.arboriculture.ITreeGenome) IFruitProvider(forestry.api.arboriculture.IFruitProvider) SideOnly(net.minecraftforge.fml.relauncher.SideOnly)

Example 25 with ITreeGenome

use of forestry.api.arboriculture.ITreeGenome in project Binnie by ForestryMC.

the class BlockETDecorativeLeaves method colorMultiplier.

@Override
@SideOnly(Side.CLIENT)
public int colorMultiplier(IBlockState state, @Nullable IBlockAccess worldIn, @Nullable BlockPos pos, int tintIndex) {
    ETTreeDefinition treeDefinition = state.getValue(getVariant());
    ITreeGenome genome = treeDefinition.getGenome();
    if (tintIndex == 0) {
        return genome.getPrimary().getLeafSpriteProvider().getColor(false);
    } else {
        IFruitProvider fruitProvider = genome.getFruitProvider();
        return fruitProvider.getDecorativeColor();
    }
}
Also used : ETTreeDefinition(binnie.extratrees.genetics.ETTreeDefinition) ITreeGenome(forestry.api.arboriculture.ITreeGenome) IFruitProvider(forestry.api.arboriculture.IFruitProvider) SideOnly(net.minecraftforge.fml.relauncher.SideOnly)

Aggregations

ITreeGenome (forestry.api.arboriculture.ITreeGenome)28 IAlleleTreeSpecies (forestry.api.arboriculture.IAlleleTreeSpecies)14 IFruitProvider (forestry.api.arboriculture.IFruitProvider)11 ItemStack (net.minecraft.item.ItemStack)9 ITree (forestry.api.arboriculture.ITree)8 ILeafSpriteProvider (forestry.api.arboriculture.ILeafSpriteProvider)7 IAlleleSpecies (forestry.api.genetics.IAlleleSpecies)6 SideOnly (net.minecraftforge.fml.relauncher.SideOnly)6 ArrayList (java.util.ArrayList)5 TextureAtlasSprite (net.minecraft.client.renderer.texture.TextureAtlasSprite)5 TextureMap (net.minecraft.client.renderer.texture.TextureMap)5 ResourceLocation (net.minecraft.util.ResourceLocation)5 ETTreeDefinition (binnie.extratrees.genetics.ETTreeDefinition)3 TreeDefinition (forestry.arboriculture.genetics.TreeDefinition)3 IBreedingSystem (binnie.core.api.genetics.IBreedingSystem)2 ITreeMutation (forestry.api.arboriculture.ITreeMutation)2 IAllele (forestry.api.genetics.IAllele)2 IChromosome (forestry.api.genetics.IChromosome)2 ControlText (binnie.core.gui.controls.ControlText)1 Control (binnie.core.gui.controls.core.Control)1