Search in sources :

Example 31 with ITree

use of forestry.api.arboriculture.ITree in project ForestryMC by ForestryMC.

the class TreeGenHelper method getWorldGen.

public static WorldGenerator getWorldGen(String treeName, EntityPlayer player, BlockPos pos) throws SpeciesNotFoundException, TemplateNotFoundException {
    ITreeGenome treeGenome = getTreeGenome(treeName);
    ITree tree = TreeManager.treeRoot.getTree(player.world, treeGenome);
    return tree.getTreeGenerator(player.world, pos, true);
}
Also used : ITree(forestry.api.arboriculture.ITree) ITreeGenome(forestry.api.arboriculture.ITreeGenome)

Example 32 with ITree

use of forestry.api.arboriculture.ITree 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 33 with ITree

use of forestry.api.arboriculture.ITree 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)

Aggregations

ITree (forestry.api.arboriculture.ITree)33 ItemStack (net.minecraft.item.ItemStack)9 ITreeGenome (forestry.api.arboriculture.ITreeGenome)8 SideOnly (net.minecraftforge.fml.relauncher.SideOnly)5 IAlleleTreeSpecies (forestry.api.arboriculture.IAlleleTreeSpecies)4 IFruitProvider (forestry.api.arboriculture.IFruitProvider)4 IAllele (forestry.api.genetics.IAllele)4 EnumGermlingType (forestry.api.arboriculture.EnumGermlingType)3 IAlleleFruit (forestry.api.arboriculture.IAlleleFruit)3 TileSapling (forestry.arboriculture.tiles.TileSapling)3 GuiAlyzer (forestry.core.gui.GuiAlyzer)3 TextLayoutHelper (forestry.core.gui.TextLayoutHelper)3 TileLeaves (forestry.arboriculture.tiles.TileLeaves)2 ArrayList (java.util.ArrayList)2 Nullable (javax.annotation.Nullable)2 IBlockState (net.minecraft.block.state.IBlockState)2 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)2 BlockPos (net.minecraft.util.math.BlockPos)2 Biome (net.minecraft.world.biome.Biome)2 WorldGenerator (net.minecraft.world.gen.feature.WorldGenerator)2